diff --git a/dictsource/pt_list b/dictsource/pt_list index e8ecbf9f..2f5b5e8c 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -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 diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 1431dd80..0086af19 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -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 (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 @@ =) = (= ==) = (_ _:: - - - - - - - - - - - - - - - - - diff --git a/espeak-data/voices/!v/f2 b/espeak-data/voices/!v/f2 index d30bee9b..8b0a3682 100755 --- a/espeak-data/voices/!v/f2 +++ b/espeak-data/voices/!v/f2 @@ -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 diff --git a/espeak-data/voices/!v/f4 b/espeak-data/voices/!v/f4 index 44f2c915..a07a3399 100644 --- a/espeak-data/voices/!v/f4 +++ b/espeak-data/voices/!v/f4 @@ -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 diff --git a/espeak-data/voices/en/en b/espeak-data/voices/en/en index dcf2a709..2d7b8d62 100755 --- a/espeak-data/voices/en/en +++ b/espeak-data/voices/en/en @@ -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 - diff --git a/espeak-data/voices/en/en-rp b/espeak-data/voices/en/en-rp index aec84f8f..0a821682 100755 --- a/espeak-data/voices/en/en-rp +++ b/espeak-data/voices/en/en-rp @@ -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 diff --git a/espeak-data/voices/mb/mb-de6 b/espeak-data/voices/mb/mb-de6 new file mode 100644 index 00000000..70b7ba09 --- /dev/null +++ b/espeak-data/voices/mb/mb-de6 @@ -0,0 +1,6 @@ +name german-mbrola-6 +language de 6 +gender male + +mbrola de6 de5_phtrans + diff --git a/espeak-data/voices/mb/mb-us3 b/espeak-data/voices/mb/mb-us3 index 3c622814..645e1b7d 100755 --- a/espeak-data/voices/mb/mb-us3 +++ b/espeak-data/voices/mb/mb-us3 @@ -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 diff --git a/espeak-data/voices/zhy b/espeak-data/voices/zhy index 2c5b5c85..d9a94aeb 100755 --- a/espeak-data/voices/zhy +++ b/espeak-data/voices/zhy @@ -1,5 +1,5 @@ name cantonese-test -language zh +language zh-yue phonemes zhy dictionary zhy gender male diff --git a/phsource/compile_report b/phsource/compile_report index 76348590..7a877074 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -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 diff --git a/phsource/mbrola/de4 b/phsource/mbrola/de4 index 41957952..e6cc95e6 100644 --- a/phsource/mbrola/de4 +++ b/phsource/mbrola/de4 @@ -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 diff --git a/phsource/mbrola/de5 b/phsource/mbrola/de5 index 6b3dab4c..2033475a 100644 --- a/phsource/mbrola/de5 +++ b/phsource/mbrola/de5 @@ -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 diff --git a/phsource/ph_english_n b/phsource/ph_english_n index 8de7511f..e8aec158 100644 --- a/phsource/ph_english_n +++ b/phsource/ph_english_n @@ -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 diff --git a/phsource/ph_english_rp b/phsource/ph_english_rp index 25c5873c..93bb0067 100644 --- a/phsource/ph_english_rp +++ b/phsource/ph_english_rp @@ -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 diff --git a/phsource/ph_english_sc b/phsource/ph_english_sc index d7d74cf7..30b9daa4 100644 --- a/phsource/ph_english_sc +++ b/phsource/ph_english_sc @@ -116,7 +116,7 @@ endphoneme phoneme 0 vowel starttype (o) endtype (o) - length 180 + length 200 formants vowel/oo_2 reduceto @ 0 endphoneme diff --git a/phsource/ph_english_wm b/phsource/ph_english_wm index a774b4d1..2f9cdac0 100644 --- a/phsource/ph_english_wm +++ b/phsource/ph_english_wm @@ -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 diff --git a/phsource/vdiph/@u_2 b/phsource/vdiph/@u_2 index f02ebafd..8db4a341 100644 Binary files a/phsource/vdiph/@u_2 and b/phsource/vdiph/@u_2 differ diff --git a/phsource/vdiph/ae_2 b/phsource/vdiph/ae_2 index dbfa3f12..ec40a5d6 100644 Binary files a/phsource/vdiph/ae_2 and b/phsource/vdiph/ae_2 differ diff --git a/phsource/vdiph/ooi_3 b/phsource/vdiph/ooi_3 index 33d98063..7469a316 100644 Binary files a/phsource/vdiph/ooi_3 and b/phsource/vdiph/ooi_3 differ diff --git a/phsource/vdiph/oou b/phsource/vdiph/oou new file mode 100644 index 00000000..7740044f Binary files /dev/null and b/phsource/vdiph/oou differ diff --git a/phsource/vdiph2/i@_2 b/phsource/vdiph2/i@_2 index f0e958b6..2444de9f 100644 Binary files a/phsource/vdiph2/i@_2 and b/phsource/vdiph2/i@_2 differ diff --git a/phsource/vowel/V_3 b/phsource/vowel/V_3 index 073555a2..225a45cf 100644 Binary files a/phsource/vowel/V_3 and b/phsource/vowel/V_3 differ diff --git a/phsource/vowel/e# b/phsource/vowel/e# index b7e1257e..4366026b 100644 Binary files a/phsource/vowel/e# and b/phsource/vowel/e# differ diff --git a/phsource/vowel/i# b/phsource/vowel/i# index 4063ca63..255c6d18 100644 Binary files a/phsource/vowel/i# and b/phsource/vowel/i# differ diff --git a/phsource/vowel/i#_3 b/phsource/vowel/i#_3 deleted file mode 100644 index 37398ab8..00000000 Binary files a/phsource/vowel/i#_3 and /dev/null differ diff --git a/phsource/vwl_en_wm/ii b/phsource/vowel/ii_6 similarity index 100% rename from phsource/vwl_en_wm/ii rename to phsource/vowel/ii_6 diff --git a/phsource/vowel/o_4 b/phsource/vowel/o_4 index 6df1bb38..d90f3423 100644 Binary files a/phsource/vowel/o_4 and b/phsource/vowel/o_4 differ diff --git a/phsource/vowel/u_fnt b/phsource/vowel/u_fnt index 9580996b..0db6ae4e 100644 Binary files a/phsource/vowel/u_fnt and b/phsource/vowel/u_fnt differ diff --git a/phsource/vowel/vowelchart.png b/phsource/vowel/vowelchart.png index 0354648a..eb828587 100644 Binary files a/phsource/vowel/vowelchart.png and b/phsource/vowel/vowelchart.png differ diff --git a/phsource/vwl_en_wm/aa b/phsource/vwl_en_n/aa_5 similarity index 97% rename from phsource/vwl_en_wm/aa rename to phsource/vwl_en_n/aa_5 index f27d4467..94eaaab9 100644 Binary files a/phsource/vwl_en_wm/aa and b/phsource/vwl_en_n/aa_5 differ diff --git a/phsource/vwl_en_wm/i b/phsource/vwl_en_wm/i index f95d8429..42645367 100644 Binary files a/phsource/vwl_en_wm/i and b/phsource/vwl_en_wm/i differ diff --git a/platforms/windows/windows_sapi/ttsengobj.cpp b/platforms/windows/windows_sapi/ttsengobj.cpp index e468f08c..5e0867da 100755 --- a/platforms/windows/windows_sapi/ttsengobj.cpp +++ b/platforms/windows/windows_sapi/ttsengobj.cpp @@ -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); } diff --git a/src/compiledict.cpp b/src/compiledict.cpp index 95e21173..ac86eaac 100755 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -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,"%s%c%s_dict",path_home,PATHSEP,dict_name); - if((f_out = fopen_log(fname,"wb+")) == NULL) + 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_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); diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 60bf6947..4f868163 100755 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -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 diff --git a/src/speak.cpp b/src/speak.cpp index c7173bf7..0c6c0c3a 100755 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -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); diff --git a/src/synth_mbrola.cpp b/src/synth_mbrola.cpp index 9bf5ed8c..13ca2317 100755 --- a/src/synth_mbrola.cpp +++ b/src/synth_mbrola.cpp @@ -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; diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 15e0fe0d..b59eae7d 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -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: diff --git a/src/translate.cpp b/src/translate.cpp index e9f7f959..6f49f0fe 100755 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -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 diff --git a/src/voices.cpp b/src/voices.cpp index 3afd30d7..12fa1a3f 100755 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -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");