Windows: Fix problem with mbrola voices stopping in Jaws screenreader. --compile. Don't read and report faults in previous *-dict file. Added phoneme translation for German mbrola "de6" voice. Fix to phoneme translation for German voices. lang=zhy. Assume word boundary between an ideagraph and an English word. lang=pt. Update pt_rules git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@85 d46cf337-b52f-0410-862d-fd96e6ae7743master
nos $u | nos $u | ||||
//se $u | //se $u | ||||
este $u+ // this | |||||
este $u+ 'estSi // this | |||||
estes $u+ 'estSis // these | |||||
esta 'Est& $brk $u+ | esta 'Est& $brk $u+ | ||||
esse $u+ // that | |||||
esse $u+ 'esi // that | |||||
essa 'Es& $brk $u+ | essa 'Es& $brk $u+ | ||||
aquele $u+ // that | aquele $u+ // that | ||||
aquela $u+ | aquela $u+ | ||||
sua $u+ | sua $u+ | ||||
seus $u+ | seus $u+ | ||||
suas $u+ | suas $u+ | ||||
nosso $u+ | |||||
nossa $u+ | |||||
nossos $u+ | |||||
nossas $u+ | |||||
nosso $u+ n'OsU | |||||
nossa $u+ n'Os& | |||||
nossos $u+ n'OsUs | |||||
nossas $u+ n'Os&s | |||||
dele $u+ | dele $u+ | ||||
dela $u+ | dela $u+ | ||||
deles $u+ | deles $u+ | ||||
por $u $brk // by,for,through | por $u $brk // by,for,through | ||||
pelo $u $brk | pelo $u $brk | ||||
pela $u $brk | |||||
pela $u $brk p'el& | |||||
pelos $u $brk | pelos $u $brk | ||||
pelas $u $brk | |||||
pelas $u $brk p'el&s | |||||
a $u $brk // to,at | a $u $brk // to,at | ||||
?1 a & $u $brk | ?1 a & $u $brk | ||||
// estar - to be | // estar - to be | ||||
estar $u | estar $u | ||||
estou $u | estou $u | ||||
está $u | |||||
está $u est'a | |||||
estamos $u | estamos $u | ||||
estais $u | estais $u | ||||
estão $u | estão $u | ||||
esteve $u | esteve $u | ||||
estivemos $u | estivemos $u | ||||
estiveram $u | estiveram $u | ||||
estiver $u estSiv'Er | |||||
estarei $u | estarei $u | ||||
estará $u | estará $u | ||||
// foreign words | // foreign words | ||||
?1 alt 'alt | ?1 alt 'alt | ||||
?2 agosto &g'ostU | |||||
?1 back b'Ek | ?1 back b'Ek | ||||
?1 blind bl'aind | ?1 blind bl'aind | ||||
?1 braille b:r'aily | ?1 braille b:r'aily | ||||
?2 Braille bR'aili | |||||
?1 cancel k'&ns'El | ?1 cancel k'&ns'El | ||||
?1 caps k'aps | ?1 caps k'aps | ||||
?1 com kom | ?1 com kom | ||||
?1 google g'u:g&l | ?1 google g'u:g&l | ||||
?2 google g'ugol | ?2 google g'ugol | ||||
?1 hardware 'ard,w'Er- | ?1 hardware 'ard,w'Er- | ||||
?2 hardware x'ardwe@- | |||||
?2 hardware h'ardwe@- | |||||
?1 home 'omy | ?1 home 'omy | ||||
?2 home x'owmi | |||||
?2 home h'owmi | |||||
?1 hotmail h'Otm'eIl | ?1 hotmail h'Otm'eIl | ||||
?2 hotmail xotm'eIl | |||||
?2 hotmail hotm'eIl | |||||
?1 install ,inst'al | ?1 install ,inst'al | ||||
?2 internet iNtern'Et | ?2 internet iNtern'Et | ||||
?2 Intranet iNtRan'Et | ?2 Intranet iNtRan'Et | ||||
?2 inveja iNv'EZ& | |||||
?1 kernel k'Ern,El | ?1 kernel k'Ern,El | ||||
?2 kernel k'Ern@l | ?2 kernel k'Ern@l | ||||
?1 line l'ain | ?1 line l'ain | ||||
layout l'eI,aUt | layout l'eI,aUt | ||||
?2 logo l'OgU | |||||
?1 lock l'Ok | ?1 lock l'Ok | ||||
mail m'eIl | mail m'eIl | ||||
mails m'eIls | |||||
?1 maior m,&j'Or- | ?1 maior m,&j'Or- | ||||
?2 maior maI'Or | ?2 maior maI'Or | ||||
?2 maiores maI'O*is | |||||
?1 menor myn'Or- | ?1 menor myn'Or- | ||||
?2 menor men'Or | ?2 menor men'Or | ||||
?2 menores men'O*is | |||||
?2 melhor melj'Or | |||||
?2 melhores melj'O*is | |||||
?2 mouse m'aUzi | ?2 mouse m'aUzi | ||||
?1 menu menu | ?1 menu menu | ||||
?1 next n'Ekst | ?1 next n'Ekst | ||||
?1 ovo 'ovu | ?1 ovo 'ovu | ||||
?1 pause p'au:z | ?1 pause p'au:z | ||||
page p'eIdZ | page p'eIdZ | ||||
python p'aIT&~N | |||||
?2 pior pi'Or | |||||
?2 piores pi'O*is | |||||
python p'aIT&~N | |||||
?1 readme r'i:dmi: | ?1 readme r'i:dmi: | ||||
?1 sapi s,ap'i | ?1 sapi s,ap'i | ||||
?1 scanner sk'En&r | ?1 scanner sk'En&r | ||||
?1 telemóveis t,El,Em'OveIs# | ?1 telemóveis t,El,Em'OveIs# | ||||
?1 up &p | ?1 up &p | ||||
?1 upload &pl'oud | ?1 upload &pl'oud | ||||
?2 web w'Eb | |||||
?2 verbete verb'etSi | |||||
?2 verbetes verb'etSis | |||||
?1 yahoo 'i,ah'u | ?1 yahoo 'i,ah'u | ||||
?2 yahoo iax'u | |||||
?2 yahoo iah'u | |||||
?1 yes j'Es | ?1 yes j'Es | ||||
?2 alh alj | ?2 alh alj | ||||
a (m &~ | a (m &~ | ||||
a (mA@ & | |||||
a (n &~ | a (n &~ | ||||
a (nA@ & | |||||
am (_ =&~N | am (_ =&~N | ||||
am (C &~m | am (C &~m | ||||
an (K &~N | an (K &~N | ||||
?1 e (e i //eg: candeeiro | ?1 e (e i //eg: candeeiro | ||||
?2 ee i | ?2 ee i | ||||
?2 pr) ee (n ee | |||||
?2 el (K EU | ?2 el (K EU | ||||
?2 elh elj | ?2 elh elj | ||||
e (be_ E | e (be_ E | ||||
e (bem_ E | e (bem_ E | ||||
e (bes_ E | |||||
e (ca_ E | e (ca_ E | ||||
e (ce_ E | e (ce_ E | ||||
e (cem_ E | e (cem_ E | ||||
e (ces_ E | |||||
e (clA_ E | e (clA_ E | ||||
e (clAs_ E | |||||
e (clAm_ E | e (clAm_ E | ||||
e (co_ E | e (co_ E | ||||
e (de_ E | |||||
e (dem_ E | |||||
e (fa_ E | |||||
e (gA_ E | |||||
e (gAm_ E | |||||
e (grA_ E | |||||
e (grAm_ E | |||||
h) e (gA_ e | |||||
h) e (gAm_ e | |||||
e (gue_ E | |||||
e (guem_ E | |||||
e (la_ E | e (la_ E | ||||
e (las_ E | |||||
e (rA_ E | e (rA_ E | ||||
e (rAm_ E | e (rAm_ E | ||||
e (rAs_ E | |||||
l) e (rA_ e | |||||
l) e (rAm_ e | |||||
e (rsA_ E | e (rsA_ E | ||||
e (rsAm_ E | e (rsAm_ E | ||||
e (rsAs_ E | |||||
e (se_ E | |||||
e (sem_ E | |||||
e (ssA_ E | |||||
e (ssAm_ E | |||||
e (stA_ E | e (stA_ E | ||||
e (stAm_ E | e (stAm_ E | ||||
e (stAs_ E | |||||
e (strA_ E | e (strA_ E | ||||
e (rnA_ E | e (rnA_ E | ||||
e (rnAm_ E | e (rnAm_ E | ||||
e (rnAs_ E | |||||
e (rtA_ E | e (rtA_ E | ||||
e (rtAm_ E | e (rtAm_ E | ||||
e (rtAs_ E | |||||
e (rrA_ E | e (rrA_ E | ||||
e (rrAm_ E | e (rrAm_ E | ||||
e (rrAs_ E | |||||
e (rvA_ E | e (rvA_ E | ||||
e (rvAm_ E | e (rvAm_ E | ||||
e (rvAs_ E | |||||
e (ve_ E | |||||
e (vem_ E | |||||
e (ves_ E | |||||
e (rrAs_ E | |||||
e (tA_ E | |||||
e (tAm_ E | |||||
e (vA_ E | |||||
e (vAm_ E | |||||
e (rrAs_ E | |||||
e (x_ E | e (x_ E | ||||
e (xA_ E | e (xA_ E | ||||
e (xAm_ E | e (xAm_ E | ||||
e (xAs_ E | |||||
?2 _n) e (t E | ?2 _n) e (t E | ||||
em (C eIm | em (C eIm | ||||
j) e (tA_ E | j) e (tA_ E | ||||
j) e (tAm_ E | j) e (tAm_ E | ||||
j) e (tAs_ E | |||||
?1 _) es (C@@ S // drop initial "e". | ?1 _) es (C@@ S // drop initial "e". | ||||
?1 _) e (f i // efectuar, etc. | ?1 _) e (f i // efectuar, etc. | ||||
oi (s oI | oi (s oI | ||||
o (iCK o | o (iCK o | ||||
oo u | oo u | ||||
c) oo oo | |||||
?1 C) oo (_ ow // eg: voo, enjoo, etc... | ?1 C) oo (_ ow // eg: voo, enjoo, etc... | ||||
oy OI | oy OI | ||||
o (g_ O | |||||
o (gs_ O | |||||
o (Ca_ O | |||||
o (cA_ O | |||||
o (cAm_ O | |||||
o (que_ O | |||||
o (quem_ O | |||||
p) o (dA_ O | |||||
p) o (dAm_ O | |||||
o (g_ O | |||||
o (ge_ O | |||||
o (gem_ O | |||||
o (jA_ O | |||||
o (jAm_ O | |||||
o (ldA_ O | |||||
o (ldAm_ O | |||||
o (ltA_ O | |||||
o (ltAm_ O | |||||
o (sA_ O | |||||
o (sAm_ O | |||||
o (ssA_ O | |||||
o (ssAm_ O | |||||
o (va_ O | |||||
o (vAm_ O | |||||
o (veCs_ O | |||||
?1 o (l_ 'O | ?1 o (l_ 'O | ||||
?2 ol (_ Ow | ?2 ol (_ Ow | ||||
?2 olh olj | ?2 olh olj | ||||
o (brA_ O | o (brA_ O | ||||
o (brAm_ O | o (brAm_ O | ||||
o (brAs_ O | |||||
o (rCA_ O | o (rCA_ O | ||||
o (rCAm_ O | o (rCAm_ O | ||||
o (rCAs_ O | |||||
o (stA_ O | o (stA_ O | ||||
o (stAm_ O | o (stAm_ O | ||||
o (stAs_ O | |||||
o (tA_ O | |||||
o (tAm_ O | |||||
?2 ox (_ Oks | ?2 ox (_ Oks | ||||
?1 oz (_ Os# | ?1 oz (_ Os# | ||||
?2 oz (_ Oz | ?2 oz (_ Oz | ||||
o (zes_ O | o (zes_ O | ||||
o (ra_ O | o (ra_ O | ||||
o (ras_ O | |||||
?1 _) o (C O // eg: olá, orla, opção, etc... | ?1 _) o (C O // eg: olá, orla, opção, etc... | ||||
?1 _C) o (CACAC u // Documento, documentação, localizar, etc. | ?1 _C) o (CACAC u // Documento, documentação, localizar, etc. | ||||
?1 f) o (rmat u // formatar, formato. | ?1 f) o (rmat u // formatar, formato. | ||||
=) = (= | =) = (= | ||||
==) = (_ _:: | ==) = (_ _:: | ||||
name female2 | name female2 | ||||
gender female | gender female | ||||
pitch 140 220 | |||||
pitch 145 200 | |||||
formant 0 105 80 150 | formant 0 105 80 150 | ||||
formant 1 110 80 160 | formant 1 110 80 160 | ||||
formant 2 110 70 150 | formant 2 110 70 150 |
formant 7 110 75 150 | formant 7 110 75 150 | ||||
formant 8 110 75 150 | formant 8 110 75 150 | ||||
stressAdd -20 -20 -20 -20 0 0 60 90 | |||||
stressAdd -20 -20 -20 -20 0 0 60 80 | |||||
stressAmp 18 16 20 20 20 20 20 20 | stressAmp 18 16 20 20 20 20 20 20 |
gender male | gender male | ||||
pitch 82 117 | pitch 82 117 | ||||
replace 03 I i | |||||
replace 03 I2 i | |||||
formant 0 100 100 105 | formant 0 100 100 105 | ||||
replace 00 o@ O@ | replace 00 o@ O@ | ||||
replace 03 I i | replace 03 I i | ||||
replace 03 I2 i | replace 03 I2 i | ||||
replace 03 @ a2 | |||||
replace 03 3 a2 |
name german-mbrola-6 | |||||
language de 6 | |||||
gender male | |||||
mbrola de6 de5_phtrans | |||||
stressLength 170 135 205 205 0 0 245 275 | stressLength 170 135 205 205 0 0 245 275 | ||||
pitch 82 117 | pitch 82 117 | ||||
mbrola us3 | |||||
mbrola us3 us3_phtrans |
name cantonese-test | name cantonese-test | ||||
language zh | |||||
language zh-yue | |||||
phonemes zhy | phonemes zhy | ||||
dictionary zhy | dictionary zhy | ||||
gender male | gender male |
1 vdiph2/eo ro | 1 vdiph2/eo ro | ||||
1 vdiph2/e[u ro | 1 vdiph2/e[u ro | ||||
1 vdiph2/i@ en_n | 1 vdiph2/i@ en_n | ||||
1 vdiph2/i@_2 en_wm | |||||
1 vdiph2/ie fi | 1 vdiph2/ie fi | ||||
1 vdiph2/ii@ en | 1 vdiph2/ii@ en | ||||
1 vdiph2/ii@_2 en_wm | |||||
1 vdiph2/ii@_3 vi | 1 vdiph2/ii@_3 vi | ||||
3 vdiph2/iu base2 vi zhy | 3 vdiph2/iu base2 vi zhy | ||||
1 vdiph2/iu_2 fi | 1 vdiph2/iu_2 fi | ||||
1 vdiph/i#i ro | 1 vdiph/i#i ro | ||||
6 vdiph/oi base2 en_wm de it la vi | 6 vdiph/oi base2 en_wm de it la vi | ||||
1 vdiph/oi_2 af | 1 vdiph/oi_2 af | ||||
10 vdiph/ooi en en_n en_us en_rp cy eo fi no zhy | |||||
9 vdiph/ooi en en_n en_us cy eo fi no zhy | |||||
1 vdiph/ooi_2 af | 1 vdiph/ooi_2 af | ||||
1 vdiph/ooi_3 en_wm | |||||
2 vdiph/ooi_3 en_rp en_wm | |||||
1 vdiph/oou cs | 1 vdiph/oou cs | ||||
2 vdiph/ou fi zhy | 2 vdiph/ou fi zhy | ||||
2 vdiph/ou_2 sk ro | 2 vdiph/ou_2 sk ro | ||||
1 voc/zh_2 sk | 1 voc/zh_2 sk | ||||
2 voc/z_pzd base | 2 voc/z_pzd base | ||||
2 voc/z_pzd_ base | 2 voc/z_pzd_ base | ||||
14 vowel/@ base en en_us en_rp cy hi hr | |||||
13 vowel/@ base en en_us en_rp cy hi hr | |||||
1 vowel/@- base | 1 vowel/@- base | ||||
4 vowel/& en_rp fi hi sv | 4 vowel/& en_rp fi hi sv | ||||
4 vowel/0 base2 en hi pt | 4 vowel/0 base2 en hi pt | ||||
3 vowel/aa_2 en cy | 3 vowel/aa_2 en cy | ||||
1 vowel/aa_3 af | 1 vowel/aa_3 af | ||||
2 vowel/aa_4 sv vi | 2 vowel/aa_4 sv vi | ||||
2 vowel/aa_5 en_n | |||||
3 vowel/aa_5 en_n en_wm | |||||
2 vowel/aa_6 de | 2 vowel/aa_6 de | ||||
1 vowel/aa_7 nl | 1 vowel/aa_7 nl | ||||
2 vowel/aa_8 en_us | 2 vowel/aa_8 en_us | ||||
1 vowel/@_fnt hr | 1 vowel/@_fnt hr | ||||
1 vowel/@_hgh no | 1 vowel/@_hgh no | ||||
18 vowel/i base2 en_n en_rp en_wm cy eo fr hu pl it pt pt_pt ++ | 18 vowel/i base2 en_n en_rp en_wm cy eo fr hu pl it pt pt_pt ++ | ||||
1 vowel/i# cy | |||||
2 vowel/i# en_rp cy | |||||
5 vowel/i_2 de nl la sv | 5 vowel/i_2 de nl la sv | ||||
3 vowel/i_3 af fr sk | 3 vowel/i_3 af fr sk | ||||
4 vowel/i_4 fi hu it is | 4 vowel/i_4 fi hu it is | ||||
1 vowel/i_6 hr | 1 vowel/i_6 hr | ||||
3 vowel/i_en en en_us vi | 3 vowel/i_en en en_us vi | ||||
2 vowel/i_fnt hi | 2 vowel/i_fnt hi | ||||
10 vowel/ii en_wm cy de fr_ca nl is zhy | |||||
12 vowel/ii en_rp en_wm cy de fr_ca nl is zhy | |||||
3 vowel/ii# cy pl ru | 3 vowel/ii# cy pl ru | ||||
1 vowel/ii_2 la | 1 vowel/ii_2 la | ||||
7 vowel/ii_3 en_rp fi hi sk hr sv no | |||||
7 vowel/ii_4 en en_n en_rp | |||||
6 vowel/ii_3 fi hi sk hr sv no | |||||
5 vowel/ii_4 en en_n | |||||
2 vowel/ii_6 en_wm | |||||
1 vowel/ii_en en | 1 vowel/ii_en en | ||||
5 vowel/@_low hi ro no | |||||
10 vowel/@_low en_rp hi ro no | |||||
11 vowel/o base2 en en_wm de hi it la pt_pt sv | 11 vowel/o base2 en en_wm de hi it la pt_pt sv | ||||
4 vowel/o_2 cy hi hu no | 4 vowel/o_2 cy hi hu no | ||||
2 vowel/o-_2 en_n en_wm | 2 vowel/o-_2 en_n en_wm | ||||
4 vowelr/r-voc hi sk hr | 4 vowelr/r-voc hi sk hr | ||||
2 vowelr/V3_r en en_sc | 2 vowelr/V3_r en en_sc | ||||
1 vowelr/V_r en | 1 vowelr/V_r en | ||||
7 vowel/u en_n cy de eo fr cs la | |||||
6 vowel/u cy de eo fr cs la | |||||
5 vowel/u# en en_sc | 5 vowel/u# en en_sc | ||||
5 vowel/u_2 fi fr sk hr ro | 5 vowel/u_2 fi fr sk hr ro | ||||
1 vowel/u#_2 sv | 1 vowel/u#_2 sv | ||||
1 vowel/u_4 en_n | 1 vowel/u_4 en_n | ||||
2 vowel/u#_4 en_sc | 2 vowel/u#_4 en_sc | ||||
1 vowel/u_5 sw | 1 vowel/u_5 sw | ||||
3 vowel/u_6 en_rp pt_pt | |||||
2 vowel/u_6 pt_pt | |||||
1 vowel/u_7 vi | 1 vowel/u_7 vi | ||||
17 vowel/u_bck base2 cy fi fr_ca hi hu nl pl sk hr it pt ++ | 17 vowel/u_bck base2 cy fi fr_ca hi hu nl pl sk hr it pt ++ | ||||
1 vowel/u_fnt en_rp | |||||
2 vowel/uu en en_wm | 2 vowel/uu en en_wm | ||||
3 vowel/uu_2 base2 de la | 3 vowel/uu_2 base2 de la | ||||
1 vowel/uu_3 af | 1 vowel/uu_3 af | ||||
2 vowel/uu_4 fi sv | 2 vowel/uu_4 fi sv | ||||
7 vowel/uu_bck fr_ca hi hu pt no zhy | |||||
8 vowel/uu_bck en_n fr_ca hi hu pt no zhy | |||||
1 vowel/V en_sc | 1 vowel/V en_sc | ||||
4 vowel/V_2 en af ru | 4 vowel/V_2 en af ru | ||||
3 vowel/V_3 en_rp hi vi | 3 vowel/V_3 en_rp hi vi | ||||
5 vwl_en/aU@ en en_n en_us en_sc en_wm | 5 vwl_en/aU@ en en_n en_us en_sc en_wm | ||||
12 vwl_en/@L en en_us en_sc en_rp en_wm af | 12 vwl_en/@L en en_us en_sc en_rp en_wm af | ||||
3 vwl_en/@L_2 en_sc | 3 vwl_en/@L_2 en_sc | ||||
1 vwl_en_n/aa_5 en_n | |||||
1 vwl_en_n/O@ en_n | 1 vwl_en_n/O@ en_n | ||||
1 vwl_en_n/u_ en_n | 1 vwl_en_n/u_ en_n | ||||
4 vwl_en_rp/@ en_rp | |||||
3 vwl_en_rp/aa en_rp | 3 vwl_en_rp/aa en_rp | ||||
1 vwl_en_rp/aU@ en_rp | 1 vwl_en_rp/aU@ en_rp | ||||
1 vwl_en_rp/e@ en_rp | 1 vwl_en_rp/e@ en_rp | ||||
3 vwl_en_us/or en_us en_sc | 3 vwl_en_us/or en_us en_sc | ||||
1 vwl_en_us/ur en_us | 1 vwl_en_us/ur en_us | ||||
1 vwl_en_us/V en_us | 1 vwl_en_us/V en_us | ||||
2 vwl_en_wm/aa en_wm | |||||
1 vwl_en_wm/i en_wm | 1 vwl_en_wm/i en_wm | ||||
2 vwl_en_wm/ii en_wm | |||||
3 vwl_fr/@R fr pt_pt | 3 vwl_fr/@R fr pt_pt | ||||
1 vwl_fr/@R2 fr_ca | 1 vwl_fr/@R2 fr_ca | ||||
1 vwl_hi/A hi | 1 vwl_hi/A hi |
0 y NULL 0 Y | 0 y NULL 0 Y | ||||
0 W NULL 0 9 | 0 W NULL 0 9 | ||||
0 A: NULL 0 a: | 0 A: NULL 0 a: | ||||
0 A NULL 0 a: | |||||
0 Y: NULL 0 2: | 0 Y: NULL 0 2: | ||||
0 OI NULL 0 OY | 0 OI NULL 0 OY | ||||
0 3 NULL 0 6 | 0 3 NULL 0 6 | ||||
0 _! NULL 0 ? | |||||
0 _| NULL 0 ? | |||||
0 pF NULL 0 pf | 0 pF NULL 0 pf | ||||
0 r NULL 0 R | 0 r NULL 0 R | ||||
0 y NULL 0 Y | 0 y NULL 0 Y | ||||
0 W NULL 0 9 | 0 W NULL 0 9 | ||||
0 A: NULL 0 a: | 0 A: NULL 0 a: | ||||
0 A NULL 0 a: | |||||
0 Y: NULL 0 2: | 0 Y: NULL 0 2: | ||||
0 OI NULL 0 OY | 0 OI NULL 0 OY | ||||
0 3 NULL 0 6 | 0 3 NULL 0 6 | ||||
0 _! NULL 0 ? | |||||
//0 _! NULL 0 ? | |||||
0 _| NULL 0 ? | |||||
0 pF NULL 0 pf | 0 pF NULL 0 pf | ||||
0 r NULL 0 R | 0 r NULL 0 R | ||||
phoneme U | phoneme U | ||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 150 | length 150 | ||||
formants vowel/u | |||||
formants vowel/uu_bck | |||||
endphoneme | endphoneme | ||||
phoneme A@ | phoneme A@ | ||||
vowel starttype (a) endtype (@) | vowel starttype (a) endtype (@) | ||||
length 240 | |||||
formants vowel/aa_5 | |||||
length 250 | |||||
formants vwl_en_n/aa_5 | |||||
linkout r- | linkout r- | ||||
endphoneme | endphoneme | ||||
phoneme oU | phoneme oU | ||||
vowel starttype (o) endtype (u) | |||||
vowel starttype (o) endtype (o) | |||||
length 210 | length 210 | ||||
formants vowel/o_4 | formants vowel/o_4 | ||||
endphoneme | endphoneme |
phoneme @ // Schwa | phoneme @ // Schwa | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
formants vowel/@ | formants vowel/@ | ||||
before _ vwl_en_rp/@ | |||||
before _ vowel/@_low | |||||
unstressed | unstressed | ||||
linkout r- | linkout r- | ||||
length 140 | length 140 | ||||
phoneme 3 // Schwa, used for rhotic schwa in American | phoneme 3 // Schwa, used for rhotic schwa in American | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
formants vowel/@ | formants vowel/@ | ||||
before _ vwl_en_rp/@ | |||||
before _ vowel/@_low | |||||
unstressed | unstressed | ||||
linkout r- | linkout r- | ||||
beforevowel @ | beforevowel @ | ||||
phoneme @2 // Schwa, changes to I before a vowel | phoneme @2 // Schwa, changes to I before a vowel | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
formants vwl_en_rp/@ | |||||
formants vowel/@_low | |||||
unstressed | unstressed | ||||
beforevowel I | beforevowel I | ||||
length 120 | length 120 | ||||
phoneme @5 // Schwa, changes to U before a vowel | phoneme @5 // Schwa, changes to U before a vowel | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
formants vwl_en_rp/@ | |||||
formants vowel/@_low | |||||
unstressed | unstressed | ||||
beforevowelpause U | beforevowelpause U | ||||
length 140 | length 140 | ||||
phoneme I | phoneme I | ||||
vowel starttype (i) endtype (i) | vowel starttype (i) endtype (i) | ||||
length 130 | length 130 | ||||
formants vowel/ii_4 | |||||
formants vowel/ii | |||||
linkout ; | linkout ; | ||||
endphoneme | endphoneme | ||||
phoneme I2 | |||||
vowel starttype (i) endtype (i) | |||||
unstressed | |||||
length 140 | |||||
formants vowel/ii | |||||
linkout ; | |||||
endphoneme | |||||
phoneme i // optional variant of [I] for end of words | phoneme i // optional variant of [I] for end of words | ||||
vowel starttype (i) endtype (i) | vowel starttype (i) endtype (i) | ||||
length 140 | length 140 | ||||
formants vowel/ii_3 | |||||
formants vowel/i# | |||||
linkout ; | linkout ; | ||||
endphoneme | endphoneme | ||||
endphoneme | endphoneme | ||||
phoneme I2 | |||||
vowel starttype (i) endtype (i) | |||||
unstressed | |||||
length 140 | |||||
formants vowel/ii_4 | |||||
linkout ; | |||||
endphoneme | |||||
phoneme a2 | phoneme a2 | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
unstressed | unstressed | ||||
length 150 | length 150 | ||||
formants vowel/@ | |||||
formants vowel/@_low | |||||
linkout r- | linkout r- | ||||
endphoneme | endphoneme | ||||
phoneme u: | phoneme u: | ||||
vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
length 190 | length 190 | ||||
formants vowel/u_6 | |||||
formants vowel/u_fnt | |||||
before l/2 vwl_en/u_L-40+l/L2_uL | before l/2 vwl_en/u_L-40+l/L2_uL | ||||
endphoneme | endphoneme | ||||
phoneme OI | phoneme OI | ||||
vowel starttype (o) endtype (i) | vowel starttype (o) endtype (i) | ||||
length 230 | length 230 | ||||
formants vdiph/ooi | |||||
formants vdiph/ooi_3 | |||||
endphoneme | endphoneme | ||||
phoneme 0 | phoneme 0 | ||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 180 | |||||
length 200 | |||||
formants vowel/oo_2 | formants vowel/oo_2 | ||||
reduceto @ 0 | reduceto @ 0 | ||||
endphoneme | endphoneme |
phoneme I | phoneme I | ||||
vowel starttype (i) endtype (i) | vowel starttype (i) endtype (i) | ||||
length 140 | length 140 | ||||
formants vwl_en_wm/ii | |||||
formants vowel/ii_6 | |||||
before l vowel/ii | before l vowel/ii | ||||
linkout ; | linkout ; | ||||
endphoneme | endphoneme | ||||
phoneme I2 | |||||
vowel starttype (i) endtype (i) | |||||
unstressed | |||||
length 140 | |||||
formants vowel/ii_6 | |||||
before l vowel/ii | |||||
linkout ; | |||||
endphoneme | |||||
phoneme i // optional variant of [I] for end of words | phoneme i // optional variant of [I] for end of words | ||||
vowel starttype (i) endtype (i) | vowel starttype (i) endtype (i) | ||||
length 220 | length 220 | ||||
endphoneme | endphoneme | ||||
phoneme I2 | |||||
vowel starttype (i) endtype (i) | |||||
unstressed | |||||
length 140 | |||||
formants vwl_en_wm/ii | |||||
before l vowel/ii | |||||
linkout ; | |||||
endphoneme | |||||
phoneme a2 | phoneme a2 | ||||
vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
unstressed | unstressed | ||||
phoneme A: | phoneme A: | ||||
vowel starttype (a) endtype (a) | vowel starttype (a) endtype (a) | ||||
length 240 | length 240 | ||||
formants vwl_en_wm/aa | |||||
formants vowel/aa_5 | |||||
linkout r- | linkout r- | ||||
endphoneme | endphoneme | ||||
phoneme A@ | phoneme A@ | ||||
vowel starttype (a) endtype (a) | vowel starttype (a) endtype (a) | ||||
length 240 | length 240 | ||||
formants vwl_en_wm/aa | |||||
formants vowel/aa_5 | |||||
linkout r- | linkout r- | ||||
endphoneme | endphoneme | ||||
phoneme i@ | phoneme i@ | ||||
vowel starttype (i) endtype (@) | vowel starttype (i) endtype (@) | ||||
length 240 | length 240 | ||||
formants vdiph2/ii@_2 | |||||
formants vdiph2/i@_2 | |||||
linkout r- | linkout r- | ||||
endphoneme | endphoneme | ||||
Event = &Events[n_Events++]; | Event = &Events[n_Events++]; | ||||
Event->eEventId = SPEI_TTS_BOOKMARK; | Event->eEventId = SPEI_TTS_BOOKMARK; | ||||
Event->elParamType = SPET_LPARAM_IS_STRING; | Event->elParamType = SPET_LPARAM_IS_STRING; | ||||
Event->ullAudioStreamOffset = ((event->audio_position + audio_offset) * 441)/10; // ms -> bytes | |||||
Event->ullAudioStreamOffset = ((event->audio_position + audio_offset) * srate)/10; // ms -> bytes | |||||
Event->lParam = (long)event->id.name; | Event->lParam = (long)event->id.name; | ||||
Event->wParam = wcstol((wchar_t *)event->id.name,&tailptr,10); | Event->wParam = wcstol((wchar_t *)event->id.name,&tailptr,10); | ||||
} | } | ||||
if(event->type == espeakEVENT_SENTENCE) | if(event->type == espeakEVENT_SENTENCE) | ||||
{ | { | ||||
Event = &Events[n_Events++]; | Event = &Events[n_Events++]; | ||||
Event->eEventId = SPEI_SENTENCE_BOUNDARY; | |||||
Event->elParamType = SPET_LPARAM_IS_UNDEFINED; | |||||
Event->ullAudioStreamOffset = (event->audio_position * 441)/10; // ms -> bytes | |||||
Event->lParam = event->text_position-1 + text_offset; | |||||
Event->wParam = 0; // TEMP | |||||
Event->eEventId = SPEI_SENTENCE_BOUNDARY; | |||||
Event->elParamType = SPET_LPARAM_IS_UNDEFINED; | |||||
Event->ullAudioStreamOffset = ((event->audio_position + audio_offset) * srate)/10; // ms -> bytes | |||||
Event->lParam = 0; | |||||
Event->wParam = 0; // TEMP | |||||
} | } | ||||
#endif | #endif | ||||
} | } | ||||
int FAR PASCAL CompileDictionary(const char *voice, const char *path_log) | int FAR PASCAL CompileDictionary(const char *voice, const char *path_log) | ||||
{//=========================================================== | {//=========================================================== | ||||
FILE *f_log; | |||||
FILE *f_log3; | |||||
char fname[120]; | char fname[120]; | ||||
f_log = fopen(path_log,"w"); | |||||
f_log3 = fopen(path_log,"w"); | |||||
sprintf(fname,"%s/",path_install); | sprintf(fname,"%s/",path_install); | ||||
espeak_SetVoiceByName(voice); | espeak_SetVoiceByName(voice); | ||||
espeak_CompileDictionary(fname,f_log); | |||||
fclose(f_log); | |||||
espeak_CompileDictionary(fname,f_log3); | |||||
fclose(f_log3); | |||||
return(0); | return(0); | ||||
} | } |
char *p; | char *p; | ||||
int count=0; | int count=0; | ||||
FILE *f_in; | FILE *f_in; | ||||
char buf[256]; | |||||
char buf[sizeof(path_home)+45]; | |||||
char dict_line[128]; | char dict_line[128]; | ||||
sprintf(buf,"%s%s",path,filename); | sprintf(buf,"%s%s",path,filename); | ||||
int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *fname) | |||||
{//====================================================================================== | |||||
int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *fname_err) | |||||
{//========================================================================================== | |||||
// fname: space to write the filename in case of error | // fname: space to write the filename in case of error | ||||
FILE *f_in; | FILE *f_in; | ||||
FILE *f_out; | FILE *f_out; | ||||
int offset_rules=0; | int offset_rules=0; | ||||
int value; | int value; | ||||
char fname_buf[sizeof(path_home)+15]; | |||||
char fname_in[sizeof(path_home)+45]; | |||||
char fname_out[sizeof(path_home)+15]; | |||||
char fname_temp[sizeof(path_home)+15]; | char fname_temp[sizeof(path_home)+15]; | ||||
char path[sizeof(path_home)+40]; // path_dsource+20 | char path[sizeof(path_home)+40]; // path_dsource+20 | ||||
if(dsource == NULL) | if(dsource == NULL) | ||||
dsource = ""; | dsource = ""; | ||||
if(fname == NULL) | |||||
fname = fname_buf; | |||||
f_log = log; | f_log = log; | ||||
//f_log = fopen("log2.txt","w"); | //f_log = fopen("log2.txt","w"); | ||||
f_log = stderr; | f_log = stderr; | ||||
sprintf(path,"%s%s_",dsource,dict_name); | sprintf(path,"%s%s_",dsource,dict_name); | ||||
sprintf(fname_in,"%srules",path); | |||||
f_in = fopen_log(fname_in,"r"); | |||||
if(f_in == NULL) | |||||
{ | |||||
if(fname_err) | |||||
strcpy(fname_err,fname_in); | |||||
return(-1); | |||||
} | |||||
sprintf(fname,"%s%c%s_dict",path_home,PATHSEP,dict_name); | |||||
if((f_out = fopen_log(fname,"wb+")) == NULL) | |||||
sprintf(fname_out,"%s%c%s_dict",path_home,PATHSEP,dict_name); | |||||
if((f_out = fopen_log(fname_out,"wb+")) == NULL) | |||||
{ | { | ||||
if(fname_err) | |||||
strcpy(fname_err,fname_in); | |||||
return(-1); | return(-1); | ||||
} | } | ||||
sprintf(fname_temp,"%s%ctemp",path_home,PATHSEP); | sprintf(fname_temp,"%s%ctemp",path_home,PATHSEP); | ||||
compile_dictlist_end(f_out); | compile_dictlist_end(f_out); | ||||
offset_rules = ftell(f_out); | offset_rules = ftell(f_out); | ||||
sprintf(fname,"%srules",path); | |||||
fprintf(f_log,"Compiling: '%s'\n",fname); | |||||
f_in = fopen_log(fname,"r"); | |||||
if(f_in == NULL) | |||||
{ | |||||
return(-1); | |||||
} | |||||
fprintf(f_log,"Compiling: '%s'\n",fname_in); | |||||
compile_dictrules(f_in,f_out,fname_temp); | compile_dictrules(f_in,f_out,fname_temp); | ||||
fclose(f_in); | fclose(f_in); |
strcpy(dictionary_name,name); // currently loaded dictionary name | strcpy(dictionary_name,name); // currently loaded dictionary name | ||||
if(no_error) // don't load dictionary, just set the dictionary_name | |||||
return(1); | |||||
// Load a pronunciation data file into memory | // Load a pronunciation data file into memory | ||||
// bytes 0-3: offset to rules data | // bytes 0-3: offset to rules data | ||||
// bytes 4-7: number of hash table entries | // bytes 4-7: number of hash table entries |
initialise(); | initialise(); | ||||
if(voicename[0] == 0) | |||||
strcpy(voicename,"default"); | |||||
if(SetVoiceByName(voicename) != EE_OK) | |||||
{ | |||||
fprintf(stderr,"%svoice '%s'\n",err_load,voicename); | |||||
exit(2); | |||||
} | |||||
if(flag_compile) | if(flag_compile) | ||||
{ | { | ||||
LoadVoice(voicename,5); | |||||
#ifdef PLATFORM_DOS | #ifdef PLATFORM_DOS | ||||
char path_dsource[sizeof(path_home)+20]; | char path_dsource[sizeof(path_home)+20]; | ||||
strcpy(path_dsource,path_home); | strcpy(path_dsource,path_home); | ||||
exit(0); | exit(0); | ||||
} | } | ||||
if(voicename[0] == 0) | |||||
strcpy(voicename,"default"); | |||||
if(SetVoiceByName(voicename) != EE_OK) | |||||
{ | |||||
fprintf(stderr,"%svoice '%s'\n",err_load,voicename); | |||||
exit(2); | |||||
} | |||||
SetParameter(espeakRATE,speed,0); | SetParameter(espeakRATE,speed,0); | ||||
SetParameter(espeakVOLUME,amp,0); | SetParameter(espeakVOLUME,amp,0); | ||||
SetParameter(espeakCAPITALS,option_capitals,0); | SetParameter(espeakCAPITALS,option_capitals,0); |
void MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, FILE *f_mbrola) | void MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, FILE *f_mbrola) | ||||
{//====================================================================== | {//====================================================================== | ||||
// Generate a mbrola pho file | // Generate a mbrola pho file | ||||
int name; | |||||
unsigned int name; | |||||
int phix; | int phix; | ||||
int len; | int len; | ||||
int len1; | int len1; | ||||
{ | { | ||||
MbrolaEmbedded(embedded_ix, p->sourceix); | MbrolaEmbedded(embedded_ix, p->sourceix); | ||||
} | } | ||||
if(p->newword & 4) | |||||
MbrolaMarker(espeakEVENT_SENTENCE, (p->sourceix & 0x7ff) + clause_start_char, 0, count_sentences); | |||||
if(p->newword & 1) | if(p->newword & 1) | ||||
MbrolaMarker(espeakEVENT_WORD, (p->sourceix & 0x7ff) + clause_start_char, p->sourceix >> 11, clause_start_word + word_count++); | MbrolaMarker(espeakEVENT_WORD, (p->sourceix & 0x7ff) + clause_start_char, p->sourceix >> 11, clause_start_word + word_count++); | ||||
#endif | #endif | ||||
if(name == 0) | if(name == 0) | ||||
continue; // ignore this phoneme | continue; // ignore this phoneme | ||||
if(ph->type == phPAUSE) | |||||
if((ph->type == phPAUSE) && (name == ph->mnemonic)) | |||||
{ | { | ||||
// a pause phoneme, which has not been changed by the translation | |||||
name = '_'; | name = '_'; | ||||
len = (p->length * speed_factor1)/256; | len = (p->length * speed_factor1)/256; | ||||
// if(len == 0) continue; | // if(len == 0) continue; |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
const char *version_string = "1.29.04 11.Sep.07"; | |||||
const char *version_string = "1.29.06 11.Sep.07"; | |||||
const int version_phdata = 0x012901; | const int version_phdata = 0x012901; | ||||
int option_device_number = -1; | int option_device_number = -1; | ||||
} | } | ||||
break; | break; | ||||
case 1: | case 1: | ||||
if(control==0) | |||||
if(control==0) | |||||
{ | { | ||||
seq_len_adjust = value2 >> 8; | |||||
seq_len_adjust = value2 >> 8; | |||||
} | } | ||||
break; | break; | ||||
case 2: | case 2: | ||||
if(control==0) | |||||
if(control==0) | |||||
{ | { | ||||
seq_len_adjust = value2 >> 8; | |||||
seq_len_adjust = -seq_len_adjust; | |||||
seq_len_adjust = value2 >> 8; | |||||
seq_len_adjust = -seq_len_adjust; | |||||
} | } | ||||
break; | break; | ||||
case 3: | case 3: |
else | else | ||||
if(IsAlpha(c)) | if(IsAlpha(c)) | ||||
{ | { | ||||
if(!IsAlpha(prev_out) || (langopts.ideographs && (c >= 0x3000))) | |||||
if(!IsAlpha(prev_out) || (langopts.ideographs && ((c >= 0x3000) || (prev_out >= 0x3000)))) | |||||
{ | { | ||||
if(prev_out != '\'') | if(prev_out != '\'') | ||||
letter_count = 0; // don't reset count for an apostrophy within a word | letter_count = 0; // don't reset count for an apostrophy within a word |
static char voice_name[40]; // voice name for voice_selected | static char voice_name[40]; // voice name for voice_selected | ||||
static char voice_languages[100]; // list of languages and priorities for voice_selected | static char voice_languages[100]; // list of languages and priorities for voice_selected | ||||
strcpy(voicename,vname); | strcpy(voicename,vname); | ||||
if(voicename[0]==0) | if(voicename[0]==0) | ||||
strcpy(voicename,"default"); | strcpy(voicename,"default"); |