Browse Source

[1.46.47]

Fix bug in SAPI5 version: speed suddenly changes to very slow when speaking a word which contains foreign characters.
Language changes: da, fa, hu, pt, ur.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@313 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 12 years ago
parent
commit
790c9a1754

+ 18
- 17
dictsource/da_list View File

_! udRVbstejn _! udRVbstejn
_- binnesdrai _- binnesdrai
__ b'Onsdrai __ b'Onsdrai
& Vw
& _Vw
£ pun? £ pun?
€ euro € euro
© kVpirajt © kVpirajt
_7X h&lfj'&rs // PV a changed to & _7X h&lfj'&rs // PV a changed to &
_8X f'irs _8X f'irs
_9X h&lf'Ems // PB a changed to & _9X h&lf'Ems // PB a changed to &
_0C h'un*@:D
_1C ed||h'unR@:D // PB added 'et hundrede'
_0C h'un*VD
_1C ed||h'unRV:D // PB added 'et hundrede'
_0M1 t'u:s@-n _0M1 t'u:s@-n
_1M1 ed||t'u:s@-n // PB added 'et' to tusind _1M1 ed||t'u:s@-n // PB added 'et' to tusind
_1M2 'e:n||milij'o:n _1M2 'e:n||milij'o:n
fordi fVd'i $pause // because - PB: changed stress fordi fVd'i $pause // because - PB: changed stress
når nVr $pause // while når nVr $pause // while
der dEr $u+ $u // PB changed from [dA] der dEr $u+ $u // PB changed from [dA]
hvor v'Vr // where
hvorfor vVf'V // why - final r deleted
hvor v'O // where
hvorfor v?Of'?V // why - final r deleted


// prepositions // prepositions
på pO $u på pO $u
ved $u+ // at ved $u+ // at
om $u+ $brk // about, within om $u+ $brk // about, within
med $u+ // with med $u+ // with
af &_| // PB changed from [a?] to [&] - sound too short in a sentence
af & // PB changed from [a?] to [&] - sound too short in a sentence
// Also removed $u from 'af' and other words. They disappeared. // Also removed $u from 'af' and other words. They disappeared.
ad &: // PB added 'ad'
ad & // PB added 'ad'
ad &D $atend $sentence // PB "Det må ikke skille os ad." ad &D $atend $sentence // PB "Det må ikke skille os ad."
at &: $u // PB changed from [at] to [&:]
at & $u // PB changed from [at] to [&:]
hos // at - PB: removed [$u+] hos // at - PB: removed [$u+]
som sVm $u // which / that - PB: removed [$u+] som sVm $u // which / that - PB: removed [$u+]


// pronouns // pronouns
jeg jai $u+ // I
jeg jaj $u+ // I
du du $u du du $u
de $u de $u
han $u han $u
r Er r Er
s es s es
//t te: mooved to da_rules because of clash with T-shirt //t te: mooved to da_rules because of clash with T-shirt
u u?
u u
v ve v ve
w d'Vbeltve: w d'Vbeltve:
x Eks x Eks
y Y?
y y
z sEt z sEt
ø W ø W


suggerer $alt suggerer $alt
sulfoner $alt sulfoner $alt
summere $alt summere $alt
opsummere $alt
superviser $alt superviser $alt
suppler $alt suppler $alt
supponer $alt supponer $alt
vandaliser $alt vandaliser $alt
varedeklarer $alt varedeklarer $alt
varier $alt varier $alt
vatter $alt
vattere $alt
vegeter $alt vegeter $alt
ventilere $alt ventilere $alt
verbaliser $alt verbaliser $alt
rejicering rejis'eRiN // PB rejicering rejis'eRiN // PB
nogle n'o:@-n // PB English: 'some' - must be pronounced like the Danish word 'nogen' nogle n'o:@-n // PB English: 'some' - must be pronounced like the Danish word 'nogen'
nogen n'o:@-n // PB nogen n'o:@-n // PB
ligesom lisVm // PB
ligesom l?isVm // PB
bliver blir // PB bliver blir // PB
konfirmand kVnferm'&nd // PB konfirmand kVnferm'&nd // PB
konfirmander kVnferm'&nd3 // PB konfirmander kVnferm'&nd3 // PB
// PB problem with noun "hav" = ocean and verb "hav(e)" = to have [hAu]/[h&v] // PB problem with noun "hav" = ocean and verb "hav(e)" = to have [hAu]/[h&v]
(et hav) ed||h'Au // PB "et hav" = an ocean - not "hav en god dag" - have a nice day (et hav) ed||h'Au // PB "et hav" = an ocean - not "hav en god dag" - have a nice day
// PB legende = legend/myth and = playing // PB legende = legend/myth and = playing
(en legende) en||leg'End@
legenden leg'End@n
(en legende) en||leg'End@-
legenden leg'End@-n
legender leg'EndV legender leg'EndV
legenders leg'EndVs legenders leg'EndVs
legenderne leg'EndVn3
legenderne leg'EndVn3s
legenderne leg'EndVn@-
legendernes leg'EndVn@-s
// PB verb "forsyne" noun "forsyn" - stress problem // PB verb "forsyne" noun "forsyn" - stress problem
(et forsyn) ed||f'Vrsyn (et forsyn) ed||f'Vrsyn
(forsynet har) f'Vrsyn@d||hAr (forsynet har) f'Vrsyn@d||hAr

+ 7589
- 7564
dictsource/da_rules
File diff suppressed because it is too large
View File


+ 12
- 12
dictsource/dict_phonemes View File

x z x z




Dictionary da_dict 2013-03-06
Dictionary da_dict 2013-03-13


& &# 0 3 ?& ?&# ?0 ?a
?A ?e ?E ?i ?o ?O ?u ?V
?W ?W# ?y @ @- a A aI
e E i I o O u V
& &# 0 3 ?& ?&# ?0 ?A
?e ?E ?i ?o ?O ?u ?V ?W
?W# ?y @ @- a A aI e
E i I n- o O u V
W W# y Y W W# y Y


* - 3- : ; ? b B * - 3- : ; ? b B
v w x z Z v w x z Z




Dictionary hu_dict 2013-03-11
Dictionary hu_dict 2013-03-12


a A a: e E e: i i: a A a: e E e: i i:
o o: u u: Y y y: Y: o o: u u: Y y y: Y:
ts v x z ts v x z




Dictionary en_dict 2013-03-10
Dictionary en_dict 2013-03-12


0 0# 3 3: @ @- @2 @5 0 0# 3 3: @ @- @2 @5
@L a a# A: A@ aa aI aI3 @L a a# A: A@ aa aI aI3
d# dZ f g h j k l d# dZ f g h j k l
l# l/ m n N n^ p Q l# l/ m n N n^ p Q
q Q" r R r- R2 s S q Q" r R r- R2 s S
t T t2 tS v w x z
Z z#
t T t2 tS tS; v w x
z Z z#




Dictionary eo_dict 2013-03-08 Dictionary eo_dict 2013-03-08
ts; v w x z Z Z; ts; v w x z Z Z;




Dictionary pt_dict 2013-03-11
Dictionary pt_dict 2013-03-13


& &/ &U~ &~ @ @- a A & &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU aI aU e E eI EI eU EU
t tS v w x z t tS v w x z




Dictionary ur_dict 2013-03-09
Dictionary ur_dict 2013-03-13


@ a a: aI aU e E e: @ a a: aI aU e E e:
i I i: O o: U u: V i I i: O o: U u: V
t- tS tS; w t- tS tS; w




Dictionary fa_dict 2013-02-13
Dictionary fa_dict 2013-03-12


a A e i o u a A e i o u



+ 11
- 4
dictsource/en_list View File

_ti tI2b'Et@n _ti tI2b'Et@n
_my mj'A:nmA@ _my mj'A:nmA@
_ka dZ'O@dZ@n _ka dZ'O@dZ@n
_ko k3r'i@n
_ko h'angul
_eth i:TI'0pIk _eth i:TI'0pIk
_ja dZ'ap@ni:z _ja dZ'ap@ni:z
_zh tS'aIni:z _zh tS'aIni:z
ш Sa ш Sa
щ StSa щ StSa
ъ jEr ъ jEr
ы _^_RU
ь jer
ы j'Eru
ь j'eri
э E э E
ю ju ю ju
я ja я ja
ћ tS;E
ђ djE
ќ kjE



// Arabic letters // Arabic letters


canoe k@nu: canoe k@nu:
canoes k@nu:z canoes k@nu:z
canon kan@n canon kan@n
?3 cantaloupe kant@loUp
canton kant0n canton kant0n
canvas kanv@s canvas kanv@s
capita kapIt@ capita kapIt@
congressional k@ngrES@n@L congressional k@ngrES@n@L
conker $1 conker $1
conscience k0nS@ns conscience k0nS@ns
consort $1
consort $verb
constitute $1 constitute $1
construct $1 $onlys construct $1 $onlys
construct $verb construct $verb
signage saInI2dZ signage saInI2dZ
signal sIgn@l // signaled signal sIgn@l // signaled
signer saIn3 signer saIn3
signoff s,aIn'0f
signoff s'aIn0f
signon s,aIn'0n signon s,aIn'0n
signup saInVp signup saInVp
sikh si:k sikh si:k

+ 3
- 3
dictsource/en_rules View File

