From 6ee501b5bb40dffe749673976242ea0ba91c1583 Mon Sep 17 00:00:00 2001 From: jonsd Date: Wed, 27 Feb 2013 13:34:02 +0000 Subject: [PATCH] [1.46.38] Speak names of characters in non-native alphabets (eg. non-Latin). Language changes: en, nl, pt. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@304 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/de_list | 6 ++ dictsource/dict_phonemes | 29 +++--- dictsource/en_list | 171 ++++++++++++++++++++++++++++++++-- dictsource/en_rules | 33 +++++-- dictsource/hu_list | 6 ++ dictsource/nl_list | 24 ++++- dictsource/nl_rules | 14 ++- dictsource/pt_list | 44 +++++---- dictsource/pt_rules | 3 + phsource/compile_report | 27 ++++-- phsource/ph_english_us | 19 ++-- phsource/ph_pt_brazil | 2 +- phsource/phonemes | 3 + phsource/vowel/&_2 | Bin 6239 -> 6753 bytes phsource/vowel/vowelchart.png | Bin 74081 -> 74427 bytes src/compiledata.cpp | 24 ++++- src/dictionary.cpp | 8 ++ src/numbers.cpp | 85 +++++++++++++++-- src/readclause.cpp | 50 +++++----- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 108 +++++++++++++++------ src/translate.cpp | 35 ++++++- src/translate.h | 18 ++++ 23 files changed, 562 insertions(+), 149 deletions(-) diff --git a/dictsource/de_list b/dictsource/de_list index 3f4caa2f..f20a80e8 100644 --- a/dictsource/de_list +++ b/dictsource/de_list @@ -93,6 +93,12 @@ _tld t'Ild@ v faU x Iks +// Alphabets +_ar aR'AbIS +_cyr ky:R'IlIS +_he hEbr'E:IS + + // Numbers //======== _0 'nUl diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 9d6813ba..96d541b0 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -67,7 +67,7 @@ R3 s S t T tS v w x z Z -Dictionary hu_dict 2012-07-25 +Dictionary hu_dict 2013-02-25 a A a: e E e: i i: o o: u u: Y y y: Y: @@ -79,7 +79,7 @@ S s2 t t2 tS ts v w z Z -Dictionary de_dict 2012-11-26 +Dictionary de_dict 2013-02-25 3 @ @- a A A: aI aU A~ E E2 E: e: EI i I @@ -103,20 +103,21 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-02-20 +Dictionary en_dict 2013-02-27 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 -aI@ aU aU@ A~ E e: e@ eI -i I I# I2 i: i@ i@3 IR -O O: o: O@ o@ OI oU O~ -U u: U@ V VR +aI@ aU aU@ A~ e E e: e@ +eI i I I# I2 i: i@ i@3 +IR o O O: o: O@ o@ OI +oU O~ u U u: U@ V VR -: ; ? b C d D d# -dZ f g h j k l l# -m n N n^ p Q r r- -s S t T t2 tS v w -x z Z z# +* : ; ? b C d D +d# dZ f g h j k l +l# l/ m n N n^ p Q +q Q" r R r- R2 s S +t T t2 tS v w x z +Z z# Dictionary eo_dict 2013-01-24 @@ -329,7 +330,7 @@ k l m n p R s S t tS v w x -Dictionary nl_dict 2011-11-22 +Dictionary nl_dict 2013-02-26 8 @ @- a A a: A~ e E e# E2 e: EI eU i I @@ -377,7 +378,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-02-20 +Dictionary pt_dict 2013-02-25 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU diff --git a/dictsource/en_list b/dictsource/en_list index 37fa1abb..27531271 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -225,8 +225,9 @@ _₠ jU@roU ♭ flat ¬ n0t_|saIn √ skw,e@r'u:t -∞ Inf'InI2tI2 +∞ Inf'InI2ti ≠ n0t'i:kw@LtU +∫ IntIgr@L № nju:m@roU । dVnda# ● bl,aks'3:k@L @@ -249,6 +250,140 @@ _₠ jU@roU ʧ tSES ʤ dZEZ +// Language names +_el gr'i:k +_cyr sI2r'IlIk +_hy A@m'i:ni@n +_he h'i:bru: +_ar 'ar@bIk +_dv t'A:na# +_hi h'Indi +_bn bEng'A:li +_gur g'U@mUki +_gu gu:dZ3r'A:ti +_or 0r'i@ +_ta t'amI2l +_kn k'A:na#d@ +_ml maleI'A:l@m +_si sI2nh'A:l@ +_th t'aI +_lo l'aU +_ti tI2b'Et@n +_my mj'A:nmA@ +_ka dZ'O@dZ@n +_ko k3r'i@n +_eth i:TI'0pIk + + +// Cyrillic letters +а a +б bE +в vE +г gE +д dE +е jE +ё jo +ж ZE +з zE +и I +й ,Ik@-*'atkOji +к ka +л El/1 +м Em +н En +о o +п pE +р Er +с Es +т tE +у u +ф Ef +х xa +ц tsE +ч tSE +ш Sa +щ StSa +ъ jEr +ы _^_RU +ь jer +э E +ю ju +я ja + +// Arabic letters + +ء h'amza +آ 'Elifm,adda# +أ 'Elifh,amza +ا 'Elif +ب bE? +ة t'E?maR2b'uta# +ت tE? +ث TE? +ج ZIm +ح hE? +خ xE? +د dEl/1 +ذ DEl/1 +ر R2A:? +ز zEjn +س si:n +ش Si:n +ص sO:d@- +ض dO:d@- +ط thA:? +ظ DA:? +ع ?ajn +غ Q"ajn +ف fE? +ق qO:f +ك kEf +ل lEm +م mi:m +ن nu|:n +ه hE? +و wO:w +ي jE? + +َ a +ِ i +ُ u +ّ S'ada# +ْ suk'un + + + + +// Hebrew letters +א 'alef_ +ב bet_ +ג 'gimel_ +ד 'dalet_ +ה he_ +ו vav_ +ז z'ajin_ +ח xet_ +ט tet_ +י jod_ +ך kaf_ +כ kaf_ +ל l'amed_ +ם mem_ +מ mem_ +ן nun_ +נ nun_ +ס s'amex_ +ע ?'ajin_ +ף pe_ +פ pe_ +ץ ts'adi_ +צ ts'adi_ +ק kuf_ +ר ReS_ +ש Sin_ +ת tav_ + + // phonetic modifiers ː lENT@nd_ U+2b0 aspI2reItI2d_ // supr-h @@ -389,6 +524,7 @@ id $abbrev ie aIi:_! $pause $only i.e aIi:_! $pause imo $abbrev +inlb $abbrev irc $abbrev irs $abbrev itx $abbrev @@ -443,6 +579,7 @@ utc $abbrev uv $abbrev VI $abbrev wwii dVb@Lju:dVb@Lju:t'u: +xl $abbrev // not roman 40 xxx $abbrev // not roman 30 xy $abbrev yd $abbrev @@ -814,12 +951,14 @@ brie bri: bridal braId@L brigade $2 brigadier brIga#d'i@3 +brioche bri:'oUS broccoli br0k@li brochure broUS3 ?3 brochure broU'SU@r brooch broUtS budgerigar bVdZ@rIgA@ buffet bVfeI +?3 bulimia bUl'Imi@ bunion bVnI2@n bureaucracy bjU@'0kr@si bursar b3:s3 @@ -875,6 +1014,7 @@ carburetor kA@b@r'Et3 ?3 carburetor kA@b@reIt3 career k@r'i@3 caress k@rEs +carousel kar@s'El carpel kA@p@l cascade $alt3 cashier kaS'i@3 @@ -1056,8 +1196,7 @@ convent k0nv@nt converse $1 $only converse $verb convert $1 $noun -convict $1 $onlys -convict $verb +convict $2 $verb convolute k0nv@l'u:t coop ku:p cooper ku:p3 @@ -1483,7 +1622,6 @@ haha hA:h'A: halleluiah halI2'lu:j@ hallelujah halI2'lu:j@ halloween $3 -hallucinate $alt3 halogen hal@dZ@n hanged haNd harem hA:r'i:m @@ -1641,6 +1779,7 @@ itinerary aIt'In@r@rI ja jA: jagged dZagI#d jaguar dZagwA@ +jalapeno hA:l@p'eIn;oU japan dZ@pan jasmine dZazmIn jedi dZEdaI @@ -1651,6 +1790,7 @@ jukebox dZu:kb0ks july dZu:l'aI kaput $alt3 +karaoke karI'oUki karate k@rA:ti kebab k@bab ?3 kebab k@bA:b @@ -1936,6 +2076,7 @@ nosedive noUzdaIv nosir noUs3: not noUt // for noted, notable, etc nots n0ts +(nôtre dame) noUtr@'dA:m nott n0t nothing nVTIN notwithstanding $3 @@ -2027,6 +2168,7 @@ oxymoron $3 padre pA:dreI paella paI'El@ palling palIN +palsy pO:lzi papa pa#p'A: ?3 papa pA:p@ papal peIp@L @@ -2116,7 +2258,7 @@ pizzeria pi:ts@r'i@ plaguing pleIgIN playtest pleItEst plaza plA:z@ -plebeian pl@b'i@n +plebeian pl@b'i:@n plethora plET3r@ plicate $2 plumber plVm3 @@ -2128,6 +2270,7 @@ poll poUl polyamide p0lI'eImaId polythene $1 portend po@t'End +?!3 portrait po@treIt poseidon p@saId@n posse p0si postage poUstI2dZ @@ -2370,19 +2513,18 @@ salad sal@d salami $alt3 saline seIlaIn ?3 saline seIli:n +salmon sam@n ?3 salon $alt3 saloon $alt3 san ,san $only sardine $2 -satan seIt@n -satanist seIt@nIst +satanic $alt3 saucepan sO:sp@n saudi saUdi saute sO:teI ?3 savant sa#vA:nt says sEz scaly skeIlI -salmon sam@n scalpel skalp@L scared ske@d scaring ske@rIN @@ -2458,6 +2600,8 @@ sierra si:'e@r@ signage saInI2dZ signal sIgn@l // signaled signer saIn3 +signoff s,aIn'0f +signon s,aIn'0n signup saInVp sikh si:k silo saIloU @@ -2932,7 +3076,6 @@ Belgrade $2 Belize bEl'i:z Bengal b,Eng'O:l Benin bEnIn -Berlin b3:l'In Bhutan bu:t'an Bideford bIdIf@d Bogota b0g@t'A: @@ -2993,6 +3136,7 @@ Geneva dZ@ni:v@ Gdansk g@-dansk Gibraltar $2 Gomera goUm'e@r@ +Gurmukhi gU@mUki Harare ha#rA:ri Hanoi han'OI Havana ha#van@ @@ -3073,6 +3217,7 @@ Moroccan m@r0k@n Montana m0nt'an@ Monte m0nt2i Munich mju:nIk +Myanmar mjA:nmA@ Nairobi naIr'oUbi Naples neIp@Lz Nauru naUru: @@ -3136,6 +3281,7 @@ Sumatran su:m'A:tr@n Suriname sU@rIn'am Taipei t,aIp'eI Taiwan taI'wA:n +Taiwanese taIw@n'i:z Tawakoni ta#wA:k@ni Tblisi t@-bli:si Tehran te@r'A:n @@ -3348,7 +3494,7 @@ Jacob dZeIk@b Jacques Zak Jamie dZeImi Jared dZar@d -Jarred dZar@d +Jarrad dZar@d Jesus dZi:z@s Jonah dZoUn@ José hoUs'eI @@ -3496,6 +3642,7 @@ Tricia trIS@ Vanessa $alt3 Wallace w0lI#s Wally w0li +?3 William wIlj@m Yves i:v Yvonne $2 Zoe zoUi @@ -3510,6 +3657,7 @@ Boswell b0zwEl Buchanan bju:k'an@n Cabrillo ka#bri:oU Campbell kamb@l +Capone ka#poUn Carnegie kA@n@gi Cohen koU@n Cthulhu k@-Tu:l#u: @@ -3529,6 +3677,7 @@ Gibson gIbs@n Guinness gInIs Hades heIdi:z Hamilton ham@Lt@n +Hoosier hu:Z3 Jacobi dZa#koUbi Kendell kEnd@L Kyocera kaI|@s'i@r@ @@ -3555,7 +3704,9 @@ Rivera rI2ve@r@ Rizzoli rI2zoUli Rodrigues r0dr'i:gEz Sanchez santSEz +Shakur Sa#kU@ Tzu tsu: +Versace v3sA:tSi Wii wi:: Yaesu jeIsu: Yamaha jam@hA: diff --git a/dictsource/en_rules b/dictsource/en_rules index 3aaa5016..97f6c7ab 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -53,7 +53,7 @@ -) a (- a# _) a (- 'eI _) a (-half a# - X) a ($w_alt3+++ a# + X) a ($w_alt3++++ a# sw) a (B 0 a (Be# eI w) a (Be# eI @@ -155,6 +155,7 @@ @) a (tious 'eI n) a (tur eI n) a (tura a + &) a (ture_ @ sign) a (ture I _) a (ve a _) a (viat eI @@ -499,6 +500,7 @@ aise (_ 'eIz _c) ais (l aS // 'caislin' @l) ais (_ eI + portr) ai (t I# .group al _) al (@ a#l @@ -532,6 +534,7 @@ _) al (i al _) al (ig a#l X) al (in eIl + st) al (in A:l _) ali (Be a#laI &) ali (sC_ @lI &) al (isCic @l @@ -620,6 +623,7 @@ f) all (ib al _C) all (ow al h) all (C O:l + h) all (uc a#l sm) all O:l st) all O:l t) all O:l @@ -686,7 +690,7 @@ und) am (en @m _) am (en a#m ame (nab a#mi: - _l) ame (nt %amE + _l) am (ent a#m amm (end a#m amoeb a#mi:b f) amil amIl @@ -748,6 +752,7 @@ &) an (ty_ @n &) an (t_ @n &) an (t_$w_alt an +?3 &) an (t_$w_alt A:n ?8 &) an (t_ a#n _f) an (at a#n pl) an (t_ an @@ -900,7 +905,7 @@ _p) ara (de @reI &t) ar (_ 3 st) ar (_ A@ - guit) ar (_ A@ + guit) ar 'A@ _t) ar (_ A@ &) ar (dis 3 &) ar (diz 3 @@ -1084,6 +1089,7 @@ w) ast (e# eIst .group at + _s) ata (n eIt@ _g) ator eIt3 &) ate (_$w_alt2 @t pal) ate (_ @t @@ -1101,7 +1107,7 @@ par) ates (_ eIt|s @) ated (++_ eItId _s) ate (ll at@ - @) ati (_ 'A:tI + @) ati (_ 'A:ti at (im_ 'eIt @) ating (++_ eItIN &) at (ive @t @@ -1126,7 +1132,7 @@ @) ath (An_ @T athed (_ eIDd athei eITI2I - &) athy =@TI2 + &) athy (_ =@TI2 @) ath (is =@T _) at (lan a#t at (omi a#t @@ -1231,7 +1237,7 @@ .group b b b - _) bh b + _) bh (@ b _) b (L01Y b // allow _bl _br _) bj (A bj _) brz (e brz @@ -1289,6 +1295,7 @@ benevo b@nEv@ _) be (o beI be (qu bI2 + _) berlin %b3:lIn _) ber (s b3 be (see bI2 be (sie bI2 @@ -1594,7 +1601,7 @@ co (ntrol+ k@ conva (l k0nv@ _) co (nvenA k@ - _) co (nvi k@ + _) co (nvi k0# _) co (nvoy k0 _) co (nw k0 _) copy k0pI @@ -2200,6 +2207,7 @@ h) emorrh Em@r sph) em @m sph) em (e 'i:m + _s) ema (nti @ma &) em (y_ @m yst) em @m yst) em (i Em @@ -2378,6 +2386,7 @@ erred (_ '3:d er (_ 3: er (B_ 3: + _c) ere (br 3ri: &) ere (_ 3 ere (_ 3: &) er (s_ 3 @@ -2987,7 +2996,7 @@ &) ia (n i@ @) ia (nic I'a @) ia (nit I'a - @) ia (na i:'a + @) ia (na_ i:'a ia (ng_ ja _f) ia (nc I'0 _f) iance I'0nseI @@ -3467,6 +3476,7 @@ an) ism (_S3d Iz@m @iB) ism (_S3d Iz@m @) ism (_S3de Iz@m + et) ism (_S3 Iz@m is (o_ aIz is (or_ aIz iss (a_ 'Is @@ -3575,6 +3585,7 @@ _) ja (mai dZa# _) jere (C dZEr@ _) jes (ui dZEz + _) jiha (d dZI2hA: _) joa (n@ dZoU'a n) j (a_ j j (ü j @@ -4706,7 +4717,7 @@ per (fec p3 _) per (iC@@ p,Er _) perini pErIn'i: - per (iph p3r + _) per (iph p3r _) per (isc pEr _) per (ish pEr perme (a p3:mI @@ -4946,7 +4957,7 @@ _) re (i@P2 r,i: _) rei (c raI _) rei (l raI - _) rei (s raI + _) reis raIz _) re (iss r%i: _) rele (g rElI2 rele (nt rI2lE @@ -5845,6 +5856,7 @@ _) zs (Y z _) z (wY z + n) z (_ ts @) zales (_ z'A:l@s zei zaI zes (_ zI2z @@ -6051,6 +6063,7 @@ // ñ nj ñ _^_ES + _) ʻ (A ? // arabic ' ! _:Ekskl@meIS@n_: diff --git a/dictsource/hu_list b/dictsource/hu_list index fedebc09..fe8aa7ab 100755 --- a/dictsource/hu_list +++ b/dictsource/hu_list @@ -5421,6 +5421,12 @@ _ˇ lEfEle:n^i:l _¡ AlSo:indEks +// Alphabets +_ar 'AR2Ab +_cry ts'iR2ill +_he h'e:bER2 + + // Main Exceptions List //===================== diff --git a/dictsource/nl_list b/dictsource/nl_list index 72858e88..8842911f 100644 --- a/dictsource/nl_list +++ b/dictsource/nl_list @@ -703,6 +703,27 @@ zwanger $alt Vlaander $alt +// -s is not a suffix +as $alt +bres $alt +chaos $alt $1 +es $alt +fles $alt +fris $alt +glas $alt +mes $alt +moeras $alt +was $alt // gewas + +// -s, just remove 's' from the plural +charges $alt2 +curves $alt2 +droogtes $alt2 +groeves $alt2 +hoeves $alt2 +reserves $alt2 +marges $alt2 +marge mArZ@ // words where -age is [a:Q@] not French ['a:Z@] drage $alt @@ -1370,9 +1391,6 @@ meppel $alt moesel muz@l vondel $alt -// -s is not plural -chaos xa:Os - // all words on _aard are treated as suffix in the rules. diff --git a/dictsource/nl_rules b/dictsource/nl_rules index bd3d594d..c15ddde1 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -30,7 +30,7 @@ m) ach (in %a:S _) af (C@P2 'Af _) affich %AfiS - age (_N 'a:Z@ + age (_ 'a:Z@ ages (_S1 s age (_$w_alt a:Q@ aille (_ 'Aj@ @@ -45,6 +45,7 @@ @) ant (e_ 'Ant @) ant (en_ 'Ant @) ant (er_ 'Ant + @) ares (_ a:r'Es aris (_ 'a:rIs arissen (_ 'a:rIs@n a (tor_ 'a: @@ -243,8 +244,10 @@ @) ent (st_ 'Ent @) ent (ste_ 'Ent ag) ent 'Ent - @j) es (_ @s + @j) es (_S1 s + @z) es (_S1 s @) es (_S2qd 'Es // double the previous vowel + @) es (_$w_alt2S1 s // just remove 's' KAC) es (_S2e @s @) essen (_S5qd 'Es@n @) eres (_S4qd @r'Es @@ -400,6 +403,9 @@ _) in (C@P2 'In // _) in (gP2 'In io (nage iO + io (de_ i'o: + iodes (_ i'o:d@s + is (_ Is @) isch (_ =is @) ische (_ =is@ @) isme (_ 'Ism@ @@ -449,6 +455,7 @@ _) inn (@P2 'I // ?? inneren management ma:nIdZm@nt _) mee (@P3 m'e: menu (_ m@ny + _) mi (cro mi _) mi (s@ m%I _) mis (anC miz _) mis (commP3 m'Is @@ -526,6 +533,7 @@ _) inn (@P2 'I // ?? inneren _) openings (P8 'o:p@nINs _) op (era 'o:p _) op (tion Op + os (_ Os ou (che_ u ouch (en_ uS d) ou (blu u @@ -620,6 +628,7 @@ _) inn (@P2 'I // ?? inneren sj S @) sje (_ sj@ @) s (_S1 s + @) s (_$w_alt =s sc (oop sk sc (opi sk @@ -702,6 +711,7 @@ _) inn (@P2 'I // ?? inneren uw (_ yU _) uit (@P3 'Wyt + us (_ 8s u (sie_ 'y @) ute (_ 'yt uu (r_ 'y diff --git a/dictsource/pt_list b/dictsource/pt_list index d2a6ccfc..3f55eae9 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -41,6 +41,11 @@ _stk b'ax& _tld tS'iU ?1 _tld til +// alphabets +_ar 'a*aby +_cyr si*'ilikU +_he eb*'aIkU + // character names @@ -372,38 +377,38 @@ do $u $nounf da $u $nounf dos $u $nounf das $u $nounf -dum $u -duma $u -duns $u -dumas $u +dum $u $nounf +duma $u $nounf +duns $u $nounf +dumas $u $nounf em $u // in,on,at no nu $u $nounf na $u $nounf -num $u -numa $u -nuns $u -numas $u +num $u $nounf +numa $u $nounf +nuns $u $nounf +numas $u $nounf por $u $nounf // by,for,through pelo $u $nounf ?2 pela $u $nounf p'el& -ao $u +ao $u $nounf à ,a: à $atend $atstart $accent -aos $u -às ,a:s +aos $u $nounf +às ,a:s $nounf para $u // for,to pro $u $nounf -pra $u -pros $u -pras $u -prò $u -prà $u -pròs $u -pràs $u +pra $u $nounf +pros $u $nounf +pras $u $nounf +prò $u $nounf +prà $u $nounf +pròs $u $nounf +pràs $u $nounf com $u // with ?2 sem // without @@ -660,6 +665,7 @@ atrozes $alt austera $alt austero $alt autora $alt2 +avesso $alt2 axé aSE baqueta $alt2 beco $alt2 @@ -696,6 +702,8 @@ cateto $alt2 catorze $alt2 cebola $alt2 cefaleia $alt +cerca $alt +cerca $alt2 $noun cerco $alt $verb cesta $alt2 cesto $alt2 diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 7a1a327f..5a5a3600 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -361,6 +361,7 @@ _estend) e (L06_ e _vend) e (L06_ e respond) e (L06_ e // cor- _aborrec) e (L07_ e +_rejuvenec) e (L07_ e _adoec) e (L07_ e _amanhec) e (L07_ e _anoitec) e (L07_ e @@ -398,6 +399,7 @@ entend) e (L07_ e padec) e (L07_ e // com- parec) e (L07_ e // a- rea- com- desa- preend) e (L07_ e // sur- com- +_perec) e (L07_ e respond) e (L07_ e // cor- torc) e (L07_ e // con- venc) e (L07_ e // con- @@ -430,6 +432,7 @@ respond) e (L07_ e // cor- _alb) e (rguL02_ E _enx) e (rguL02_ E _bez) e (rrL03_ e + _rejuven) e (çL03_ e _inv) e (rtL03_ e _f) e (rvL03_ e _p) e (scL03_ E diff --git a/phsource/compile_report b/phsource/compile_report index 33fbd4ff..69fdc75a 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,5 +1,5 @@ -86 phoneme tables +87 phoneme tables new total base 109 109 consonants 10 118 @@ -53,6 +53,7 @@ consonants 10 118 no 28 134 is 42 141 vi 53 147 + vi-hue 8 147 zhy 41 138 zh 64 155 sw 9 110 @@ -235,11 +236,15 @@ dzh/xdz_pzd [J] base envelope/i_risefall [11] zh envelope/i_risefall2 [+2] rw envelope/p_214 [5] vi + [5] vi-hue [214] zh envelope/p_512 [6] vi + [4] vi-hue + [6] vi-hue [+] pa envelope/p_fall [2] vi [7] vi + [2] vi-hue [4] zhy [7] zhy [21] zh @@ -250,17 +255,23 @@ envelope/p_fall [2] vi [+] rw envelope/p_fallrise [4] vi envelope/p_level [1] vi + [1] vi-hue + [7] vi-hue [1] zhy [3] zhy [6] zhy [55] zh envelope/p_rise [3] vi + [3] vi-hue [2] zhy [5] zhy [44] zh [35] zh envelope/vi_5amp [5] vi + [5] vi-hue envelope/vi_6amp [6] vi + [2] vi-hue + [6] vi-hue g2/xg [gh] hi g/g [g] base [g-] en @@ -421,7 +432,7 @@ l/l_ [l] base [l/] fr l/l_@ [l/3] base [l/] fr -l/l@ [h6s] base +l/l@ [h6r] base [l#] base [l] fr [l/2] fr @@ -455,7 +466,7 @@ l/L2_oL [l/2] base l/L2_uL [l/2] base l/l_3 [l/] de l/l_4 [ll] sq -l/la [h6s] base +l/la [h6r] base [l#] base [l] fr [l/2] fr @@ -463,7 +474,7 @@ l/la [h6s] base [K] tn l/l_a [l/3] base [l/] fr -l/le [h6s] base +l/le [h6r] base [l#] base [l] fr [l/2] fr @@ -475,7 +486,7 @@ l/L_eL_af [&] af [&:] af l/l_front [L] sq l/l_front_ [l/4] sq -l/li [h6s] base +l/li [h6r] base [l#] base [l] fr [l/2] fr @@ -489,7 +500,7 @@ ll/ll [L] base ll/_ll [L] base l/l_long [l] base [l] fr -l/lo [h6s] base +l/lo [h6r] base [l#] base [l/2] fr [K] nso @@ -500,7 +511,7 @@ l^/l_rfx [l.] base [l;] lt [l] ru [l^] ru -l/lu [h6s] base +l/lu [h6r] base [l#] base [l] fr [l/2] fr @@ -1356,6 +1367,7 @@ vnasal/aa_n4 [A~] de [A~] fr [A~] ht vnasal/a#_n [&~] pt +vnasal/a#_n2 [&~] pt vnasal/a#u_n [&U~] pt [&U~] pt-pt [o#] vi @@ -1391,7 +1403,6 @@ vnasal/u_n [U~] hi vnasal/V_n [V~] hi vnasal/W_n [E~] fr [W~] fr - [&~] pt [E~] ht voc/bh [B] base voc/dh [D] base diff --git a/phsource/ph_english_us b/phsource/ph_english_us index 5b2b64cc..93d2454e 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -354,20 +354,17 @@ phoneme t vls alv stop voicingswitch d lengthmod 2 - -// IF prevPhW(isVowel) OR prevPhW(n) THEN - IF prevPhW(isVowel) THEN // test, don't reduce [t] after [n] - IF nextPhW(isVowel) AND nextPh(isUnstressed) THEN - IF next2Ph(n) AND next2Ph(notWordStart) THEN - ELSE - ChangePhoneme(t#) - ENDIF - ENDIF - ENDIF - Vowelin f1=0 f2=1700 -300 300 f3=-100 80 Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + IF nextPhW(isVowel) AND nextPh(isUnstressed) AND NOT next2PhW(n) THEN + IF prevPhW(isVowel) THEN + ChangePhoneme(t#) + ELIF prevPhW(n) THEN + WAV(ustop/t, 60) + ENDIF + ENDIF + IF nextPh(isPause2) THEN WAV(ustop/t_) ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN diff --git a/phsource/ph_pt_brazil b/phsource/ph_pt_brazil index e7f233db..c39d76e3 100644 --- a/phsource/ph_pt_brazil +++ b/phsource/ph_pt_brazil @@ -40,7 +40,7 @@ phoneme &~ ipa ɐU+0303 length 180 IF thisPh(isFinalVowel) THEN - FMT(vnasal/W_n) + FMT(vnasal/a#_n2) ELSE FMT(vnasal/a#_n) ENDIF diff --git a/phsource/phonemes b/phsource/phonemes index 2c050525..5f0f61e2 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1814,6 +1814,9 @@ include ph_icelandic phonemetable vi base include ph_vietnam +phonemetable vi-hue vi +include ph_vietnam_hue + phonemetable zhy base include ph_zh_yue diff --git a/phsource/vowel/&_2 b/phsource/vowel/&_2 index a6d61039c49fab7db51022f44b4da0e8ff8f1c97..6c62b459ca1bd829244c2d05eda37c8b48f26952 100644 GIT binary patch literal 6753 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 YtUew7l3CDSgqOjd*2A8*Lfef04N#Q1n*aa+ literal 6239 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 diff --git a/phsource/vowel/vowelchart.png b/phsource/vowel/vowelchart.png index f81d4859923501a7e4b04d9d01a9b2c5a1610ba6..180761a3b2f58e5cc07dc6ca293f50e19d798534 100644 GIT binary patch literal 74427 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 My2j*+v17o$0RAxL9RL6T literal 74081 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 diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 4e83fa7a..762f6e58 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -1390,6 +1390,24 @@ static int NextItem(int type) +static int NextItemMax(int max) +{//============================== +// Get a number, but restrict value to max + int value; + char msg[80]; + + value = NextItem(tNUMBER); + if(value > max) + { + sprintf(msg, "Value %d is greater than maximum %d", value, max); + error(msg, NULL); + value = max; + } + return(value); +} + + + static int NextItemBrackets(int type, int control) {//=============================================== // Expect a parameter inside parantheses @@ -2794,17 +2812,17 @@ int CompilePhoneme(int compile_phoneme) break; case i_PAUSE_BEFORE: - value = NextItem(tNUMBER); + value = NextItemMax(255); *prog_out++ = (i_PAUSE_BEFORE << 8) + value; break; case i_PAUSE_AFTER: - value = NextItem(tNUMBER); + value = NextItemMax(255); *prog_out++ = (i_PAUSE_AFTER << 8) + value; break; case i_SET_LENGTH: - value = NextItem(tNUMBER); + value = NextItemMax(511); if(after_if == 0) { phoneme_out->std_length = value/2; diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 880eda41..4ed621f6 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -2489,6 +2489,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c int ix; unsigned int digit_count=0; char *p; + ALPHABET *alphabet; int dict_flags0=0; MatchRecord match1; MatchRecord match2; @@ -2685,6 +2686,13 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c match1.points = 1; p += (wc_bytes-1); } + + if(((alphabet = AlphabetFromChar(letter)) != NULL) && (alphabet->language != 0) && (alphabet->offset != tr->letter_bits_offset)) + { + // switch to the nominated language for this alphabet + sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language)); + return(0); + } } } diff --git a/src/numbers.cpp b/src/numbers.cpp index de3e5e17..838fc145 100644 --- a/src/numbers.cpp +++ b/src/numbers.cpp @@ -591,15 +591,19 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) int letter; int len; int ix; - int save_option_phonemes; char *p2; char *pbuf; + ALPHABET *alphabet; + int language; + int phontab_1; char capital[20]; char ph_buf[80]; char ph_buf2[80]; + char ph_alphabet[80]; char hexbuf[6]; ph_buf[0] = 0; + ph_alphabet[0] = 0; capital[0] = 0; n_bytes = utf8_in(&letter,word); @@ -627,6 +631,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) return(0); } +#ifdef deleted if((ph_buf[0] == 0) && (tr->translator_name != L('e','n'))) { // speak as English, check whether there is a translation for this character @@ -643,6 +648,67 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) return(0); } } +#endif + + alphabet = AlphabetFromChar(letter); + if(alphabet != current_alphabet) + { + current_alphabet = alphabet; + if((alphabet != NULL) && !(alphabet->flags & AL_DONT_NAME)) + { + if(Lookup(translator, alphabet->name, ph_alphabet) == 0) // the original language for the current voice + { + // Can't find the local name for this alphabet, use the English name + phontab_1 = tr->phoneme_tab_ix; + ph_alphabet[2] = SetTranslator2("en"); // overwrites previous contents of translator2 + if(Lookup(translator2, alphabet->name, &ph_alphabet[3]) != 0) + { + ph_alphabet[0] = phonPAUSE; + ph_alphabet[1] = phonSWITCH; + len = strlen(&ph_alphabet[3]) + 3; + ph_alphabet[len] = phonSWITCH; // switch back + ph_alphabet[len+1] = phontab_1; + ph_alphabet[len+2] = 0; + } + } + } + } + + +// caution: SetWordStress() etc don't expect phonSWITCH + phoneme table number + if(ph_buf[0] == 0) + { + if((alphabet != NULL) && (alphabet->language != 0) && !(alphabet->flags & AL_NOT_LETTERS)) + language = alphabet->language; + else + language = L('e','n'); + + if(language != tr->translator_name) + { + // speak in the language for this alphabet (or English) + ph_buf[2] = SetTranslator2(WordToString2(language)); + LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1); + + if(ph_buf[3] == phonSWITCH) + { + // another level of language change + ph_buf[2] = SetTranslator2(&ph_buf[4]); + LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1); + } + + SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table + + if(ph_buf[3] != 0) + { + ph_buf[0] = phonPAUSE; + ph_buf[1] = phonSWITCH; + len = strlen(&ph_buf[3]) + 3; + ph_buf[len] = phonSWITCH; // switch back + ph_buf[len+1] = tr->phoneme_tab_ix; + ph_buf[len+2] = 0; + } + } + } if(ph_buf[0] == 0) { @@ -695,10 +761,11 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) } len = strlen(phonemes); + if(tr->langopts.accents & 2) - sprintf(ph_buf2,"%c%s%s",0xff,ph_buf,capital); + sprintf(ph_buf2,"%c%s%s%s",0xff,ph_alphabet,ph_buf,capital); else - sprintf(ph_buf2,"%c%s%s",0xff,capital,ph_buf); // the 0xff marker will be removed or replaced in SetSpellingStress() + sprintf(ph_buf2,"%c%s%s%s",0xff,ph_alphabet,capital,ph_buf); // the 0xff marker will be removed or replaced in SetSpellingStress() if((len + strlen(ph_buf2)) < N_WORD_PHONEMES) { strcpy(&phonemes[len],ph_buf2); @@ -714,23 +781,25 @@ void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars) int ix; unsigned int c; int n_stress=0; + int prev = 0; int count; unsigned char buf[N_WORD_PHONEMES]; for(ix=0; (c = phonemes[ix]) != 0; ix++) { - if(c == phonSTRESS_P) + if((c == phonSTRESS_P) && (prev != phonSWITCH)) { n_stress++; } - buf[ix] = c; + buf[ix] = prev = c; } buf[ix] = 0; count = 0; + prev = 0; for(ix=0; (c = buf[ix]) != 0; ix++) { - if((c == phonSTRESS_P) && (n_chars > 1)) + if((c == phonSTRESS_P) && (n_chars > 1) && (prev != phonSWITCH)) { count++; @@ -761,10 +830,8 @@ void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars) c = phonPAUSE_NOLINK; // pause following a primary stress else c = phonPAUSE_VSHORT; -// else -// continue; // remove marker } - *phonemes++ = c; + *phonemes++ = prev = c; } if(control >= 2) *phonemes++ = phonPAUSE_NOLINK; diff --git a/src/readclause.cpp b/src/readclause.cpp index af2b294b..c6bc34e2 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005 to 2011 by Jonathan Duddington * + * Copyright (C) 2005 to 2013 by Jonathan Duddington * * email: jonsd@users.sourceforge.net * * * * This program is free software; you can redistribute it and/or modify * @@ -58,7 +58,7 @@ static const char *ungot_word = NULL; static int end_of_input; static int ignore_text=0; // set during ... to ignore text which has been replaced by an alias -static int audio_text=0; // set during +static int audio_text=0; // set during static int clear_skipping_text = 0; // next clause should clear the skipping_text flag int count_characters = 0; static int sayas_mode; @@ -110,7 +110,7 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';', 0xff1a, // fullwidth colon 0xff1b, // fullwidth semicolon 0xff1f, // fullwidth question mark - + 0}; @@ -448,7 +448,7 @@ static int GetC_get(void) end_of_input = 1; return(0); } - + if(!end_of_input) { if(option_multibyte == espeakCHARS_16BIT) @@ -563,8 +563,8 @@ static void UngetC(int c) } -static const char *WordToString2(unsigned int word) -{//================================================ +const char *WordToString2(unsigned int word) +{//============================================ // Convert a language mnemonic word into a string int ix; static char buf[5]; @@ -961,7 +961,7 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output if(attributes & CLAUSE_BIT_SENTENCE) return(attributes); - + return(short_pause); } // end of AnnouncePunctuation @@ -1078,7 +1078,7 @@ static const char *VoiceFromStack() } p += (strlen(p) + 1); } - + if(voice_name_specified == 0) voice_name[0] = 0; // forget a previous voice name if a language is specified } @@ -1248,7 +1248,7 @@ static wchar_t *GetSsmlAttribute(wchar_t *pw, const char *name) static int attrcmp(const wchar_t *string1, const char *string2) {//============================================================ int ix; - + if(string1 == NULL) return(1); @@ -1334,7 +1334,7 @@ static int attr_prosody_value(int param_type, const wchar_t *pw, int *value_out) } if(*pw == '-') { - pw++; + pw++; sign = -1; } value = (double)wcstod(pw,&tail); @@ -1485,10 +1485,10 @@ static int GetVoiceAttributes(wchar_t *pw, int tag_type) age = GetSsmlAttribute(pw,"age"); gender = GetSsmlAttribute(pw,"gender"); } - + if((tag_type != SSML_VOICE) && (lang==NULL)) return(0); // or

