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
@@ -245,9 +245,10 @@ te $u | |||
nos $u | |||
//se $u | |||
este $u+ // this | |||
este $u+ 'estSi // this | |||
estes $u+ 'estSis // these | |||
esta 'Est& $brk $u+ | |||
esse $u+ // that | |||
esse $u+ 'esi // that | |||
essa 'Es& $brk $u+ | |||
aquele $u+ // that | |||
aquela $u+ | |||
@@ -267,10 +268,10 @@ seu $u+ | |||
sua $u+ | |||
seus $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+ | |||
dela $u+ | |||
deles $u+ | |||
@@ -300,9 +301,9 @@ numas $u $brk | |||
por $u $brk // by,for,through | |||
pelo $u $brk | |||
pela $u $brk | |||
pela $u $brk p'el& | |||
pelos $u $brk | |||
pelas $u $brk | |||
pelas $u $brk p'el&s | |||
a $u $brk // to,at | |||
?1 a & $u $brk | |||
@@ -425,7 +426,7 @@ seriam $u | |||
// estar - to be | |||
estar $u | |||
estou $u | |||
está $u | |||
está $u est'a | |||
estamos $u | |||
estais $u | |||
estão $u | |||
@@ -438,6 +439,7 @@ estive $u | |||
esteve $u | |||
estivemos $u | |||
estiveram $u | |||
estiver $u estSiv'Er | |||
estarei $u | |||
estará $u | |||
@@ -586,9 +588,11 @@ roxo x'oSU | |||
// foreign words | |||
?1 alt 'alt | |||
?2 agosto &g'ostU | |||
?1 back b'Ek | |||
?1 blind bl'aind | |||
?1 braille b:r'aily | |||
?2 Braille bR'aili | |||
?1 cancel k'&ns'El | |||
?1 caps k'aps | |||
?1 com kom | |||
@@ -612,24 +616,31 @@ roxo x'oSU | |||
?1 google g'u:g&l | |||
?2 google g'ugol | |||
?1 hardware 'ard,w'Er- | |||
?2 hardware x'ardwe@- | |||
?2 hardware h'ardwe@- | |||
?1 home 'omy | |||
?2 home x'owmi | |||
?2 home h'owmi | |||
?1 hotmail h'Otm'eIl | |||
?2 hotmail xotm'eIl | |||
?2 hotmail hotm'eIl | |||
?1 install ,inst'al | |||
?2 internet iNtern'Et | |||
?2 Intranet iNtRan'Et | |||
?2 inveja iNv'EZ& | |||
?1 kernel k'Ern,El | |||
?2 kernel k'Ern@l | |||
?1 line l'ain | |||
layout l'eI,aUt | |||
?2 logo l'OgU | |||
?1 lock l'Ok | |||
mail m'eIl | |||
mails m'eIls | |||
?1 maior m,&j'Or- | |||
?2 maior maI'Or | |||
?2 maiores maI'O*is | |||
?1 menor myn'Or- | |||
?2 menor men'Or | |||
?2 menores men'O*is | |||
?2 melhor melj'Or | |||
?2 melhores melj'O*is | |||
?2 mouse m'aUzi | |||
?1 menu menu | |||
?1 next n'Ekst | |||
@@ -640,7 +651,9 @@ roxo x'oSU | |||
?1 ovo 'ovu | |||
?1 pause p'au:z | |||
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 sapi s,ap'i | |||
?1 scanner sk'En&r | |||
@@ -657,8 +670,11 @@ roxo x'oSU | |||
?1 telemóveis t,El,Em'OveIs# | |||
?1 up &p | |||
?1 upload &pl'oud | |||
?2 web w'Eb | |||
?2 verbete verb'etSi | |||
?2 verbetes verb'etSis | |||
?1 yahoo 'i,ah'u | |||
?2 yahoo iax'u | |||
?2 yahoo iah'u | |||
?1 yes j'Es | |||
@@ -34,7 +34,9 @@ | |||
?2 alh alj | |||
a (m &~ | |||
a (mA@ & | |||
a (n &~ | |||
a (nA@ & | |||
am (_ =&~N | |||
am (C &~m | |||
an (K &~N | |||
@@ -130,67 +132,83 @@ | |||
?1 e (e i //eg: candeeiro | |||
?2 ee i | |||
?2 pr) ee (n ee | |||
?2 el (K EU | |||
?2 elh elj | |||
e (be_ E | |||
e (bem_ E | |||
e (bes_ E | |||
e (ca_ E | |||
e (ce_ E | |||
e (cem_ E | |||
e (ces_ E | |||
e (clA_ E | |||
e (clAs_ E | |||
e (clAm_ 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 (las_ E | |||
e (rA_ E | |||
e (rAm_ E | |||
e (rAs_ E | |||
l) e (rA_ e | |||
l) e (rAm_ e | |||
e (rsA_ E | |||
e (rsAm_ E | |||
e (rsAs_ E | |||
e (se_ E | |||
e (sem_ E | |||
e (ssA_ E | |||
e (ssAm_ E | |||
e (stA_ E | |||
e (stAm_ E | |||
e (stAs_ E | |||
e (strA_ E | |||
e (rnA_ E | |||
e (rnAm_ E | |||
e (rnAs_ E | |||
e (rtA_ E | |||
e (rtAm_ E | |||
e (rtAs_ E | |||
e (rrA_ E | |||
e (rrAm_ E | |||
e (rrAs_ E | |||
e (rvA_ 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 (xA_ E | |||
e (xAm_ E | |||
e (xAs_ E | |||
?2 _n) e (t E | |||
em (C eIm | |||
@@ -223,7 +241,6 @@ | |||
j) e (tA_ E | |||
j) e (tAm_ E | |||
j) e (tAs_ E | |||
?1 _) es (C@@ S // drop initial "e". | |||
?1 _) e (f i // efectuar, etc. | |||
@@ -425,12 +442,43 @@ | |||
oi (s oI | |||
o (iCK o | |||
oo u | |||
c) oo oo | |||
?1 C) oo (_ ow // eg: voo, enjoo, etc... | |||
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 | |||
?2 ol (_ Ow | |||
?2 olh olj | |||
@@ -445,21 +493,21 @@ | |||
o (brA_ O | |||
o (brAm_ O | |||
o (brAs_ O | |||
o (rCA_ O | |||
o (rCAm_ O | |||
o (rCAs_ O | |||
o (stA_ O | |||
o (stAm_ O | |||
o (stAs_ O | |||
o (tA_ O | |||
o (tAm_ O | |||
?2 ox (_ Oks | |||
?1 oz (_ Os# | |||
?2 oz (_ Oz | |||
o (zes_ O | |||
o (ra_ O | |||
o (ras_ O | |||
?1 _) o (C O // eg: olá, orla, opção, etc... | |||
?1 _C) o (CACAC u // Documento, documentação, localizar, etc. | |||
?1 f) o (rmat u // formatar, formato. | |||
@@ -712,20 +760,3 @@ | |||
=) = (= | |||
==) = (_ _:: | |||
@@ -2,7 +2,7 @@ language variant | |||
name female2 | |||
gender female | |||
pitch 140 220 | |||
pitch 145 200 | |||
formant 0 105 80 150 | |||
formant 1 110 80 160 | |||
formant 2 110 70 150 |
@@ -14,5 +14,5 @@ formant 6 110 80 150 | |||
formant 7 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 |
@@ -4,6 +4,7 @@ language en 2 | |||
gender male | |||
pitch 82 117 | |||
replace 03 I i | |||
replace 03 I2 i | |||
formant 0 100 100 105 | |||
@@ -7,3 +7,5 @@ phonemes en_rp | |||
replace 00 o@ O@ | |||
replace 03 I i | |||
replace 03 I2 i | |||
replace 03 @ a2 | |||
replace 03 3 a2 |
@@ -0,0 +1,6 @@ | |||
name german-mbrola-6 | |||
language de 6 | |||
gender male | |||
mbrola de6 de5_phtrans | |||
@@ -9,4 +9,4 @@ dictrules 3 6 | |||
stressLength 170 135 205 205 0 0 245 275 | |||
pitch 82 117 | |||
mbrola us3 | |||
mbrola us3 us3_phtrans |
@@ -1,5 +1,5 @@ | |||
name cantonese-test | |||
language zh | |||
language zh-yue | |||
phonemes zhy | |||
dictionary zhy | |||
gender male |
@@ -278,9 +278,9 @@ | |||
1 vdiph2/eo ro | |||
1 vdiph2/e[u ro | |||
1 vdiph2/i@ en_n | |||
1 vdiph2/i@_2 en_wm | |||
1 vdiph2/ie fi | |||
1 vdiph2/ii@ en | |||
1 vdiph2/ii@_2 en_wm | |||
1 vdiph2/ii@_3 vi | |||
3 vdiph2/iu base2 vi zhy | |||
1 vdiph2/iu_2 fi | |||
@@ -341,9 +341,9 @@ | |||
1 vdiph/i#i ro | |||
6 vdiph/oi base2 en_wm de it la vi | |||
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_3 en_wm | |||
2 vdiph/ooi_3 en_rp en_wm | |||
1 vdiph/oou cs | |||
2 vdiph/ou fi zhy | |||
2 vdiph/ou_2 sk ro | |||
@@ -409,7 +409,7 @@ | |||
1 voc/zh_2 sk | |||
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 | |||
4 vowel/& en_rp fi hi sv | |||
4 vowel/0 base2 en hi pt | |||
@@ -436,7 +436,7 @@ | |||
3 vowel/aa_2 en cy | |||
1 vowel/aa_3 af | |||
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 | |||
1 vowel/aa_7 nl | |||
2 vowel/aa_8 en_us | |||
@@ -459,7 +459,7 @@ | |||
1 vowel/@_fnt hr | |||
1 vowel/@_hgh no | |||
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 | |||
3 vowel/i_3 af fr sk | |||
4 vowel/i_4 fi hu it is | |||
@@ -468,13 +468,14 @@ | |||
1 vowel/i_6 hr | |||
3 vowel/i_en en en_us vi | |||
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 | |||
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 | |||
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 | |||
4 vowel/o_2 cy hi hu no | |||
2 vowel/o-_2 en_n en_wm | |||
@@ -500,7 +501,7 @@ | |||
4 vowelr/r-voc hi sk hr | |||
2 vowelr/V3_r en en_sc | |||
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_2 fi fr sk hr ro | |||
1 vowel/u#_2 sv | |||
@@ -508,14 +509,15 @@ | |||
1 vowel/u_4 en_n | |||
2 vowel/u#_4 en_sc | |||
1 vowel/u_5 sw | |||
3 vowel/u_6 en_rp pt_pt | |||
2 vowel/u_6 pt_pt | |||
1 vowel/u_7 vi | |||
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 | |||
3 vowel/uu_2 base2 de la | |||
1 vowel/uu_3 af | |||
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 | |||
4 vowel/V_2 en af ru | |||
3 vowel/V_3 en_rp hi vi | |||
@@ -541,9 +543,9 @@ | |||
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 | |||
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/u_ en_n | |||
4 vwl_en_rp/@ en_rp | |||
3 vwl_en_rp/aa en_rp | |||
1 vwl_en_rp/aU@ en_rp | |||
1 vwl_en_rp/e@ en_rp | |||
@@ -565,9 +567,7 @@ | |||
3 vwl_en_us/or en_us en_sc | |||
1 vwl_en_us/ur en_us | |||
1 vwl_en_us/V en_us | |||
2 vwl_en_wm/aa en_wm | |||
1 vwl_en_wm/i en_wm | |||
2 vwl_en_wm/ii en_wm | |||
3 vwl_fr/@R fr pt_pt | |||
1 vwl_fr/@R2 fr_ca | |||
1 vwl_hi/A hi |
@@ -35,10 +35,11 @@ | |||
0 y NULL 0 Y | |||
0 W NULL 0 9 | |||
0 A: NULL 0 a: | |||
0 A NULL 0 a: | |||
0 Y: NULL 0 2: | |||
0 OI NULL 0 OY | |||
0 3 NULL 0 6 | |||
0 _! NULL 0 ? | |||
0 _| NULL 0 ? | |||
0 pF NULL 0 pf | |||
0 r NULL 0 R | |||
@@ -17,10 +17,12 @@ | |||
0 y NULL 0 Y | |||
0 W NULL 0 9 | |||
0 A: NULL 0 a: | |||
0 A NULL 0 a: | |||
0 Y: NULL 0 2: | |||
0 OI NULL 0 OY | |||
0 3 NULL 0 6 | |||
0 _! NULL 0 ? | |||
//0 _! NULL 0 ? | |||
0 _| NULL 0 ? | |||
0 pF NULL 0 pf | |||
0 r NULL 0 R | |||
@@ -56,7 +56,7 @@ endphoneme | |||
phoneme U | |||
vowel starttype (o) endtype (o) | |||
length 150 | |||
formants vowel/u | |||
formants vowel/uu_bck | |||
endphoneme | |||
@@ -88,8 +88,8 @@ endphoneme | |||
phoneme A@ | |||
vowel starttype (a) endtype (@) | |||
length 240 | |||
formants vowel/aa_5 | |||
length 250 | |||
formants vwl_en_n/aa_5 | |||
linkout r- | |||
endphoneme | |||
@@ -170,7 +170,7 @@ endphoneme | |||
phoneme oU | |||
vowel starttype (o) endtype (u) | |||
vowel starttype (o) endtype (o) | |||
length 210 | |||
formants vowel/o_4 | |||
endphoneme |
@@ -7,7 +7,7 @@ | |||
phoneme @ // Schwa | |||
vowel starttype (@) endtype (@) | |||
formants vowel/@ | |||
before _ vwl_en_rp/@ | |||
before _ vowel/@_low | |||
unstressed | |||
linkout r- | |||
length 140 | |||
@@ -17,7 +17,7 @@ endphoneme | |||
phoneme 3 // Schwa, used for rhotic schwa in American | |||
vowel starttype (@) endtype (@) | |||
formants vowel/@ | |||
before _ vwl_en_rp/@ | |||
before _ vowel/@_low | |||
unstressed | |||
linkout r- | |||
beforevowel @ | |||
@@ -26,7 +26,7 @@ endphoneme | |||
phoneme @2 // Schwa, changes to I before a vowel | |||
vowel starttype (@) endtype (@) | |||
formants vwl_en_rp/@ | |||
formants vowel/@_low | |||
unstressed | |||
beforevowel I | |||
length 120 | |||
@@ -34,7 +34,7 @@ endphoneme | |||
phoneme @5 // Schwa, changes to U before a vowel | |||
vowel starttype (@) endtype (@) | |||
formants vwl_en_rp/@ | |||
formants vowel/@_low | |||
unstressed | |||
beforevowelpause U | |||
length 140 | |||
@@ -69,14 +69,23 @@ endphoneme | |||
phoneme I | |||
vowel starttype (i) endtype (i) | |||
length 130 | |||
formants vowel/ii_4 | |||
formants vowel/ii | |||
linkout ; | |||
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 | |||
vowel starttype (i) endtype (i) | |||
length 140 | |||
formants vowel/ii_3 | |||
formants vowel/i# | |||
linkout ; | |||
endphoneme | |||
@@ -105,20 +114,12 @@ phoneme U | |||
endphoneme | |||
phoneme I2 | |||
vowel starttype (i) endtype (i) | |||
unstressed | |||
length 140 | |||
formants vowel/ii_4 | |||
linkout ; | |||
endphoneme | |||
phoneme a2 | |||
vowel starttype (@) endtype (@) | |||
unstressed | |||
length 150 | |||
formants vowel/@ | |||
formants vowel/@_low | |||
linkout r- | |||
endphoneme | |||
@@ -193,7 +194,7 @@ endphoneme | |||
phoneme u: | |||
vowel starttype (u) endtype (u) | |||
length 190 | |||
formants vowel/u_6 | |||
formants vowel/u_fnt | |||
before l/2 vwl_en/u_L-40+l/L2_uL | |||
endphoneme | |||
@@ -229,7 +230,7 @@ endphoneme | |||
phoneme OI | |||
vowel starttype (o) endtype (i) | |||
length 230 | |||
formants vdiph/ooi | |||
formants vdiph/ooi_3 | |||
endphoneme | |||
@@ -116,7 +116,7 @@ endphoneme | |||
phoneme 0 | |||
vowel starttype (o) endtype (o) | |||
length 180 | |||
length 200 | |||
formants vowel/oo_2 | |||
reduceto @ 0 | |||
endphoneme |
@@ -35,11 +35,22 @@ endphoneme | |||
phoneme I | |||
vowel starttype (i) endtype (i) | |||
length 140 | |||
formants vwl_en_wm/ii | |||
formants vowel/ii_6 | |||
before l vowel/ii | |||
linkout ; | |||
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 | |||
vowel starttype (i) endtype (i) | |||
length 220 | |||
@@ -71,16 +82,6 @@ phoneme U | |||
endphoneme | |||
phoneme I2 | |||
vowel starttype (i) endtype (i) | |||
unstressed | |||
length 140 | |||
formants vwl_en_wm/ii | |||
before l vowel/ii | |||
linkout ; | |||
endphoneme | |||
phoneme a2 | |||
vowel starttype (@) endtype (@) | |||
unstressed | |||
@@ -93,7 +94,7 @@ endphoneme | |||
phoneme A: | |||
vowel starttype (a) endtype (a) | |||
length 240 | |||
formants vwl_en_wm/aa | |||
formants vowel/aa_5 | |||
linkout r- | |||
endphoneme | |||
@@ -101,7 +102,7 @@ endphoneme | |||
phoneme A@ | |||
vowel starttype (a) endtype (a) | |||
length 240 | |||
formants vwl_en_wm/aa | |||
formants vowel/aa_5 | |||
linkout r- | |||
endphoneme | |||
@@ -211,7 +212,7 @@ endphoneme | |||
phoneme i@ | |||
vowel starttype (i) endtype (@) | |||
length 240 | |||
formants vdiph2/ii@_2 | |||
formants vdiph2/i@_2 | |||
linkout r- | |||
endphoneme | |||
@@ -117,7 +117,7 @@ int SynthCallback(short *wav, int numsamples, espeak_EVENT *events) | |||
Event = &Events[n_Events++]; | |||
Event->eEventId = SPEI_TTS_BOOKMARK; | |||
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->wParam = wcstol((wchar_t *)event->id.name,&tailptr,10); | |||
} | |||
@@ -125,11 +125,11 @@ int SynthCallback(short *wav, int numsamples, espeak_EVENT *events) | |||
if(event->type == espeakEVENT_SENTENCE) | |||
{ | |||
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 | |||
} | |||
@@ -760,15 +760,15 @@ STDMETHODIMP CTTSEngObj::GetOutputFormat( const GUID * pTargetFormatId, const WA | |||
int FAR PASCAL CompileDictionary(const char *voice, const char *path_log) | |||
{//=========================================================== | |||
FILE *f_log; | |||
FILE *f_log3; | |||
char fname[120]; | |||
f_log = fopen(path_log,"w"); | |||
f_log3 = fopen(path_log,"w"); | |||
sprintf(fname,"%s/",path_install); | |||
espeak_SetVoiceByName(voice); | |||
espeak_CompileDictionary(fname,f_log); | |||
fclose(f_log); | |||
espeak_CompileDictionary(fname,f_log3); | |||
fclose(f_log3); | |||
return(0); | |||
} |
@@ -501,7 +501,7 @@ int compile_dictlist_file(const char *path, const char* filename) | |||
char *p; | |||
int count=0; | |||
FILE *f_in; | |||
char buf[256]; | |||
char buf[sizeof(path_home)+45]; | |||
char dict_line[128]; | |||
sprintf(buf,"%s%s",path,filename); | |||
@@ -1300,15 +1300,16 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp) | |||
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 | |||
FILE *f_in; | |||
FILE *f_out; | |||
int offset_rules=0; | |||
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 path[sizeof(path_home)+40]; // path_dsource+20 | |||
@@ -1316,8 +1317,6 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha | |||
if(dsource == NULL) | |||
dsource = ""; | |||
if(fname == NULL) | |||
fname = fname_buf; | |||
f_log = log; | |||
//f_log = fopen("log2.txt","w"); | |||
@@ -1325,10 +1324,20 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha | |||
f_log = stderr; | |||
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); | |||
} | |||
sprintf(fname_temp,"%s%ctemp",path_home,PATHSEP); | |||
@@ -1359,13 +1368,7 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha | |||
compile_dictlist_end(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); | |||
fclose(f_in); |
@@ -131,6 +131,9 @@ int Translator::LoadDictionary(const char *name, int no_error) | |||
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 | |||
// bytes 0-3: offset to rules data | |||
// bytes 4-7: number of hash table entries |
@@ -548,18 +548,11 @@ int main (int argc, char **argv) | |||
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) | |||
{ | |||
LoadVoice(voicename,5); | |||
#ifdef PLATFORM_DOS | |||
char path_dsource[sizeof(path_home)+20]; | |||
strcpy(path_dsource,path_home); | |||
@@ -580,6 +573,16 @@ int main (int argc, char **argv) | |||
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(espeakVOLUME,amp,0); | |||
SetParameter(espeakCAPITALS,option_capitals,0); |
@@ -487,7 +487,7 @@ int MbrolaSynth(char *p_mbrola) | |||
void MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, FILE *f_mbrola) | |||
{//====================================================================== | |||
// Generate a mbrola pho file | |||
int name; | |||
unsigned int name; | |||
int phix; | |||
int len; | |||
int len1; | |||
@@ -534,6 +534,9 @@ void MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, FILE *f_mbrola) | |||
{ | |||
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) | |||
MbrolaMarker(espeakEVENT_WORD, (p->sourceix & 0x7ff) + clause_start_char, p->sourceix >> 11, clause_start_word + word_count++); | |||
#endif | |||
@@ -545,8 +548,9 @@ void MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, FILE *f_mbrola) | |||
if(name == 0) | |||
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 = '_'; | |||
len = (p->length * speed_factor1)/256; | |||
// if(len == 0) continue; |
@@ -35,7 +35,7 @@ | |||
#include "translate.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; | |||
int option_device_number = -1; | |||
@@ -223,16 +223,16 @@ static unsigned int LookupSound2(int index, unsigned int other_phcode, int contr | |||
} | |||
break; | |||
case 1: | |||
if(control==0) | |||
if(control==0) | |||
{ | |||
seq_len_adjust = value2 >> 8; | |||
seq_len_adjust = value2 >> 8; | |||
} | |||
break; | |||
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; | |||
case 3: |
@@ -1909,7 +1909,7 @@ if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out) | |||
else | |||
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 != '\'') | |||
letter_count = 0; // don't reset count for an apostrophy within a word |
@@ -498,7 +498,6 @@ voice_t *LoadVoice(const char *vname, int control) | |||
static char voice_name[40]; // voice name for voice_selected | |||
static char voice_languages[100]; // list of languages and priorities for voice_selected | |||
strcpy(voicename,vname); | |||
if(voicename[0]==0) | |||
strcpy(voicename,"default"); |