_r) adio (@P5 r,eIdI%oU _r) adio (@P5 r,eIdI%oU
r) adi (oL10+ eIdI r) adi (oL10+ eIdI
b) ad (os_ eId b) ad (os_ eId
_s) ado (ma ,eIdoU
ad (iA eId ad (iA eId
s) ad (is eId s) ad (is eId
_tr) ad (it a#d _tr) ad (it a#d
&) ion (_ =i@n &) ion (_ =i@n
?8 &) ion (_ =IVn ?8 &) ion (_ =IVn
ll) ion i@n ll) ion i@n
ll) ion (_ =i@n
n) ion =i@n n) ion =i@n
v) io (l aI@ v) io (l aI@
ione (_ 'aI@ni ione (_ 'aI@ni
_l) iv (eB aIv _l) iv (eB aIv
XC) iv (el Iv XC) iv (el Iv
_g) iv (e Iv _g) iv (e Iv
_l) iv (e Iv
l) iv (er Iv l) iv (er Iv
r) iv (er Iv r) iv (er Iv
dr) iv (er aIv dr) iv (er aIv
_) metall (ic m@tal _) metall (ic m@tal
metabo m@t'ab0 metabo m@t'ab0
_) meta (llu m%Eta _) meta (llu m%Eta
_) mobile moUbaIl
mobile m@bi:l
&) mobile m@bi:l
mono (ga m@n'0 mono (ga m@n'0
mo (noto m@ mo (noto m@
_) mono m0noU _) mono m0noU

+ 1653
- 12
dictsource/fa_list
File diff suppressed because it is too large
View File


+ 37
- 6
dictsource/fa_rules View File

// Text to phoneme rules for Farsi // Text to phoneme rules for Farsi




// replace Arabic character numbers with Latin character numbers
// replacing unknown characters and Arabic numbers with Farsi characters and Latin numbers
.replace .replace
٪ % ٪ %
ي ی ي ی
ۍ ی ۍ ی
ى ی ى ی
ك ک ك ک
ە ه
ھ ه
٠ 0 ٠ 0
۰ 0 ۰ 0
۱ 1 ۱ 1
.L01 آ ا ی ي و .L01 آ ا ی ي و


// short vowels (commonly unwritten ) // short vowels (commonly unwritten )
.L02 َ ُ ِ ً ٌ ٍ ّ ؤ أ إ ء ۀ
.L02 َ ُ ِ ْ ً ٌ ٍ ّ ؤ أ إ ء ۀ


// All consonants // All consonants
.L03 ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ه ة ئ .L03 ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ه ة ئ


// all Farsi characters without ا آ
// all Farsi characters without ا آ and Short vowels
.L04 ض ص ث ق ف غ ع ه خ ح ج چ ش س ی ب ل ت ن م ک گ ۀ ظ ط ز ر ذ د ئ و ة ي ژ ؤ إ أ ء ؟ پ .L04 ض ص ث ق ف غ ع ه خ ح ج چ ش س ی ب ل ت ن م ک گ ۀ ظ ط ز ر ذ د ئ و ة ي ژ ؤ إ أ ء ؟ پ


// Group one of consonants // Group one of consonants
.L07 ن م ت ش ک مان تان شان ند نده ندۀ ندگی ندگان گی گان گانه گانۀ ستان ست .L07 ن م ت ش ک مان تان شان ند نده ندۀ ندگی ندگان گی گان گانه گانۀ ستان ست


// All vowels (long + Short) // All vowels (long + Short)
.L08 آ ا ی ي و َ ُ ِ ً ٌ ٍ ّ ؤ أ إ ء ۀ
.L08 آ ا ی ي و َ ُ ِ ْ ً ٌ ٍ ّ ؤ أ إ ء ۀ


// all Farsi characters without short vowels // all Farsi characters without short vowels
.L09 ض ص ث ق ف غ ع ه خ ح ج چ ش س ی ب ل ا ت ن م ک گ ۀ آ ظ ط ز ر ذ د ئ و ة ي ژ پ ؤ إ أ ء ؟ ّ .L09 ض ص ث ق ف غ ع ه خ ح ج چ ش س ی ب ل ا ت ن م ک گ ۀ آ ظ ط ز ر ذ د ئ و ة ي ژ پ ؤ إ أ ء ؟ ّ
L09L04) آلود (_Sm4 Alud L09L04) آلود (_Sm4 Alud
L09L04) آباد (_Sm4 AbAd L09L04) آباد (_Sm4 AbAd
L09L04) آفرین (_Sm5 AfaRin L09L04) آفرین (_Sm5 AfaRin
L09L09) آموخته (_Sm6 Amuxte:
L09L09) آموختۀ (_Sm6 Amuxteje
L09L09) آگاه (_Sm4 AgAh




.group ا .group ا
-) ا (للّه_+ o -) ا (للّه_+ o
_) ا (L02_ alef? _) ا (L02_ alef?
_) ا (L02L09 _) ا (L02L09
_) ا (L01
_) ا (L01L03
_) ا 'a: _) ا 'a:
_) ا (ع e _) ا (ع e
ا 'A ا 'A
L09L09) بخت (_Sm3 baxt L09L09) بخت (_Sm3 baxt
L09L09) باش (_Sm3 bAS L09L09) باش (_Sm3 bAS
L09L09) بزرگ (_Sm4 bozoRg L09L09) بزرگ (_Sm4 bozoRg
L09L09) باور (_Sm4 bAvaR
L09L09) برانگیز (_Sm baRangiz


// arabic form of words (Babs) ب // arabic form of words (Babs) ب
//فواعل eg. جوامع //فواعل eg. جوامع
L09L09) پرداز (_Sm5 paRdAz L09L09) پرداز (_Sm5 paRdAz
L09L09) پندار (_Sm5 pendAR L09L09) پندار (_Sm5 pendAR
L09L09) پرست (_Sm4 paRast L09L09) پرست (_Sm4 paRast
L09L09) پناه (_Sm4 panAh


// arabic form of words (Babs) پ // arabic form of words (Babs) پ
//فواعل eg. جوامع //فواعل eg. جوامع
L09L09) درد (_Sm3 daRd L09L09) درد (_Sm3 daRd
L09L09) دوش (_Sm3 duS L09L09) دوش (_Sm3 duS
L09L09) دهی (_Sm3 dehi L09L09) دهی (_Sm3 dehi
L09L09) دوست (_Sm4 dust


// arabic form of words (Babs) د // arabic form of words (Babs) د
//فواعل eg. جوامع //فواعل eg. جوامع
// suffixes س // suffixes س
L09L01) ست (_+NSm2 st L09L01) ست (_+NSm2 st
L09L03) ست (_+NSm2 ast L09L03) ست (_+NSm2 ast
-) ست (_+NSm2 st // eg. "کجا‌ست"
L09L03) ستان (_Sm4 estAn L09L03) ستان (_Sm4 estAn
L09L01) ستان (_Sm4 stAn L09L01) ستان (_Sm4 stAn
L09L09) سان (_Sm3 sAn L09L09) سان (_Sm3 sAn
// Prefixes ص // Prefixes ص
_) صاحب (L04L09L09P4@ sAheb _) صاحب (L04L09L09P4@ sAheb
_) صاحب (آL09L09P4@ sAheb _) صاحب (آL09L09P4@ sAheb
_) صدر (L04L09L09P5@ sadr
_) صدر (L04L09L09P3@ sadr
_) صدر (آL09L09P5@ sadr _) صدر (آL09L09P5@ sadr


// Suffixes ص // Suffixes ص
L09L01) مون (_Sm3 mun L09L01) مون (_Sm3 mun
L09L09) مردان (_Sm5 maRdAn L09L09) مردان (_Sm5 maRdAn
L09L09) منش (_Sm3 maneS L09L09) منش (_Sm3 maneS
L09L09) مآب (_Sm3 maAb


// arabic form of words (Babs) م // arabic form of words (Babs) م
//فواعل eg. جوامع //فواعل eg. جوامع
// Plural pronoun ها // Plural pronoun ها
L09L09) های (_NSm3 h'Aje L09L09) های (_NSm3 h'Aje
L09L09) هایی (_NSm4 h'Ai: L09L09) هایی (_NSm4 h'Ai:
L09L09) هائی (_NSm4 h'Ai:
L09L09) هاست (_NSm4 h'Ast L09L09) هاست (_NSm4 h'Ast
// Plural possessive pronouns for ها // Plural possessive pronouns for ها
L09L09) هایم (_NSm4 hAjam L09L09) هایم (_NSm4 hAjam
_ا) ی (_+ i _ا) ی (_+ i
L01) ی (_ je L01) ی (_ je
L03) ی (_ i L03) ی (_ i
ی (ٰ_
ی (ٰL04 j
_آ) ی (L03_ ja _آ) ی (L03_ ja


// Prefixes ی // Prefixes ی
L09ع) یاتشان (_NSm6 ijjAteSAn L09ع) یاتشان (_NSm6 ijjAteSAn
L09L09) یزاسیون (_Sm7 isAsion L09L09) یزاسیون (_Sm7 isAsion
L09L03) یافت (_Sm4 jAft L09L03) یافت (_Sm4 jAft
-) یست (_+NSm3 ist // eg. "فردا‌یست"


// arabic form of words (Babs) ی // arabic form of words (Babs) ی
//فواعل eg. جوامع //فواعل eg. جوامع




.group ٔ .group ٔ
L04) ٔ
ا) ٔ a?
ٔ ٔ


// suffixes ٔ // suffixes ٔ




.group ئ .group ئ
ئی i:
ئ (L01 ? ئ (L01 ?
ئ (L02 ? ئ (L02 ?
L02) ئ ? L02) ئ ?
//ة (L01 h //ة (L01 h
ة t ة t



.group ٰ
ٰ (L04 A
ٰ (ا
ٰ (آ


//short vowels that are not usually written: //short vowels that are not usually written:


.group َ .group َ
L09L09) ُ (_Sm1 o L09L09) ُ (_Sm1 o




.group ْ
ْ
// Suffixes "ْ"
L09L09) ْ (_Sm1


.group ً .group ً
ً an ً an
// Suffixes "ً" // Suffixes "ً"

+ 2
- 2
dictsource/hu_list View File

_#9 tAb _#9 tAb
_#32 s'o:kYz _#32 s'o:kYz
_cap n'AJ_| _cap n'AJ_|
_?? kAR2AktEr||ko:d // unknown characters (change this)
_?? kAR2AktEr // unknown characters (change this)




// Abbreviations // Abbreviations
≠ nEmEJEnlY: ≠ nEmEJEnlY:
_ˇ lEfEle:n^i:l _ˇ lEfEle:n^i:l
_¡ AlSo:indEks _¡ AlSo:indEks
_braille bR2Ail:E




// Alphabets // Alphabets
_cyr ts'iR2ill _cyr ts'iR2ill
_he h'e:bER2 _he h'e:bER2
_zh k'i:nAi _zh k'i:nAi
_braille bR2Ail:E




// Main Exceptions List // Main Exceptions List

+ 3
- 1
dictsource/hu_rules View File

_tren) dsz (e d|s _tren) dsz (e d|s
vakon) d (sz d vakon) d (sz d
vé) d (jeggy d vé) d (jeggy d
své) d (zseb d


.group dz .group dz
fogó) dz (kod ts fogó) dz (kod ts
para) szt (segg st para) szt (segg st
azbe) szt (sisak st azbe) szt (sisak st
nyu) szt (süveg st nyu) szt (süveg st
serté) szs (ír SZ
serté) szs (ír S|Z
tá) szs (in SZ tá) szs (in SZ
va) szs (ír SZ va) szs (ír SZ
szs (ák SZ //All szsák part containing part need spokening single S and Z phoneme, for example kenyereszsák, pénzeszsák, krumpliszsák, cukroszsák words szs (ák SZ //All szsák part containing part need spokening single S and Z phoneme, for example kenyereszsák, pénzeszsák, krumpliszsák, cukroszsák words
ellenállá) sz (ón Sz ellenállá) sz (ón Sz
ré) sz (árás Sz ré) sz (árás Sz
_te) szts (or st|S _te) szts (or st|S
serté) szs (ir S|Z


.group t .group t
t t t t

+ 45
- 43
dictsource/pt_list View File

alferes $alt alferes $alt
algozes $alt algozes $alt
alicerce $alt alicerce $alt
almoço $alt $verb
almoço alt $verb
amarelo $alt amarelo $alt
ameba $alt ameba $alt
amores $alt2 amores $alt2
atmosfera $alt atmosfera $alt
atrozes $alt atrozes $alt
autora $alt2 autora $alt2
avesso $alt2
avesso $alt2
axé aSE axé aSE
baqueta $alt2 baqueta $alt2
beco $alt2 beco $alt2
bilhete $alt2 bilhete $alt2
boca $alt2 boca $alt2
bochecha $alt2 bochecha $alt2
boio $alt
bojo $alt2 bojo $alt2
boleia $alt boleia $alt
bolero $alt bolero $alt
caderneta $alt2 caderneta $alt2
camiseta $alt2 camiseta $alt2
cantora $alt2 cantora $alt2
capacete $alt2
capacete $alt2
caractere $alt caractere $alt
caramelo $alt caramelo $alt
careta $alt2 careta $alt2
catorze $alt2 catorze $alt2
cebola $alt2 cebola $alt2
cefaleia $alt cefaleia $alt
cerca $alt
cerca $alt2 $noun
cerca $alt
cerca $alt2 $noun
cerco $alt $verb cerco $alt $verb
chamego $alt2 chamego $alt2
chefe $alt chefe $alt
checam $alt
checam $alt
cheque $alt cheque $alt
chinelo $alt chinelo $alt
choro $alt2 $noun choro $alt2 $noun
chovesse $alt2
chovesse $alt2
chupeta $alt2 chupeta $alt2
clamores $alt2 clamores $alt2
clero $alt clero $alt
coco $alt2 coco $alt2
cofre $alt cofre $alt
cogumelo $alt
cogumelo $alt
coice $alt2 coice $alt2
colabore $alt colabore $alt
colete $alt2 colete $alt2
colchete $alt2
colher $alt $noun
colchete $alt2
colher $alt $noun
colheres $alt $noun colheres $alt $noun
colmeia $alt colmeia $alt
colore $alt colore $alt
concordo $alt concordo $alt
conforto $alt $verb conforto $alt $verb
consolo $alt2 $noun consolo $alt2 $noun
controle $alt2 $noun
controlo $alt2 $noun
controle $alt2 $noun
controlo $alt2 $noun
coreia $alt coreia $alt
corneta $alt2 corneta $alt2
cornos $alt cornos $alt
esforço $alt $verb esforço $alt $verb
esforços $alt esforços $alt
esgoto $alt2 $noun esgoto $alt2 $noun
esgotos $alt2
esgotos $alt2
esperma $alt esperma $alt
espeto $alt2 $noun espeto $alt2 $noun
espiroqueta $alt2 espiroqueta $alt2
foguete $alt2 foguete $alt2
foice $alt2 foice $alt2
forca $alt2 forca $alt2
força $alt2 $noun
força $alt2 $noun
forças $alt2 forças $alt2
forço $alt
fordes $alt2
fores $alt2
forço $alt
fordes $alt2
fores $alt2
forro $alt $verb forro $alt $verb
fosse $alt2 fosse $alt2
frevo $alt2 frevo $alt2
gameta $alt2 gameta $alt2
geleia $alt geleia $alt
gelo $alt $verb gelo $alt $verb
genebra $alt
genebra $alt
germe $alt germe $alt
gesso $alt2 gesso $alt2
golpe $alt golpe $alt
gorda $alt2 gorda $alt2
gosto $alt $verb gosto $alt $verb
gota $alt2 gota $alt2
governo $alt2 $noun
gozo $alt $verb
governo $alt2 $noun
gozo $alt2 $noun
graveto $alt2 graveto $alt2
grelha $alt grelha $alt
groselha $alt groselha $alt
grosso $alt2 grosso $alt2
grozo $alt $verb grozo $alt $verb
hemorroida $alt
hemorroida $alt
hoje $alt2 hoje $alt2
horrores $alt2 horrores $alt2
ideia $alt ideia $alt
insonoro $alt insonoro $alt
interesse $alt2 $noun
jogo $alt2 $noun
interesse $alt2 $noun
jogo $alt2 $noun
joguete $alt2 joguete $alt2
lambreta $alt2 lambreta $alt2
lebre $alt lebre $alt
leste $alt2 $verb leste $alt2 $verb
lopes $alt lopes $alt
maior $alt
maior $alt
maleta $alt2 maleta $alt2
marcelo $alt marcelo $alt
marmelo $alt marmelo $alt
marreta $alt2 marreta $alt2
martelo $alt martelo $alt
melhor $alt
menor $alt
melhor $alt
menor $alt
merda $alt merda $alt
megera $alt megera $alt
melo $alt melo $alt
mexo m'eSU mexo m'eSU
minueto $alt2 minueto $alt2
miolo $alt2 miolo $alt2
miolos $alt
miolos $alt
moeda $alt moeda $alt
molho $alt2 $noun molho $alt2 $noun
monera $alt monera $alt
moreia $alt moreia $alt
mortos $alt mortos $alt
motora $alt2 motora $alt2
mulher $alt
mulher $alt
mui mwi mui mwi
muito mw'iNtU // -s is included as a suffix muito mw'iNtU // -s is included as a suffix
muita mw'iNt& muita mw'iNt&
olho $alt2 $noun olho $alt2 $noun
opereta $alt2 opereta $alt2
ordens $alt ordens $alt
osso $alt2
ossos $alt
osso $alt2
ossos $alt
ostra $alt2 ostra $alt2
ovos $alt ovos $alt
pachorra $alt2 pachorra $alt2
paexa paeSa paexa paeSa
palacete $alt2 palacete $alt2
palheta $alt2 palheta $alt2
panfleto $alt2
panfleto $alt2
pangeia $alt pangeia $alt
panqueca p,&~Nk'Ek&
panqueca p,&~Nk'Ek&
pantera $alt pantera $alt
paralelo $alt paralelo $alt
parede $alt2 parede $alt2
peso $alt $verb peso $alt $verb
piloto $alt2 $noun piloto $alt2 $noun
pintora $alt2 pintora $alt2
pior $alt
pior $alt
pirueta $alt2 pirueta $alt2
plaqueta $alt2
plateia $alt plateia $alt
plebeia $alt plebeia $alt
polca $alt polca $alt
primavera $alt primavera $alt
provo $alt provo $alt
quarteto $alt2 quarteto $alt2
queda $alt
queda $alt
quinteto $alt2 quinteto $alt2
recomeço $alt2 $noun recomeço $alt2 $noun
recordo $alt recordo $alt
relevo $alt2 $noun relevo $alt2 $noun
remorso $alt remorso $alt
reprovo $alt reprovo $alt
retorno $alt $verb
retorno $alt $verb
rixa x'iS& rixa x'iS&
rocha $alt rocha $alt
rock $alt rock $alt
sarjeta $alt sarjeta $alt
seborreia $alt seborreia $alt
seca $alt2 $noun seca $alt2 $noun
secas $alt2
secas $alt2
seco $alt2 seco $alt2
seco $alt $verb
seco $alt $verb
selo $alt $verb selo $alt $verb
selvagem seUv'aZeIN selvagem seUv'aZeIN
sexteto $alt2 sexteto $alt2
sopro $alt2 $noun sopro $alt2 $noun
soro $alt2 soro $alt2
sorvete $alt2 sorvete $alt2
sossego $alt2 $noun
sossego $alt2 $noun
suborno $alt $verb suborno $alt $verb
sufoco $alt2 $noun sufoco $alt2 $noun
sufocos $alt2 sufocos $alt2
suporto $alt suporto $alt
suor swOr suor swOr
tapete $alt2 tapete $alt2
temores $alt2
temores $alt2
tempero $alt2 $noun tempero $alt2 $noun
terrores $alt2 terrores $alt2
teta $alt2 teta $alt2
toga $alt toga $alt
topo $alt $verb topo $alt $verb
torno $alt $verb torno $alt $verb
torre $alt2 $noun
torres $alt2
torre $alt2 $noun
torres $alt2
tortos $alt tortos $alt
traqueia $alt traqueia $alt
travesso $alt2 travesso $alt2
tropa $alt tropa $alt
tropeço $alt2 $noun tropeço $alt2 $noun
trombeta $alt2 trombeta $alt2
tumores $alt2
tumores $alt2
valeta $alt2 valeta $alt2
vanessa $alt2 vanessa $alt2
velozes $alt velozes $alt
verme $alt verme $alt
violeta $alt2 violeta $alt2
violoncelo $alt
violoncelo $alt
voga $alt voga $alt
vozes $alt vozes $alt
xarope $alt xarope $alt

+ 29
- 25
dictsource/pt_rules View File

_d) e (L05_ E _d) e (L05_ E
_vi) e (L05_ E _vi) e (L05_ E
fiz) e (L05_ E fiz) e (L05_ E
pus) e (L05_ E / com- im- de-
pus) e (L05_ E // com- im- de-
tiv) e (L05_ E // es- tiv) e (L05_ E // es-
_com) e (L05_ e _com) e (L05_ e
_pud) e (L05_ E _pud) e (L05_ E
_perd) e (L05_ e _perd) e (L05_ e
_quis) e (L05_ E _quis) e (L05_ E
_soub) e (L05_ E _soub) e (L05_ E
tend) e (L06_ e / a- con- en- es-
tend) e (L06_ e // a- con- en- es-
_mord) e (L06_ e _mord) e (L06_ e
_rend) e (L06_ e _rend) e (L06_ e
_vend) e (L06_ e _vend) e (L06_ e
prend) e (L06_ e / a- rea- des- desa-
prend) e (L06_ e // a- rea- des- desa-
_arrepend) e (L06_ e _arrepend) e (L06_ e
_defend) e (L06_ e _defend) e (L06_ e
_depend) e (L06_ e _depend) e (L06_ e
_escond) e (L06_ e _escond) e (L06_ e
preend) e (L06_ e / com- a- re- sur-
preend) e (L06_ e // com- a- re- sur-
respond) e (L06_ e // cor- respond) e (L06_ e // cor-
bat) e (L07_ e // re- com- bat) e (L07_ e // re- com-
ced) e (L07_ e // pro- con- su- ced) e (L07_ e // pro- con- su-
met) e (L07_ e // co- pro- arre- re- intro- compro- sub- met) e (L07_ e // co- pro- arre- re- intro- compro- sub-
mov) e (L07_ e / re- co-
mov) e (L07_ e // re- co-
viv) e (L07_ e // re- viv) e (L07_ e // re-
_beb) e (L07_ e _beb) e (L07_ e
_com) e (L07_ e _com) e (L07_ e
_tem) e (L07_ e _tem) e (L07_ e
colh) e (L07_ e // & es- colh) e (L07_ e // & es-
corr) e (L07_ e // per- con- in- so- dis- corr) e (L07_ e // per- con- in- so- dis-
ench) e (L07_ e / pre-
nasc) e (L07_ e / re-
tend) e (L07_ e / en- con- a- es-
ench) e (L07_ e // pre-
nasc) e (L07_ e // re-
tend) e (L07_ e // en- con- a- es-
torc) e (L07_ e // con- torc) e (L07_ e // con-
venc) e (L07_ e // con- venc) e (L07_ e // con-
vert) e (L07_ e // in- re- con- vert) e (L07_ e // in- re- con-
volv) e (L07_ e de- en- re-
volv) e (L07_ e // de- en- re-
_eleg) e (L07_ e _eleg) e (L07_ e
_ergu) e (L07_ e _ergu) e (L07_ e
_mord) e (L07_ e _mord) e (L07_ e
padec) e (L07_ e // com- padec) e (L07_ e // com-
parec) e (L07_ e // a- rea- com- desa- parec) e (L07_ e // a- rea- com- desa-
prend) e (L07_ e // a- rea- des- prend) e (L07_ e // a- rea- des-
screv) e (L07_ e / e- in- ree- pre- de-
screv) e (L07_ e // e- in- ree- pre- de-
_abastec) e (L07_ e _abastec) e (L07_ e
_aborrec) e (L07_ e _aborrec) e (L07_ e
_absolv) e (L07_ e _absolv) e (L07_ e
_resolv) e (L07_ e _resolv) e (L07_ e
_suspend) e (L07_ e _suspend) e (L07_ e
conhec) e (L07_ e // & re- des- conhec) e (L07_ e // & re- des-
estabelec) e (L07_ e / re-
favorec) e (L07_ e / des-
obedec) e (L07_ e / des-
estabelec) e (L07_ e // re-
favorec) e (L07_ e // des-
obedec) e (L07_ e // des-
preend) e (L07_ e // sur- com- preend) e (L07_ e // sur- com-
proteg) e (L07_ e / des-
proteg) e (L07_ e // des-
respond) e (L07_ e // cor- respond) e (L07_ e // cor-
qu) e (brL04_ E qu) e (brL04_ E
_hosp) e (dL03_ E _hosp) e (dL03_ E
_n) e (grL03_ e _n) e (grL03_ e
_estr) ei (L03_ EI _estr) ei (L03_ EI
_inv) e (jL04_ E _inv) e (jL04_ E
proteg) e (l05_ e // des-
tr) e (pL04_ E // es-
_dec) e (pL04_ E _dec) e (pL04_ E
_in) e (ptL03_ E _in) e (ptL03_ E
_p) e (quL02_ E _p) e (quL02_ E
_sev) e (rL03_ E _sev) e (rL03_ E
_reit) e (rL03_ E _reit) e (rL03_ E
_sinc) e (rL03_ E _sinc) e (rL03_ E
g) e (rL04_ E / su- refri-
qu) e (rL04_ E / re-
g) e (rL04_ E // su- refri-
qu) e (rL04_ E // re-
_op) e (rL04_ E _op) e (rL04_ E
_alt) e (rL04_ E _alt) e (rL04_ E
_sup) e (rL04_ E _sup) e (rL04_ E
_tol) e (rL04_ E _tol) e (rL04_ E
_ven) e (rL04_ E _ven) e (rL04_ E
acel) e (rL04_ E / des-
acel) e (rL04_ E // des-
_coop) e (rL04_ E _coop) e (rL04_ E
_temp) e (rL04_ E _temp) e (rL04_ E
_v) e (rbL03_ E _v) e (rbL03_ E
_d) e (vL03_ e _d) e (vL03_ e
scr) e (vL03_ e // e- in- pre- ree- de- scr) e (vL03_ e // e- in- pre- ree- de-
_atr) e (vL03_ e _atr) e (vL03_ e
pr) e (zL04_ E / des- menos-
pr) e (zL04_ E // des- menos-
_embel) e (zL04_ E _embel) e (zL04_ E
_acont) e (çL01_ e _acont) e (çL01_ e
_arref) e (çL01_ e _arref) e (çL01_ e
_emagr) e (çL03 _emagr) e (çL03
pr) e (çL03_ e / a-
mer) e (çL03_ e / des-
pr) e (çL03_ e // a-
mer) e (çL03_ e // des-
pad) e (çL03_ e // com- pad) e (çL03_ e // com-
par) e (çL03_ e // a- re- com- rea- desa- par) e (çL03_ e // a- re- com- rea- desa-
_ado) e (çL03_ e _ado) e (çL03_ e
_car) e (çL03_ e _car) e (çL03_ e
_per) e (çL03_ e_ _per) e (çL03_ e_
conh) e (çL03_ e // re- conh) e (çL03_ e // re-
obed) e (çL03_ e / des-
obed) e (çL03_ e // des-
_esqu) e (çL03_ e _esqu) e (çL03_ e
_forn) e (çL03_ e _forn) e (çL03_ e
_ofer) e (çL03_ e _ofer) e (çL03_ e
_amanh) e (çL03_ e _amanh) e (çL03_ e
_amort) e (çL03_ e _amort) e (çL03_ e
_anoit) e (çL03_ e _anoit) e (çL03_ e
_desguarn) e (çL03_ e
_desguarnec) e (çL03_ e _desguarnec) e (çL03_ e
_enfraqu) e (çL03_ e _enfraqu) e (çL03_ e
_enlouqu) e (çL03_ e _enlouqu) e (çL03_ e
_estrem) e (çL03_ e _estrem) e (çL03_ e
_fortal) e (çL03_ e _fortal) e (çL03_ e
_rejuven) e (çL03_ e _rejuven) e (çL03_ e
estabel) e (çL03_ e / re-
estabel) e (çL03_ e // re-
//endsort //endsort




_deb) o (chL04_ O _deb) o (chL04_ O
_desabr) o (chL04_ O _desabr) o (chL04_ O
_s) o (frL02_ O _s) o (frL02_ O
r) o (gL04_ O / inter-
r) o (gL04_ O // inter-
_j) o (gL04_ O _j) o (gL04_ O
_af) o (gL04_ O _af) o (gL04_ O
_adv) o (gL04_ O _adv) o (gL04_ O
_ref) o (gL04_ O _ref) o (gL04_ O
_ap) oi (L01_ OI _ap) oi (L01_ OI
_t) o (lL03_ o _t) o (lL03_ o
c) o (lhL02_ O / es- en- re-
c) o (lhL02_ O // es- en- re-
_t) o (lhL02_ O _t) o (lhL02_ O
_m) o (lhL04_ O _m) o (lhL04_ O
env) o (lvL02_ O / des-
env) o (lvL02_ O // des-
_abs) o (lvL02_ O _abs) o (lvL02_ O
_dev) o (lvL02_ O _dev) o (lvL02_ O
_res) o (lvL02_ O _res) o (lvL02_ O
_r) o (snL04_ O _r) o (snL04_ O
_c) o (spL02_ O _c) o (spL02_ O
p) ostos (_ Ost=Us# // dispostos etc. p) ostos (_ Ost=Us# // dispostos etc.
_g) o (zL04_ O
_ad) o (çL03_ O _ad) o (çL03_ O
_end) o (çL03_ O _end) o (çL03_ O
//endsort //endsort

+ 18
- 17
phsource/compile_report View File

af 39 138 af 39 138
cy 29 134 cy 29 134
ga 29 133 ga 29 133
de 41 141
de 40 140
eo 13 116 eo 13 116
jbo 2 116 jbo 2 116
nci 3 125 nci 3 125
id 15 127 id 15 127
sq 33 127 sq 33 127
hy 23 119 hy 23 119
da 46 139
da 45 138
ka 20 115 ka 20 115
fa 9 112 fa 9 112
rw 15 132 rw 15 132
[l/] base [l/] base
[l/3] base [l/3] base
[l/] fr [l/] fr
[l/3] da
l/l_@ [l/3] base l/l_@ [l/3] base
[l/] fr [l/] fr
l/l@ [¨ì,] base
[l/3] da
l/l@ [¨|8] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
l/L2_uL [l/2] base l/L2_uL [l/2] base
l/l_3 [l/] de l/l_3 [l/] de
l/l_4 [ll] sq l/l_4 [ll] sq
l/la [¨ì,] base
l/la [¨|8] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
[K] tn [K] tn
l/l_a [l/3] base l/l_a [l/3] base
[l/] fr [l/] fr
l/le [¨ì,] base
[l/3] da
l/le [¨|8] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
[K] tn [K] tn
l/l_e [l/3] base l/l_e [l/3] base
[l/] fr [l/] fr
[l/3] da
l/L_eL_af [&] af l/L_eL_af [&] af
[&:] af [&:] af
l/l_front [L] sq l/l_front [L] sq
l/l_front_ [l/4] sq l/l_front_ [l/4] sq
l/li [¨ì,] base
l/li [¨|8] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
l/l_i [l/3] base l/l_i [l/3] base
[l/] fr [l/] fr
[i] sq [i] sq
[l/3] da
ll/ll [L] base ll/ll [L] base
ll/_ll [L] base ll/_ll [L] base
l/l_long [l] base l/l_long [l] base
[l] fr [l] fr
l/lo [¨ì,] base
l/lo [¨|8] base
[l#] base [l#] base
[l/2] fr [l/2] fr
[K] nso [K] nso
[K] tn [K] tn
l/l_o [l/3] base l/l_o [l/3] base
[l/] fr [l/] fr
[l/3] da
l^/l_rfx [l.] base l^/l_rfx [l.] base
[l;] lt [l;] lt
[l] ru [l] ru
[l^] ru [l^] ru
l/lu [¨ì,] base
l/lu [¨|8] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
[K] tn [K] tn
l/l_u [l/3] base l/l_u [l/3] base
[l/] fr [l/] fr
[l/3] da
l/l_vi [l] vi l/l_vi [l] vi
ll/xll [L] base ll/xll [L] base
l/l_y [l/] fr l/l_y [l/] fr
[n] fr [n] fr
[n#] is [n#] is
[n] zh [n] zh
r/@_ [V#] de
r2/r2@ [r-] en r2/r2@ [r-] en
[r-] tn [r-] tn
r2/r2a [r-] en r2/r2a [r-] en
[r*] sr [r*] sr
[r] ru [r] ru
r3/r_uvl [r"] base r3/r_uvl [r"] base
[r2] de
r3/r_uvl.wav [r"] base r3/r_uvl.wav [r"] base
[r2] de
r3/rx [*] base r3/rx [*] base
[r/] base [r/] base
[r/] af [r/] af
r/tr [r] base r/tr [r] base
r/trr [r/] base r/trr [r/] base
[r] ro [r] ro
r/V_ [V#] de
r/V_2_ [V#] de
r/xr [r] base r/xr [r] base
[R3] base [R3] base
[r-] en [r-] en
[i@] ga [i@] ga
[i@] hy [i@] hy
vdiph2/i@_2 [i@] en-wm vdiph2/i@_2 [i@] en-wm
[iR] de
vdiph2/ie [i@] en-wi vdiph2/ie [i@] en-wi
[ie] fi [ie] fi
[ie] mt [ie] mt
[a] pt-pt [a] pt-pt
[a] ro [a] ro
[a] el [a] el
[a] da
[?a] da
[a] rw [a] rw
vowel/a#_2 [A] nl vowel/a#_2 [A] nl
[a:] nl [a:] nl
[a:] la [a:] la
[A] zh [A] zh
[a] sq [a] sq
[A] da
[?A] da
[a] ka [a] ka
[a:] si [a:] si
vowel/a#_3 [a#] en vowel/a#_3 [a#] en
[a] ht [a] ht
vowel/a_8 [a] en vowel/a_8 [a] en
[a] sk [a] sk
[A] da
[?A] da
vowel/aa [a:] et vowel/aa [a:] et
[A] fr-ca [A] fr-ca
[A] no [A] no

+ 203
- 185
phsource/ph_danish View File

// PB General rules for vowels:
// Short vowels
// ACC: Short "pille" [p?el@-]
// AC[V]: Short "piler" [p?ilV]
// A[N]: Short "bange" [b?AN@-]
// Long vowels
// A + group #@ OR group #e: Long "ae" "aer" [&:@-]
// AC + group #@ OR group #e: Long "pile" [pi:l@-]
// AC[i]: Long "smidig" [smi:Di]


phoneme @ phoneme @
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@


phoneme i phoneme i
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 150
// IfNextVowelAppend(;)
IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) THEN
glstop
length 90
length 90 //150
// PB long vowel followed by consonant and certain vowels "gide"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150
ENDIF ENDIF
// PB "tie", "stige", "krige" vowel + vowel: extra length
// What is causing this very short [i] in words with final [@-]?
// NOT "galleriet" [g,?&lVR'i@-D] NOT "krigen" [kR'i@-n]
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) AND NOT next2PhW(n) THEN
length 240
// "gider" TEST
IF nextPhW(D) AND next2PhW(V) OR next2PhW(?V) THEN
length 90
ENDIF ENDIF
// "siden"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) AND nextPhW(D) THEN
// PB long vowel followed by certain vowels - "pigen" [p'i@-n]
IF nextPhW(#@) OR nextPhW(#e) THEN
length 150 length 150
ENDIF ENDIF
// "lise"
IF nextPhW(isNotVowel) AND nextVowel(@-) OR nextVowel(@) THEN
// Only this vowel (in this case [i])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
length 150 length 150
ENDIF ENDIF
// PB "Bishop"
IF nextPhW(S) AND next2PhW(V) THEN
length 90
ENDIF
// "pjækkeri", "røveri"
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 90
// This vowel is word end - longer because it sounds too short
// "sig", "si"
IF thisPh(isWordEnd) THEN
length 120
ENDIF ENDIF
// "vilje"
// "vilje" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90 length 90
ENDIF
// PB "tie", "stige", "krige" vowel + vowel: extra length
// What is causing this very short [i] in words with final [@-]?
// NOT "galleriet" [g,?&lVR'i@-D] NOT "krigen" [kR'i@-n]
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) AND NOT next2PhW(n) THEN
length 240
ENDIF ENDIF
FMT(vowel/i_4) FMT(vowel/i_4)
endphoneme endphoneme


// PB Experimental glottal i
// PB short i
// sviret vs. svirret // sviret vs. svirret
phoneme ?i phoneme ?i
vowel starttype #i endtype #i vowel starttype #i endtype #i


phoneme e phoneme e
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 150
ENDIF
// "delte", "mante", "evig" [evi]
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@) OR nextVowel(@-) THEN
length 90 //150
// "delte", "mente"
IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@) THEN
length 150 length 150
ENDIF ENDIF
// "prinsen" - TEST
IF nextPhW(n) AND next2PhW(s) THEN
length 90
ENDIF
// "slesk", "sleske" short vowel
IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN
length 90
ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN
length 90
// "skriften" - very broad: short before 2 consonants
ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) THEN
length 90
ENDIF
// PB "ring", "ringe" // PB "ring", "ringe"
IF nextPhW(N) THEN IF nextPhW(N) THEN
length 90 length 90
IF nextPhW(isNotVowel) AND next2PhW(i) THEN IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150 length 150
ENDIF ENDIF
// "labyrinter" , "labyrinten" - short followed by 2 consonants
// Only "e"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "nedladende" [n'eDl&D@-n@-] - before 2 consonants: short
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 60
length 90
ENDIF ENDIF
FMT(vowel/e) FMT(vowel/e)
endphoneme endphoneme


// PB glottal e
// PB short e
// "skille" vs. "skele", "pille" vs. "pile" // "skille" vs. "skele", "pille" vs. "pile"
phoneme ?e phoneme ?e
vowel starttype #e endtype #e vowel starttype #e endtype #e


phoneme E phoneme E
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
// example?
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 50
ENDIF
length 90 //150
// "værelse", "breve" // "værelse", "breve"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN
length 150
// length 150
ENDIF ENDIF
// "fest", "feste" short vowel
IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN
length 90
ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN
length 90
// PB knægten
ELIF nextPhW(g) AND next2PhW(t) AND nextVowel(@-) THEN
length 90
// "femten", "tænker" - very broad: short before 2 consonants
ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) OR nextVowel(V)THEN
length 90
// PB "kærlig" [k'Erli]- a bit longer because og the missing [ɐ] [ˈkæɐ̯li]
ELIF nextPhW(r) AND next2PhW(isNotVowel) AND nextVowel(i) THEN
length 130
// "ræve"
IF nextVowel(#@) OR nextVowel(#e) THEN
length 150
ENDIF ENDIF
// "ære", "kærester", "ærefrygt" - longer E // "ære", "kærester", "ærefrygt" - longer E
IF nextPhW(V) THEN IF nextPhW(V) THEN
length 180 length 180
ENDIF
// Only the letter "æ" - long
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF
// "stædig" [st'EDi] long
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150
ENDIF
// "længe" - short - 2 consonants => 1 consonant
IF nextPhW(N) THEN
length 90
ENDIF
// "værelse" [v'E3-Vls@_!]
IF nextPhW(3-) AND next2PhW(V) THEN
length 90
ENDIF
// "mælkebøtte" - short followed by 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90
ENDIF ENDIF
FMT(vowel/e_mid2) FMT(vowel/e_mid2)
endphoneme endphoneme


// PB Experimental glottal E
// PB short E
// "læsse" vs. "læse" // "læsse" vs. "læse"
phoneme ?E phoneme ?E
vowel starttype #e endtype #e vowel starttype #e endtype #e


phoneme & phoneme &
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ipa a
length 90 //150
// "same", "sale", "bade" - consonant + gooup #e or group #@: long
IF next2PhW(#@) OR next2PhW(#e) THEN
length 150
ENDIF
// ThisPh + gooup #e or group #@
// "ae", "aer" vowel + vowel: extra length
IF nextPhW(#@) OR nextPhW(#e) THEN
length 240
ENDIF
// This vowel is word end - longer because it sounds too short
// "ja", "Omaha"
IF thisPh(isWordEnd) THEN
length 120
ENDIF ENDIF
// PB "sable", "sabler", "anede", "David"
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) OR nextVowel(@-) THEN
// Only this vowel (in this case [&])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) OR prevPhW(_) THEN
length 150 length 150
ENDIF ENDIF
// "stadig" [st&Di]
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
length 180
// "stadigt" [st&Dit]
ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND next2PhW(t) THEN
// "stadig" [st&Di], "stadigt" [st&Dit]
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 180 length 180
// "latin" [l&t'in]
ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND NOT next2PhW(t) THEN
length 90
ENDIF
// "ae", "aer", "dagen" vowel + vowel: extra length
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 240
ENDIF ENDIF
// "Alfie", "alfer" - short before 2 consonants // "Alfie", "alfer" - short before 2 consonants
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 90 length 90
ENDIF
// "Omaha"
IF thisPh(isWordEnd) THEN
length 90
ENDIF ENDIF
FMT(vowel/ee_2) FMT(vowel/ee_2)
endphoneme endphoneme


// PB Experimental glottal a
// PB Short &
// e.g. the last a in "staldkarl" // e.g. the last a in "staldkarl"
// "sale" vs. "sal" // "sale" vs. "sal"
phoneme ?& phoneme ?&
ipa a
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 90 length 90
FMT(vowel/ee_2) FMT(vowel/ee_2)
phoneme &# phoneme &#
vowel starttype #e endtype #e vowel starttype #e endtype #e
length 120 length 120
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop glstop
length 90 length 90
ENDIF ENDIF
FMT(vowel/&) FMT(vowel/&)
endphoneme endphoneme


phoneme a
vowel starttype #a endtype #a
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
length 150
ENDIF
FMT(vowel/a_2)
endphoneme
//phoneme a
// vowel starttype #a endtype #a
// length 90 //150
//IF nextPhW(#@) OR nextPhW(#e) THEN
// length 150
//ENDIF
// FMT(vowel/a_2)
//endphoneme


// PB short (glottal) a // PB short (glottal) a
// "bragt" // "bragt"
phoneme ?a
vowel starttype #a endtype #a
length 90
FMT(vowel/a_2)
endphoneme
//phoneme ?a
// vowel starttype #a endtype #a
// length 90
// FMT(vowel/a_2)
//endphoneme


phoneme A
phoneme A // PB changed to a_8
vowel starttype #a endtype #a vowel starttype #a endtype #a
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
length 90 //150
// PB long vowel followed by consonant and certain vowels - "drabelig"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150 length 150
ENDIF ENDIF
// "far", "bastard" - a bit longer followed by [r] // "far", "bastard" - a bit longer followed by [r]
IF nextPhW(r) THEN
IF nextPhW(r) AND nextPhW(isWordEnd) THEN
length 120 length 120
ENDIF ENDIF
FMT(vowel/a_3)
// "bange" [bAN@-] - [N] = 2 consonants (ng) => short
IF nextPhW(N) THEN
length 90
ENDIF
FMT(vowel/a_8)
endphoneme endphoneme


// PB glottal a
// PB short A
// "drab" vs. "drabelig" // "drab" vs. "drabelig"
phoneme ?A phoneme ?A
vowel starttype #a endtype #a vowel starttype #a endtype #a
length 90 length 90
// "straffeattest", "straffe" - a bit longer after R
IF prevPhW(R) AND nextPhW(isNotVowel) THEN
length 120
// "straffeattest", "straffe", "rapid" - a bit longer after R
IF prevPhW(R) AND nextPhW(isNotVowel) AND next2PhW(isVowel) THEN
length 110
ENDIF ENDIF
FMT(vowel/a_3)
FMT(vowel/a_8)
endphoneme endphoneme


phoneme u phoneme u
vowel starttype #u endtype #u vowel starttype #u endtype #u
length 150
length 90 //150
// Short vowel followed by consonant and NOT consonant + 3 or V or @ // Short vowel followed by consonant and NOT consonant + 3 or V or @
// "blus" vs. "bluse" and "bluser" // "blus" vs. "bluse" and "bluser"
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
// glstop
// length 90
ENDIF ENDIF
// "hue", "suge", "uge"
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
// "suge", "uge", bluse
IF nextPhW(#e) OR nextPhW(#@) OR next2PhW(#e) OR next2PhW(#@)THEN
length 150 length 150
ENDIF ENDIF
// extra length followed by 3 or V or @ // extra length followed by 3 or V or @
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
length 240
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
// length 240
ENDIF ENDIF
// "umulig" // "umulig"
IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN
length 180 length 180
ENDIF
// Only "u"
IF thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF ENDIF
FMT(vowel/u_bck) FMT(vowel/u_bck)
endphoneme endphoneme


phoneme O phoneme O
vowel starttype #o endtype #o vowel starttype #o endtype #o
length 150
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
length 90 // 150
// PB "sove", "sover" - consonant + #e or #@: long
IF next2PhW(#@) OR next2PhW(#e) THEN
length 150
ENDIF ENDIF
// PB "gået"
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
// PB "gået" - ThisPh + #e or #@
IF nextPhW(#e) OR nextPhW(#@) THEN
length 150 length 150
ENDIF ENDIF
// "rådig" // "rådig"
FMT(vowel/V_4) FMT(vowel/V_4)
endphoneme endphoneme


// PB Glottal (short) å
// PB Short å
// "forstår" vs. "kåre" // "forstår" vs. "kåre"
phoneme ?V phoneme ?V
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@


phoneme y phoneme y
vowel starttype #i endtype #i vowel starttype #i endtype #i
// experiment: changed to short from 150
length 150
// Short vowel followed by consonant and NOT consonant + 3 or V
// "lyd" vs. "lyde" and "lyder"
IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@)AND NOT next2PhW(@-) THEN
glstop
length 90
ENDIF
// "syg" [sy]
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 90
// Length changed to short since most vowels are short.
// It's probably easier only to make rules for long vowels.
length 90 //150

// PB long vowel followed by consonant and certain vowels
// "lyde", "lyder"
IF nextPhW(isNotVowel) AND next2PhW(#@) OR next2PhW(#e) THEN
length 150
ENDIF ENDIF
// "skyd"
IF thisPh(isFinalVowel) AND nextPhW(isWordEnd) AND nextPhW(isNotVowel) THEN
length 90
// Only this vowel (in this case [y])
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) AND thisPh(isWordStart) THEN
length 150
ENDIF ENDIF
// "dydig" [dyDi] // "dydig" [dyDi]
IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN
IF nextPhW(isNotVowel) AND next2PhW(i) THEN
length 150 length 150
ENDIF ENDIF
// "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD] // "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD]
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN
length 220
IF nextPhW(#e) OR nextPhW(#@) AND NOT next2PhW(D) THEN
length 200
ENDIF ENDIF
// PB "kryster" - short y
IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
length 80
// "tyve"
IF nextPhW(?u) AND next2PhW(@-) THEN
length 150
ENDIF ENDIF
// PB "gryden"
FMT(vowel/y) FMT(vowel/y)
endphoneme endphoneme


// "kylling" vs. "kyle", "krybbe" vs. "krybe" // "kylling" vs. "kyle", "krybbe" vs. "krybe"
phoneme ?y phoneme ?y
vowel starttype #i endtype #i vowel starttype #i endtype #i
length 70
length 90
FMT(vowel/y) FMT(vowel/y)
endphoneme endphoneme




phoneme W phoneme W
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 160
// Shorter vowel when followed by consonant
IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop
length 90
ENDIF
length 99 //160
// "kløe" vowel + vowel: extra length // "kløe" vowel + vowel: extra length
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
IF nextPhW(#@) OR nextPhW(#e) THEN
length 220 length 220
ENDIF ENDIF
// "klø" short W when word ends with W
IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN
length 90
ENDIF
// røde" W + 1 consonant + 3 or W or @ // røde" W + 1 consonant + 3 or W or @
IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) THEN
IF next2PhW(#@) OR next2PhW(#e) THEN
length 160 length 160
ENDIF ENDIF
// "røveri" TEST
IF next2PhW(V) OR next2PhW(?V) THEN
length 90
ENDIF
// PB "nødig", "nødigt", "kølige" // PB "nødig", "nødigt", "kølige"
IF nextVowel(i) THEN IF nextVowel(i) THEN
length 160 length 160
FMT(vowel/oe) FMT(vowel/oe)
endphoneme endphoneme


// PB glottal W
// PB short W
// "prøv" vs. "prøve" // "prøv" vs. "prøve"
phoneme ?W phoneme ?W
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
// PB added for the ø in "røv", "røg", "øje" instead of [V3] // PB added for the ø in "røv", "røg", "øje" instead of [V3]
phoneme W# phoneme W#
vowel starttype #@ endtype #@ vowel starttype #@ endtype #@
length 150
length 90 //150
IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN
glstop glstop
length 90
// length 90
ENDIF ENDIF
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN
// PB long vowel followed by consonant and certain vowels
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) OR next2PhW(3) OR next2PhW(V) OR next2PhW(?V) THEN
length 150 length 150
ENDIF ENDIF
FMT(vowel/V) FMT(vowel/V)
glstop glstop
length 150 length 150
ENDIF ENDIF
// "dreje" [dR'aI@-_!]
IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
length 300
length 280
ENDIF ENDIF
// PB "drej" vs. "dreje" // PB "drej" vs. "dreje"
IF thisPh(isWordEnd) THEN IF thisPh(isWordEnd) THEN
length 140 length 140
ENDIF
// "lejde" [l'aId@-_!], "lejder" [l'aIdV_!]
IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN
length 190
ENDIF ENDIF
FMT(vdiph/ai) FMT(vdiph/ai)
endphoneme endphoneme
liquid liquid
lengthmod 7 lengthmod 7
ChangePhoneme(l/3) ChangePhoneme(l/3)
CALL base/l
// CALL base/l
endphoneme

phoneme l/3 // Replacement for [l/]
liquid
lengthmod 7

IF nextPh(isVowel) THEN
// ChangePhoneme(l)
ENDIF

PrevVowelEndings
VowelEnding(l/l_@)
VowelEnding(l/l_a)
VowelEnding(l/l_e, -40)
VowelEnding(l/l_i, -70)
VowelEnding(l/l_o)
VowelEnding(l/l_u, -70)
EndSwitch

// IF nextPh(isLiquid) THEN
// FMT(l/_l)
// ENDIF

FMT(l/l_)
endphoneme endphoneme


phoneme v // approximant, not fricative phoneme v // approximant, not fricative
liquid liquid
lengthmod 7 lengthmod 7
ipa ɐ̯ ipa ɐ̯
IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) THEN
IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) AND NOT nextPhW(@-) THEN
ChangePhoneme(R) ChangePhoneme(R)
ENDIF ENDIF
FMT(r/a_) FMT(r/a_)
IF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN IF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
WAV(ustop/tr) WAV(ustop/tr)
ENDIF ENDIF
// "respekt" [REsp'Egd]
IF thisPh(isWordEnd) THEN
// ChangePhoneme(d)
ENDIF
WAV(ustop/t, 90) WAV(ustop/t, 90)
endphoneme endphoneme


NextVowelStarts NextVowelStarts
VowelStart(j/j@) VowelStart(j/j@)
VowelStart(j/ja) VowelStart(j/ja)
VowelStart(j/je,-40)
VowelStart(j/je,-35)
VowelStart(j/ji) VowelStart(j/ji)
VowelStart(j/jo) VowelStart(j/jo)
VowelStart(j/ju) VowelStart(j/ju)

+ 12
- 40
phsource/ph_german View File

length 135 length 135
ENDIF ENDIF


IF nextPh(r) THEN
IF next2Ph(isVowel) THEN
ELSE
ChangePhoneme(UR)
ENDIF
IF nextPh(r) AND next2Ph(isNotVowel) THEN
ChangePhoneme(UR)
ENDIF ENDIF
FMT(vowel/uu_2) FMT(vowel/uu_2)
endphoneme endphoneme
IF prevPh(w) THEN IF prevPh(w) THEN
VowelStart(w/wi2) VowelStart(w/wi2)
ENDIF ENDIF
IF nextPh(r) AND next2Ph(isNotVowel) THEN
ChangePhoneme(iR)
ENDIF
FMT(vowel/i_2) FMT(vowel/i_2)
endphoneme endphoneme








// This version of [r] was used in eSpeak 1.44, but received complaints
phoneme r2 // uvular trill or fricative
vcd uvl frc
ipa ʀ
lengthmod 6
length 110
IF nextPhW(isVowel) THEN
FMT(r3/r_uvl) addWav(r3/r_uvl.wav, 50)
ELSE
IF prevPh(isFlag1) THEN
ChangePhoneme(NULL) // 'r' is already included in the previous vowel
ELSE
ChangePhoneme(V#)
ENDIF
ENDIF
endphoneme




phoneme V# // used for 'r' after a vowel (to create a diphthong)
liquid
lengthmod 7
IF nextPhW(isVowel) THEN
ChangePhoneme(r)
ENDIF

ipa ɐ
IF prevPh(#a) OR prevPh(E) THEN
FMT(r/V_2_)
ENDIF
IF prevPh(#u) THEN
FMT(r/@_)
ENDIF
FMT(r/V_)
phoneme iR
vowel starttype #i endtype #@
ipa iɐ
flag1
length 180
FMT(vdiph2/i@_2)
endphoneme endphoneme





+ 9
- 4
platforms/windows/make_espeak.iss View File

[Setup] [Setup]
AppName=eSpeak AppName=eSpeak
AppVerName=eSpeak version 1.46.42
AppVerName=eSpeak version 1.46.47
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details).
WindowVisible=yes WindowVisible=yes
$1c: Result := 'sq'; $1c: Result := 'sq';
$1d: Result := 'sv'; $1d: Result := 'sv';
$1f: Result := 'tr'; $1f: Result := 'tr';
//$20: Result := 'ur';
$21: Result := 'id'; $21: Result := 'id';
$25: Result := 'et'; $25: Result := 'et';
//$26: Result := 'lv';
$26: Result := 'lv';
$27: Result := 'lt'; $27: Result := 'lt';
$29: Result := 'fa';
$2a: Result := 'vi'; $2a: Result := 'vi';
$2b: Result := 'hy'; $2b: Result := 'hy';
//$2c: Result := 'az'; //$2c: Result := 'az';
//$2d: Result := 'eu'; //$2d: Result := 'eu';
$2f: Result := 'mk'; $2f: Result := 'mk';
$36: Result := 'af'; $36: Result := 'af';
$37: Result := 'kn';
$39: Result := 'hi'; $39: Result := 'hi';
//$3a: Result := 'mt'; //$3a: Result := 'mt';
//$3c: Result := 'ga';
$3c: Result := 'ga';
//$3f: Result := 'kk'; //$3f: Result := 'kk';
$41: Result := 'sw'; $41: Result := 'sw';
//$44: Result := 'tt'; //$44: Result := 'tt';
$46: Result := 'pa';
$49: Result := 'ta'; $49: Result := 'ta';
$46: Result := 'pa'; $46: Result := 'pa';
$4b: Result := 'kn'; $4b: Result := 'kn';
$4c: Result := 'ml';
//$50: Result := 'mn'; //$50: Result := 'mn';
$52: Result := 'cy'; $52: Result := 'cy';
//$5e: Result := 'am'; //$5e: Result := 'am';
//$61: Result := 'ne';
$61: Result := 'ne';
//$87: Result := 'rw'; //$87: Result := 'rw';
//$88: Result := 'wo'; //$88: Result := 'wo';
end; end;

+ 1
- 1
platforms/windows/windows_sapi/ttsengobj.cpp View File

sprintf(&cmdbuf[len],"%c%dF",CTRL_EMBEDDED,emphasis); sprintf(&cmdbuf[len],"%c%dF",CTRL_EMBEDDED,emphasis);
len += strlen(&cmdbuf[len]); len += strlen(&cmdbuf[len]);
} }
if(sayas != gSayas)
if((sayas != gSayas) || (sayas != 0))
{ {
sprintf(&cmdbuf[len],"%c%dY",CTRL_EMBEDDED,sayas); sprintf(&cmdbuf[len],"%c%dY",CTRL_EMBEDDED,sayas);
len += strlen(&cmdbuf[len]); len += strlen(&cmdbuf[len]);

+ 4
- 4
src/Makefile.espeakedit View File



OBJS=$(patsubst %.cpp,%.o,$(SRCS)) OBJS=$(patsubst %.cpp,%.o,$(SRCS))


WX_LIBS = -pthread -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 \
-lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8
WX_LIBS = -pthread `wx-config --libs`


LIBS=-lstdc++ -lportaudio LIBS=-lstdc++ -lportaudio
#LIBS=-lstdc++ /usr/lib/x86_64-linux-gnu/libportaudio.so.2


CPPFLAGS = -Wall -g -fexceptions -I/usr/lib/wx/include/gtk2-unicode-release-2.8
CPPFLAGS = -Wall -g -fexceptions `wx-config --cflags`
-I/usr/include/wx-2.8 \ -I/usr/include/wx-2.8 \
-DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES
-D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT


CXXFLAGS = -O2 -Wall -fexceptions -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 \
CXXFLAGS = -O2 -Wall -fexceptions `wx-config --cflags` \
-DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -DNO_GCC_PRAGMA -D_ESPEAKEDIT


all: espeakedit all: espeakedit

+ 2
- 1
src/numbers.cpp View File

// return number of bytes used by the letter // return number of bytes used by the letter
// control bit 0: a non-initial letter in a word // control bit 0: a non-initial letter in a word
// bit 1: say 'capital' // bit 1: say 'capital'
// bit 2: say character code for unknown letters


int n_bytes; int n_bytes;
int letter; int letter;
} }
} }


if(!(control & 2) && (al_flags & AL_NOT_CODE))
if(!(control & 4) && (al_flags & AL_NOT_CODE))
{ {
// don't speak the character code number, unless we want full details of this character // don't speak the character code number, unless we want full details of this character
speak_letter_number = 0; speak_letter_number = 0;

+ 1
- 1
src/phonemelist.cpp View File

ph = phoneme_tab[plist3->phcode]; ph = phoneme_tab[plist3->phcode];
plist3[0].ph = ph; plist3[0].ph = ph;


if(plist3->phcode == phonSWITCH)
if((plist3->phcode == phonSWITCH) && !(plist3->synthflags & SFLAG_EMBEDDED)) // ?? phonSWITCH can't have SFLAG_EMBEDDED ??
{ {
if((plist3[1].phcode == phonSWITCH) || ((plist3[1].type == phPAUSE) && (plist3[2].phcode == phonSWITCH))) if((plist3[1].phcode == phonSWITCH) || ((plist3[1].type == phPAUSE) && (plist3[2].phcode == phonSWITCH)))
continue; // next phoneme is also a phonSWITCH, so ignore continue; // next phoneme is also a phonSWITCH, so ignore

+ 1
- 1
src/speech.h View File

#endif #endif


#ifdef _ESPEAKEDIT #ifdef _ESPEAKEDIT
//#define USE_PORTAUDIO
#define USE_PORTAUDIO
#define USE_ASYNC #define USE_ASYNC
#define LOG_FRAMES // write keyframe info to log-espeakedit #define LOG_FRAMES // write keyframe info to log-espeakedit
#endif #endif

+ 1
- 1
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.h" #include "wave.h"


const char *version_string = "1.46.46 11.Mar.13";
const char *version_string = "1.46.47 12.Mar.13";
const int version_phdata = 0x014640; const int version_phdata = 0x014640;


int option_device_number = -1; int option_device_number = -1;

+ 9
- 3
src/tr_languages.cpp View File

#define OFFSET_ETHIOPIC 0x1200 #define OFFSET_ETHIOPIC 0x1200




// character ranges must be listed in ascending order
ALPHABET alphabets [] = { ALPHABET alphabets [] = {
{"_el", OFFSET_GREEK, 0x380, 0x3ff, L('e','l'), AL_DONT_NAME | AL_NOT_LETTERS}, {"_el", OFFSET_GREEK, 0x380, 0x3ff, L('e','l'), AL_DONT_NAME | AL_NOT_LETTERS},
{"_cyr", OFFSET_CYRILLIC, 0x400, 0x52f, 0, 0}, {"_cyr", OFFSET_CYRILLIC, 0x400, 0x52f, 0, 0},
{"_braille", 0x2800, 0x2800,0x28ff, 0, AL_NO_SYMBOL}, {"_braille", 0x2800, 0x2800,0x28ff, 0, AL_NO_SYMBOL},
{"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE}, {"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE},
{"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE}, {"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE},
{"_ko", 0xa700, 0xa700,0xd7ff, 0, AL_NOT_CODE},
{NULL, 0, 0, 0, 0, 0} {NULL, 0, 0, 0, 0, 0}
}; };




while(alphabet->name != NULL) while(alphabet->name != NULL)
{ {
if((c >= alphabet->range_min) && (c <= alphabet->range_max))
if(c <= alphabet->range_max)
{ {
return(alphabet);
if(c >= alphabet->range_min)
return(alphabet);
else
break;
} }
alphabet++; alphabet++;
} }
case L('h','i'): // Hindi case L('h','i'): // Hindi
case L('n','e'): // Nepali case L('n','e'): // Nepali
case L('p','a'): // Punjabi case L('p','a'): // Punjabi
case L('g','u'): // Gujarati
{ {
static const short stress_lengths_hi[8] = {190, 190, 210, 210, 0, 0, 230, 250}; static const short stress_lengths_hi[8] = {190, 190, 210, 210, 0, 0, 230, 250};
static const unsigned char stress_amps_hi[8] = {17,14, 20,19, 20,22, 22,21 }; static const unsigned char stress_amps_hi[8] = {17,14, 20,19, 20,22, 22,21 };
0x1a1, 0x1edd, 0x1edb, 0x1edf, 0x1ee1, 0x1ee3, // ơ 0x1a1, 0x1edd, 0x1edb, 0x1edf, 0x1ee1, 0x1ee3, // ơ
0x75, 0xf9, 0xfa, 0x1ee7, 0x169, 0x1ee5, // u 0x75, 0xf9, 0xfa, 0x1ee7, 0x169, 0x1ee5, // u
0x1b0, 0x1eeb, 0x1ee9, 0x1eed, 0x1eef, 0x1ef1, // ư 0x1b0, 0x1eeb, 0x1ee9, 0x1eed, 0x1eef, 0x1ef1, // ư
0x79, 0x1ef3, 0xfd, 0x1ef7, 0x1ef9, 0x1e, 0 }; // y
0x79, 0x1ef3, 0xfd, 0x1ef7, 0x1ef9, 0x1ef5, 0 }; // y


SetupTranslator(tr,stress_lengths_vi,stress_amps_vi); SetupTranslator(tr,stress_lengths_vi,stress_amps_vi);
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable

+ 7
- 4
src/translate.cpp View File

int capitals = 0; int capitals = 0;
int non_initial = 0; int non_initial = 0;


if (spell_word > 2)
capitals = 2;
if(spell_word > 2)
capitals = 2; // speak 'capital'
if(spell_word > 1)
capitals |= 4; // speak charater code for unknown letters


while((*word != ' ') && (*word != 0)) while((*word != ' ') && (*word != 0))
{ {
// change to another language in order to translate this word // change to another language in order to translate this word
strcpy(word_phonemes,unpron_phonemes); strcpy(word_phonemes,unpron_phonemes);
if(strcmp(&unpron_phonemes[1],"en")==0) if(strcmp(&unpron_phonemes[1],"en")==0)
return(FLAG_SPELLWORD); // _^_en must have been set in TranslateLetter(), not *_rules
return(FLAG_SPELLWORD); // _^_en must have been set in TranslateLetter(), not *_rules which uses only _^_
return(0); return(0);
} }


word_flags = wtab[0].flags; word_flags = wtab[0].flags;
if(word_flags & FLAG_EMBEDDED) if(word_flags & FLAG_EMBEDDED)
{ {
wtab[0].flags &= ~FLAG_EMBEDDED; // clear it in case we call TranslateWord2() again for the same word
embedded_flag = SFLAG_EMBEDDED; embedded_flag = SFLAG_EMBEDDED;


Word_EmbeddedCmd(); Word_EmbeddedCmd();
{ {
ph_list2[n_ph_list2].phcode = ph_code; ph_list2[n_ph_list2].phcode = ph_code;
ph_list2[n_ph_list2].sourceix = 0; ph_list2[n_ph_list2].sourceix = 0;
ph_list2[n_ph_list2].synthflags = embedded_flag;
ph_list2[n_ph_list2].synthflags = 0;
ph_list2[n_ph_list2++].tone_ph = *p; ph_list2[n_ph_list2++].tone_ph = *p;
SelectPhonemeTable(*p); SelectPhonemeTable(*p);
p++; p++;

+ 1
- 1
src/translate.h View File

#define CTRL_EMBEDDED 0x01 // control character at the start of an embedded command #define CTRL_EMBEDDED 0x01 // control character at the start of an embedded command
#define REPLACED_E 'E' // 'e' replaced by silent e #define REPLACED_E 'E' // 'e' replaced by silent e


#define N_WORD_PHONEMES 160 // max phonemes in a word
#define N_WORD_PHONEMES 200 // max phonemes in a word
#define N_WORD_BYTES 160 // max bytes for the UTF8 characters in a word #define N_WORD_BYTES 160 // max bytes for the UTF8 characters in a word
#define N_CLAUSE_WORDS 300 // max words in a clause #define N_CLAUSE_WORDS 300 // max words in a clause
#define N_RULE_GROUP2 120 // max num of two-letter rule chains #define N_RULE_GROUP2 120 // max num of two-letter rule chains

Loading…
Cancel
Save