From 93cc76768c163232f59a15ac0655f4cbcf225e54 Mon Sep 17 00:00:00 2001 From: jonsd Date: Tue, 23 Apr 2013 20:22:56 +0000 Subject: [PATCH] [1.47.07a] Use internal data for iswalpha(), towlower() for characters up to U+024F. Language changes: es, nl, pt, tr, vi. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@346 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/dict_phonemes | 30 +- dictsource/en_list | 69 ++-- dictsource/en_rules | 14 +- dictsource/es_rules | 3 + dictsource/nl_list | 12 +- dictsource/nl_rules | 52 ++- dictsource/pt_list | 110 ++++-- dictsource/pt_rules | 39 +- dictsource/tr_list | 32 +- dictsource/tr_rules | 60 +-- dictsource/vi_rules | 677 ++++++++++++++++++++------------- espeak-data/voices/asia/ko | 6 + espeak-data/voices/asia/ms | 17 + espeak-data/voices/asia/vi-sgn | 12 + phsource/compile_report | 53 ++- phsource/ph_spanish | 31 +- phsource/ph_turkish | 54 ++- phsource/ph_vietnam | 130 ++++--- phsource/ph_vietnam_hue | 47 ++- phsource/phonemes | 3 + phsource/ustop/t_hi.wav | Bin 1878 -> 1464 bytes phsource/vdiph/ooi | Bin 9803 -> 9803 bytes phsource/vdiph/ooi_2 | Bin 53881 -> 53881 bytes phsource/vdiph/ooi_3 | Bin 26275 -> 26275 bytes phsource/vdiph/ooi_4 | Bin 8701 -> 9475 bytes phsource/vowel/a_4 | Bin 1627 -> 1627 bytes phsource/vowel/u#_5 | Bin 6240 -> 6756 bytes phsource/vowel/u#_7 | Bin 5634 -> 5634 bytes src/dictionary.cpp | 8 +- src/extras.cpp | 72 +++- src/menus.cpp | 2 +- src/readclause.cpp | 168 +++++--- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 1 + src/translate.cpp | 7 +- src/translate.h | 1 + src/voices.cpp | 2 +- 37 files changed, 1138 insertions(+), 576 deletions(-) create mode 100755 espeak-data/voices/asia/ko create mode 100755 espeak-data/voices/asia/ms create mode 100755 espeak-data/voices/asia/vi-sgn diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 98bf40c6..82f5339d 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -137,7 +137,7 @@ p Q r R s s; t T ts v x z -Dictionary en_dict 2013-04-18 +Dictionary en_dict 2013-04-23 0 0# 3 3: @ @- @2 @5 @L a a# A: A@ aa aI aI3 @@ -166,7 +166,7 @@ s S t T tS ts v w x z Z -Dictionary es_dict 2013-03-29 +Dictionary es_dict 2013-04-22 @ a aI aU e E eI eU i o O oI u @@ -500,7 +500,7 @@ r r. s S s. t t# t. t.# v w x z -Dictionary nl_dict 2013-04-12 +Dictionary nl_dict 2013-04-23 8 @ @- a A a: A~ e E e# E2 e: EI eU i I @@ -562,7 +562,7 @@ S s; S; t t; tS ts tS; ts; v w x z Z Z; -Dictionary pt_dict 2013-04-18 +Dictionary pt_dict 2013-04-23 & &/ &U~ &~ @ @- a A aI aU e E eI EI eU EU @@ -701,15 +701,15 @@ s s. S; t t# t. t.# tS v v# w z -Dictionary tr_dict 2011-09-16 +Dictionary tr_dict 2013-04-20 @ a e E i I o O u U W y Y * : b c d dZ f g -G h j J k l m n -p Q r R s S t tS -v w z Z +G h j J k l L m +n p Q r R s S t +tS v w z Z Dictionary ur_dict 2013-03-28 @@ -726,18 +726,18 @@ s S s. t T t# t. t.# v w x z Z z. -Dictionary vi_dict 2013-03-16 +Dictionary vi_dict 2013-04-21 -@ @: @:I @:U @I @U a a: -a:I a:U aI aU e E eU EU -i i@ iE iU o O o# O# -o& o@ OI oI u u@ uI y -y@ yI +@ @- @: @:I @:U @I @U a +a: a:I a:U aI aU e E eU +EU i i@ iE iU o O o# +O# o& O- o@ OI oI Oi u +u- u@ uI y y@ yI b c cr d D f g h j J J^ k kh l m n N n^ p Q s s. t t[ -v w x z Z z. +tS tS; v w x z Z z. Dictionary zh_dict 2013-01-25 diff --git a/dictsource/en_list b/dictsource/en_list index e93be7e8..88d26775 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -17,7 +17,7 @@ // ?8 Use full vowel, not schwa in some word endings // $alt1 use strong ending (-an, -table, -inal, -ier) -// $alt2 use weak ending (ate, ery, ess, ile, men) +// $alt2 use weak ending (ard, ate, ery, ess, ile, men) // $alt3 use weak first vowel, a->[a#], e->[@], o->[0#] // $alt4 separate 'h', not 'th' // $alt6 'to' @@ -285,42 +285,42 @@ _ja dZ'ap@ni:z _zh tS'aIni:z // Cyrillic letters -а a -б bE -в vE -г gE -д dE -е jE -ё jo -ж ZE -з zE -и I +а a: +б bE: +в vE: +г gE: +д dE: +е jE: +ё jo: +ж ZE: +з zE: +и I: й ,Ik@-*'atkOji -к ka +к ka: л El/1 м Em н En -о o -п pE +о o: +п pE: р Er с Es -т tE -у u +т tE: +у u|: ф Ef -х xa -ц tsE -ч tSE -ш Sa -щ StSa +х xa: +ц tsE: +ч tSE: +ш Sa: +щ StSa: ъ jEr ы j'Eru ь j'eri -э E -ю ju -я ja -ћ tS;E -ђ djE -ќ kjE +э E: +ю ju|: +я ja: +ћ tS;E: +ђ djE: +ќ kjE: // Arabic letters @@ -508,7 +508,7 @@ _3o T'3: _5o f'If _20o tw'Enti@ _30o T'3:ti@ -?3 _30o T'IRti@ +?5 _30o T'IRti@ _40o f'o@ti@ _50o f'Ifti@ _60o s'Iksti@ @@ -697,6 +697,7 @@ adieu a#dju: adieus a#dju:z adieux a#dju:z adios aDj'o:s +adjective $1 admirable adm@r@b@L admirably adm@r@bli admonition adm@n'IS@n @@ -807,7 +808,7 @@ antibody $1 antichrist $1 anticline $1 antidote $1 -antifreze $1 +antifreeze $1 antigen $1 antihero $1 antilog $1 @@ -1274,6 +1275,7 @@ corral k@r'al cosmos k0zm0s ?3 cosmos k0zmoUs cougar ku:g3 +counteract $3 countered kaUnt3d (coup de grâce) ku:d@||gr'A: coupon ku:p0n @@ -1546,6 +1548,7 @@ eyrie i@ri facade f@sA:d façade f@sA:d facetious $alt3 +faculty fak@Lt2i faeces fi:si:z fahrenheit far@nhaIt fairest fe@r@st @@ -1718,6 +1721,7 @@ hello h@loU henceforth hEnsfo@T ?3 herb 3:b hercules h3:kjUli:z +heredity h3rEdI2ti ?3 hereford h3:f3d heretical hI2rEtI2k@L hereto hi@3'tu: @@ -3182,6 +3186,7 @@ Belgrade $2 Belize bEl'i:z Bengal b,Eng'O:l Benin bEnIn +Berkeley b3:kli Bhutan bu:t'an Bideford bIdIf@d Bogota b0g@t'A: @@ -3218,6 +3223,7 @@ Cruz kru:z Cyprus saIpr@s Dahomey $alt3 Dallas dal@s +Dagestan dA:gIst'A:n Damascus $alt3 Dakota $alt3 Danish deInIS @@ -3247,6 +3253,7 @@ Gomera goUm'e@r@ Gurmukhi gU@mUki Harare ha#rA:ri Hanoi han'OI +Harvard $alt2 Havana ha#van@ Hawaii h@w'aIi: Hawai'i h@w'aIi: @@ -3283,6 +3290,8 @@ Korean kOr'i:@n ?3 Korean k3r'i:@n Kosovo k0s@voU Kuala kwA:la# +Kyrgyz k3:rgIz +Kyrgyzstan k3:rgIst'A:n Lagos leIg0s Lahore $alt3 Lebanon lEb@n0n @@ -3590,6 +3599,7 @@ Giordino dZO@d'i:noU Giovanni dZ@v'A:ni Graeme greI@m Graham greI@m +Gruffydd grIfIT Guido gwi:doU Guinevere gwInI#vi@3 Hadrian heIdri:@n @@ -3911,6 +3921,7 @@ at at $nounf $only $u (at once) a#t_w0ns ?6 (at once) a#t_wVns (at will) a#t_w'Il +(at & t) 'eIt2i:@nt'i: with wID $u (with the) w%IDD@2 $nounf diff --git a/dictsource/en_rules b/dictsource/en_rules index 44452bfe..9fcd8241 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -789,6 +789,7 @@ _) ani anI _) ani (on anaI &) ani (_ 'A:nI + @st) ani (_S1 =i an (ia 'eIn ania (c_ 'eInIa ania (c a#naI@ @@ -918,6 +919,7 @@ _t) ar (_ A@ &) ar (dis 3 &) ar (diz 3 + &) ar (d_$w_alt2 3 &d) ar (d_ 3 gg) ar (d_ 3 &h) ar (d_ 3 @@ -1629,7 +1631,7 @@ co (rro k@ co (rrup k@ _) costar koUstA@ - _) counter (@P7 k'aUnt@ // prefix + _) counter (@P7 k'aUnt3 // prefix .group d d d @@ -3523,8 +3525,8 @@ iss (a_ 'Is issimo (_ 'IsImoU chr) is (t_ aIs - @) istan (_ =Istan - @) istani (_ Ist'A:nI + @) istan (_ =IstA:n + @) istan (_N =Istan @) iste (_ 'i:st @) is (tic_ 'Is r) is (y_ =@s @@ -4012,7 +4014,7 @@ oea (_ 'i@ _) oe (d i: p) oe (m oUI - oer oU@ + oer oU3 _) oe (s i: &) oe (s_S2 z oesopha I2s0f@ @@ -5360,6 +5362,7 @@ th (ern_ D _) thio T,aIoU th (ith D + th (old th th (ole th _) th (om@ t ph) th T @@ -5884,6 +5887,7 @@ C) yes (_ aIz _) yes jEs yeah jEh + yew ju: @C) y (gen I ?!3 d) y (nas I s) ynch Ink @@ -5991,7 +5995,7 @@ E (ntu 'E E (ntous 'E E (o_ I2 - Eous (_ =j@s + Eous (_ =i@s l) E (ps E l) E (pt E Eri (A 'i@rI2 diff --git a/dictsource/es_rules b/dictsource/es_rules index e040bb71..da00ea93 100644 --- a/dictsource/es_rules +++ b/dictsource/es_rules @@ -50,8 +50,10 @@ A) ck k _) d (rA d _) d (A d d (A D + d (_ D d (cY D d (L03 D + d (v D m) d d n) d d l) d d @@ -85,6 +87,7 @@ A) ck k _) gn (A n _) g (A g g (A Q + g (_ Q g (cY Q g (L03 Q m) g g diff --git a/dictsource/nl_list b/dictsource/nl_list index bc53e93a..b3f09c51 100644 --- a/dictsource/nl_list +++ b/dictsource/nl_list @@ -112,7 +112,7 @@ _6X z'Est@x _7X z'e:v@nt@x _8X t'Axt@x _9X n'e:g@nt@x -_0C h'OndErt +_0C h'Ond@rt _0M1 d'WyzEnt _0M2 m'iljun _0M3 m'iljArt @@ -377,6 +377,7 @@ keten $alt loochen $alt oefen $alt open $alt +reden $alt regen $alt reken $alt schepen $alt @@ -1098,6 +1099,7 @@ gijzel $alt gispel $alt gniffel $alt goochel $alt +googel $alt gorgel $alt grabbel $alt grendel $alt @@ -1404,6 +1406,7 @@ vondel $alt accessoire aksEsw'ar@ accessoires aksEsw'ar@s actiepunt Aksip8nt +actieve Akt'iv@ adhesie Ath'e:zi agenda $2 aldus Ald'8s @@ -1453,6 +1456,7 @@ december $2 desillusie dEsIlyzi dieet $2 diesel diz@l +diner din'e: //discussie $2 divers div'Ers diftongering dIft,ON'e:rIN @@ -1462,6 +1466,7 @@ eensgelijks e:nsQ@l'EIks elfstedentocht ,Elf'ste:d@ntoQt embouchuur A~buS'yr // embouchure enorm $2 +enquête A~k'Et@ $alt2 erosie e:r'o:zi eucharistie $4 explosie $2 @@ -1486,6 +1491,8 @@ invasie $2 januari $3 kadaster $2 leesregel le:sre:Q@l +lunch l8nS +lunches l8nS@s mangat $alt3 materie ma:t'e:ri maatregel ma:tre:Q@l $alt2 @@ -1531,6 +1538,7 @@ ongerieflijk $3 partijvoorzitters $2 periferie pI:rifI:r'i pistache pist'AS +privilege privil'e:Z@ $alt2 proces $2 projectielen $3 renaissance rEne:s'A~s@ @@ -1548,6 +1556,7 @@ serie sI:ri sms'jes EsEm'Es_j@s spektakel $2 tegennatuur $4 +tralie $1 travestie $3 verderop $3 vergezicht vErQ@zIxt @@ -1556,6 +1565,7 @@ verrekijker vEr@kEIk@r verste vErst@ verte vErt@ volledig $2 +voordeel $1 vrouwengek $alt3 waarschijnlijk $2 wanen v#a:n@n diff --git a/dictsource/nl_rules b/dictsource/nl_rules index 76eb12bb..9431fd84 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -20,14 +20,15 @@ @@C) a (_ =a: _) aan (@P3 'a:n - @) aar (_S3 a:r - @) aard (_S4 a:rt + &) aar (_S3 a:r + &) aard (_S4 a:rt aa (rd_ 'a: aa (C_ 'a: z) aa (m_ a: t) a (bleau a: @) abel (_ 'a:b@l @) abele (_ 'a:b@l@ + @) ace (_ e:s // ?? interface m) ach (in %a:S _) actie (@P5 'Aksi _) af (C@P2 'Af @@ -106,6 +107,7 @@ _) be (zem be: _) be (zig be: _) beu bY: + _) bezoekers (@P9 b@z'uk@rs .group c @@ -120,10 +122,12 @@ @) ci (ë S ci (o S ck k + + ces (_ s'Es coach ko:tS - _) computer (@P8 kOmpj'ut@r _) congres kOnQr'Es + _) concentratie (@P12 kOnsEntr'a:tsi co (ncert k%O @@ -246,7 +250,7 @@ &) end (_ @nd &) ende (_S1 @ &) enden (_S2 @n - eden e:d@n + eden (_ e:d@n // ?? @) ent (_ 'Ent @) ent (e_ 'Ent @) ent (en_ 'Ent @@ -260,6 +264,7 @@ @z) es (_S1 s @) es (_S2qd 'Es // double the previous vowel @) es (_$w_alt2S1 s // just remove 's' + @) e (s_$p_alt2+S1 s KAC) es (_S2e @s mb) es (_S1 s nd) es (_S1 s @@ -280,6 +285,7 @@ @) eur (_ 'Y:r &) e (nB@ E2 + &) e (ntig @ _p) e (nibel e: id) e (nt E pres) e (nt E @@ -322,11 +328,14 @@ er (ij_ @r tol) er (abel @r mis) er (abel @r + hond) er (d_ @r _) erger ErQ@r // ergeren &) era (_ @ra: @) er (aar_ @r &) er (C@ E2r +.group ê + ê E .group f f f @@ -341,11 +350,13 @@ @) gi (eus Z @) gi (euz Z reli) gi (eu Qij + _) goog (el gu:g .group ge _) ge (@P2 Q@ ge (bied Q@ + _) gebruikers (@P10 Q@br'Wyk@rs _) gee Qe: _) gei QEI gener (aal Q,e:n@r @@ -435,10 +446,11 @@ &) ika (_ =ika: &) iko (_ =iko: _) in (C@P2 'In -// _) in (gP2 'In _) in (do In ine (_ 'in@ ines (_ 'in@s + _) inn (@P2 'I // ?? inneren + _) inter Int@r io (nage iO io (de_ i'o: iodes (_ i'o:d@s @@ -449,10 +461,12 @@ @) isme (_ 'Ism@ @) ist (_ 'Ist @) isten (_ 'Ist@n -_) inn (@P2 'I // ?? inneren .group j j j + + _) jaar (@P4 j'a:r + jaar (lijk ja:r jou (rna Zu @@ -478,6 +492,8 @@ _) inn (@P2 'I // ?? inneren &) lijker (_S6 l@k@r &) lijkere (_S7 l@k@r@ &) lijkheid (_S8 l@khEIt + &) lijkheden (_S9 l@khe:d@n +// &) lijks@ (_ l@ks@ &) lijkst (_S6 l@kst &) lijkste (_S7 l@kst@ @@ -497,6 +513,7 @@ _) inn (@P2 'I // ?? inneren management ma:nIdZm@nt _) mee (@P3 m'e: + _) mee (rC mI: menu (_ m@ny _) mi (cro mi _) mi (s@ m%I @@ -513,6 +530,7 @@ _) inn (@P2 'I // ?? inneren _) mis (loP3 m'Is _) mis (tA m'Is _) misver (@ m'Isf@r + _) muziek (@P6 myz'ik .group n n n @@ -527,6 +545,7 @@ _) inn (@P2 'I // ?? inneren _) na (C@N n'a: _) na (C% nA _) na (cht nA + _) najaars (@P7 n'a:ja:rs _) narci (s n%ArsI _) na (rc n%A _) na (der na: @@ -539,10 +558,11 @@ _) inn (@P2 'I // ?? inneren na (vig n%a: _) na (vr na: _) na (volg@ n%a: - _) noord (@P5 no:rd _) nieuws (@P6 n'iws @@) nis (_S3 nIs @@) nisen (_S5 nIs@n + _) noord (@P5 no:rd + _) notitie (@P7 no:t'itsi .group o @@ -586,6 +606,7 @@ _) inn (@P2 'I // ?? inneren tr) ou (vail u ouve (rtu uvE _) over (@P4 ,o:v@r + _) overigen o:v@r@Q@n _) overheid 'o:v@rhEIt t) ou (r u: @@ -644,21 +665,25 @@ _) inn (@P2 'I // ?? inneren C) r (A r rr *r - recherch r@SErS - revanch r@vA~nS route rut@ // route(s) .group re _) re (geren r@ _) re (geer r@ + _) regel re:Q@l _) re (cent r@ _) re (cept r@ _) re (ceptief re: + _) re (ces r@ _) re (clam r@ + _) register r@Q'Ist@r + reme (die r@m'e: _) re (serve_ r@ _) re (cord re' - _) regering r@Q'I:rIN + _) regering r@Q'I:rIN repre (saill re:pre: + recherch r@SErS + revanch r@vA~nS .group s @@ -695,6 +720,7 @@ _) inn (@P2 'I // ?? inneren CAr) sie (_ =zi _) stads (@P5 st'Ats + _) stage (@P5 st'a:Z@ _) standaard (@P9 st'Anda:rt _) start (@P5 st'Art @) straat (_S6 stra:t @@ -789,7 +815,9 @@ _) inn (@P2 'I // ?? inneren _) verkeers (@P8 v@rk'I:rs // _) verge (@P5 vErg@ // _) verge (le v@rQ'e: + _) voorjaars (@P9 v'O:rja:rs _) voort (@P5 v'O:rt + _) vrijwilligers (@P13 vrEIv#'Il@Q@rs .group w @@ -813,8 +841,10 @@ _) inn (@P2 'I // ?? inneren _) weg (@P3 v#'EQ _) weg (en v#e:Q _) weg (e_ v#e:Q // bewegelijk + _) werk (@P4 v#'Erk _) west (@P4 v#Est - _) wr vr + _) woon (@P4 v#'o:n + _) wr (@ vr .group x diff --git a/dictsource/pt_list b/dictsource/pt_list index 4299e9b7..343cfce5 100755 --- a/dictsource/pt_list +++ b/dictsource/pt_list @@ -81,9 +81,10 @@ _#9 tab + maIs# $max3 % pors'eINtU $max3 & _'e_ -@ &x'ob& +@ ax'ob& ¤ 'eU*U € 'eU*U +£ l'ibR& § p&*'agRafU @@ -128,10 +129,10 @@ _¡ ,eskl&mas,&U~,iNvertS'id& _¿ ,iNtex,ogas,&U~,iNvertS'id& _" 'abRi;'asp&||d'upl&s# -?1 _º O*@-din'almaskul'i~nU -?2 _º o*@-dZin'almaskul'i~nU -?1 _ª O*@-din'alfemin'i~nU -?2 _ª o*@-dZin'alfemin'i~nU +?1 º O*@-din'almaskul'i~nU +?2 º o*@-dZin'aUmaskul'i~nU +?1 ª O*@-din'alfemin'i~nU +?2 ª o*@-dZin'aUfemin'i~nU ° gR'aU @@ -185,7 +186,7 @@ _8X oIt'eINt& ?2 _9X nov'eINt& _1C0 s'eIN ?1_0C s'eINtus# -?2_0C s'eINtUs# +?2_0C s'eINtUz _1C s'eINtu ?1_2C duz'eINtus# ?2_2C duz'eINtUz @@ -313,7 +314,7 @@ sr $dot // articles o $u+ $nounf a $u+ $nounf -os Us $u+ $nounf +os $u+ $nounf as $u+ $nounf ?1 a & $u+ $nounf @@ -409,7 +410,7 @@ aos $u $nounf para $u // for,to pro pRU $u $nounf pra $u $nounf -pros pRUs $u $nounf +pros $u $nounf pras $u $nounf prò $u $nounf prà $u $nounf @@ -431,7 +432,7 @@ com $u // with // conjunctions ?1 e i $u // and ?2 e i $u // and -se $u+ $verbf // if +se $u+ // if ?2 mas $u // but @@ -597,10 +598,10 @@ pôde $u+ pudemos $u+ puderam $u+ -poderei $u3+ -poderá $u3+ -poderemos $u+ -poderão $u+ +poderei p%ode*eI $u+ +poderá p%ode*a $u+ +poderemos p%ode*'emUs $u+ +podeão p%ode*&U~ $u+ // ir - to go (used to make future tense) @@ -653,11 +654,14 @@ aeroporto $alt2 aeroportos $alt alcateia $alt alcova $alt2 +alegro $alt2 $noun alferes $alt almoço $alt $verb ameba $alt amores $alt2 amorno $alt +amuleto $alt2 +ampere $alt ampola $alt2 ampulheta $alt2 andorra $alt2 @@ -674,6 +678,7 @@ arrocho $alt2 $noun arroto $alt2 $noun arroz $alt2 assembleia $alt +assopro $alt2 $noun ateia $alt aterro $alt2 aterro $alt $verb @@ -684,12 +689,16 @@ azeda $alt $verb azedo $alt $verb bairro b'aIxU baqueta $alt2 +banqueta $alt2 +banquete $alt2 +bastonete $alt2 beco $alt2 besta $alt2 bilhete $alt2 +bissulfeto $alt2 boca $alt2 boceta $alt2 -bochecha $alt2 +bofe $alt bojo $alt2 boleia $alt bolero $alt @@ -716,6 +725,7 @@ caixeta $alt2 camelha $alt camelo $alt2 camiseta $alt2 +canaleta $alt2 canhoto $alt2 cantora $alt2 capacete $alt2 @@ -747,6 +757,7 @@ chovesse $alt2 chupeta $alt2 clamores $alt2 clero $alt +cloreto $alt2 coche $alt2 coco $alt2 cofre $alt @@ -765,6 +776,7 @@ concordo $alt conforto $alt $verb console $alt2 $noun consolo $alt2 $noun +constroem $alt controle $alt2 $noun controles $alt2 controles $alt $verb @@ -779,6 +791,7 @@ corpos $alt corto $alt corveta $alt2 corvos $alt +costeleta $alt2 coto $alt2 cotovelo $alt2 cratera $alt @@ -786,7 +799,7 @@ crede $alt2 credo $alt crepe $alt decore $alt -decoro $alt2 $noun +decoro $alt2 $noun degelo $alt2 desapego $alt2 $noun descordo $alt @@ -796,6 +809,8 @@ desespero $alt2 desespero $alt $verb desfecho $alt2 desmantelo $alt2 $noun +despojo $alt2 $noun +despojos $alt desporto $alt2 desportos $alt desprezo $alt2 $noun @@ -810,6 +825,7 @@ dez $alt diarreia $alt diego $alt2 discordo $alt +dissabores $alt2 dispneia dZIspyn'EI& dobro $alt2 dobro $alt $verb @@ -828,8 +844,8 @@ engordo $alt enredo $alt $verb enrosco $alt $verb enterro $alt2 $noun -entorto $alt -entroso $alt +entorto $alt +entroso $alt envelope $alt envolto $alt2 enxaqueca $alt2 @@ -860,14 +876,14 @@ estorvo $alt $verb estrela $alt2 estrofe $alt estrogonofe $alt -eta $alt2 +eta $alt2 etiqueta $alt2 europa $alt europeia $alt exagero $alt $verb explore $alt faceta $alt2 -falangeta $alt2 +falangeta $alt2 farofa $alt farolete $alt2 febre $alt @@ -876,8 +892,9 @@ feitora $alt2 fezes $alt filete $alt2 ?1 fixe fiSy +flerte $alt2 $noun foda $alt2 $verb -fodo $alt2 +fodo $alt2 fogos $alt foguete $alt2 foice $alt2 @@ -885,8 +902,8 @@ folheto $alt2 fora $alt fora $alt2 $verb forca $alt2 -força $alt2 $noun -forças $alt2 +força $alt2 +força $alt $verb forço $alt formos $alt2 forro $alt $verb @@ -902,15 +919,15 @@ gelo $alt2 gelo $alt $verb genebra $alt gesso $alt2 -gloso $alt +gloso $alt gonorreia $alt -gol gow +gol gow golpe $alt gorda $alt2 gorjeta $alt2 gosto $alt $verb gota $alt2 -governo $alt2 +governo $alt2 governo $alt $verb gozo $alt2 $noun graveto $alt2 @@ -929,6 +946,7 @@ interesse $alt2 interesse $alt $verb iodo $alt2 ioga $alt +jereba $alt jogo $alt2 jogo $alt $verb jogos $alt @@ -943,13 +961,13 @@ leste $alt2 $verb ?2 lhe l^y lingueta $alt2 lodo $alt2 -logro $alt +logro $alt lopes $alt macete $alt2 maior $alt maleta $alt2 maniçoba $alt -marieta $alt2 +marieta $alt2 marreta $alt2 megera $alt melhor $alt @@ -1001,21 +1019,27 @@ pachorra $alt2 paexa paeSa paella pa'el^& palacete $alt2 +paleta $alt2 palheta $alt2 panfleto $alt2 pangeia $alt pantera $alt +papoco $alt2 $noun parede $alt2 pastora $alt2 +peba $alt pedra $alt pela $alt $verb pelo $alt2 pelo $alt $verb +pereba $alt peroba $alt +peseta $alt2 peso $alt $verb piloto $alt2 $noun pintora $alt2 pior $alt +pipoco $alt2 $noun pirueta $alt2 plaqueta $alt2 plateia $alt @@ -1023,8 +1047,9 @@ plebeia $alt polca $alt pompeia $alt porcos $alt -porque $alt2 +porque $alt2 porra $alt2 +porreta $alt2 porrete $alt2 porto $alt2 portos $alt @@ -1033,15 +1058,18 @@ povos $alt poxa p'oS& primavera $alt primores $alt2 -proso $alt +proso $alt prosopopeia $alt +proveta $alt2 quarteto $alt2 queda $alt quede $alt2 +quitinete $alt quinteto $alt2 -ramalhete $alt2 +ramalhete $alt2 raposa $alt2 recomeço $alt $verb +reconstroem $alt recordo $alt recorto $alt rede $alt2 @@ -1053,22 +1081,23 @@ refresco $alt $verb rego $alt2 $noun reitora $alt2 relevo $alt2 $noun -remoem $alt +remoem $alt remorso $alt renovo $alt $verb retorno $alt $verb reuva x'EUv& rigores $alt2 +risoto $alt2 rock $alt roem $alt rola $alt2 $noun rolo $alt2 $noun rota $alt2 rota $alt $noun -rubores $alt2 +rubores $alt2 rumores $alt2 sabonete $alt2 -sabores $alt2 +sabores $alt2 saibro s'aIbRU saleta $alt2 sarjeta $alt2 @@ -1094,10 +1123,12 @@ sossego $alt2 $noun suborno $alt $verb sufoco $alt2 $noun sufocos $alt2 +sulfeto $alt2 +sulfureto $alt2 super s'Uper suporto $alt suor swOr -sutiã sutSi'&~N +sutiã sutSi'&~N tapete $alt2 temores $alt2 tempero $alt2 $noun @@ -1105,15 +1136,15 @@ tenores $alt2 terrores $alt2 teta $alt2 toga $alt -topo $alt $verb +topo $alt2 $noun torno $alt $verb tornozelo $alt2 torre $alt2 $noun torres $alt2 torro $alt tortos $alt -toso $alt -transtorno $alt $verb +toso $alt +transtorno $alt $verb traqueia $alt travesso $alt2 tremores $alt2 @@ -1125,6 +1156,7 @@ trombeta $alt2 tumores $alt2 valeta $alt2 vanessa $alt2 +vareta $alt2 vera $alt verbete $alt2 violeta $alt2 @@ -1191,6 +1223,7 @@ drivers dR'aIveRs laptop lEptOp ?1 line l'ain layout l'eI,aUt + ?2 login logiN ?2 logo l'OgU ?1 lock l'Ok mail m'eIl @@ -1235,7 +1268,7 @@ símbolo s'imbolU // common person names -alan 'al@n +alan 'al@N louis _^_FR @@ -1347,7 +1380,6 @@ antonio &~nt'onIU ?1 cleverson kl'Evyrs&N ?2 cleverson kl'EversoN ?1 elton 'Elt&N -?2 elton 'EUton emerson 'emE*@-soN ?1 halison &l'is&N klein kl'aIn // Very common on southern Brazil. diff --git a/dictsource/pt_rules b/dictsource/pt_rules index 8cd02d3a..f89ba2f5 100755 --- a/dictsource/pt_rules +++ b/dictsource/pt_rules @@ -90,6 +90,8 @@ óCC) a (CA_ & óC) a (CCA_ & úC) a (CA_ & +?2 ation (_ 'eIS&~N +?2 action (_ 'EkS&~N .group â @@ -165,6 +167,7 @@ ?2 d (i dZ ?2 d (í dZ ?2 d (e_ dZ +?2 A) de (o_ dZj .group e @@ -235,7 +238,8 @@ e (sL02_ E e (ssL04_ E - + e (ss_ E // stress and english words +?2 ection (_ 'EkS&~N e (stL04_ E e (strL04_ E @@ -340,6 +344,7 @@ ?1 l) e (ta 'E // eg: bicicleta, atleta. sf) e (ra_ E // esfera, biosfera + ef) e (tuL02_ e t) e (tra E âC) e (CA_ e @@ -354,6 +359,7 @@ óC) e (Ca_ e óCC) e (CA_ e úC) e (CA_ e + úC) el (_ eU //sort _d) e (L05_ E @@ -417,11 +423,13 @@ _atrev) e (L07_ e _corro) e (L07_ e _interromp) e (L07_ e _troux) e (L07_ E + _ens) e (bL03_ E +_amanc) e (bL03_ E qu) e (brL04_ E _cel) e (brL04_ E + _boch) e (chL04_ e _ex) e (crL04_ E _enr) e (dL01_ E - _n) eu (trL03_ 'eU _v) e (dL03_ E _arr) e (dL03_ E _depr) e (dL03_ E @@ -430,15 +438,14 @@ _troux) e (L07_ E _gal) e (gL03_ e _pel) e (gL03_ e _n) e (grL03_ e - _ch) e (guL02_ e estr) ei (L04_ EI _r) e (jL03_ E _inv) e (jL04_ E +?2 el (ton_ 'EU tr) e (pL04_ E // es- _dec) e (pL04_ E _in) e (ptL03_ E ad) e (quL04_ E - _imp) e (rL03_ E _sev) e (rL03_ E _reit) e (rL03_ E _sinc) e (rL03_ E @@ -449,6 +456,7 @@ _troux) e (L07_ E gen) e (rL04_ E // de- re- _alt) e (rL04_ E _enc) e (rL04_ E + _imp) e (rL04_ E _min) e (rL04_ E _sug) e (rL04_ E _sup) e (rL04_ E @@ -470,6 +478,7 @@ _refrig) e (rL04_ E _p) e (rdL02_ E _l) e (rdL03_ E _h) e (rdL04_ E + _des) e (rdL04_ E _) e (rgL03_ e _re) e (rgL03_ e _bez) e (rrL03_ e @@ -496,6 +505,7 @@ _refrig) e (rL04_ E _obsol) e (tL03_ e _sol) e (trL03_ E _pen) e (trL04_ E + _n) eu (trL03_ 'eU _d) e (vL03_ e scr) e (vL03_ e // e- in- pre- ree- de- _atr) e (vL03_ e @@ -639,7 +649,8 @@ _entorp) e (çL03_ e ?1 _) i (ntern 'i //inter ?1 @) ing (_ _^_EN ?1 @) ings (_ _^_EN - ilton 'iUtoN +?2 il (ton_ 'iU +?2 i (rton_ 'i .group í @@ -718,7 +729,9 @@ _entorp) e (çL03_ e o (s_ =U _) o (_C U _) o (_A u - +?2 _) os (_ Us +?2 _) os (_A Uz +?2 _) os (_G Uz ou ow oi oI oi ($w_alt OI @@ -738,7 +751,6 @@ _entorp) e (çL03_ e o (quL02_ O A_l) o (_ U - p) o (dL04_ O o (g_ O o (gs_ O @@ -824,8 +836,7 @@ _entorp) e (çL03_ e ?1 interr) o (g u // eg: interrogação ?1 f) o (rmulá u // eg: formulário, formulários. ?1 v) o (lt O - - o (Cuem_ o + o (luem_ o o (CCuem_ o êC) o (CA_ o êCC) o (CA_ o @@ -870,9 +881,12 @@ _pormen) o (L05_ O m) o (lhL04_ O ent) o (pL02_ O _c) o (pL03_ O + _t) o (pL04_ O _ens) o (pL04_ O _gal) o (pL04_ O _s) o (prL04_ O + _al) o (prL04_ O + _ass) o (prL04_ O _) o (ptL04_ O p) o (rL02_ o _dev) o (rL02_ O @@ -881,19 +895,20 @@ _pormen) o (L05_ O _inod) o (rL03_ O _inson) o (rL03_ O _comem) o (rL04 O + _enam) o (rL04_ O _aprim) o (rL04_ O _remem) o (rL04_ O f) o (rmL03_ O c) o (rrL01_ o // incorra, corra, etc. _m) o (rrL01_ o p) o (rtL03_ O // im- trans- de- re- com- a- ex- - t) o (rçL01_ O // con- + t) o (rçL03_ o // con- _r) o (snL04_ O _c) o (spL02_ O _enr) o (squL02_ O p) ostos (_ Ost=Us# // dispostos etc. _gar) o (tL03_ o - _mar) o (tL03_ O + _mar) o (tL03_ o _escr) o (tL03_ o _ch) o (vL01_ o pr) o (vL03_ O @@ -902,6 +917,7 @@ _remem) o (rL04_ O _r) o (çL03_ O tr) o (çL03_ O // des- _ad) o (çL03_ O + _emp) o (çL03_ O _end) o (çL03_ O //endsort @@ -1044,6 +1060,7 @@ _remem) o (rL04_ O ?2 t (e_ tS ?1 th _^_EN ?1 tion (_ _^_EN +?2 A) te (o_ tSj .group u diff --git a/dictsource/tr_list b/dictsource/tr_list index af361878..b08cb817 100644 --- a/dictsource/tr_list +++ b/dictsource/tr_list @@ -43,16 +43,16 @@ _?A haRf //_lig _acu vURg'UimI _ac2 tS'IftvURg'UimI -_brv k@s'altmaimI +_brv k@s'aLtmaimI _ced h'aRf _cir Sapk'a -_dia Umla'Ut +_dia UmLa'Ut _dot YstnOkt'a _grv 'aksanimI _hac t'ERsSapk'a _mcn uz'atmaimI _ogo ogon'Ek -_rng halk'a +_rng haLk'a //_stk _tld tIld'E @@ -60,7 +60,7 @@ _tld tIld'E // symbols _. nOkt'a _, vIRJ'Yl -_; nOktal'@vIRJ'Yl +_; nOktaL'@vIRJ'Yl _: ik'InOkt'a _… 'YtSnOkt'a _? soR'UiSa*et,I @@ -73,7 +73,7 @@ _' apOstR'Of _^ IndZ'EltmEiSa*et'I & _!v'E _& v'EiSa*et'I -_@ kUjRUkl'U'a +_@ kUjRUkL'U'a _\ t'ERs||ej,IktSIzg'I _( atSpa*ant'Ez _) kapapa*ant'Ez @@ -84,9 +84,9 @@ _‘ tEkt@Rn'ak § tSEnJ'El ° de*edZ'E _# dij'Ez -_~ jaklaS'@k -__ ,alttSIzg'I -* j'@ld@z $max3 +_~ jakLaS'@k +__ ,aLttSIzg'I +* j'@Ld@z $max3 = ESIt $max3 % jYzdE $max3 + aRt@ $max3 @@ -99,7 +99,7 @@ _2 ic'i _3 'ytS _4 d'WRt _5 b'ES -_6 alt'@ +_6 aLt'@ _7 jed'i _8 sec'Iz _9 d'okuz @@ -111,7 +111,7 @@ _2X jiRm'i _3X ot'uz _4X k'@Rk _5X ell'i -_6X altm'@S +_6X aLtm'@S _7X jetm'iS _8X seks'En _9X doks'an @@ -260,13 +260,13 @@ Düzce $1 Edirne $2 Hakkari $1 Hatay $1 -Iğdır $1 -İngiltere $3 -İskenderun $2 +ığdır $1 +ingiltere $3 +iskenderun $2 Isparta $2 -İstanbul $2 -İsveç $1 -İzmir $1 +istanbul $2 +isveç $1 +izmir $1 Kastamonu $1 Kayseri $1 Kilis $1 diff --git a/dictsource/tr_rules b/dictsource/tr_rules index aa03ae1b..4b84bd7b 100644 --- a/dictsource/tr_rules +++ b/dictsource/tr_rules @@ -9,8 +9,11 @@ // ?1 mbrola voices -// unvoiced consonants -.L01 ç f h k p q s ş t +.L01 ç f h k p q s ş t // unvoiced consonants + +.L02 ı a o u // back vowels + +.L03 i e ö ü î â ô û // not-back vowels .replace ` ' @@ -23,7 +26,7 @@ @) acak (_S4 adZak @) acakmış (_S7 adZakm%@S @) ayım (_S4 aj@m - @) alım (_S4 al@m + @) alım (_S4 aL@m @) asın (_S4 as@n @) avru (pa avr'u @@ -33,9 +36,11 @@ .group c c dZ + ce (_S2 dZ%E .group ç ç tS + çe (_S2 tS%E .group d d d @@ -57,13 +62,13 @@ dın (_S3 d@n dınız (_S5 d@n@z dı (_S2 d@ - dılar (_S5 d@laR + dılar (_S5 d@LaR dum (_S3 dum duk (_S3 duk dun (_S3 dun dunuz (_S5 dunuz du (_S2 du - dular (_S5 dular + dular (_S5 duLar düm (_S3 dym dük (_S3 dyk dün (_S3 dyn @@ -96,18 +101,24 @@ .group g g g - g (i J - g (e J - g (ü J - g (ö J + g (L03 J + L03) g (K J + .group ğ ğ Q - A) ğ :|| -?1 A) ğ G // mbrola + A) ğ : +?1 A) ğ (+ G // mbrola + + a) ğa : + o) ğo : + u) ğu : + ö) ğö : + ü) ğü : i) ğ j e) ğ j + .group h h h @@ -135,37 +146,40 @@ @) ıyor (_S4 @j%oR @) ın (_S2 @n +.group î + î @ + .group j j Z .group k k k - k (i c - k (e c - k (ü c - k (ö c + k (L03 c + L03) k (K c ken (_S3 %cen .group l l l + l (L02 L + L02) l (K L - la (_S2 %la + la (_S2 %La le (_S2 %le - lar (_S3 laR + lar (_S3 LaR ler (_S3 leR li (_S2 li - lı (_S2 l@ - lu (_S2 lu + lı (_S2 L@ + lu (_S2 Lu lü (_S2 ly lik (_S3 lik - lık (_S3 l@k - luk (_S3 luk + lık (_S3 L@k + luk (_S3 Luk lük (_S3 lyk @@ -308,7 +322,7 @@ yunuz (_S5 %junuz yünüz (_S5 %jynyz - yla (_S3 %jla + yla (_S3 %jLa yle (_S3 %jle yacak (_S5 jadZak @@ -317,7 +331,7 @@ yecekmiş (_S8 jedZekm%iS yayım (_S5 jaj@m - yalım (_S5 jal@m + yalım (_S5 jaL@m yasın (_S5 jas@n yeyim (_S5 jejim yelim (_S5 jelim diff --git a/dictsource/vi_rules b/dictsource/vi_rules index 2c7eb3e1..e0479fb7 100644 --- a/dictsource/vi_rules +++ b/dictsource/vi_rules @@ -79,40 +79,48 @@ ỵ ỵ //================================ .L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve ge .L02 n - +.L03 t ch nh .group b b b _) b _b //b($w_alt2 _^_EN - + + .group c c g //k c (_ kh - ch c // try [tS;] [tS] [c] + _) ch tS; // try [tS;] [tS] [c] c +?2 _) ch c +?1 _) ch c + ch (_ c ce (_ _^_EN _) cl _^_EN - - - + + + + .group d d J^ // try [z] [J] [dZ] [dZ;] [J^] d (_ _^_EN - - - + + + + .group đ đ d _) đ _d - - - + + + + .group f //f f _) f _^_EN f (_ _^_EN - - + + + .group g g Q // try [g] [Q] gh Q // or [g] [Q] @@ -131,110 +139,134 @@ ỵ ỵ giệc J^'iE6kh _) gol _^_EN _) gat _^_EN - ght (_ _^_EN - - + ght (_ _^_EN + + + .group h h h - - + + + .group j j Z - - + + + .group k k k //k (_ kh kh x k (_ _^_EN - - + + + .group l l l l (_ _^_EN le (_ _^_EN - - + + + .group m m m - - + + + .group n n n ?1 n (_ N //n +?2 n (_ N ng N ngh N nh n^ nd (_ _^_EN - - + + + .group ñ ñ n^ - - + + + .group p p p ph f - - + + + .group q q k q (_ kh qu w //kw - - + + + .group r - r z. // try [z] [z.] [r] [z;] + r z // try [z] [z.] [r] [z;] +?2 r Q +?1 r z. r (_ _^_EN rm (_ _^_EN - - + + + .group s s s. // try [s.] [s] [S] _) sh _^_EN s (_ _^_EN st (_ _^_EN se (_ _^_EN - - + + + .group t t t[ -?1 t (_ g +?1 t (_ kh +?2 t (_ kh th t - tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] + tr tS //cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] +?1 tr cr +?2 tr c ts (_ _^_EN te (_ _^_EN th (_ _^_EN tt (_ _^_EN - - + + + .group v v v +?2 v J^ ve (_ _^_EN - - + + + .group w w w _) w _^_EN w (_ _^_EN - - + + + .group x x s x (_ _^_EN - - + + + .group z z z z (_ _^_EN - - + + //================================ // Vowels //================================ - - - + + + + .group a a a: ai a:I @@ -244,6 +276,8 @@ ỵ ỵ aĩ a:I5 aị a:I6 ay aI +?2 ay a:I + aỳ aI2 aý aI3 aỷ aI4 @@ -256,6 +290,7 @@ ỵ ỵ aõ a:U5 aọ a:U6 au aU +?2 au a:U aù aU2 aú aU3 aủ aU4 @@ -263,120 +298,145 @@ ỵ ỵ aụ aU6 a (L01 _^_EN ai (L02 _^_EN - - + + + .group à à a:2 ài a:I2 ày aI2 +?2 ày a:I2 + + + + ào a:U2 àu aU2 - - +?2 àu a:U2 + + .group á á a:3 ái a:I3 áy aI3 áo a:U3 áu aU3 - - +?2 áu a:U3 +?2 áy a:I3 + .group ả ả a:4 ải a:I4 ảy aI4 ảo a:U4 ảu aU4 - - +?2 ảu a:U4 +?2 ảy a:I4 + .group ã ã a:5 ãi a:I5 ãy aI5 ão a:U5 ãu aU5 - - +?2 ãu a:U5 +?2 ãy a:I5 + .group ạ ạ a:6 ại a:I6 ạy aI6 ạo a:U6 ạu aU6 - - +?2 ạu a:U6 +?2 ạy a:I6 + //================================ .group ă ă a - - - + + + + .group ằ ằ a2 - - - + + + + .group ắ ắ a3 - - - + + + + .group ẳ ẳ a4 - - - + + + + .group ẵ ẵ a5 - - - + + + + .group ặ ặ a6 - - + + //================================= .group â â @ ây @I âu @U1 - - - +?2 â (L03 a +?1 â (L03 a + + + .group ầ ầ @2 ầy @I2 ầu @U2 - - - +?2 ầ (L03 a2 +?1 ầ (L03 a2 + + + .group ấ ấ @3 ấy @I3 ấu @U3 - - - +?2 ấ (L03 a3 +?1 ấ (L03 a3 + + + .group ẩ ẩ @4 ẩy @I4 ẩu @U4 - - - + + + + .group ẫ ẫ @5 ẫy @I5 ẫu @U5 - - - + + + + .group ậ ậ @6 ậy @I6 ậu @U6 - - +?2 ậ (L03 a6 +?1 ậ (L03 a6 + //=========================== .group e e E @@ -388,76 +448,89 @@ ỵ ỵ eọ EU6 e (L01 _^_EN ey (_ _^_EN - - + + + .group è è E2 èo EU2 - - - + + + + .group é é E3 éo EU3 - - - + + + + .group ẻ ẻ E4 ẻo EU4 - - - + + + + .group ẽ ẽ E5 ẽo EU5 - - - + + + + .group ẹ ẹ E6 ẹo EU6 - - + + //============================ - + + .group ê ê e êu eU1 - - - +?2 ê (L03 @: +?2 ê (L02 @: + + .group ề ề e2 ều eU2 - - - +?2 ề (L03 @:2 +?2 ề (L02 @:2 + + .group ế ế e3 ếu eU3 - - - + +?2 ế (L03 @:3 +?2 ế (L02 @:3 + .group ể ể e4 ểu eU4 - - - +?2 ể (L03 @:4 +?2 ể (L02 @:4 + + .group ễ ễ e5 ễu eU5 - - - +?2 ễ (L03 @:5 +?2 ễ (L02 @:5 + + .group ệ ệ e6 ệu eU6 - - +?2 ệ (L03 @:6 +?2 ệ (L02 @:6 + //============================ - + + .group i i i //i (A j @@ -486,45 +559,60 @@ ỵ ỵ iễu iU5 iệu iU6 i (L01 _^_EN - - +?2 i (L03 @ +?1 i (L03 @ +?2 i (L02 @ + .group ì ì i2 ì (A j2 ìa i@2 ìu iU2 - - +?2 ì (L03 @2 +?1 ì (L03 @2 +?2 ì (L02 @2 + .group í í i3 í (A j3 ía i@3 íu iU3 - - +?2 í (L03 @3 +?1 í (L03 @3 +?2 í (L02 @3 + .group ỉ ỉ i4 ỉ (A j4 ỉa i@4 ỉu iU4 - - +?2 ỉ (L03 @4 +?1 ỉ (L03 @4 +?2 ỉ (L02 @4 + + .group ĩ ĩ i5 ĩ (A j5 ĩa i@5 ĩu iU5 - - +?2 ĩ (L03 @5 +?1 ĩ (L03 @5 +?2 ĩ (L02 @5 + + .group ị ị i6 ị (A j6 ịa i@6 ịu iU6 - - +?2 ị (L03 @6 +?1 ị (L03 @6 +?2 ị (L02 @6 + //========================= - + + .group o o O oa o@ // modify oa sound example: hoa,khoa // o (A w @@ -537,142 +625,165 @@ ỵ ỵ ong O# oe o& // Adding oe sound example: lóe sáng,toét mắt o (L01 _^_EN - - + oai Oi // oai sound + oại Oi6 + oài Oi2 + oái Oi3 + oải Oi4 + oãi Oi5 + + .group ò ò O2 òi OI2 òa o@2 //ò (A w2 òng O#2 òe o&2 - - - + + + + .group ó ó O3 ói OI3 óa o@3 //ó (A w3 óng O#3 óe o&3 - - - + + + + .group ỏ ỏ O4 ỏi OI4 ỏa o@4 //ỏ (A w4 ỏng O#4 ỏe o&4 - - - + + + + .group õ õ O5 õi OI5 õa o@5 //õ (A w5 õng O#5 õe o&5 - - - + + + + .group ọ ọ O6 ọi OI6 ọa o@6 //ọ (A w6 ọng O#6 ọe o&6 - - - + + + //============================= - + + .group ô ô o ôi oI ông o# // ông sound - - +?2 ôi O- //south dialect + + .group ồ ồ o2 ồi oI2 ồng o#2 - - - +?2 ồi O-2 + + + .group ố ố o3 ối oI3 ống o#3 - - - +?2 ối O-3 + + + .group ổ ổ o4 ổi oI4 ổng o#4 - - - +?2 ổi O-4 + + + .group ỗ ỗ o5 ỗi oI5 ỗng o#5 - - - + +?2 ỗi O-5 + + .group ộ ộ o6 ội oI6 ộng o#6 - - - +?2 ội O-6 + + //============================= - + + .group ơ ơ @: ơi @:I ơu @:U - - - +?2 ơi @- //south dialect + + + .group ờ ờ @:2 ời @:I2 ờu @:U2 - - - +?2 ời @-2 + + + .group ớ ớ @:3 ới @:I3 ớu @:U3 - - - +?2 ới @-3 + + + .group ở ở @:4 ởi @:I4 ởu @:U4 - - - +?2 ởi @-4 + + + .group ỡ ỡ @:5 ỡi @:I5 ỡu @:U5 - - - +?2 ỡi @-5 + + + .group ợ ợ @:6 ợi @:I6 ợu @:U6 - - - +?2 ợi @-6 + + //============================= - + + .group u u u u (A w @@ -705,54 +816,60 @@ ỵ ỵ u (L01 _^_EN ui (L01 _^_EN ua (L01 _^_EN - - +?2 u u- + + .group ù ù u2 ù (A w2 ùi uI2 ùa u@2 //ùng u#2 - - - + +?2 ù u-2 + + .group ú ú u3 ú (A w3 úi uI3 úa u@3 //úng u#3 - - - +?2 ú u-3 + + + .group ủ ủ u4 ủ (A w4 ủi uI4 ủa u@4 //ủng u#4 - - - + +?2 ủ u-4 + + .group ũ ũ u5 ũ (A w5 ũi uI5 ũa u@5 //ũng u#5 - - - +?2 ũ u-5 + + + .group ụ ụ u6 ụ (A w6 ụi uI6 ụa u@6 //ụng u#6 - - +?2 ụ u-6 + //============================= - + + .group ư ư y ưi yI @@ -776,50 +893,56 @@ ỵ ỵ ưởu y@w4 ưỡu y@w5 ượu y@w6 - - - + + + + .group ừ ừ y2 ừi yI2 ừa y@2 ừu yw2 - - - + + + + .group ứ ứ y3 ứi yI3 ứa y@3 ứu yw3 - - - + + + + .group ử ử y4 ửi yI4 ửa y@4 ửu yw4 - - - + + + + .group ữ ữ y5 ữi yI5 ữa y@5 ữu yw5 - - - + + + + .group ự ự y6 ựi yI6 ựa y@6 ựu yw6 - - + + //============================= - + + .group y y i // y (A j @@ -836,49 +959,55 @@ ỵ ỵ yễ i@5 yệ i@6 // yêu i@U - + y (L01 _^_EN - + + .group ỳ ỳ i2 ỳ (A j2 ỳa i@2 - - - + + + + .group ý ý i3 ý (A j3 ýa i@3 - - - + + + + .group ỷ ỷ i4 ỷ (A j4 ỷa i@4 - - - + + + + .group ỹ ỹ i5 ỹ (A j5 ỹa i@5 - - - + + + + .group ỵ ỵ i6 ỵ (A j6 ỵa i@6 - - + + //============================= - + + .group 0xce // Greek letters // 0xce is the first byte of the utf-8 code for these characters - - + + α a:1n_|f'a:1 ά a:1n_|f'a:1 β b'e1_|t['a:1 @@ -898,12 +1027,13 @@ ỵ ỵ ν nw'i1 ξ s'i7 ο o1_|m'i1_|kz.'O7n - - - + + + + .group 0xcf // Greek letters - - + + π p'i1 ρ z.'o1 σ s'i3c_|m'a:1 @@ -917,11 +1047,12 @@ ỵ ỵ ω o1_|m'e1_|Q'a:7 ώ o1_|m'e1_|Q'a:7 ό o1_|m'i1_|kz.'O7n - - - - - + + + + + + .group % f'@2n||cr'am ! _:c'@3m_|t'a:7n_: @@ -932,14 +1063,14 @@ ỵ ỵ != x'o#_|_b'a2N_ >= l'@:3n_|h'@:1n_|hw,a6kh_b'a2N <= n^'O4_|h'@:1n_|hw,a6kh_b'a2N - - + + __) - (_D cr'y2 A_) - (_D _ C_) - (_D _ - + . c'@3m_ . (. _: \.) . - - + + diff --git a/espeak-data/voices/asia/ko b/espeak-data/voices/asia/ko new file mode 100755 index 00000000..74f98ab3 --- /dev/null +++ b/espeak-data/voices/asia/ko @@ -0,0 +1,6 @@ +name Korean +language ko +gender male +pitch 80 118 +intonation 2 + diff --git a/espeak-data/voices/asia/ms b/espeak-data/voices/asia/ms new file mode 100755 index 00000000..90a38a37 --- /dev/null +++ b/espeak-data/voices/asia/ms @@ -0,0 +1,17 @@ +// Last updated: 14 October 2010, Jason Ong (jason@portalgroove.com) +name malay +language ms +gender male +phonemes id + +translator id + +stressLength 160 200 180 180 0 0 220 240 +stressAmp 16 18 18 18 0 0 22 21 +intonation 3 // Less intonation, and comma does not raise the pitch. + +// Nuance - Peninsula Malaysia +// replace 3 a @ // change 'saya' to 'saye' + // (only the last phoneme of a word, only in unstressed syllables) + +consonants 80 80 diff --git a/espeak-data/voices/asia/vi-sgn b/espeak-data/voices/asia/vi-sgn new file mode 100755 index 00000000..07c4a12e --- /dev/null +++ b/espeak-data/voices/asia/vi-sgn @@ -0,0 +1,12 @@ +name vietnam_sgn +language vi-sgn +phonemes vi-sgn +dictrules 2 +gender male + +words 1 +pitch 82 118 //80 118 +//breath 75 75 60 40 15 10 + //breathw 150 150 200 200 400 400 + voicing 90 //18 + flutter 20 diff --git a/phsource/compile_report b/phsource/compile_report index 63adc8ce..ce6f4d04 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,5 +1,5 @@ -90 phoneme tables +91 phoneme tables new total base 109 109 consonants 11 119 @@ -44,7 +44,7 @@ consonants 11 119 bg 14 124 it 19 129 la 21 126 - es 15 125 + es 16 125 es-la 1 125 ca 11 127 an 4 125 @@ -56,12 +56,13 @@ consonants 11 119 sv 22 129 no 28 134 is 42 141 - vi 53 147 - vi-hue 8 147 + vi 57 150 + vi-hue 15 150 + vi-sgn 17 150 zhy 41 138 zh 64 155 sw 9 110 - tr 19 128 + tr 20 129 ku 18 129 id 16 128 sq 33 127 @@ -243,15 +244,18 @@ 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 [+] pa [6] vi [4] vi-hue + [5] vi-hue [6] vi-hue + [6] vi-sgn envelope/p_fall [2] vi [7] vi [2] vi-hue + [2] vi-sgn + [7] vi-sgn [4] zhy [7] zhy [21] zh @@ -261,23 +265,27 @@ envelope/p_fall [2] vi [53] zh [+] rw envelope/p_fallrise [4] vi + [3] vi-hue envelope/p_level [1] vi [1] vi-hue [7] vi-hue + [1] vi-sgn [1] zhy [3] zhy [6] zhy [55] zh envelope/p_rise [3] vi - [3] vi-hue + [3] vi-sgn + [4] vi-sgn + [5] vi-sgn [2] zhy [5] zhy [44] zh [35] zh envelope/vi_5amp [5] vi - [5] vi-hue envelope/vi_6amp [6] vi [2] vi-hue + [5] vi-hue [6] vi-hue g2/xg [g#] hi g/g [g] base @@ -592,7 +600,6 @@ n/n@ [n] base [n#] is [n] zh n/n#_ [n#] is - [n] vi n^/n^a [n^] base [n;] lt [n#] ru @@ -655,6 +662,7 @@ n/no [n] base [n] zh n/_nr [n.] base n/nr_ [n.] base + [n] vi n/nr@ [n.] base n/nra [n.] base n/nre [n.] base @@ -1005,6 +1013,7 @@ ustop/t_dnt [t] base [t] hr ustop/t_dnt2 [t] base2 [d] kn + [t] es ustop/t_hi [t[] base [t] et [t^] et @@ -1080,7 +1089,6 @@ ustop/t_unasp2 [t] el [t] zh vdiph/0i [OI] pt [OI] grc - [OI] vi vdiph/0i_2 [OI] en-sc [OI] en-wi [AI] no @@ -1301,10 +1309,12 @@ vdiph/@i_2 [eI] af [@I] cy [@Y] cy [@] am +vdiph/&i_2 [aI] vi vdiph/i@_2 [e@] af [e@] tn vdiph/@i_3 [eI] en-wm [@I] ro + [@-] vi [ai] zhy vdiph/ii [iI] ro vdiph/i#i [yI] ro @@ -1330,9 +1340,13 @@ vdiph/ooi [OI] en [oi] mt vdiph/ooi_2 [OI] af [oI] eo + [Oi] vi-hue + [Oi] vi-sgn vdiph/ooi_3 [OI] en-us [OI] en-rp [aI] en-wm + [OI] vi + [Oi] vi vdiph/ooi_4 [OI] sq vdiph/oou [oU] cs [OU] grc @@ -1374,7 +1388,6 @@ vdiph/Vu [@U] af vdiph/Vu_2 [oU] en-wm vdiph/&y [&y] fi [Wy] nl - [aI] vi vdiph/yi [yi] fi [yi] et [yI] grc @@ -1390,7 +1403,7 @@ vdiph/y#y [Yy] fi vdiph/y#y_2 [Yy] af [eoi] zhy vdiph/y#y_3 [Y:] nl -vietnam/a [a:] vi +vietnam/a [a:] vi-sgn vietnam/_c [kh] vi vietnam/ch [c] vi vietnam/dd [d] vi @@ -1422,6 +1435,7 @@ vnasal/i_n [i~] pt vnasal/i_n2 [i~] hi vnasal/&_n [a~] hi vnasal/oi_n [oI~] pt + [O-] vi vnasal/o_n [o~] hi [o~] pt [O~] ht @@ -1436,7 +1450,6 @@ vnasal/&u_n [O#] vi vnasal/u_n [U~] hi [u~] hi [u~] pt - [u] vi [u] zh vnasal/V_n [V~] hi vnasal/W_n [E~] fr @@ -1553,8 +1566,11 @@ vowel/0 [0] en [O] hi [O] pt [O] grc + [O] vi-hue + [O] vi-sgn vowel/0_2 [0] en-n [O] pt-pt + [O] vi [o] sw [O] sl [o] nso @@ -1726,6 +1742,7 @@ vowel/a_7 [a] fr [a] ht vowel/a_8 [a] en [a] sk + [a:] vi [A] da [?A] da vowel/aa [a:] et @@ -1749,7 +1766,6 @@ vowel/aa_3 [A:] af [A] sq [A] prs vowel/aa_4 [A:] sv - [O] vi vowel/aa_5 [A:] en-n [A@] en-n [A:] en-wm @@ -1883,6 +1899,7 @@ vowel/ee_5 [E] en [E] ko vowel/ee_6 [&] sk [E3] sv + [&] tr [E] ku [&] si [&:] si @@ -2158,6 +2175,7 @@ vowel/o [o] base2 [o] pt-pt [o] grc [o:] sv + [o] vi [o] id [o] hy [o] rw @@ -2174,7 +2192,6 @@ vowel/o_2 [o:] cy [o:] hu [o:] la [o:] no - [o] vi [o] da [?o] da vowel/o-_2 [V] en-n @@ -2184,7 +2201,8 @@ vowel/o_3 [oU] en-sc vowel/o-_3 [U] en-rp vowel/o-_4 [o] ro [o] am -vowel/o_5 [O] da +vowel/o_5 [o] vi-sgn + [O] da [?O] da vowel/o_6 [O] nl [O:] nl @@ -2335,12 +2353,15 @@ vowel/u_2 [u1] fi [u] am [u] wo vowel/u#_2 [u-] sv +vowel/u_3 [u-] vi vowel/u#_3 [U] ta [U:] ta vowel/u#_4 [U] en-sc [u:] en-sc [y] ml + [y] vi-sgn vowel/u_5 [U1] et + [u] vi [u] sw [u] nso [u] az diff --git a/phsource/ph_spanish b/phsource/ph_spanish index 702dd86e..775b89f9 100644 --- a/phsource/ph_spanish +++ b/phsource/ph_spanish @@ -6,44 +6,44 @@ phoneme a vowel starttype #a endtype #a - length 180 + length 200 FMT(vowel/a_4) endphoneme phoneme e vowel starttype #e endtype #e - length 190 + length 200 FMT(vowel/e_mid2) endphoneme phoneme E vowel starttype #e endtype #e - length 190 + length 200 FMT(vowel/e_mid2) endphoneme phoneme i vowel starttype #i endtype #i - length 170 + length 190 IfNextVowelAppend(;) FMT(vowel/i) endphoneme phoneme o vowel starttype #o endtype #o - length 190 + length 200 FMT(vowel/oo) endphoneme phoneme O vowel starttype #o endtype #o - length 190 + length 200 FMT(vowel/oo) endphoneme phoneme u vowel starttype #u endtype #u - length 180 + length 200 FMT(vowel/u_bck2) endphoneme @@ -107,10 +107,25 @@ phoneme D voicingswitch T CALL base/D IF nextPh(isPause2) THEN - FMT(voc/dh_) addWav(vocw/dh, 40) // weaker + FMT(voc/dh_) addWav(vocw/dh, 35) // weaker ENDIF endphoneme +phoneme t // dental variant of /t/ + vls dnt stop + voicingswitch d[ + lengthmod 2 + Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 + Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 + + IF nextPh(isPause2) THEN + WAV(ustop/t_dnt2, 35) + ENDIF + WAV(ustop/t_dnt2, 70) + +endphoneme + + phoneme s vls alv frc sibilant diff --git a/phsource/ph_turkish b/phsource/ph_turkish index 596401fd..424d6ce5 100644 --- a/phsource/ph_turkish +++ b/phsource/ph_turkish @@ -2,7 +2,7 @@ phoneme i vowel starttype #i endtype #i - length 150 + length 180 IF thisPh(isTranslationGiven) THEN // don't reduce the vowel if phonemes are explicitly given ELSE @@ -18,14 +18,14 @@ endphoneme phoneme I vowel starttype #i endtype #i - length 150 + length 180 FMT(vowel/ii_5) endphoneme phoneme y vowel starttype #u endtype #u - length 155 + length 180 IF thisPh(isTranslationGiven) THEN // don't reduce the vowel if phonemes are explicitly given ELSE @@ -41,7 +41,7 @@ endphoneme phoneme Y vowel starttype #u endtype #u - length 155 + length 180 FMT(vowel/u#) endphoneme @@ -49,10 +49,16 @@ endphoneme phoneme e vowel starttype #e endtype #e - length 180 + length 200 IF thisPh(isTranslationGiven) THEN // don't reduce the vowel if phonemes are explicitly given ELSE + IF nextPh(isWordEnd) OR next2PhW(isNotVowel) THEN + IF nextPh(isRhotic) OR nextPh(isNasal) OR nextPh(l) OR nextPh(L) THEN + ChangePhoneme(&) + ENDIF + ENDIF + IF thisPh(isFinalVowel) THEN ChangePhoneme(E) ENDIF @@ -65,21 +71,27 @@ endphoneme phoneme E vowel starttype #e endtype #e - length 180 + length 200 FMT(vowel/e_mid) endphoneme +phoneme & + vowel starttype #a endtype #a + length 200 + FMT(vowel/ee_6) +endphoneme + phoneme W vowel starttype #@ endtype #@ - length 180 + length 200 FMT(vowel/y#) endphoneme phoneme a vowel starttype #a endtype #a - length 190 + length 200 FMT(vowel/a#_4) endphoneme @@ -87,7 +99,7 @@ endphoneme phoneme u vowel starttype #u endtype #u - length 150 + length 180 IF thisPh(isTranslationGiven) THEN // don't reduce the vowel if phonemes are explicitly given ELSE @@ -103,7 +115,7 @@ endphoneme phoneme U vowel starttype #u endtype #u - length 150 + length 180 FMT(vowel/uu_2) endphoneme @@ -111,7 +123,7 @@ endphoneme phoneme @ vowel starttype #@ endtype #@ ipa ɯ - length 150 + length 180 FMT(vowel/u#_7) endphoneme @@ -119,7 +131,7 @@ endphoneme phoneme o vowel starttype #o endtype #o - length 190 + length 200 IF thisPh(isTranslationGiven) THEN // don't reduce the vowel if phonemes are explicitly given ELSE @@ -135,7 +147,7 @@ endphoneme phoneme O vowel starttype #o endtype #o - length 190 + length 200 FMT(vowel/oo) endphoneme @@ -179,12 +191,20 @@ phoneme J endphoneme -phoneme l -import_phoneme en/l -endphoneme - phoneme G import_phoneme en/r/ lengthmod 7 endphoneme + +phoneme R + vcd alv flp rhotic + IF prevPhW(isVowel) AND nextPhW(isVowel) THEN + CALL base/* +// ELIF prevPhW(isNotVowel) THEN +// CALL base/R + ELSE + CALL base/r + ENDIF + ipa ɾ +endphoneme diff --git a/phsource/ph_vietnam b/phsource/ph_vietnam index 52a9e567..95ddc9c6 100755 --- a/phsource/ph_vietnam +++ b/phsource/ph_vietnam @@ -18,13 +18,13 @@ endphoneme phoneme 3 // sắc Tone(rising stress - Tone(25, 50, envelope/p_rise, NULL) // 25 + Tone(30, 60, envelope/p_rise, NULL) // 25 50 endphoneme phoneme 4 // hỏi Tone(curve (dipping rising) stress - Tone(30, 5, envelope/p_fallrise, NULL) + Tone(40, 5, envelope/p_fallrise, NULL) //30 endphoneme @@ -54,33 +54,33 @@ endphoneme phoneme a vowel starttype #@ endtype #@ - length 120 + length 140 FMT(vowel/a_6) //a_4) endphoneme phoneme a: vowel starttype #a endtype #a - length 200 //280 - FMT(vietnam/a) //FMT(vowel/a_6) + length 240 //280 + FMT(vowel/a_8) endphoneme phoneme E vowel starttype #e endtype #e - length 200 + length 240 FMT(vowel/ee_3) endphoneme phoneme e vowel starttype #e endtype #e - length 200 + length 140 FMT(vowel/e) endphoneme phoneme i vowel starttype #i endtype #i - length 190 + length 240 IfNextVowelAppend(;) IF prevPhW(w) THEN VowelStart(w/wi) @@ -100,7 +100,7 @@ phoneme O ELSE length 200 ENDIF - FMT(vowel/aa_4) + FMT(vowel/0_2) //aa_4) endphoneme phoneme o @@ -110,7 +110,7 @@ phoneme o ELSE length 200 ENDIF - FMT(vowel/o_2) + FMT(vowel/o) // o_2) endphoneme @@ -119,9 +119,9 @@ phoneme u IF nextPh(kh) OR nextPh(N) THEN // hear as ung sound length 120 ELSE - length 200 + length 240 ENDIF - FMT(vnasal/u_n) //vowel/u_7) + FMT(vowel/u_5) endphoneme phoneme y @@ -129,7 +129,7 @@ phoneme y IF nextPh(kh) OR nextPh(N) THEN length 120 ELSE - length 200 + length 180 ENDIF FMT(vowel/u#_5) endphoneme @@ -138,10 +138,10 @@ endphoneme phoneme @ vowel starttype #@ endtype #a - IF nextPh(kh) OR nextPh(N) THEN + IF nextPh(kh) OR nextPh(N) OR nextPh(n^) OR nextPh(c) THEN length 120 ELSE - length 170 + length 200 ENDIF FMT(vowel/V) //vowel/@_2) endphoneme @@ -149,7 +149,7 @@ endphoneme phoneme @: vowel starttype #@ endtype #@ - length 280 + length 200 FMT(vowel/@_2) endphoneme @@ -160,8 +160,8 @@ endphoneme phoneme aI vowel starttype #a endtype #i - length 200 //250 - FMT(vdiph/&y) + length 140 //250 + FMT(vdiph/&i_2) endphoneme @@ -188,14 +188,14 @@ endphoneme phoneme eI vowel starttype #e endtype #i - length 200 + length 140 FMT(vdiph/ei) endphoneme phoneme EI vowel starttype #e endtype #i - length 200 + length 140 FMT(vdiph/eei) endphoneme @@ -203,7 +203,7 @@ endphoneme phoneme OI vowel starttype #o endtype #i length 200 - FMT(vdiph/0i) + FMT(vdiph/ooi_3) endphoneme @@ -231,14 +231,14 @@ endphoneme phoneme aU vowel starttype #a endtype #u - length 210 + length 200 FMT(vdiph/aau_4) endphoneme phoneme a:U vowel starttype #a endtype #u - length 230 //270 + length 200 //270 FMT(vdiph/au) endphoneme @@ -258,19 +258,19 @@ endphoneme phoneme iU vowel starttype #i endtype #u - length 200 + length 140 FMT(vdiph2/iu) endphoneme phoneme @U vowel starttype #@ endtype #u - length 200 + length 140 FMT(vdiph/@u_3) endphoneme phoneme @:U vowel starttype #@ endtype #u - length 270 + length 140 FMT(vdiph/@u) endphoneme @@ -278,19 +278,19 @@ endphoneme phoneme i@ vowel starttype #i endtype #@ - length 240 + length 140 FMT(vdiph2/ii@_3) endphoneme phoneme y@ vowel starttype #i endtype #@ - length 200 + length 140 FMT(vdiph2/y-y#) endphoneme phoneme u@ vowel starttype #u endtype #@ - length 150 //200 + length 100 //200 FMT(vdiph2/uu@) endphoneme @@ -298,39 +298,67 @@ endphoneme phoneme o# // ông vowel starttype #o endtype #o - length 200 + length 140 FMT(vnasal/a#u_n) endphoneme phoneme O# // ong vowel starttype #o endtype #o - length 200 + length 140 FMT(vnasal/&u_n) endphoneme phoneme o@ vowel starttype #o endtype #o - length 160 + length 140 FMT(vdiph2/oa) endphoneme phoneme o& vowel starttype #o endtype #o - length 160 + length 140 FMT(vietnam/oe) endphoneme phoneme iE // iê : viết, giệc vowel starttype #i endtype #e - length 190 + length 140 FMT(vietnam/ie_2) endphoneme +phoneme Oi // oai sound + vowel starttype #o endtype #i + length 140 + FMT(vdiph/ooi_3) +endphoneme + +// Vowel and Dipthong for south dialect + +phoneme O- // ôi southern sound + vowel starttype #o endtype #i + length 150 + FMT(vnasal/oi_n) +endphoneme + +phoneme @- // ơi southern sound + vowel starttype #o endtype #i + length 150 + FMT(vdiph/@i_3) +endphoneme + +phoneme u- // u southern sound + vowel starttype #u endtype #u + length 150 + FMT(vowel/u_3,70) +endphoneme + + + phoneme kh vls vel frc lengthmod 3 - Vowelin f1=0 f2=2300 200 400 f3=200 80 + Vowelin f1=0 f2=2300 200 400 f3=200 80 len=30 Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20 WAV(vietnam/_c,5) //ufric/x, 50) endphoneme @@ -338,11 +366,11 @@ endphoneme phoneme l liquid - lengthmod 7 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=30 + //lengthmod 7 //IF nextPh(isNotVowel) THEN // ChangePhoneme(l/2) //ENDIF - //CALL vowelstart_l FMT(l/l_vi) @@ -352,7 +380,7 @@ phoneme t vls alv stop //voicingswitch d lengthmod 2 - Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=30 Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 WAV(vietnam/th, 50) @@ -362,7 +390,7 @@ phoneme cr vls pla afr sibilant //voicingswitch dZ lengthmod 2 - Vowelin f1=0 f2=2300 200 400 f3=-100 80 + Vowelin f1=0 f2=2300 200 400 f3=-100 80 len=30 WAV(vietnam/tr,10) @@ -370,10 +398,10 @@ endphoneme phoneme d vcd alv stop - lengthmod 5 + // lengthmod 5 - Vowelin f1=1 f2=1700 -300 300 f3=-100 80 - Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk + Vowelin f1=1 f2=1700 -300 300 f3=-100 80 len=30 + Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk len=30 WAV(vietnam/dd) endphoneme @@ -381,9 +409,9 @@ WAV(vietnam/dd) vls pal stop palatal //voicingswitch J lengthmod 2 - length 75 - Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 - Vowelout f1=1 f2=2700 400 600 f3=200 70 len=50 colr=1 + length 2 + Vowelin f1=0 f2=2700 400 600 f3=300 80 len=30 brk + Vowelout f1=1 f2=2700 400 600 f3=200 70 len=30 colr=1 WAV(vietnam/ch,5) @@ -402,18 +430,20 @@ endphoneme phoneme n vcd alv nasal - Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 - Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk + Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 brk len=30 + Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk len=30 lengthmod 4 -FMT(n/n#_) + length 75 +FMT(n/nr_) endphoneme phoneme t[ // dental variant of /t/ vls dnt stop voicingswitch d[ lengthmod 2 - Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 - Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 + length 5 + Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 len=30 + Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 len=30 IF nextPh(isPause2) THEN WAV(ustop/t_unasp2, 5) diff --git a/phsource/ph_vietnam_hue b/phsource/ph_vietnam_hue index 373364b0..ee843f33 100644 --- a/phsource/ph_vietnam_hue +++ b/phsource/ph_vietnam_hue @@ -6,31 +6,31 @@ phoneme 1 // ngang tone: level stress - Tone(30, 2, envelope/p_level, NULL) // similar Hue dialect tone + Tone(40, 5, envelope/p_level, NULL) // similar Hue dialect tone endphoneme phoneme 2 // huyền tone: low falling stress - Tone(20, 25, envelope/p_fall,envelope/vi_6amp) // NULL) //20 8 + Tone(20, 25, envelope/p_fall,envelope/vi_6amp) // NULL) //20 25 endphoneme phoneme 3 // sắc Tone(rising stress - Tone(2, 10, envelope/p_rise, NULL) // 25 50 45 75 + Tone(2, 10, envelope/p_fallrise, NULL) // 2 10 endphoneme phoneme 4 // hỏi Tone(curve (dipping rising) stress - Tone(20, 5, envelope/p_512,NULL) //Tone(55, 5, envelope/p_fallrise, NULL) //30 5 m 55 5 + Tone(5, 10, envelope/p_512,NULL) //20 5 endphoneme phoneme 5 // ngã tone: broken (creaking rising) stress - Tone(50,2, envelope/p_214, envelope/vi_5amp) // 28,58 m20 85 + Tone(10, 15, envelope/p_512, envelope/vi_6amp) // 40 20 endphoneme @@ -46,4 +46,41 @@ phoneme 7 // Tone(1 (ngang) at end of clause Tone(5, 40, envelope/p_level, NULL) //Tone(99, 50, envelope/p_fall, NULL) // 40 20 endphoneme +// Redefine the length of vowels +phoneme i + CALL vi/i + length 150 +endphoneme + +phoneme E + CALL vi/E + length 150 +endphoneme + +phoneme a: + CALL vi/a: + length 150 +endphoneme + +phoneme @ + CALL vi/@ + length 150 +endphoneme + +phoneme @: + CALL vi/@: + length 150 +endphoneme + +phoneme O + CALL vi/O + length 150 + FMT(vowel/0) +endphoneme + +phoneme Oi + CALL vi/Oi + length 100 + FMT(vdiph/ooi_2) +endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index a1d86ca6..17dc1543 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1830,6 +1830,9 @@ include ph_vietnam phonemetable vi-hue vi include ph_vietnam_hue +phonemetable vi-sgn vi +include ph_vietnam_sgn + phonemetable zhy base include ph_zh_yue diff --git a/phsource/ustop/t_hi.wav b/phsource/ustop/t_hi.wav index c60bbcc177ffa50da9b2dd986a96ae5a115f72f7..635ac6dd83af40a1f680582ff89ec7595a1cced7 100755 GIT binary patch literal 1464 zcmb_ceN0zn6n^f#Klq^#LO_ZMXbwZ5#E(?Kh9F=iA3_7>2n!PWqGgPh*mAPgSo32# zY;A5aRx_h)!^LW~`H^CC6AF>=BflnuL1G~RzaRI#@96>NTw8zmNB8XBd*1t=^PF?u z^PHRibY^C=4^Wg^m{IY1_1qu;2IY}LApHQ9>NxEl+#j=^B6!4W}rphmToD*8(4!=vR#s-Kw9Ojd?i1LS0acT zfTQw??3D8|8@AYTSx(3=azsWX8q1J?`HU0`E&d3FSHc-HgzM)p6T#HO@CSFos0;lU z!XvTpCr%uEFeKTSgCZnh8`cu*S*{AovI~V1`T4$h}jv?-w83mR@m~{T-gyu*_$+ zODL-l$g^F{Gl|0!SP4JYQ;0rEr{2S;3o#<`cpmGxj>ahCOegX@{4Ku{=eD?6n=eng zN9G~|f3go>GpmnT#gEiZQ~!arbjoq&IKcXQH8|y6Kz})@SDtHc2Q{KsYhcP z_Mi{pMynBN#+Wt6X1pdX`cv&Ticz71^*-IFkLeNTBQ4Gb=csc@HK>~^S-q=V>Sa4d zWvZ3-_sXq`RghYt(p0y-KsBmzwN?2$I~*5%-;z*slU3)l$h|*sFtl<;Q*hCP7k&Nx z4+fm^yD+WRz1a7%Uy|>TvCAjgJcv5`tY_nxcerW9_8b^(8H*lUH~PhRlBdQq=&AH> zupje;j%PUaDi0;*msW>0WO>Xc>jS@H-xqzd-C|v_-gmVb)kc%cF_xOwjRO6Std?Ba zE$8$a6=J*X81K+{yxrq{Q=L?|?0&mleW+Ygq|2NV{jR(o$jCP1&1~bi z)n(;b9?NBAAk;i!q!^`UKY2ON*ozA3C6|LS(?~-O`xeU?OED_33qeK;hVhA6Wd>XI z)@EzH)o4|j+sq4QnOS3Y7<V!lPOHVK1E-i2VQgE*`G4?=XHv%G-!k>pGil+a<%CT9J8XJRh%+ggSW_bRaox4O V_ntzzzvn%#yV`$+WP$&~^$%Z5=N13} literal 1878 zcmeHH3sY5P6kXpr=Uze(kwi4DQKk{YN;Ae+Lz;??4@6NAMNJelOU-B2_!cI|ckd}R zO~@Xan4&3TVdhXUk|-!@YEp(~kWqS*doTB{mi~;Ud*4`Jc2&B53y*4DDy22b1n^+@hU&W zQOv-nT*B`;0JAX-spyU>c0vzCp_VOhi5B9}0Tn#X60T$wuhXSkx3pIBJ6%6AKrfr4 z8CoM0J<$>U5rb$nk;19rKJMi)AO)>}H*sW-*1mIGPskXDT1$ zqm1Jle23Yb&;Cr*$y%=B050WXPF3DE&gKSwDXjOzZM6{hisd05WUkgiY;BIb)<11JI&e__SID7Fs&POX%BAv*dUKIGguI$lIFemBjP3al)7ej6cjGus+B}`5 z$no`jiIX{kN$SvGCMcpO9Ep_4TB5kijk)A_nOQpVoeW%F&-EZ`Qc`^2T- z-n`WDA5ErP6MdI)Yk1ifou$mt4oq7CSWpFqZBK#0eSccM{onxxQsdk^|TPh zI4gwnIE|L(B(9?pf8iVKFjeLQRk4Isj1=>}>0#1UaR5#t#>AWUx+~DpM4A}$10s|e zVLF*^rXEAgG&A1ZG83$PYl>ZI|80-6pSKp9%c#XvyV7bD-b7Pwj+s`fkzr0D)vOcG zDq-g#2_<^B&#UVzOf5#K&N%a`>0ok9gmu-pt({gkyUM-n z(bHnW+T?`qitH7Y95J*-P56?qsECZPJMLGSdEDb&?Jy{?-`}P2u=iTii@q`b?Y?c^ zvw=jvc7Bh)D3I-oZHi|~u-25>4bDyHhI7KsaH2y?+`C;1LqeT0JIz^TTAIh5nP#Ku zY}NKKhjyk(vP12i*3b4T%WLYb`PQ@Mwl&-uYGvCy6gk&A zV%Ax8_QUo_`;xuJuCQ}m87{wTxqG5J(Y@ZC>B@E$xe{H;uB}d*wZ|&AJ@(6rUTBV^ Ni{8@zfB$U<{snFkyFmZ| diff --git a/phsource/vdiph/ooi b/phsource/vdiph/ooi index b7837cce96b37ddda184f4df92c7fb45d86df07f..37a7fbbe6c9ae318070cfd46528ccb8ec82701f0 100644 GIT binary patch delta 16 YcmX@@bJ}Oac`@b>3=EquiB<9g071|O+5i9m delta 16 YcmX@@bJ}Oac`@cS9EO`OiB<9g06`80&j0`b diff --git a/phsource/vdiph/ooi_2 b/phsource/vdiph/ooi_2 index 0edfae5806158f4204387c893b0c41661f4c5ba7..7398a2bf2355444542106229c99e9285c3f71dc8 100644 GIT binary patch delta 35 jcmeylg!$(Z<_$mQiZDQc1M?c&LNIeDBgpVPs%nVKm{3V94fU;6aEmFf`aZNH;KpM7{vkfN+ET#IrV=1%oFE F0|3ie9Tflo delta 108 zcmZ2{mT~b}#tr5{j6D+#L?`HW+gkuN|sAlzVIA*VL+g5_qx;7P&&Qi&Y= diff --git a/phsource/vdiph/ooi_4 b/phsource/vdiph/ooi_4 index c0b8bb973ba4fbb3cccdb41982c69c352131a331..2b15dcb2edfb0832cba51e95b9a8822685b99297 100644 GIT binary patch delta 1800 zcmbuAPe>F|9LK-!&8pMP>`dmOxGN$^%hEwX!Nf&(H(82=D3nr*u!9g5fh8mexlzzX zb5r|Y7T84$BDM~qfuK-9m+WHF!9$0<=w-ca*l(P1{;VRE18-*d@`m?5@B91y=6B<* z<6`s4cw@9Ujq+II>l{=L% zEooe#trzS0Hg!(eq)4Gydc?;}h5|l~5Ks9^cnLQco(q@pTIecjCBka^|3*9IoF;8I-9aUC`VT|85knqytg#S9TM#?RPI!EV@O^1>3)XK+jR`P20DXZQOC|4$2POKxTp2@T4=rwR4Q0#W1M$Cq&692)84cUZnN1}oc zp~4l3QK1{7u1M6&7f|ntL`GReMsY?WtW~mbRwO6}&PeFxq&wjZfKK}Nkx0#HEkeHs zG5xd6>m8!|Zd;Bt@Vgjevp!gk+!uP0&YjJ#vm9xld=!*^d6CP5IZiRy+g8Bb!+$k^}c~1}tE}8+4@+6W3kzwb}CiR&5fHx2MwX~KI z@Orr$WfJo34X!IMv8E&(5E(VbQYsXC4sck!;g9MNTMQ9Y$M*!$RMc*Csf~?~bRbtP zFCzR2I;rJx{>sFd6mFs~59qYKsF26;Spw`Wt|`;_Nrh!AGirogQk@ELP V`NOCdx22<+BEE-od@DU9`~fzeNuvM& delta 1146 zcmZvbNlX)A9L3-FeF8&gIt8f$qKUCazhP$Di?^3AY2SPQ-vO4hC- z)pC*c(G>as9;(`1)J1#QF5G5KbLzMbiY=(OjL2hTjLf!1V3W>H>o{8*>5|9dwRiCF z8BR}}t|@IzcT-&ho@`xz%?xL+UvNIR*So>@)BnBraQTVKo2#nS;y8shnjt*&el)~Y z))5U+EY?Otypsl^AqM5gh=l-RA%OpdPy>luwaW399$qx;v3#<*8F*$ z=(W4+T5V3QW$i$aPYt+>&51{O^)h-2edL=RyzY6{imCXg$t7Hu@xi$*pOUnSZ>3il zmG(@Z;iKG4?#L%avwD}~#0*o%s>f&-I3`@nvUV;=%v)42b173V&sxjc?;(`f$+uoX zyU|U4+5eF3Y&rWL`tTd*9*0P{~-?Z*?d&#G3y8ea7#wm*1eAUPc4oE~PifE!K&) z1fYT6AYUB73k#sxO-K*$fnQ$JLvlIUDeD?ov97{tYW?zhJU_>;zpIbZ_}EO&3cUrz z;QWNuisH!WfY`@w;uiNS$w9+Ma| z#1{sPJ`4to3_=Zz51_vI&U%DFf{lUiALBnph%cf!|1zj>I&eP#s)6}JlYxhqffpfC zE#Sh$z|X*i5CPdeUDAOWBm(w@BhV`h48LR!AcTM-^1d3%YD{oNjQD)9c^}IXh&NC@ zq0i`v=7~?N2hltc&v^^Y6Ek^@(LB*35KPDujNqt1_XH>^i1x%O4ji6v!|=owG*2XP z9zpZOQeJyBPb?RhfZ+){4wRSxdBTo^B2Qf7>0oAjFi~F`n5xjzlpdoahEL|B`6Pw& zD4I{!@H(RTq*5RY!zXBI3VU=oaF7rkj|8Au!;u3ugX=O{G3bJ`A1s5vW$j~l%Zi-A tLpZlFgrH>b9lU-FJ5VzCKmL!5|M*ceII!42&ft)&K}iPR{7$5Z830VM-s}JX delta 754 zcmaE2^1y&2IKb68B-k}@B8OA`2?hp+cTDe?j2HtMj2IahzA%1aWM#X@z{9(+wuUlzJHAW7^6A=GN^Dyaz6ly_ws5o@bEJ5g4oppE=&yk3|t^K&?gMjB|Vs7>|Zh$ zplo?x4P`YZkhrOGi$RiumhYnQtc36BOY+v2m{ciju4nCM&VV^VpV1TUgiovo;ZBI> zyaji{OkQKS6M6)KiEsh~1I!7V&u}h5w#^O6wk>emk~ojRZClD~54UZ(zyu`Q>^Kk} zw&Or}7|Aw0z7A&QtGl8n8j5Ej!dZ{e5y{&5aBEXIkHW28!|MpQwo)Jq$y!|D?7#u{ z@>&LJIn!Nt;e`Nf}k4Q#@ hlGjC5YeQ}aPM?LLDY2K5lQYZmT#8R@W*3iT1_0TD#7qDH diff --git a/phsource/vowel/u#_7 b/phsource/vowel/u#_7 index aaba5ebff7c73777132cc9076ef09e44ca43a560..2680d256aad9765bec71ccf8dd97516841b7c6a7 100644 GIT binary patch delta 276 zcmZqDY0?o64sdl22@W)3VPIe=RgO1jWr*D$JRD8;H%?`UZULcB%m7YjIKcn_ delta 276 zcmZqDY0?o64sdl22@W)3VPIe=RgO1jWr*4+JfFp)fpZ#D7gHoqG?HO9qbS1(Mh6iS zrhkl4K#?ehEvyL)H&_}(O_-)I^#DbB7(Q~IVMyR?;Mx3&MGIB;JPh3%S!2+2KjSoH v1nc(UMAJPVL-z*O2sGWdICCMo*YTq1p2sMK;qq`a-QPHsA-V;GJ~0CTKQKW$ diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 7a4df03b..eafd6ce4 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -909,7 +909,13 @@ int Unpronouncable(Translator *tr, char *word, int posn) if(count==0) c1 = c; - count++; + + if((c == '\'') && (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 3)) + { + // don't count apostrophe + } + else + count++; if(IsVowel(tr, c)) { diff --git a/src/extras.cpp b/src/extras.cpp index 7fb5c348..d9da8bdb 100644 --- a/src/extras.cpp +++ b/src/extras.cpp @@ -2272,6 +2272,67 @@ void Test2() #endif +#define MAX_WALPHA 0x24f +void Make_walpha_tab() +{//=================== + int ix; + int value; + int c; + short exceptions[40]; + int ex = 0; + FILE *f; + + f = fopen("/home/jsd1/walpha_tab.txt","w"); + for(ix=0x80; ix<=MAX_WALPHA; ix++) + { + value = 0; + if(iswalpha(ix)) + { + value = 0xfe; // no case + if(iswlower(ix)) + { + value = 0xff; + } + else if(iswupper(ix)) + { + c = towlower(ix); + if(c > 0) + value = c - ix; + + if((value < 0) || (value > 0xfc)) + { + exceptions[ex] = ix; + exceptions[ex+1] = c; + ex+=2; + value = 0xfd; + } + } + + } + + if(value > 0xfc) + fprintf(f," 0x%.2x,", value); + else + fprintf(f," %4d,", value); + + + if((ix % 16) == 15) + { + fprintf(f," // %.3x\n", ix & 0xfff0); + } + + } + + fprintf(f, "\nstatic const short wchar_tolower[] = {\n"); + exceptions[ex] = 0; + exceptions[ex+1] = 0; + for(ix=0; ix<=ex; ix+=2) + { + fprintf(f,"\t0x%.3x, 0x%.3x,\n", exceptions[ix], exceptions[ix+1]); + } + fprintf(f, "};\n"); + fclose(f); +} const char* text1 = "Hello world. Testing."; @@ -2319,9 +2380,16 @@ if(control==2) espeak_SetSynthCallback(TestSynthCallback); espeak_SetUriCallback(TestUriCallback); - espeak_SetVoiceByName("en"); + voice.languages = "fr"; + espeak_SetVoiceByProperties(&voice); +// espeak_SetVoiceByName("fr"); + espeak_Synth("1", 5, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)user_data); + +// voice.languages = "en"; +// espeak_SetVoiceByProperties(&voice); + espeak_SetVoiceByName("de"); espeak_Synth(textbuf, strlen(textbuf)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)user_data); -// espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)(user_data+1)); +// espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)(user_data+1)); espeak_SetParameter(espeakPUNCTUATION, 1, 0); espeak_Synchronize(); diff --git a/src/menus.cpp b/src/menus.cpp index 8f69539f..603097d8 100644 --- a/src/menus.cpp +++ b/src/menus.cpp @@ -119,7 +119,7 @@ wxMenuBar *MakeMenu(int type, const char *dict_name) option_menu = new wxMenu; option_menu->Append(MENU_PATHS, _("Set &paths"), paths_menu); option_menu->Append(MENU_OPT_SPEED, _("Speed...")); - option_menu->Append(MENU_OPT_PUNCT, _("Speak punctiation")); + option_menu->Append(MENU_OPT_PUNCT, _("Speak punctuation")); option_menu->Append(MENU_OPT_SPELL, _("Speak character names")); // TOOLS diff --git a/src/readclause.cpp b/src/readclause.cpp index d8c5f0c3..6da87e36 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -213,50 +213,74 @@ const int param_defaults[N_SPEECH_PARAM] = { 0, // voice type }; -#ifdef NEED_WCHAR_FUNCTIONS -// additional Latin characters beyond the Latin1 character set -#define MAX_WALPHA 0x233 -// indexed by character - 0x100 -// 0=not alphabetic, 0xff=lower case, 0xfe=special case +// additional Latin characters beyond the ascii character set +#define MAX_WALPHA 0x24f +// indexed by character - 0x80 +// 0=not alphabetic, 0xff=lower case, 0xfe=no case, 0xfd=use wchar_tolower // other=value to add to upper case to convert to lower case -static unsigned char walpha_tab[MAX_WALPHA-0xff] = { - 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 100 - 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 110 - 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 120 - 0xfe,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1, // 130 - 0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, // 140 - 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 150 - 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 160 - 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, // 170 - 0xff, 210, 1,0xff, 1,0xff, 206, 1,0xff, 205, 205, 1,0xff,0xff, 79, 202, // 180 - 203, 1,0xff, 205, 207,0xff, 211, 209, 1,0xff,0xff,0xff, 211, 213,0xff, 214, // 190 - 1,0xff, 1,0xff, 1,0xff, 218, 1,0xff, 218,0xff,0xff, 1,0xff, 218, 1, // 1a0 - 0xff, 217, 217, 1,0xff, 1,0xff, 219, 1,0xff,0xff,0xff, 1,0xff,0xff,0xff, // 1b0 - 0xff,0xff,0xff,0xff, 2, 1,0xff, 2, 1,0xff, 2, 1,0xff, 1,0xff, 1, // 1c0 - 0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, // 1d0 - 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1e0 - 0xff, 2, 1,0xff, 1,0xff,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1f0 - 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 200 - 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 210 - 0xff, 0, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 220 - 1,0xff, 1,0xff }; // 230 +static unsigned char walpha_tab[MAX_WALPHA-0x7f] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 080 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 090 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xfe, 0, 0, 0, 0, 0, // 0a0 + 0, 0, 0, 0, 0, 0xff, 0, 0, 0, 0, 0xfe, 0, 0, 0, 0, 0, // 0b0 + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // 0c0 + 32, 32, 32, 32, 32, 32, 32, 0, 32, 32, 32, 32, 32, 32, 32, 0xff, // 0d0 + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0e0 + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0f0 + 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 100 + 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 110 + 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 120 + 0xfd, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, 1, // 130 + 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, // 140 + 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 150 + 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 160 + 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xfd, 1, 0xff, 1, 0xff, 1, 0xff, 0xff, // 170 + 0xff, 210, 1, 0xff, 1, 0xff, 206, 1, 0xff, 205, 205, 1, 0xff, 0xfe, 79, 202, // 180 + 203, 1, 0xff, 205, 207, 0xff, 211, 209, 1, 0xff, 0xff, 0xfe, 211, 213, 0xff, 214, // 190 + 1, 0xff, 1, 0xff, 1, 0xff, 218, 1, 0xff, 218, 0xfe, 0xfe, 1, 0xff, 218, 1, // 1a0 + 0xff, 217, 217, 1, 0xff, 1, 0xff, 219, 1, 0xff, 0xfe, 0xfe, 1, 0xff, 0xfe, 0xff, // 1b0 + 0xfe, 0xfe, 0xfe, 0xfe, 2, 0xff, 0xff, 2, 0xff, 0xff, 2, 0xff, 0xff, 1, 0xff, 1, // 1c0 + 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 0xff, 1, 0xff, // 1d0 + 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 1e0 + 0xfe, 2, 0xff, 0xff, 1, 0xff, 0xfd, 0xfd, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 1f0 + 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 200 + 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 210 + 0xfd, 0xfe, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, // 220 + 1, 0xff, 1, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd, 1, 0xff, 0xfd, 0xfd, 0xfe, // 230 + 0xfe, 1, 0xff, 0xfd, 69, 71, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff, 1, 0xff}; // 240 + +static const short wchar_tolower[] = { + 0x130, 0x069, + 0x178, 0x0ff, + 0x1f6, 0x195, + 0x1f7, 0x1bf, + 0x220, 0x19e, + 0x23a, 0x2c65, + 0x23d, 0x19a, + 0x23e, 0x2c66, + 0x243, 0x180, + 0x000, 0x000, +}; + + +#ifdef NEED_WCHAR_FUNCTIONS // use ctype.h functions for Latin1 (character < 0x100) int iswalpha(int c) { - if(c < 0x100) + if(c < 0x80) return(isalpha(c)); if((c > 0x3040) && (c <= 0xa700)) return(1); // japanese, chinese characters if(c > MAX_WALPHA) return(0); - return(walpha_tab[c-0x100]); + return(walpha_tab[c-0x80]); } int iswdigit(int c) { - if(c < 0x100) + if(c < 0x80) return(isdigit(c)); return(0); } @@ -271,50 +295,63 @@ int iswalnum(int c) int towlower(int c) { int x; - if(c < 0x100) + int ix; + + if(c < 0x80) return(tolower(c)); - if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x100])==0xff)) - return(c); // already lower case - if(x == 0xfe) + + if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x80]) >= 0xfe)) + return(c); + + if(x == 0xfd) { - // special cases - if(c == 0x130) // uppercase i-dot - return('i'); + // special cases, lookup translation table + for(ix=0; wchar_tolower[ix] != 0; ix+=2) + { + if(wchar_tolower[ix] == c) + return(wchar_tolower[ix+1]); + } } return(c + x); // convert to lower case } int towupper(int c) { - // check whether the previous character code is the upper-case equivalent of this character - if(tolower(c-1) == c) - return(c-1); // yes, use it + // check whether a previous character code is the upper-case equivalent of this character + if(towlower(c-32) == c) + return(c-32); // yes, use it + if(towlower(c-1) == c) + return(c-1); + if(towlower(c-2) == c) + return(c-2); return(c); // no } int iswupper(int c) { int x; - if(c < 0x100) + if(c < 0x80) return(isupper(c)); - if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x100])==0) || (x == 0xff)) + if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x80])==0) || (x == 0xff)) return(0); return(1); } int iswlower(int c) { - if(c < 0x100) + if(c < 0x80) return(islower(c)); - if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff)) + if((c > MAX_WALPHA) || (walpha_tab[c-0x80] != 0xff)) return(0); return(1); } int iswspace(int c) { - if(c < 0x100) + if(c < 0x80) return(isspace(c)); + if(c == 0xa0) + return(1); return(0); } @@ -366,8 +403,26 @@ float wcstod(const wchar_t *str, wchar_t **tailptr) } #endif + +// use internal data for iswalpha up to U+024F +// iswalpha() on Windows is unreliable (U+AA, U+BA). +int iswalpha2(int c) +{ + if(c < 0x80) + return(isalpha(c)); + if((c > 0x3040) && (c <= 0xa700)) + return(1); // japanese, chinese characters + if(c > MAX_WALPHA) + return(iswalpha(c)); + return(walpha_tab[c-0x80]); +} + + int towlower2(unsigned int c) { + int x; + int ix; + // check for non-standard upper to lower case conversions if(c == 'I') { @@ -376,11 +431,26 @@ int towlower2(unsigned int c) c = 0x131; // I -> ı } } -#ifdef __WIN32__ - if(c == 0x130) // uppercase i-dot - return('i'); -#endif - return(towlower(c)); + + if(c < 0x80) + return(tolower(c)); + + if(c > MAX_WALPHA) + return(towlower(c)); + + if((x = walpha_tab[c-0x80]) >= 0xfe) + return(c); // this is not an upper case letter + + if(x == 0xfd) + { + // special cases, lookup translation table + for(ix=0; wchar_tolower[ix] != 0; ix+=2) + { + if(wchar_tolower[ix] == (int)c) + return(wchar_tolower[ix+1]); + } + } + return(c + x); // convert to lower case } diff --git a/src/synthdata.cpp b/src/synthdata.cpp index e3298728..e41eebe6 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.47.06 15.Apr.13"; +const char *version_string = "1.47.07a 23.Apr.13"; const int version_phdata = 0x014701; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 6621f999..55cc8adf 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -844,6 +844,7 @@ Translator *SelectTranslator(const char *name) tr->langopts.stress_rule = STRESSPOSN_1L; tr->langopts.numbers = 1; tr->langopts.accents = 2; // 'capital' after letter name + tr->langopts.param[LOPT_UNPRONOUNCABLE] = 3; // don't count apostrophe } break; diff --git a/src/translate.cpp b/src/translate.cpp index 2e876cd1..bea234d9 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -384,9 +384,12 @@ int IsAlpha(unsigned int c) 0 }; - if(iswalpha(c)) + if(iswalpha2(c)) return(1); + if(c < 0x300) + return(0); + if((c >= 0x901) && (c <= 0xdf7)) { // Indic scripts: Devanagari, Tamil, etc @@ -2957,7 +2960,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre if(UpperCaseInWord(tr, &sbuf[ix], c) == 1) { // convert to lower case and continue - c = towlower(c); + c = towlower2(c); } else { diff --git a/src/translate.h b/src/translate.h index 41868de4..6fcf8410 100644 --- a/src/translate.h +++ b/src/translate.h @@ -713,6 +713,7 @@ int IsDigit(unsigned int c); int IsDigit09(unsigned int c); int IsAlpha(unsigned int c); int IsVowel(Translator *tr, int c); +int iswalpha2(int c); int isspace2(unsigned int c); int towlower2(unsigned int c); void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa); diff --git a/src/voices.cpp b/src/voices.cpp index 7f4ea608..2cade50a 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -601,7 +601,7 @@ voice_t *LoadVoice(const char *vname, int control) // which directory to look for a named voice. List of voice names, must end in a space. static const char *voices_asia = - "bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue zh zh-yue "; + "bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn zh zh-yue "; static const char *voices_europe = "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";