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"); |