Faits :
A.
Par jugement du 27 mai 2019, le Tribunal correctionnel de l'arrondissement de Lausanne a constaté que A._ s'est rendu coupable de voies de fait qualifiées, de lésions corporelles simples qualifiées, de menaces qualifiées et de viol. Il l'a condamné à une peine privative de liberté de 36 mois et a suspendu l'exécution de 30 mois de cette peine, en fixant un délai d'épreuve de 4 ans et en imposant une règle de conduite lui ordonnant de suivre, durant ce délai d'épreuve, un programme de sensibilisation du Centre de prévention de C._. Le tribunal a en outre condamné A._ à une amende de 1'500 fr. et fixé à 15 jours la peine privative de liberté de substitution en cas de non-paiement fautif de l'amende, a renoncé à ordonner son expulsion du territoire suisse et dit qu'il était débiteur envers B._ d'une indemnité de 10'000 fr. à titre de réparation du tort moral.
B.
Le 18 novembre 2019, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel de A._ contre le jugement du tribunal correctionnel; elle a en revanche admis partiellement l'appel du ministère public et a modifié le jugement attaqué dans ce sens qu'elle a ramené à 24 mois la partie suspendue de la peine, le délai d'épreuve restant de 4 ans.
C.
Les faits à l'origine de cette condamnation sont en substance les suivants.
C.a. A._ est né en 1970 au Sri Lanka, pays dont il est ressortissant. Depuis 1989 il vit en Suisse et est actuellement au bénéfice d'un permis C. En 2004 il a épousé B._ dont il a eu une fille, D._, née en 2009. Les époux sont séparés depuis le 19 mai 2018.
C.b. Durant toute leur vie commune, A._ a exercé une constante autorité sur son épouse. Celle-ci, qui ne s'exprime pas en français, n'avait que peu de contact avec l'extérieur, son époux faisant en sorte qu'elle reste isolée, lui interdisant de parler à des tiers, d'inviter quiconque à son domicile ou encore de téléphoner à sa famille. Parallèlement, il a exercé tout au long de la vie conjugale de multiples violences physiques, verbales et sexuelles à son encontre, jusqu'au 16 mai 2018, date à laquelle elle s'est confiée à son médecin.
C.c. Abandonnant les faits antérieurs en raison de leur prescription, la cour cantonale a retenu qu'entre mai 2012 et mai 2018 A._ avait régulièrement menacé son épouse en lui disant notamment " je vais te tuer ", " je vais te couper " ou encore en lui interdisant de parler à d'autres personnes sous peine d'être frappée et tuée, précisant que si elle faisait appel à la police non seulement il la tuerait mais il tuerait également les policiers qui interviendraient. Elle a aussi admis qu'entre mai 2016 et mai 2018 il avait, à raison d'une fois par semaine environ, frappé son épouse en lui donnant des gifles et en lui tirant les cheveux. A une occasion, en janvier 2018, il lui a tiré les cheveux et l'a frappée en lui causant une coupure à la lèvre.
C.d. Entre mai 2004 et mai 2018, A._ a à plusieurs reprises forcé son épouse à entretenir des relations sexuelles complètes avec lui. Alors qu'il la savait non consentante à de tels actes, il la saisissait par les épaules ou par les bras et la tirait en direction de la chambre à coucher. En menaçant son épouse de la quitter ou de la frapper, A._ parvenait à ses fins sans qu'elle oppose de résistance physique.
D.
A._ forme un recours en matière pénale au Tribunal fédéral. Il conclut, avec suite de frais et dépens, principalement à la réforme du jugement attaqué dans ce sens qu'il est libéré du chef d'accusation de viol et condamné à une peine pécuniaire de 180 jours-amende d'un montant à fixer à dire de justice, avec sursis pendant 4 ans, et que le montant de l'indemnité pour tort moral accordée à B._ est ramené à 1'500 fr., lui-même se voyant allouer une indemnité de 500 fr. à titre de réparation du tort moral. Subsidiairement, il conclut à l'annulation du jugement attaqué et au renvoi de la cause à l'autorité cantonale pour qu'elle statue à nouveau. Il sollicite par ailleurs l'assistance judiciaire.

