@@ -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 \ | |||
@@ -655,6 +656,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,356 @@ | |||
// Exceptions dictionary for: Faroese | |||
// Faroese prepared by Andras Eliassen, iSolveIT ApS (VoisIT) | |||
// This file in UTF8 encoded | |||
// Letters | |||
// If a letter has a "word" pronunciation which is different from its | |||
// "letter" name, then include the letter name here, with the letter | |||
// prefixed by a _ character. | |||
// numeric | |||
//******** | |||
_0 n'ul# | |||
_1 'aIt | |||
_2 tv'eI | |||
_3 Tr#'ui | |||
_4 f'u:*iRa | |||
_1f 'eIhd | |||
_2f tv'W: | |||
_3f Tr#j'u: | |||
_4f fj'W:Qyrr# | |||
_5 f'Im | |||
_6 s'E:gs | |||
_7 sj'Ei: | |||
_8 'aUhda | |||
_9 nu@-dju | |||
_10 tu@-dju | |||
_11 'EdlEv,y | |||
_12 t'@oUlv | |||
_13 t'rEhtan | |||
_14 fj'yr#tan | |||
_15 f'Imtan | |||
_16 s'ExsdaUn | |||
_17 s'Yy:djaUn | |||
_18 'ua:tjaUn | |||
_19 n'ui:tjaUn | |||
_21 aI:nut'jeu,vu | |||
_2X t'jeu,vu | |||
_3X Tred'i,vu | |||
_31 aI:nuTred'i,vu | |||
_4X fj'W:*Ryt,i;y | |||
_41 aI:nufj'W:*Ryt,i;y | |||
_5X h'aultruisj | |||
_51 aI:nuh'aultruisj | |||
_6X t'ruisj | |||
_61 aI:nut'ruisj | |||
_7X h@-lfjers | |||
_71 aI:nuh@-lfjers | |||
_8X f'uirs | |||
_81 aI:nuf'uirs | |||
_9X h'aulfems | |||
_91 aI:nuh'aulfems | |||
_0C h'undra | |||
_1C h'undra | |||
_2C tv'@i:||h'undra | |||
_3C Trui:||h'undra | |||
_4C fuirr#||h'undra | |||
_8C 'aUt||h'undra | |||
_0M1 T'eu:sin | |||
_0M2 m'IljoUn | |||
_1M2 eI:n||m'IljoUn | |||
_2M2 tv'ae:rr#||m'IdljoUnir | |||
_3M2 Tr#j'a:rr#||m'IdljoUnir | |||
_4M2 f'ui:ra||m'IdljoUnir | |||
_dpt _k,Omma_ | |||
_0and u-o | |||
_cap sd'oUrr#d | |||
_?? t'aUghn# | |||
// Characters | |||
// abbreviations | |||
// Function words | |||
hin $u+ | |||
hitt $u+ // this | |||
hina $u+ | |||
hinir $u+ | |||
hinar $u+ | |||
hinum $u+ | |||
hini $u+ | |||
hinu $u+ | |||
hins $u+ | |||
hinnar $u+ | |||
hinna $u+ | |||
// articles | |||
// pronouns | |||
eg $u // nominative | |||
tú $u | |||
hann $u | |||
hon $u | |||
tað $u | |||
vit $u | |||
tit $u | |||
teir $u | |||
tær $u | |||
tey $u | |||
meg $u+ | |||
teg $u+ | |||
hana $u+ | |||
okkara $u+ | |||
tykkara $u+ | |||
hetta $u+ | |||
hesir $u+ | |||
hesar $u+ | |||
hesi $u+ | |||
tann $u+ | |||
tá $u+ | |||
teim $u+ | |||
teirri $u+ | |||
hví $u+ | |||
tess $u+ | |||
teirra $u+ | |||
teir $u+ | |||
tær $u+ | |||
hvør $u+ $pause // who | |||
// possessive adjectives | |||
mín $u+ | |||
mítt $u+ | |||
mína $u+ | |||
mínum $u+ | |||
mínar $u+ | |||
míni $u+ | |||
mínu $u+ | |||
míns $u+ | |||
mínir $u+ | |||
tín $u+ | |||
títt $u+ | |||
tína $u+ | |||
tínum $u+ | |||
tíni $u+ | |||
// etc | |||
sín $u+ | |||
sítt $u+ | |||
sín $u+ | |||
sínum $u+ | |||
sína $u+ | |||
síni $u+ | |||
vár $u+ | |||
várt $u+ | |||
vára $u+ | |||
várar $u+ | |||
okkara $u+ | |||
tykkara $u+ | |||
// etc... | |||
// prepositions | |||
á $u+ $brk | |||
at $u+ $brk // towards | |||
av $u+ $brk // from,off of | |||
eftir $u+ $pause // after,by | |||
frá $u+ $brk // off | |||
fyri $u+ $pause // for,by | |||
í $u+ $brk | |||
við $u+ $brk // with | |||
til $u+ $brk // to | |||
um $u+ $brk // about | |||
við $u+ $brk // with,at,against | |||
úr $u+ $brk // out of | |||
uttan $u+ $pause // without | |||
hjá $u+ $brk // by, with | |||
millum $pause // between | |||
mót $u+ $brk // against | |||
móti $u+ $brk // against | |||
afturat $brk // in addition to, besides | |||
gjøgnum $brk // through | |||
undir $u $brk // under | |||
yvir $brk // over | |||
framvið $brk // by, past | |||
handan $brk // behind | |||
áðrenn $pause // before | |||
vegna $pause // because of | |||
síðan $pause // since | |||
// conjunctions | |||
men $u+ $pause // but | |||
ella $u+ $pause // or | |||
hvørki $pause // nor | |||
og $u+ $pause // and | |||
tá $pause // when, as soon as | |||
um $u+ $pause // if | |||
men $pause // but, however | |||
tó $pause // although | |||
vegna $pause // because of | |||
hvørt $pause // whether | |||
hóast $pause // thus, so | |||
meðan $pause // while, as long as | |||
annars $pause // else, otherwise | |||
so $pause // so (that) | |||
sum $u+ $brk // as | |||
hví $u+ $pause // the..the.. | |||
// negative | |||
ikki $u+ | |||
nei $u+ | |||
// questions | |||
// auxillary verbs (be, have, can, etc) | |||
//**************** | |||
var $u // was | |||
verða $u // to be | |||
er $u // is, present | |||
eru $u | |||
kunnu $u | |||
kann $u | |||
hava $u | |||
hevur $u | |||
havi $u | |||
var $u // was, past | |||
varst $u | |||
vóru $u | |||
verið $u | |||
eiga $u+ // to have (own) | |||
eigi $u+ | |||
átti $u+ // to have (own) past | |||
áttu $u+ | |||
átt $u+ | |||
hava $u // to have | |||
havi $u | |||
hevur $u | |||
høvdu $u | |||
hevði $u | |||
verð $u // to become | |||
verður $u | |||
verði $u | |||
verða $u | |||
gjørdist $u | |||
gjørdust $u | |||
bleiv $u | |||
varð $u // became, past | |||
varðst $u | |||
vóru $u | |||
blivu $u | |||
kann $u+ // can | |||
kannst $u+ | |||
kunnu $u+ | |||
kundi $u+ // could, past | |||
kundu $u+ | |||
vil $u+ // will | |||
vilt $u+ | |||
vilja $u+ | |||
vildi $u+ | |||
vildu $u+ | |||
fá $u+ // get | |||
fáa $u+ | |||
fær $u+ | |||
færst $u+ | |||
fái $u+ | |||
fekk $u+ // got, past | |||
fekkst $u+ | |||
fingu $u+ | |||
// some common adjectives and adverbs | |||
nøkur $u+ // any, some, a few | |||
nakar $u+ | |||
nøkrum $u+ | |||
nakað $u+ | |||
nakars $u+ | |||
nakrir $u+ | |||
nakrar $u+ | |||
summir $u+ // some | |||
summum $u+ | |||
summi $u+ | |||
// common adverbs etc. | |||
fram $u+ // forward | |||
aftur $u+ // backwards | |||
// character names | |||
//**************** | |||
_á ua: | |||
á ua: $atend | |||
b bE: | |||
c sE: | |||
d dE: | |||
ð E:D | |||
f Ef | |||
g gE: | |||
h ho'a: | |||
i i: | |||
_í ui: | |||
í ui: $atend | |||
j j'O:D | |||
k k'@a: | |||
l El | |||
m Em | |||
n En | |||
p p'E: | |||
q ku: | |||
r Er: | |||
s Es: | |||
t tE: | |||
ú e'u | |||
v vE: | |||
w tv'uivE: | |||
x E:xs | |||
_y 'yfsilOn||,I: | |||
_ý 'yfsilOn||,i: | |||
y 'yfsilOn||,I: $atend | |||
ý 'yfsilOn||,i: $atend | |||
z sE:ta | |||
þ T'Ordn# | |||
// MAIN WORD DICTIONARY | |||
//********************* | |||
bolla bOlla | |||
halló halloU | |||
mylla mIlla |
@@ -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,2 @@ | |||
name Faroese | |||
language fo |
@@ -0,0 +1,350 @@ | |||
//========================================================= | |||
// Faroese | |||
// Faroese prepared by Andras Eliassen, iSolveIT ApS (VoisIT) | |||
//========================================================= | |||
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 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 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 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 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 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 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 | |||
@@ -826,6 +826,17 @@ Translator *SelectTranslator(const char *name) | |||
case L('e', 't'): // Estonian | |||
tr->encoding = ESPEAKNG_ENCODING_ISO_8859_4; | |||
// fallthrough: | |||
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', 'i'): // Finnish | |||
{ | |||
tr->langopts.long_stop = 130; |