@@ -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" |