| @@ -41,6 +41,7 @@ updated languages: | |||
| new languages: | |||
| * ti (Tigrinya) -- Biniam Gebremichael | |||
| * mto (Totontepec Mixe) -- Bill Dengler, Elizabeth Resendiz | |||
| * fo (Faroese) -- Andras Eliassen, iSolveIT ApS and Setur.fo/Ravnur | |||
| * kaa (Karakalpak) -- atabekm | |||
| * xex (Xextan) -- Filomena Rocca | |||
| @@ -471,6 +471,7 @@ dictionaries: \ | |||
| espeak-ng-data/eu_dict \ | |||
| espeak-ng-data/fa_dict \ | |||
| espeak-ng-data/fi_dict \ | |||
| espeak-ng-data/fo_dict \ | |||
| espeak-ng-data/fr_dict \ | |||
| espeak-ng-data/ga_dict \ | |||
| espeak-ng-data/gd_dict \ | |||
| @@ -657,6 +658,9 @@ espeak-ng-data/fa_dict: dictsource/fa_list dictsource/fa_rules dictsource/fa_ext | |||
| fi: espeak-ng-data/fi_dict | |||
| espeak-ng-data/fi_dict: dictsource/fi_list dictsource/fi_rules dictsource/fi_extra dictsource/fi_emoji | |||
| fo: espeak-ng-data/fo_dict | |||
| espeak-ng-data/fo_dict: dictsource/fo_list dictsource/fo_rules dictsource/fo_extra dictsource/fo_emoji | |||
| fr: espeak-ng-data/fr_dict | |||
| espeak-ng-data/fr_dict: dictsource/fr_list dictsource/fr_rules dictsource/fr_extra dictsource/fr_emoji | |||
| @@ -0,0 +1,179 @@ | |||
| // Faroese prepared by Andras Eliassen, iSolveIT ApS (VoisIT) | |||
| // This file is UTF8 encoded. | |||
| // letter group B voiceless consonants c,f,h,k,p,t,x,þ | |||
| // letter group F p,t,k,s | |||
| // letter group H j,r,v, | |||
| .L01 e i í y ý æ j // front vowels | |||
| .L02 c f h k p t x s // voiceless consonants | |||
| .L03 p t k | |||
| .replace | |||
| x xz // so that it behaves as 2 letters | |||
| .group a | |||
| a a | |||
| .group á | |||
| á %oa | |||
| .group b | |||
| b b | |||
| bb b | |||
| .group c | |||
| c k | |||
| c (e s | |||
| c (i s | |||
| .group d | |||
| d d | |||
| dd d | |||
| .group ð | |||
| ð v | |||
| .group e | |||
| e E: | |||
| .group é | |||
| é jE: | |||
| .group f | |||
| f f | |||
| ff f | |||
| .group g | |||
| g g | |||
| gg g | |||
| e) g | |||
| g (i dj | |||
| .group h | |||
| h h | |||
| .group i | |||
| i I: | |||
| .group í | |||
| í ui: | |||
| .group j | |||
| j j | |||
| .group k | |||
| _) k k | |||
| k k | |||
| k (i tj | |||
| .group l | |||
| l l | |||
| .group m | |||
| m m | |||
| .group n | |||
| n n | |||
| nn n: | |||
| .group o | |||
| o O: | |||
| o (CC o | |||
| .group ó | |||
| ó oU: | |||
| .group p | |||
| p p | |||
| .group q | |||
| q k | |||
| .group r | |||
| r r | |||
| o) rn dn | |||
| e) rn dn | |||
| .group s | |||
| s s | |||
| ss ss2 | |||
| .group t | |||
| _) t t | |||
| t t | |||
| tt t | |||
| .group u | |||
| u u | |||
| .group ú | |||
| ú u: | |||
| .group v | |||
| v v | |||
| .group w | |||
| w v | |||
| .group x | |||
| x ks | |||
| xz ks | |||
| .group y | |||
| y y | |||
| .group ý | |||
| ý ui: | |||
| .group z | |||
| z z | |||
| zz ts // pizza | |||
| .group æ | |||
| æ @: | |||
| .group ö | |||
| ö W: | |||
| .group ø | |||
| ø W: | |||
| .group | |||
| $ dOllari | |||
| @@ -0,0 +1,4 @@ | |||
| name Faroese | |||
| language fo | |||
| maintainer iSolveIT ApS (Andras Eliassen) <[email protected]> | |||
| status testing | |||
| @@ -0,0 +1,458 @@ | |||
| //========================================================= | |||
| // Faroese | |||
| //========================================================= | |||
| phoneme : // Lengthen previous vowel by "length" | |||
| virtual | |||
| length 110 | |||
| endphoneme | |||
| // Vowels | |||
| //======= | |||
| phoneme i | |||
| vwl starttype #i endtype #i | |||
| length 130 | |||
| IfNextVowelAppend(;) | |||
| FMT(vowel/ii_6) | |||
| endphoneme | |||
| phoneme i: | |||
| vwl starttype #i endtype #i | |||
| length 230 | |||
| IfNextVowelAppend(;) | |||
| ChangeIfNotStressed(i) | |||
| FMT(vowel/i_4) | |||
| endphoneme | |||
| phoneme I | |||
| vwl starttype #i endtype #i | |||
| length 130 | |||
| IfNextVowelAppend(;) | |||
| FMT(vowel/ii) | |||
| endphoneme | |||
| phoneme I: | |||
| vwl starttype #i endtype #i | |||
| length 230 | |||
| IfNextVowelAppend(;) | |||
| ChangeIfNotStressed(I) | |||
| FMT(vowel/ii) | |||
| endphoneme | |||
| phoneme E | |||
| vwl starttype #e endtype #e | |||
| length 130 | |||
| FMT(vowel/e_mid) | |||
| endphoneme | |||
| phoneme E: | |||
| vwl starttype #e endtype #e | |||
| length 130 | |||
| FMT(vowel/e_e) | |||
| endphoneme | |||
| phoneme A | |||
| vwl starttype #@ endtype #@ | |||
| length 130 | |||
| FMT(vowel/a#_2) | |||
| endphoneme | |||
| phoneme a | |||
| vwl starttype #a endtype #a | |||
| length 130 | |||
| FMT(vowel/a#_2) | |||
| endphoneme | |||
| phoneme a: | |||
| vwl starttype #a endtype #a | |||
| length 230 | |||
| ChangeIfNotStressed(a) | |||
| FMT(vowel/aa_8) | |||
| endphoneme | |||
| phoneme O | |||
| vwl starttype #o endtype #o | |||
| length 130 | |||
| FMT(vowel/oo_5) | |||
| endphoneme | |||
| phoneme O: | |||
| vwl starttype #o endtype #o | |||
| length 230 | |||
| ChangeIfNotStressed(O) | |||
| FMT(vdiph2/o_oo) | |||
| endphoneme | |||
| phoneme 2 | |||
| vwl starttype #o endtype #e | |||
| length 130 | |||
| FMT(vowel/oe) | |||
| endphoneme | |||
| phoneme 2: | |||
| vwl starttype #o endtype #e | |||
| length 230 | |||
| ChangeIfNotStressed(2) | |||
| FMT(vowel/oe_4) | |||
| endphoneme | |||
| phoneme 3 | |||
| vwl starttype #e endtype #u | |||
| length 130 | |||
| FMT(vowel/e_6) | |||
| endphoneme | |||
| phoneme 3: | |||
| vwl starttype #e endtype #u | |||
| length 230 | |||
| ChangeIfNotStressed(2) | |||
| FMT(vowel/e_6) | |||
| endphoneme | |||
| phoneme 4 | |||
| vwl starttype d endtype d | |||
| length 130 | |||
| WAV(x/d) | |||
| endphoneme | |||
| phoneme 4: | |||
| vwl starttype d endtype d | |||
| length 230 | |||
| ChangeIfNotStressed(4) | |||
| WAV(x/d_) | |||
| endphoneme | |||
| phoneme 5 | |||
| vwl starttype t endtype h | |||
| length 130 | |||
| WAV(ustop/th_rfx) | |||
| endphoneme | |||
| phoneme 5: | |||
| vwl starttype t endtype h | |||
| length 230 | |||
| ChangeIfNotStressed(5) | |||
| WAV(ustop/th_rfx2) | |||
| endphoneme | |||
| phoneme 8 | |||
| vwl starttype #@ endtype #@ | |||
| length 130 | |||
| FMT(vowel/@) | |||
| endphoneme | |||
| phoneme 8: | |||
| vwl starttype #@ endtype #@ | |||
| length 230 | |||
| ChangeIfNotStressed(2) | |||
| FMT(vowel/@) | |||
| endphoneme | |||
| phoneme 9 | |||
| vwl starttype #e endtype #a | |||
| length 130 | |||
| FMT(vowel/@_2) | |||
| endphoneme | |||
| phoneme 9: | |||
| vwl starttype #e endtype #a | |||
| length 230 | |||
| ChangeIfNotStressed(9) | |||
| FMT(vowel/@_4) | |||
| endphoneme | |||
| phoneme u | |||
| vwl starttype #u endtype #u | |||
| length 130 | |||
| FMT(vowel/u_2) | |||
| endphoneme | |||
| phoneme u: | |||
| vwl starttype #u endtype #u | |||
| length 230 | |||
| ChangeIfNotStressed(u) | |||
| FMT(vowel/u_bck) | |||
| endphoneme | |||
| phoneme U | |||
| vwl starttype #u endtype #u | |||
| length 110 | |||
| FMT(vowel/u_2) | |||
| endphoneme | |||
| phoneme y | |||
| vwl starttype #@ endtype #@ | |||
| length 130 | |||
| FMT(vowel/y##) | |||
| endphoneme | |||
| phoneme y: | |||
| vwl starttype #i endtype #i | |||
| length 230 | |||
| ChangeIfNotStressed(y) | |||
| FMT(vowel/yy_4) | |||
| endphoneme | |||
| phoneme W | |||
| vwl starttype #@ endtype #@ | |||
| length 130 | |||
| FMT(vowel/y#_3) | |||
| endphoneme | |||
| phoneme W: | |||
| vwl starttype #@ endtype #@ | |||
| length 130 | |||
| ChangeIfNotStressed(W) | |||
| FMT(vowel/y#_3) | |||
| endphoneme | |||
| phoneme aI | |||
| vwl starttype #a endtype #i | |||
| length 170 | |||
| FMT(vdiph/ai_7) | |||
| endphoneme | |||
| phoneme aI: | |||
| vwl starttype #a endtype #i | |||
| length 230 | |||
| ChangeIfNotStressed(aI) | |||
| FMT(vdiph/ai_7) | |||
| endphoneme | |||
| phoneme eI | |||
| vwl starttype #e endtype #i | |||
| length 170 | |||
| FMT(vdiph/ei) | |||
| endphoneme | |||
| phoneme eI: | |||
| vwl starttype #e endtype #i | |||
| length 230 | |||
| ChangeIfNotStressed(eI) | |||
| FMT(vdiph/ei) | |||
| endphoneme | |||
| phoneme aU | |||
| vwl starttype #a endtype #u | |||
| length 170 | |||
| FMT(vdiph/aau) | |||
| endphoneme | |||
| phoneme aU: | |||
| vwl starttype #a endtype #u | |||
| length 230 | |||
| ChangeIfNotStressed(aU) | |||
| FMT(vdiph/aau) | |||
| endphoneme | |||
| phoneme oU | |||
| vwl starttype #o endtype #u | |||
| length 170 | |||
| FMT(vdiph/ou_3) | |||
| endphoneme | |||
| phoneme oU: // long version for óf | |||
| vwl starttype #o endtype #u | |||
| length 230 | |||
| ChangeIfNotStressed(oU) | |||
| FMT(vdiph/ou_3) | |||
| endphoneme | |||
| phoneme Yy | |||
| vwl starttype #@ endtype #i | |||
| length 150 | |||
| FMT(vdiph/y#i_2) | |||
| endphoneme | |||
| phoneme Y | |||
| vwl starttype #@ endtype #i | |||
| length 150 | |||
| FMT(vdiph/y#i_2) | |||
| endphoneme | |||
| phoneme Yy: | |||
| vwl starttype #@ endtype #i | |||
| length 220 | |||
| ChangeIfNotStressed(Yy) | |||
| FMT(vdiph/y#i_2) | |||
| endphoneme | |||
| phoneme OI | |||
| vwl starttype #o endtype #i | |||
| length 210 | |||
| FMT(vdiph/oi) | |||
| endphoneme | |||
| phoneme yI | |||
| vwl starttype #i endtype #i | |||
| length 180 | |||
| FMT(vowel/yy_4) | |||
| endphoneme | |||
| // Consonants | |||
| //=========== | |||
| phoneme m# | |||
| vcd blb nas | |||
| lengthmod 6 | |||
| ipa m# | |||
| Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk | |||
| FMT(m/m#_) | |||
| endphoneme | |||
| phoneme M | |||
| vcd blb nas | |||
| lengthmod 6 | |||
| ipa m# | |||
| Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk | |||
| FMT(m/m#_) | |||
| endphoneme | |||
| phoneme n# | |||
| vcd alv nas | |||
| lengthmod 6 | |||
| ipa n# | |||
| Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk | |||
| NextVowelStarts | |||
| VowelStart(n/n@) | |||
| VowelStart(n/na) | |||
| VowelStart(n/ne) | |||
| VowelStart(n/ni) | |||
| VowelStart(n/no) | |||
| VowelStart(n/nu) | |||
| EndSwitch | |||
| FMT(n/n#_) | |||
| endphoneme | |||
| phoneme n^# | |||
| vcd pal nas pzd | |||
| lengthmod 6 | |||
| ipa ɲ# | |||
| Vowelout f1=3 f2=2300 300 400 f3=100 80 brk rate | |||
| FMT(n^/n^#_) | |||
| endphoneme | |||
| phoneme N# | |||
| vcd vel nas | |||
| lengthmod 6 | |||
| ipa ŋ# | |||
| Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk | |||
| NextVowelStarts | |||
| VowelStart(nn/nn@) | |||
| VowelStart(nn/nna) | |||
| VowelStart(nn/nne) | |||
| VowelStart(nn/nni) | |||
| VowelStart(nn/nno) | |||
| VowelStart(nn/nnu) | |||
| EndSwitch | |||
| FMT(nn/nn#_) | |||
| endphoneme | |||
| phoneme l# | |||
| vls alv frc | |||
| lengthmod 3 | |||
| ipa l# | |||
| WAV(ufric/l#, 25) | |||
| endphoneme | |||
| phoneme tl# | |||
| vls alv stp | |||
| lengthmod 2 | |||
| ipa tl# | |||
| Vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||
| Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 | |||
| WAV(ufric/tl#, 50) | |||
| endphoneme | |||
| phoneme r# // used for [r] when not preceding a vowel | |||
| liquid | |||
| lengthmod 2 // | |||
| ipa r# | |||
| FMT(r3/r#_) addWav(r3/rx) | |||
| // before n r3/r_n+r3/rx | |||
| endphoneme | |||
| phoneme b | |||
| vls blb stp | |||
| lengthmod 5 | |||
| Vowelin f1=1 f2=1000 -300 -200 f3=-200 80 amp=11 | |||
| Vowelout f1=2 f2=1000 -300 -300 f3=-300 80 brk | |||
| WAV(x/b) | |||
| endphoneme | |||
| phoneme d | |||
| vls alv stp | |||
| lengthmod 5 | |||
| Vowelin f1=2 f2=1700 -300 300 f3=-100 80 | |||
| Vowelout f1=2 f2=1700 -300 300 f3=-100 80 | |||
| IF nextPh(isPause2) THEN | |||
| WAV(x/d_) | |||
| ENDIF | |||
| WAV(x/d, 80) | |||
| endphoneme | |||
| phoneme g | |||
| vls vel stp | |||
| lengthmod 5 | |||
| Vowelin f1=2 f2=2300 200 300 f3=-300 80 | |||
| Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | |||
| IF nextPh(isPause2) THEN | |||
| WAV(x/g_) | |||
| ENDIF | |||
| WAV(x/g2, 150) | |||
| endphoneme | |||
| phoneme H | |||
| vls glt frc | |||
| ipa h | |||
| WAV(h/h_phr) | |||
| endphoneme | |||
| phoneme v // no fricative noise | |||
| import_phoneme base1/v# | |||
| voicingswitch f | |||
| endphoneme | |||
| phoneme s2 // 2nd part of geminated s | |||
| import_phoneme consonants/s2 | |||
| endphoneme | |||
| @@ -1708,6 +1708,9 @@ include ph_farsi | |||
| phonemetable fi base1 | |||
| include ph_finnish | |||
| phonemetable fo base1 | |||
| include ph_faroese | |||
| phonemetable smj base1 | |||
| include ph_lule_saami | |||
| @@ -834,6 +834,17 @@ Translator *SelectTranslator(const char *name) | |||
| SetLetterVowel(tr, 'y'); | |||
| } | |||
| break; | |||
| case L('f', 'o'): // Faroese | |||
| { | |||
| //static const short stress_lengths_da[8] = { 160, 140, 200, 200, 0, 0, 220, 230 }; | |||
| //SetupTranslator(tr, stress_lengths_da, NULL); | |||
| //tr->langopts.stress_rule = STRESSPOSN_1L; | |||
| //tr->langopts.param[LOPT_PREFIXES] = 1; | |||
| //SetLetterVowel(tr, 'y'); | |||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_ORDINAL_DOT | NUM_1900 | NUM_ROMAN | NUM_ROMAN_CAPITALS | NUM_ROMAN_ORDINAL; | |||
| } | |||
| break; | |||
| case L('f', 'r'): // french | |||
| { | |||
| SetupTranslator(tr, stress_lengths_fr, stress_amps_fr); | |||
| @@ -144,6 +144,9 @@ | |||
| <Component Id="fi_dict" Guid="A940BAEF-840D-4A76-AF8E-1971E88F9057"> | |||
| <File Id="fi_dict" KeyPath="yes" Source="$(var.ProjectDir)\..\..\..\espeak-ng-data\fi_dict" /> | |||
| </Component> | |||
| <Component Id="fo_dict" Guid="68CBDAF4-8D0E-44CC-8523-3E0CF5343024"> | |||
| <File Id="fo_dict" KeyPath="yes" Source="$(var.ProjectDir)\..\..\..\espeak-ng-data\fo_dict" /> | |||
| </Component> | |||
| <Component Id="fr_dict" Guid="437EC744-1AF9-49CF-8058-BEBDE579EF79"> | |||
| <File Id="fr_dict" KeyPath="yes" Source="$(var.ProjectDir)\..\..\..\espeak-ng-data\fr_dict" /> | |||
| </Component> | |||
| @@ -532,6 +535,9 @@ | |||
| <Component Id="da" Guid="F2056D5A-95BE-4141-9884-BDECCD20911F"> | |||
| <File Id="da" KeyPath="yes" Source="$(var.ProjectDir)\..\..\..\espeak-ng-data\lang\gmq\da" /> | |||
| </Component> | |||
| <Component Id="fo" Guid="0786F902-D75C-4A41-956B-A6D2F25180A2"> | |||
| <File Id="fo" KeyPath="yes" Source="$(var.ProjectDir)\..\..\..\espeak-ng-data\lang\gmq\fo" /> | |||
| </Component> | |||
| <Component Id="is" Guid="D77DC66C-17BA-425C-A1E4-18D9CAC03284"> | |||
| <File Id="is" KeyPath="yes" Source="$(var.ProjectDir)\..\..\..\espeak-ng-data\lang\gmq\is" /> | |||
| </Component> | |||
| @@ -1490,6 +1496,7 @@ | |||
| <ComponentRef Id="eu_dict" /> | |||
| <ComponentRef Id="fa_dict" /> | |||
| <ComponentRef Id="fi_dict" /> | |||
| <ComponentRef Id="fo_dict" /> | |||
| <ComponentRef Id="fr_dict" /> | |||
| <ComponentRef Id="ga_dict" /> | |||
| <ComponentRef Id="gd_dict" /> | |||
| @@ -1695,6 +1702,7 @@ | |||
| <ComponentRef Id="uz" /> | |||
| <ComponentRef Id="et" /> | |||
| <ComponentRef Id="fi" /> | |||
| <ComponentRef Id="fo" /> | |||
| <ComponentRef Id="hu" /> | |||
| <ComponentRef Id="smj" /> | |||
| <ComponentRef Id="be" /> | |||
| @@ -53,6 +53,7 @@ test_phwav eu 804e3829faa40e6e48aa43ad5a372372808d66f6 "ma na n^a pa ta ca ka ba | |||
| test_phwav fa d2bdd62b68a21cea12d095b5032c7eb19759c133 "ma na Na pa ba ta da ka ga qa ?a fa va sa za Sa Za xa Qa ha tSa dZa Ra la ja _:_ mA mi mu ma me mo meI moU" | |||
| test_phwav fa-Latn d2bdd62b68a21cea12d095b5032c7eb19759c133 "ma na Na pa ba ta da ka ga qa ?a fa va sa za Sa Za xa Qa ha tSa dZa Ra la ja _:_ mA mi mu ma me mo meI moU" | |||
| test_phwav fi 38e641b031af4f2d39ee150ca3f26f4bc84d9aa0 "ma na Na pa ba ta da ka ga ?a fa sa Sa ha va la ja Ra R2a s2a _:_ mi mI me m& ma ma2 mo mY mu mu1 mU my mai m&i moi mei mYi mui myi mau mou meu miu m&y mey mYy miy muo mie myY" | |||
| test_phwav fo 13c22fcd8aa140bd22e3299fdcc75b5b2c2308ca "m#a ma n#a na n^#a n^a N#a Na pa ta ca ka fa va Ta Da sa Ca J^a xa Qa ha l#a la tl#a r#a ra _:_ mi mi: mI mI: mE mE: ma ma: mO mO: mu mu: my my: mW mW: maI maI: meI meI: maU maU: moU moU: mYy mOI myI" | |||
| test_phwav fr 4e312a224c8976da90a7faec8edabbc2fe311310 "ma na n^a Na pa ta ka ba da ga fa sa Sa va za Za la ja ra Ra wa r2a r/a r/2a l/a l/2a w/a n2a p2a t2a t3a z2a z3a _:_ m@ m@- ma ma- me me- mE mE- mi mj/ mo mO moU mu mu: my my- mW mY mA~ mE~ mO~ mW~ _:_ ma# mI mI2 mW2 mV" | |||
| test_phwav fr-BE 4e312a224c8976da90a7faec8edabbc2fe311310 "ma na n^a Na pa ta ka ba da ga fa sa Sa va za Za la ja ra Ra wa r2a r/a r/2a l/a l/2a w/a n2a p2a t2a t3a z2a z3a _:_ m@ m@- ma ma- me me- mE mE- mi mj/ mo mO moU mu mu: my my- mW mY mA~ mE~ mO~ mW~ _:_ ma# mI mI2 mW2 mV" | |||
| test_phwav fr-CH 4e312a224c8976da90a7faec8edabbc2fe311310 "ma na n^a Na pa ta ka ba da ga fa sa Sa va za Za la ja ra Ra wa r2a r/a r/2a l/a l/2a w/a n2a p2a t2a t3a z2a z3a _:_ m@ m@- ma ma- me me- mE mE- mi mj/ mo mO moU mu mu: my my- mW mY mA~ mE~ mO~ mW~ _:_ ma# mI mI2 mW2 mV" | |||