without language spec, nothing to do - + ssml_sp = &ssml_stack[n_ssml_stack++]; attrcopy_utf8(ssml_sp->language,lang,sizeof(ssml_sp->language)); @@ -1592,7 +1592,7 @@ static int ReplaceKeyName(char *outbuf, int index, int &outix) {"underscore ", 0xe05f}, {"double-quote ", '"'}, {NULL, 0}}; - + int ix; int letter; char *p; @@ -1624,7 +1624,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb int voice_change_flag; wchar_t *px; wchar_t *attr1; - wchar_t *attr2; + wchar_t *attr2; wchar_t *attr3; int terminator; char *uri; @@ -1688,7 +1688,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb tag_name[ix] = 0; px = &xml_buf[ix]; // the tag's attributes - + if(tag_name[0] == '/') { // closing tag @@ -2268,7 +2268,7 @@ f_input = f_in; // for GetC etc } xml_buf[n_xml_buf] = 0; c2 = ' '; - + self_closing = 0; if(xml_buf[n_xml_buf-1] == '/') { @@ -2276,9 +2276,9 @@ f_input = f_in; // for GetC etc xml_buf[n_xml_buf-1] = ' '; self_closing = 1; } - + terminator = ProcessSsmlTag(xml_buf,buf,ix,n_buf,self_closing); - + if(terminator != 0) { if(end_clause_after_tag) @@ -2286,7 +2286,7 @@ f_input = f_in; // for GetC etc buf[ix] = ' '; buf[ix++] = 0; - + if(terminator & CLAUSE_BIT_VOICE) { strcpy(voice_change, current_voice_id); @@ -2397,7 +2397,7 @@ f_input = f_in; // for GetC etc if(iswspace(c1)) { char *p_word; - + if(tr->translator_name == 0x6a626f) { // language jbo : lojban @@ -2514,7 +2514,7 @@ if(option_ssml) parag=1; // Because of an xml tag, we are waiting for the // next non-blank character to decide whether to end the clause // i.e. is dot followed by an upper-case letter? - + if(!iswspace(c1)) { if(!IsAlpha(c1) || !iswlower(c1)) @@ -2548,7 +2548,7 @@ if(option_ssml) parag=1; if((punct = lookupwchar(punct_chars,c1)) != 0) { punct_data = punct_attributes[punct]; - + if(punct_data & PUNCT_IN_WORD) { // Armenian punctuation inside a word @@ -2579,7 +2579,7 @@ if(option_ssml) parag=1; announced_punctuation = c1; } } - + if((punct_data & PUNCT_SAY_NAME) && (announced_punctuation == 0)) { // used for elipsis (and 3 dots) if a pronunciation for elipsis is given in *_list @@ -2626,7 +2626,7 @@ if(option_ssml) parag=1; if(c1 == '.') { - if((tr->langopts.numbers & NUM_ORDINAL_DOT) && + if((tr->langopts.numbers & NUM_ORDINAL_DOT) && (iswdigit(cprev) || (IsRomanU(cprev) && (IsRomanU(cprev2) || iswspace(cprev2))))) // lang=hu { // dot after a number indicates an ordinal number @@ -2643,7 +2643,7 @@ if(option_ssml) parag=1; else if(c_next == '\'') { - is_end_clause = 0; // eg. u.s.a.'s + is_end_clause = 0; // eg. u.s.a.'s } if(iswlower(c_next)) { diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 245291b6..eed59bf4 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.46.37 20.Feb.13"; +const char *version_string = "1.46.38 27.Feb.13"; const int version_phdata = 0x014636; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 4ff39120..db1766b8 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -48,6 +48,7 @@ #define OFFSET_GREEK 0x380 #define OFFSET_CYRILLIC 0x420 #define OFFSET_ARMENIAN 0x530 +#define OFFSET_HEBREW 0x590 #define OFFSET_ARABIC 0x600 #define OFFSET_THAANA 0x780 // Divehi/Maldives #define OFFSET_DEVANAGARI 0x900 @@ -60,12 +61,61 @@ #define OFFSET_KANNADA 0xc80 #define OFFSET_MALAYALAM 0xd00 #define OFFSET_SINHALA 0x0d80 +#define OFFSET_THAI 0x0e00 +#define OFFSET_LAO 0x0e80 #define OFFSET_TIBET 0x0f00 -#define OFFSET_GEORGIAN 0x1080 +#define OFFSET_MYANMAR 0x1000 +#define OFFSET_GEORGIAN 0x10a0 #define OFFSET_KOREAN 0x1100 #define OFFSET_ETHIOPIC 0x1200 +ALPHABET alphabets [] = { + {"_el", OFFSET_GREEK, 0x380, 0x3ff, L('e','l'), AL_DONT_NAME | AL_NOT_LETTERS}, + {"_cyr", OFFSET_CYRILLIC, 0x400, 0x52f, 0, 0}, + {"_hy", OFFSET_ARMENIAN, 0x530, 0x58f, L('h','y'), 0}, + {"_he", OFFSET_HEBREW, 0x590, 0x5ff, 0, 0}, + {"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0}, + {"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0}, + {"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), 0}, + {"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0}, + {"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, 0, 0}, + {"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0}, + {"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0}, + {"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), 0}, + {"_te", OFFSET_TELUGU, 0xc00, 0xc7f, 0, 0}, + {"_kn", OFFSET_KANNADA, 0xc80, 0xcff, L('k','n'), 0}, + {"_ml", OFFSET_MALAYALAM,0xd00, 0xd7f, L('m','l'), 0}, + {"_si", OFFSET_SINHALA, 0xd80, 0xdff, 0, 0}, + {"_th", OFFSET_THAI, 0xe00, 0xe7f, 0, 0}, + {"_lo", OFFSET_LAO, 0xe80, 0xeff, 0, 0}, + {"_ti", OFFSET_TIBET, 0xf00, 0xfff, 0, 0}, + {"_my", OFFSET_MYANMAR, 0x1000,0x109f, 0, 0}, + {"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), 0}, + {"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0}, + {"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0}, + {NULL, 0, 0, 0, 0, 0} +}; + + +ALPHABET *AlphabetFromChar(int c) +{//=============================== + // Find the alphabet from a character. + ALPHABET *alphabet = alphabets; + + while(alphabet->name != NULL) + { + if((c >= alphabet->range_min) && (c <= alphabet->range_max)) + { + return(alphabet); + } + alphabet++; + } + return(NULL); +} + + + static void Translator_Russian(Translator *tr); @@ -93,7 +143,7 @@ static void SetLetterBits(Translator *tr, int group, const char *string) {//===================================================================== int bits; unsigned char c; - + bits = (1L << group); while((c = *string++) != 0) tr->letter_bits[c] |= bits; @@ -242,7 +292,7 @@ static const char transpose_map_latin[] = { // common letter pairs, encode these as a single byte // 2 bytes, using the transposed character codes -static const short pairs_ru[] = { +static const short pairs_ru[] = { 0x010c, // ла 21052 0x23 0x010e, // на 18400 0x0113, // та 14254 @@ -279,7 +329,7 @@ static const short pairs_ru[] = { -static const unsigned int replace_cyrillic_latin[] = +static const unsigned int replace_cyrillic_latin[] = {0x430,'a', 0x431,'b', 0x446,'c', @@ -413,7 +463,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.param[LOPT_DIERESES] = 1; tr->langopts.param[LOPT_PREFIXES] = 1; SetLetterVowel(tr,'y'); // add 'y' to vowels - + tr->langopts.numbers = NUM_SWAP_TENS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_ROMAN | NUM_1900; tr->langopts.accents = 1; } @@ -496,7 +546,7 @@ Translator *SelectTranslator(const char *name) // tr->langopts.intonation_group = 4; // 'diminished' is an unstressed final syllable - tr->langopts.stress_flags = 0x6 | 0x10; + tr->langopts.stress_flags = 0x6 | 0x10; tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd2 = 2; tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels @@ -532,7 +582,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.param[LOPT_PREFIXES] = 1; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x100; // devoice at end of word tr->langopts.param[LOPT_LONG_VOWEL_THRESHOLD] = 175/2; - + tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN; // tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN; SetLetterVowel(tr,'y'); @@ -549,7 +599,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable SetLetterBitsRange(tr,LETTERGP_B,0x26,0x30); // vowel signs, and virama - tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 + tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 tr->langopts.numbers = 1; } break; @@ -578,7 +628,7 @@ Translator *SelectTranslator(const char *name) // character codes offset by 0x380 static const char el_vowels[] = {0x10,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x35,0x37,0x39,0x3f,0x45,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0}; static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0}; // ε η ι υ έ ή ί ύ - static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0}; // θ κ ξ π ς σ τ φ χ + static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0}; // θ κ ξ π ς σ τ φ χ static const char el_consonants[]={0x32,0x33,0x34,0x36,0x38,0x3a,0x3b,0x3c,0x3d,0x3e,0x40,0x41,0x42,0x43,0x44,0x46,0x47,0x48,0}; static const wchar_t el_char_apostrophe[] = {0x3c3,0}; // σ @@ -602,7 +652,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.unstressed_wd2 = 2; tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels - tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA; + tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA; tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL; // variant form of numbers before thousands if(name2 == L_grc) @@ -618,7 +668,7 @@ Translator *SelectTranslator(const char *name) static const short stress_lengths_eo[8] = {150, 150, 230, 180, 0, 0, 300, 320}; static const unsigned char stress_amps_eo[] = {16,14, 20,20, 20,22, 22,21 }; static const wchar_t eo_char_apostrophe[2] = {'l',0}; - + SetupTranslator(tr,stress_lengths_eo,stress_amps_eo); tr->charset_a0 = charsets[3]; // ISO-8859-3 @@ -627,7 +677,7 @@ Translator *SelectTranslator(const char *name) // tr->langopts.word_gap = 1; tr->langopts.vowel_pause = 2; tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x6 | 0x10; + tr->langopts.stress_flags = 0x6 | 0x10; // tr->langopts.unstressed_wd1 = 3; tr->langopts.unstressed_wd2 = 2; @@ -651,13 +701,13 @@ Translator *SelectTranslator(const char *name) // stress last syllable if it doesn't end in vowel or "s" or "n" // 'diminished' is an unstressed final syllable - tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; + tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; tr->langopts.unstressed_wd1 = 0; tr->langopts.unstressed_wd2 = 2; tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_AFTER; - tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL; + tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL; if(name2 == L('c','a')) { @@ -667,7 +717,7 @@ Translator *SelectTranslator(const char *name) else if(name2 == L('a','n')) { - tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; + tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; } else if(name2 == L_pap) @@ -805,7 +855,7 @@ Translator *SelectTranslator(const char *name) tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = 0x10; + tr->langopts.stress_flags = 0x10; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; tr->langopts.max_initial_consonants = 5; tr->langopts.spelling_stress = 1; @@ -884,7 +934,7 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_id,stress_amps_id); tr->langopts.stress_rule = STRESSPOSN_2R; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_ROMAN; - tr->langopts.stress_flags = 0x6 | 0x10; + tr->langopts.stress_flags = 0x6 | 0x10; tr->langopts.accents = 2; // "capital" after letter name } break; @@ -919,7 +969,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x10 | 0x20000; + tr->langopts.stress_flags = 0x10 | 0x20000; tr->langopts.vowel_pause = 1; tr->langopts.unstressed_wd1 = 2; tr->langopts.unstressed_wd2 = 2; @@ -974,7 +1024,7 @@ SetLengthMods(tr,3); // all equal { static const unsigned char stress_amps_tr[8] = {18,16, 20,21, 20,21, 21,20 }; static const short stress_lengths_tr[8] = {190,180, 230,230, 0,0, 250,250}; - + tr->letter_bits_offset = OFFSET_CYRILLIC; memset(tr->letter_bits,0,sizeof(tr->letter_bits)); SetLetterBits(tr,LETTERGP_A,(char *)ru_vowels); @@ -1173,9 +1223,9 @@ SetLengthMods(tr,3); // all equal tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable - tr->langopts.stress_flags = 0x6 | 0x10 | 0x2000 | 0x20000; + tr->langopts.stress_flags = 0x6 | 0x10 | 0x2000 | 0x20000; tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN; - tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; + tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; SetLetterVowel(tr,'y'); ResetLetterBits(tr,0x2); SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y @@ -1223,7 +1273,7 @@ SetLengthMods(tr,3); // all equal tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->langopts.stress_rule = STRESSPOSN_1L; - tr->langopts.stress_flags = 0x16; + tr->langopts.stress_flags = 0x16; tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3; tr->langopts.max_initial_consonants = 5; tr->langopts.spelling_stress = 1; @@ -1259,11 +1309,11 @@ SetLengthMods(tr,3); // all equal memset(tr->letter_bits,0,sizeof(tr->letter_bits)); SetLetterBitsRange(tr,LETTERGP_A,0x05,0x16); // vowel letters SetLetterBitsRange(tr,LETTERGP_A,0x4a,0x73); // + vowel signs, and virama - + SetLetterBitsRange(tr,LETTERGP_B,0x4a,0x73); // vowel signs, and virama - + SetLetterBitsRange(tr,LETTERGP_C,0x1a,0x46); // the main consonant range - + tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.suffix_add_e = tr->letter_bits_offset + 0x4a; //virama tr->langopts.numbers = NUM_OMIT_1_THOUSAND | NUM_SINGLE_STRESS_L | NUM_DFRACTION_7; @@ -1292,7 +1342,7 @@ SetLengthMods(tr,3); // all equal SetupTranslator(tr,stress_lengths_sq,stress_amps_sq); tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x16 + 0x100; + tr->langopts.stress_flags = 0x16 + 0x100; SetLetterVowel(tr,'y'); tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4; tr->langopts.accents = 2; // "capital" after letter name @@ -1324,7 +1374,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.vowel_pause = 1; tr->langopts.stress_rule = STRESSPOSN_2R; - tr->langopts.stress_flags = 0x6 | 0x10; + tr->langopts.stress_flags = 0x6 | 0x10; tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED; tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 @@ -1343,7 +1393,7 @@ SetLengthMods(tr,3); // all equal tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable tr->langopts.spelling_stress = 1; - tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 + tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000 if(name2 == L('t','a')) { @@ -1604,7 +1654,7 @@ PH('V','#'),PH('I','3'),PH('I','2'),PH('E','3')}; /*2*/ {'o', '8', '8', 'o', '8', '8'}, // O /*3*/ {'i', 'I', 'i', 'a', 'I', 'a'}, // I Uses 3,4,5 columns. /*4*/ {'i', PH('I','#'), 'i', 'i', PH('I','#'), 'i'}, // I# - /*5*/ {'E', PH('E','#'), 'E', 'e', PH('E','#'), 'e'}, // E# + /*5*/ {'E', PH('E','#'), 'E', 'e', PH('E','#'), 'e'}, // E# /*6*/ {'E', PH('E','2'), 'E', 'e', PH('E','2'), 'e'}, // E2 Uses 3,4,5 columns. /*7*/ {PH('j','a'), 'V', PH('j','a'), 'A', 'V', 'A'}, // V# /*8*/ {PH('j','a'), 'I', PH('j','a'), 'e', 'I', 'e'}, // I3 Uses 3,4,5 columns. diff --git a/src/translate.cpp b/src/translate.cpp index a363ad6e..233a1c40 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -77,6 +77,7 @@ static int prev_clause_pause=0; static int max_clause_pause = 0; static int any_stressed_words; int pre_pause; +ALPHABET *current_alphabet; // these were previously in translator class @@ -874,6 +875,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt unpron_phonemes[0] = 0; prefix_phonemes[0] = 0; end_phonemes[0] = 0; + current_alphabet = NULL; if(tr->data_dictlist == NULL) { @@ -902,6 +904,12 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt spell_word = 0; + if((word_length == 1) && (wflags & FLAG_TRANSLATOR2)) + { + // retranslating a 1-character word using a different language, say its name + spell_word = 1; + } + if(option_sayas == SAYAS_KEY) { if(word_length == 1) @@ -1061,6 +1069,8 @@ if((wmark > 0) && (wmark < 8)) return(FLAG_SPELLWORD); // a mixture of languages, retranslate as individual letters, separated by spaces return(0); } + strcpy(word_phonemes, phonemes); + return(0); // ?? } else if(found == 0) @@ -1098,7 +1108,7 @@ if((wmark > 0) && (wmark < 8)) if(strcmp(&unpron_phonemes[1],"en")==0) return(FLAG_SPELLWORD); // _^_en must have been set in TranslateLetter(), not *_rules return(0); - } + } #ifdef deleted p = &wordx[word_length-3]; // this looks wrong. Doesn't consider multi-byte chars. @@ -1158,6 +1168,8 @@ if(end_type & SUFX_UNPRON) { return(0); } + strcpy(word_phonemes, phonemes); + return(0); } } @@ -1713,6 +1725,7 @@ int SetTranslator2(const char *new_language) new_phoneme_tab = -1; translator2_language[0] = 0; } + translator2->phoneme_tab_ix = new_phoneme_tab; } } return(new_phoneme_tab); @@ -1953,12 +1966,14 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa if(switch_phonemes >= 0) { // re-translate the word using the new translator + wtab[0].flags |= FLAG_TRANSLATOR2; flags = TranslateWord(translator2, word, next_pause, wtab); // strcpy((char *)p,translator2->word_phonemes); if(p[0] == phonSWITCH) { // the second translator doesn't want to process this word - switch_phonemes = -1; +// switch_phonemes = -1; +return(FLAG_SPELLWORD); } } if(switch_phonemes < 0) @@ -2050,8 +2065,16 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa if(switch_phonemes >= 0) { // this word uses a different phoneme table - SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); - ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number + if(ph_list2[n_ph_list2-1].phcode == phonSWITCH) + { + //previous phoneme is also a phonSWITCH, just change its phoneme table number + n_ph_list2--; + } + else + { + SetPlist2(&ph_list2[n_ph_list2],phonSWITCH); + } + ph_list2[n_ph_list2++].tone_ph = switch_phonemes; // temporary phoneme table number } // remove initial pause from a word if it follows a hyphen @@ -2078,7 +2101,9 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa ph_list2[n_ph_list2].phcode = ph_code; ph_list2[n_ph_list2].sourceix = 0; ph_list2[n_ph_list2].synthflags = embedded_flag; - ph_list2[n_ph_list2++].tone_ph = *p++; + ph_list2[n_ph_list2++].tone_ph = *p; + SelectPhonemeTable(*p); + p++; } else if(ph->type == phSTRESS) diff --git a/src/translate.h b/src/translate.h index f39e2534..9248d09e 100644 --- a/src/translate.h +++ b/src/translate.h @@ -111,6 +111,7 @@ #define FLAG_INDIVIDUAL_DIGITS 0x80000 // speak number as individual digits #define FLAG_DELETE_WORD 0x100000 // don't speak this word, it has been spoken as part of the previous word #define FLAG_CHAR_REPLACED 0x200000 // characters have been replaced by .replace in the *_rules +#define FLAG_TRANSLATOR2 0x400000 // retranslating using a different language #define FLAG_SUFFIX_VOWEL 0x08000000 // remember an initial vowel from the suffix #define FLAG_NO_TRACE 0x10000000 // passed to TranslateRules() to suppress dictionary lookup printout @@ -258,6 +259,21 @@ extern PARAM_STACK param_stack[]; extern const int param_defaults[N_SPEECH_PARAM]; +typedef struct { + const char *name; + int offset; + unsigned short range_min, range_max; + int language; + int flags; +} ALPHABET; + +extern ALPHABET alphabets[]; +extern ALPHABET *current_alphabet; +// alphabet flags +#define AL_DONT_NAME 0x01 // don't speak the alphabet name +#define AL_NOT_LETTERS 0x02 // don't use the language for speaking letters +#define AL_NOT_WORDS 0x04 // don't use the language to speak words + #define N_LOPTS 21 #define LOPT_DIERESES 1 @@ -664,6 +680,8 @@ int IsAlpha(unsigned int c); int isspace2(unsigned int c); int towlower2(unsigned int c); void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); +const char *WordToString2(unsigned int word); +ALPHABET *AlphabetFromChar(int c); Translator *SelectTranslator(const char *name); int SetTranslator2(const char *name);