Considérant en droit :
1.
Le recourant relève à titre préliminaire que bien qu'il conteste tous les faits retenus à son encontre son recours ne porte que sur sa condamnation pour viol.
2.
Le recourant invoque une constatation manifestement inexacte des faits; il se plaint par ailleurs d'arbitraire et d'une violation de l'art. 190 CP ainsi que de son droit d'être entendu en raison d'un défaut de motivation du jugement attaqué. Il reproche à la cour cantonale de n'avoir pas examiné deux aspects de l'infraction qui lui a été imputée, à savoir la contrainte et l'élément subjectif. Il lui fait en outre grief d'avoir violé la présomption d'innocence.
2.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (art. 105 al. 1 LTF), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat. Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence à la présomption d'innocence ou à son corollaire, le principe " in dubio pro reo ", ceux-ci n'ont pas de portée plus large que l'interdiction de l'arbitraire (voir <ref-ruling> consid. 1.1 p. 155 s.).
Le Tribunal fédéral n'entre en matière sur les moyens fondés sur la violation de droits fondamentaux que s'ils ont été invoqués et motivés de manière précise (art. 106 al. 2 LTF). Les critiques de nature appellatoire sont irrecevables (<ref-ruling> consid. 1.1 p. 155 s.).
2.2. La cour cantonale a constaté que le recourant faisait régner au sein du foyer familial une ambiance tyrannique, qu'il était souvent fâché, qu'il frappait son épouse et la menaçait régulièrement en lui disant " je vais te taper " ou " je vais te couper ", appuyant à l'occasion ses menaces en prenant un couteau. Il lui a par ailleurs interdit de parler de cette situation à d'autres personnes en précisant que si elle le faisait il la frapperait encore et la tuerait; il a ajouté que si elle appelait la police et que celle-ci intervenait il les tuerait, elle et les policiers. La cour cantonale a par ailleurs noté que le recourant avait toujours gardé une emprise sur son épouse, sur laquelle il exerçait une constante autorité et qu'il cherchait à maintenir dans l'isolement; elle ne s'exprimait pas en français et n'avait que peu de contact avec l'extérieur, d'autant qu'il lui interdisait de parler à quiconque, d'inviter des tiers à la maison ou de téléphoner à sa famille. Ainsi après que son épouse lui eut simplement demandé pour quelle raison il avait interrogé leur fille au sujet des personnes avec lesquelles elle discutait devant l'école le recourant l'a tirée par les cheveux et l'a frappée au point de lui causer une blessure à la lèvre.
2.3. Le recourant soutient que, contrairement à ce qu'a admis la cour cantonale, les déclarations de l'intimée manquent de constance et de cohérence. Selon lui, les juges cantonaux ont estimé que compte tenu de la crédibilité de l'intimée pour ce qui concerne les violences physiques, ses propos ayant été corroborés sur ce point par un témoin, les violences sexuelles pouvaient également être considérées comme établies sur la base de ses déclarations.
2.3.1. S'agissant des incohérences qu'il reproche à l'intimée, le recourant se réfère en premier lieu à ses déclarations relatives à sa nièce. D'une part, il soutient qu'elle a changé de version car elle a d'abord affirmé que personne n'avait partagé le logement familial durant le mariage puis a rectifié en disant que sa nièce avait vécu avec le couple pendant une dizaine d'années. Il ressort du procès-verbal de son audition par le ministère public que l'intimée a effectivement répondu par la négative à la question de savoir si quelqu'un avait habité avec le couple durant le mariage. A l'évocation du nom de sa nièce, elle a toutefois immédiatement rectifié en disant qu'elle avait vécu chez eux entre 2008 et fin 2017 ou début 2018 et en précisant avoir cru que la question concernait les premiers temps de leur mariage, célébré en 2004. Par ailleurs, le recourant voit une incohérence dans le fait qu'elle a déclaré que c'était son mari qui avait fait venir la jeune fille alors qu'il s'agit de sa propre nièce. Or, à la lecture du procès-verbal de l'audition de cette dernière on constate que c'est bien le recourant qui lui a proposé de l'aide.
2.3.2. Le recourant relève que la nièce de l'intimée a déclaré ne rien avoir remarqué concernant des violences sexuelles et soutient que si de tels actes avaient été commis elle y aurait forcément assisté à plusieurs reprises. L'intimée a déclaré qu'il n'y avait pas eu de violence lors des relations sexuelles proprement dites; par ailleurs, il a été constaté que les violences physiques du recourant envers son épouse étaient régulières, ce que le témoin a confirmé. Dans ces circonstances, il est plausible que le témoin ait assisté à de nombreuses scènes de violence sans savoir que certaines d'entre elles débouchaient sur des relations sexuelles imposées à l'intimée.
2.3.3. Pour le surplus, on ne saurait qualifier d'insoutenable l'appréciation de la cour cantonale selon laquelle les déclarations de l'intimée, mesurées et cohérentes, globalement corroborées par le témoignage de sa nièce, qui a passé plusieurs années dans le foyer des parties, par la déposition de leur propre fille, ainsi que par le rapport du médecin à qui elle s'est ouverte des violences qu'elle subissait, étaient crédibles. Le fait, invoqué par le recourant, qu'elle n'ait parlé à son médecin que des violences purement physiques qui lui ont été infligées par son mari sans évoquer de violences sexuelles peut s'expliquer par la difficulté qu'elle avait à aborder cette question, fût-ce avec son médecin. Ni cet élément ni l'absence de détails sur le nombre ou la fréquence des relations sexuelles qui lui ont été imposées ne sont propres à faire apparaître comme insoutenable et partant arbitraire l'appréciation des preuves de la cour cantonale.
2.4. C'est par conséquent sur la base des faits retenus par la cour cantonale qu'il y a lieu de déterminer si les éléments constitutifs du viol au sens de l'art. 190 al. 1 CP sont réalisés. Conformément à cette disposition, celui qui, notamment en usant de menace ou de violence, en exerçant sur sa victime des pressions d'ordre psychique ou en la mettant hors d'état de résister, aura contraint une personne de sexe féminin à subir l'acte sexuel, sera puni d'une peine privative de liberté de un à dix ans.
2.4.1. Au même titre que toutes les infractions réprimant la contrainte sexuelle, l'art 190 CP interdit toute atteinte à la liberté sexuelle. Pour qu'il y ait contrainte en matière sexuelle, il faut que la victime ne soit pas consentante, que l'auteur le sache ou accepte cette éventualité et qu'il passe outre en profitant de la situation ou en utilisant un moyen efficace (<ref-ruling> consid. 2b p. 100; arrêt 6B_502/2017 du 16 avril 2018 consid. 1.1). Les art. 189 et 190 CP tendent à protéger la libre détermination en matière sexuelle, en réprimant l'usage de la contrainte aux fins d'amener une personne à faire ou à subir, sans son consentement, l'acte sexuel ou un autre acte d'ordre sexuel. Il s'agit de délits de violence, qui doivent être considérés principalement comme des actes d'agression physique (<ref-ruling> consid. 2.2 p. 109 et les arrêts cités).
Il en résulte que toute pression ou tout comportement conduisant à un acte sexuel non souhaité ne saurait être qualifié de contrainte. L'art. 190 CP, comme l'art. 189 CP (contrainte sexuelle), ne protège des atteintes à la libre détermination en matière sexuelle que pour autant que l'auteur surmonte ou déjoue la résistance que l'on pouvait raisonnablement attendre de la victime (<ref-ruling> consid. 4 p. 52 et l'arrêt cité). L'infraction visée par l'art. 190 CP exige donc non seulement qu'une personne subisse l'acte sexuel alors qu'elle ne le veut pas, mais également qu'elle le subisse du fait d'une contrainte exercée par l'auteur. A défaut d'une telle contrainte, de l'intensité exigée par la loi et la jurisprudence, il n'y a pas viol, même si la victime ne souhaitait pas entretenir une relation sexuelle (arrêt 6B_502/2017 du 16 avril 2018 consid. 1.1).
Les pressions d'ordre psychique concernent les cas où l'auteur provoque chez la victime des effets d'ordre psychique, tels que la surprise, la frayeur ou le sentiment d'une situation sans espoir, propres à la faire céder (<ref-ruling> consid. 3a/bb p. 111; <ref-ruling> consid. 2b p. 129). En cas de pressions d'ordre psychique, il n'est pas nécessaire que la victime ait été mise hors d'état de résister (<ref-ruling> consid. 3b p. 158 s.). Une situation d'infériorité physique ou de dépendance sociale et émotionnelle peut suffire. Pour déterminer si l'on se trouve en présence d'une contrainte sexuelle ou d'un viol, il faut procéder à une appréciation globale des circonstances concrètes déterminantes (<ref-ruling> consid. 2.2 p. 109).
Compte tenu du caractère de délit de violence que revêt la contrainte sexuelle, la pression psychique générée par l'auteur et son effet sur la victime doivent atteindre une intensité particulière, comparable à l'usage de la violence ou de la menace (<ref-ruling> consid. 3.1 p. 170 s. et les références citées). Pour que la contrainte soit réalisée, il faut au moins que les circonstances concrètes rendent la soumission compréhensible. Tel est le cas lorsque la victime est placée dans une situation telle qu'il serait vain de résister physiquement ou d'appeler du secours ou que cela entraînerait un préjudice disproportionné, de sorte que l'auteur parvient à ses fins, en passant outre au refus, sans avoir nécessairement à employer la violence ou la menace (cf. <ref-ruling> consid. 2b p. 101; <ref-ruling> consid. 7b p. 311 s.). Pour analyser si l'effet requis sur la victime a une intensité comparable à celle de la violence ou de la menace, il faut se fonder sur les circonstances de fait et la situation personnelle de la victime (arrêt 6B_1149/2014 du 16 juillet 2015 consid. 5.3.1).
2.4.2. Il ressort des constatations de la cour cantonale que le recourant a durant de nombreuses années exercé une constante autorité sur son épouse, qui ne parlait pas le français et était très isolée. Il faisait en outre régner une ambiance tyrannique au sein de son foyer, frappant régulièrement son épouse et la menaçant de violences et même de mort, sort qu'il affirmait en outre réserver aux personnes auprès desquelles elle pourrait chercher du secours. Le médecin auquel elle a fini par se confier a constaté que l'intimée se trouvait dans un état de détresse extrême et avait une peur panique du retour de son mari, qui était alors en vacances, et des conséquences de ce retour pour elle et son enfant.
Dans ces circonstances, il est compréhensible que l'intimée, qui n'était pas en mesure de résister physiquement et n'avait personne dont elle pouvait espérer du secours, ait considéré comme vaine, voire dangereuse, toute tentative de résister aux actes sexuels que lui imposait le recourant, lequel pouvait dès lors passer outre à son refus sans avoir recours à la violence ou à la menace. C'est donc sans violer le droit fédéral que la cour cantonale a considéré que l'élément constitutif de la contrainte était réalisé.
2.4.3. Sur le plan subjectif, l'art. 190 CP est une infraction intentionnelle, étant précisé que le dol éventuel suffit. Agit intentionnellement celui qui sait ou accepte l'éventualité que la victime ne soit pas consentante, qu'il exerce ou emploie un moyen de contrainte sur elle et qu'elle se soumette à l'acte sexuel sous l'effet de cette contrainte (<ref-ruling> consid. 3 p. 70 s.; arrêt 6B_502/2017 du 16 avril 2018 consid. 2.1 et les références citées).
Déterminer ce qu'une personne a su, envisagé, voulu ou accepté relève des constatations de fait (<ref-ruling> consid. 12 p. 152; <ref-ruling> consid. 6.3 p. 375), qui lient le Tribunal fédéral conformément à l'art. 105 al. 1 LTF.
2.4.4. La cour cantonale a constaté que le recourant, qui savait son épouse non consentante, la tirait en direction de la chambre à coucher et parvenait à lui imposer l'acte sexuel en lui faisant craindre qu'il la quitte ou qu'il la frappe.
Dans la mesure où il prétend n'avoir pas pu " deviner " que son épouse n'était pas consentante aux relations sexuelles dénoncées, son argumentation s'écarte donc des constatations de la cour cantonale et est par conséquent irrecevable.
2.5. Enfin, les considérations qui précèdent montrent que la motivation du jugement attaqué était suffisante tant pour que le recourant puisse l'attaquer utilement que pour permettre au Tribunal fédéral de s'assurer que le droit fédéral avait été correctement appliqué. Ainsi, le grief tiré d'une violation du droit d'être entendu du recourant en raison d'un prétendu défaut de motivation du jugement attaqué est également infondé.
3.
Mal fondé, le recours doit être rejeté dans la mesure où il est recevable. Comme il était dénué de chances de succès, la demande d'assistance judiciaire doit être rejetée (art. 64 al. 1 LTF) et le recourant, qui succombe, supportera les frais judiciaires (art. 66 al. 1 LTF), dont le montant sera toutefois fixé en tenant compte de sa situation financière qui n'apparaît pas favorable.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal vaudois.
Lausanne, le 20 avril 2020
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Paquier-Boinay