TranslateChar() can now substitute a character by two replacement characters. Lang=cs, more difference between long and short vowels, less length differnence beteeen stressed and unstressed syllables. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@7 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @@ -980,6 +980,7 @@ iconbar aIk0nbA@ | |||
| imagine I2madZI2n | |||
| impedance I2mpi:d@ns | |||
| imperative I2mpEr@tIv | |||
| impi $1 | |||
| imprecise I2mprIs'aIs | |||
| inappropriate ,Ina2proUpri@t | |||
| incense Ins'Ens $verb | |||
| @@ -1461,6 +1462,7 @@ rearm ri:'A@m | |||
| rebel rI2bEl $verb | |||
| recall ri:kO:l | |||
| recall $2 $verb | |||
| recalled rI2kO:ld | |||
| recess ri:sEs | |||
| recipe rEsIpi: | |||
| reciprocal rI2sIpr@k@L | |||
| @@ -1558,7 +1560,6 @@ saline seIlaIn | |||
| san ,san | |||
| sardine $2 | |||
| satan seIt@n | |||
| satellite sat@laIt | |||
| saucepan sO:sp@n | |||
| saudi saUdI2 | |||
| says sEz | |||
| @@ -1906,6 +1907,7 @@ Cheadle tSi:d@L | |||
| Cheshire tSES3 | |||
| Chiswick tSIzIk | |||
| Dolgellau d0lg'EClaI | |||
| Dover doUv3 | |||
| Dumfries dVmfr'i:s | |||
| Dyfed d'VvId | |||
| Edinburgh EdInb%Vr@ | |||
| @@ -2436,6 +2438,7 @@ might ,maIt $verbf $strend2 $only | |||
| (might have to) ,maIth'avt@5 $verbf $atend | |||
| have %hav $pastf $only | |||
| haves havz | |||
| (have been) %hav%bIn $pastf | |||
| (have to) havtU $atend | |||
| has %ha2z $pastf $only | |||
| @@ -967,6 +967,7 @@ | |||
| _it_separ) ate (_ @t | |||
| par) ates (_ eIt|s | |||
| @) ated (++_ eItId | |||
| _s) atel (l at@ | |||
| @) ati (_ 'A:tI | |||
| at (im_ 'eIt | |||
| @) ating (++_ eItIN | |||
| @@ -2603,6 +2604,7 @@ | |||
| ise (_ aIz | |||
| iser (_ aIz3 | |||
| @) ism (_$3de Iz@m | |||
| an) ism (_$3d Iz@m | |||
| @iB) ism (_$3d Iz@m | |||
| is (er+_ aIz | |||
| iz (er_ aIz | |||
| @@ -3682,6 +3684,7 @@ | |||
| ch) or (d O@ | |||
| l) or (d O@ | |||
| _m) or O@ | |||
| _m) orr 0r | |||
| _m) ore o@ | |||
| nd) or (_ 3 | |||
| nt) or (_ o@ | |||
| @@ -5040,8 +5043,8 @@ | |||
| 'll (_$3 @L | |||
| .group 0xce | |||
| // $group (++ _^_EL | |||
| .group 0xce // Greek letters | |||
| // 0xce is the first byte of the utf-8 code for these characters | |||
| α 'alf@_ | |||
| ά 'alf@_ | |||
| @@ -5063,8 +5066,7 @@ | |||
| ξ ks'aI_ | |||
| ο oUm'aIkr0n_ | |||
| .group 0xcf | |||
| // $group (++ _^_EL | |||
| .group 0xcf // Greek letters | |||
| π p'aI_ | |||
| ρ r'oU_ | |||
| @@ -123,6 +123,11 @@ | |||
| ó o: | |||
| ú u: | |||
| ä _^_DE // use German voice | |||
| ö _^_DE | |||
| ü _^_DE | |||
| ß _^_DE | |||
| $ dol&r | |||
| . totSk& | |||
| @@ -143,3 +148,42 @@ | |||
| = (== | |||
| =) = (= | |||
| ==) = (_ _:: | |||
| .group 0xce // Greek letters | |||
| α alf&_ | |||
| ά alf&_||tonos | |||
| β b'et&_ | |||
| γ g&m&_ | |||
| δ delt&_ | |||
| ε Epsilon | |||
| έ Epsilon||tonos | |||
| ζ zet&_ | |||
| η et&_ | |||
| ή et&_||tonos | |||
| θ txet&_ | |||
| ι jot&_ | |||
| ί jot&_||tonos | |||
| κ k&p&_ | |||
| λ l&md&_ | |||
| μ mi_ | |||
| ν ni_ | |||
| ξ k_si_ | |||
| ο omi_k@-*on_ | |||
| .group 0xcf // Greek letters | |||
| π pi_ | |||
| ρ @-*o_ | |||
| σ sigm&_ | |||
| ς grtSko_||z&vrS@no_||sigm&_ | |||
| τ t&U_ | |||
| υ grtSki_||IpsIlon_ | |||
| ύ grtSki||IpsIlon_||tonos | |||
| φ fi_ | |||
| χ h_i | |||
| ψ pss'I | |||
| ω omeg&_ | |||
| ώ omeg&_||tonos | |||
| ό omi_k@-*on_||tonos | |||
| @@ -1,4 +1,4 @@ | |||
| | |||
| // This file in UTF8 encoded | |||
| // Options | |||
| @@ -93,32 +93,32 @@ _¿ ,iNtex,ogas,&U~,iNvertS'id& | |||
| _5 s'iNku | |||
| ?1_6 s'eIS | |||
| ?2_6 s'eIs | |||
| ?1_7 s'Et | |||
| ?1_7 s'Ety | |||
| ?2_7 s'EtSi | |||
| _8 'oItu | |||
| ?1_9 n'Ov | |||
| ?1_9 n'Ovy | |||
| ?2_9 n'Ovi | |||
| ?1_10 d'ES | |||
| ?2_10 d'Ez | |||
| ?1_11 'oNz | |||
| ?1_11 'oNzy | |||
| ?2_11 'oNzi | |||
| ?1_12 d'oz | |||
| ?1_12 d'ozy | |||
| ?2_12 d'ozi | |||
| ?1_13 t:r'ez | |||
| ?1_13 t:r'ezy | |||
| ?2_13 t@-*'ezi | |||
| ?1_14 k&t'Orz | |||
| ?1_14 k&t'orzy | |||
| ?2_14 kat'Orzi | |||
| ?1_15 k'iNz | |||
| ?1_15 k'iNzy | |||
| ?2_15 k'iNzi | |||
| ?1_16 dyz&s'eiS | |||
| ?2_16 d,ezes'eIs | |||
| ?1_17 dyz&s'Et | |||
| ?1_17 dyz&s'Ety | |||
| ?2_17 d,ezes'EtSi | |||
| ?1_18 dyz'Oitu | |||
| ?2_18 dez'oItu | |||
| ?1_19 dyz&n'Ov | |||
| ?1_19 dyz&n'Ovy | |||
| ?2_19 dezen'Ovi | |||
| ?1_2X v'iNt | |||
| ?1_2X v'iNty | |||
| ?2_2X v'iNtSi | |||
| ?1_3X tr'iNt& | |||
| ?2_3X t@-*'iNt& | |||
| @@ -130,7 +130,8 @@ _5X siNkw'eINt& | |||
| ?1_7X syt'eINt& | |||
| ?2_7X set'eINt& | |||
| _8X oIt'eINt& | |||
| _9X nov'eINt& | |||
| ?1 _9X nuv'eINt& | |||
| ?2 _9X nov'eINt& | |||
| _1C0 s'eIN | |||
| ?1_0C s'eINtuS | |||
| ?2_0C s'eINtuz | |||
| @@ -163,25 +164,42 @@ _0Z3 mil'Ezim& // 1000ths | |||
| // ABBREVIATIONS | |||
| //************** | |||
| aapp $abbrev | |||
| abadv $abbrev | |||
| abc $abbrev | |||
| a.c 'as'e | |||
| adsl $abbrev | |||
| ae $abbrev | |||
| aids $abbrev | |||
| apedv $abbrev | |||
| ?1 apedv ,a,pe,,E,de've | |||
| avc $abbrev | |||
| bios b'i,OS | |||
| d.c d,es'e | |||
| cne $abbrev | |||
| cpu $abbrev | |||
| //?1 cpu ,se,pe'u | |||
| ?1 cpuc ,se,pe,u'se | |||
| cpuc $abbrev | |||
| dpoc $abbrev | |||
| ecg $abbrev | |||
| edp $abbrev | |||
| ?1 etc ,ets'Et:r& | |||
| ?2 etc ,ets'Ete*& | |||
| ?2 (http ://) ag,atete'pe_ | |||
| hiv $abbrev | |||
| (http ://) ag,atete'pe_ | |||
| icc $abbrev | |||
| IEEE $abbrev // Institute of Electrical and Electronics Engineers | |||
| iss $abbrev | |||
| jpeg Z,Ot&p'Eg | |||
| mpeg ,Emp'Eg | |||
| nba $abbrev | |||
| nvda $abbrev | |||
| oms $abbrev | |||
| omt $abbrev | |||
| osi $abbrev | |||
| ?1 sa ,Esj'a | |||
| ?1 sos ,Esj,O'Es | |||
| ue $abbrev | |||
| unts $abbrev | |||
| unts $abbrev | |||
| ?1 usb ,u,Esy'be | |||
| ?2 usb $abbrev | |||
| usb $abbrev | |||
| // articles | |||
| @@ -539,66 +557,114 @@ era 'Er& | |||
| abacaxi abakaSi | |||
| axé aSE | |||
| elixir eliSir | |||
| ?1 fixe fiSe | |||
| ?1 fixe f'iSy | |||
| lixo l'iSu | |||
| roxo x'oSu | |||
| // foreign words | |||
| ?1 alt 'alt | |||
| ?1 bacalhau b,&k&lj'aU | |||
| ?1 caps k'aps | |||
| ctrl k'oNt:r,Ol | |||
| ?1 delete dil'i:t | |||
| ?1 design diz'aIn | |||
| ?1 down d'aUn | |||
| ?1 download d'aUnloUd | |||
| ?1 back _^_EN | |||
| ?1 blind _^_EN | |||
| ?1 braille b:r'aily | |||
| ?1 cancel _^_EN | |||
| ?1 caps _^_EN | |||
| ?1 ctrl k'oNt:r,Ol | |||
| ?2 ctrl k'oNt:r,OU | |||
| ?1 delete _^_EN | |||
| ?1 design _^_EN | |||
| ?1 down _^_EN | |||
| ?1 download _^_EN | |||
| ?1 end _^_EN | |||
| ?1 escape Sk'eIpy | |||
| ?1 eyes w'aIz | |||
| ?1 eyes _^_EN | |||
| ?1 gmail g,em'eIl | |||
| ?1 google g'u:g&l | |||
| hardware h'ardwe@ | |||
| ?1 kernel k'ErnEl | |||
| ?1 hardware _^_EN | |||
| ?2hardware h'ardwe@ | |||
| ?1 home _^_EN | |||
| ?1 hotmail _^_EN | |||
| ?1 install _^_EN | |||
| ?1 kernel k'Ern,El | |||
| ?2 kernel k'ErnEU | |||
| ?1 line l'aIn | |||
| ?1 line _^_EN | |||
| layout l'eI,aUt | |||
| ?1 lock _^_EN | |||
| ?1 mail meIl | |||
| ?1 mail _^_EN | |||
| ?2 mail m'eja | |||
| ?1 menu mEnU | |||
| ?1 menu menu | |||
| ?1 next _^_EN | |||
| ok Ok'eI | |||
| ?1 pause p'au:z | |||
| ?1 page p'eIdZ | |||
| ?1 page _^_EN | |||
| ?1 scanner _^_EN | |||
| ?1 shift S'ift | |||
| ?1 scroll _^_EN | |||
| site s'aIt | |||
| software s'Oftwe@ | |||
| ?1 up _^_EN | |||
| ?1 upload _^_EN | |||
| ?1 space _^_EN | |||
| ?1 sporting sp'Ort,ing | |||
| ?1 tab t'ab | |||
| ?1 up _^_EN | |||
| ?1 upload _^_EN | |||
| ?1 window _^_EN | |||
| ?1 yes j'Es | |||
| ?1 yahoo _^_EN | |||
| ?1 yes _^_EN | |||
| // common person names | |||
| alan 'al@n | |||
| louis _^_FR | |||
| // foreign product names | |||
| ?1 access 'aksEs | |||
| debian d'Ebj&~N | |||
| ?1 access _^_EN | |||
| ?1 adobe &d'Oby | |||
| ?1 debian _^_EN | |||
| ?2 debian d'Ebj&~N | |||
| ?1 excel _^_EN | |||
| ?1 express _^_EN | |||
| espeak isp'i:k | |||
| espeakedit isp'i:k,Ed,it | |||
| firefox f'ai@foks | |||
| ?1 hal hal | |||
| ?1 fedora _^_EN | |||
| ?1 firefox _^_EN | |||
| ?2 firefox f'ai@foks | |||
| ?1 front _^_EN | |||
| ?1 hal _^_EN | |||
| ?1 jaws dZ'au:z | |||
| ?1 linux l,in'uks | |||
| ?2 linux l'inuks | |||
| ?1 live _^_EN | |||
| ?1 maker _^_EN | |||
| ?1 media _^_EN | |||
| ?1 messenger _^_EN | |||
| ?1 microsoft m,ik:r'os,Oft | |||
| ?1 movie _^_EN | |||
| ?1 nero n'E:ru | |||
| ?1 office _^_EN | |||
| openoffice 'opeIN|'Ofis | |||
| ?1 outlook _^_EN | |||
| ?1 paint p'aint | |||
| ?1 player _^_EN | |||
| ?1 point _^_EN | |||
| ?1 power _^_EN | |||
| ?1 product _^_EN | |||
| ?1 Publisher _^_EN | |||
| ?1 reader _^_EN | |||
| ?1 setup _^_EN | |||
| ?1 scout _^_EN // Nero Scout | |||
| ?1 skype _^_EN | |||
| slackware sl'akwe@ | |||
| ?1 smart _^_EN // nero StartSmart | |||
| speak spi:k | |||
| suse z'u:ts@ | |||
| ?1 start _^_EN // nero StartSmart | |||
| ?1 time _^_EN // nero show time | |||
| ubuntu ub'untu | |||
| ?1 unix ,u:n'iks | |||
| ?2 unix j'u:niks | |||
| ?1 windows _^_EN | |||
| ?1 WinRAR _^_EN | |||
| @@ -650,3 +716,4 @@ vogel f'o:g@l | |||
| volkmann f'Olkman | |||
| @@ -1,4 +1,4 @@ | |||
| // translation rules Brazilian | |||
| // translation rules Brazilian | |||
| // This file is UTF-8 encoded | |||
| // Options | |||
| @@ -161,17 +161,17 @@ | |||
| ?1 C) ecç 'E's // eg: selecção, etc... | |||
| ?1 C) e (ã i // leão, panteão, etc. | |||
| ?1 C) e (a i // oceano, etc. | |||
| ?1 _C) e (CACA y //definições. | |||
| ?1 _C) e (CCACAr y // desligar. | |||
| ?1 C) e (CCAC y // eg: deslocamento, etc... | |||
| ?1 _C) e (CKAr y // fechar | |||
| ?1 _C) e (CCACAr y // terminar. | |||
| ?1 _C) e (CACC y // recicla, reciclagem, etc... | |||
| ?1 _f) e (rrament y // ferramenta, ferramentas. | |||
| ?1 _d) e (fini y //definições. | |||
| ?1 _d) e (slig y // desligar. | |||
| ?1 _d) e (sloc y // eg: deslocamento, etc... | |||
| ?1 _f) e (ch y // fechar | |||
| ?1 _t) e (rmin y // terminar. | |||
| ?1 _r) e (cicl y // recicla, reciclagem, etc... | |||
| ?1 _f) e (rramenta y // ferramenta, ferramentas. | |||
| ?1 _p) e (squ y // pesquisar | |||
| ?1 hip) e (r ,E // eg: hiper | |||
| ?1 sup) e (r ,E // super | |||
| ?1 int) e (rC 'E // Interno | |||
| ?1 int) e (rr E // eg: Enterra | |||
| ?1 int) e (rn ,E // Interno | |||
| ?1 n) e (t ,E // eg: net | |||
| ?1 e (l_ ,E // eg: possível, manuel, etc... | |||
| @@ -218,11 +218,11 @@ | |||
| gu (Y g | |||
| ?1 guen (C gw'eIN // aguenta, etc. | |||
| ?1 n) gu (A gw // eg: língua, etc. | |||
| ?1 gu (ém_ g // eg: alguém, ninguém, etc... | |||
| .group h | |||
| ?1 _) h (_ &g'a | |||
| ?2 _) h (_ ag'a | |||
| _) h (_ ag'a | |||
| h // silent | |||
| @@ -319,7 +319,7 @@ | |||
| n n | |||
| n (n | |||
| nh n^ | |||
| ?1 A) nn n //drop “n” in European Portuguese (eg: connosco). | |||
| ?1 A) nn n //drop “n” (eg: connosco). | |||
| .group o | |||
| @@ -341,11 +341,10 @@ | |||
| ?2 ol (K Ow | |||
| ?2 olh olj | |||
| ?1 om (_ 'om | |||
| ?2 om (_ oN | |||
| om (_ oN | |||
| o (ma_ o | |||
| ?1 om (C 'om | |||
| ?2 om (C om | |||
| om (C om | |||
| on (K oN | |||
| o (na_ o | |||
| onh on^ | |||
| @@ -409,7 +408,7 @@ | |||
| ?1 A) que (nA_ ke // pequeno, etc. | |||
| ?1 C) quê (_ ke // porquê, etc. | |||
| ?1 que (l ke // aquele, etc. | |||
| ?1 que (r_ ke // qualquer, etc. | |||
| ?1 que (r_ kE // qualquer, etc. | |||
| ?1 qui ki // quinta, esquilo, etc. | |||
| ?1 _) quind kuind // quindecágono, etc. | |||
| ?1 tran) qui kui // tranquilo, etc. | |||
| @@ -606,3 +605,4 @@ | |||
| @@ -285,7 +285,7 @@ | |||
| .group л | |||
| _) л (_ El^ | |||
| л (_ l^ | |||
| // л (_ l^ // rule removed | |||
| л (Y l^ | |||
| л l | |||
| @@ -8,53 +8,65 @@ | |||
| a (vb A: | |||
| a (vd A: | |||
| a (va a | |||
| a (rt_ A: | |||
| a (rt_ A: | |||
| a (vg A: | |||
| a (r_ a | |||
| a (r_ a | |||
| b) a (r_ A: | |||
| bb) a (r_ a | |||
| p)a (d_ a | |||
| b) a (r_ A: | |||
| bb) a (r_ a | |||
| a (CC a | |||
| a (_ a | |||
| &) a (_ a2 | |||
| a (re_ a | |||
| a (rn A: | |||
| a (rna a | |||
| l) a (rs A: | |||
| a (re_ a | |||
| a (rn A: | |||
| a (rna a | |||
| l) a (rs A: | |||
| k) a (ta ,a | |||
| m) a (j a | |||
| om) a (t A: | |||
| st) a (rt A: | |||
| gr) a (m a | |||
| a (x a | |||
| p) a (nel a | |||
| k) a (n a | |||
| j) a (n a | |||
| r) a (de a | |||
| eg) a (n a | |||
| er) a (d a | |||
| er) a (t a | |||
| d) a (n_ a | |||
| m) a (j a | |||
| om) a (t A: | |||
| _m) a (ter a | |||
| st) a (rt A: | |||
| gr) a (m a | |||
| a (x a | |||
| p) a (nel a | |||
| a (uto a | |||
| k) a (n a | |||
| n) a (d a | |||
| j) a (n a | |||
| r) a (de a | |||
| eg) a (n a | |||
| er) a (d a | |||
| er) a (t a | |||
| d) a (n_ a | |||
| st) a (t_ a | |||
| tot) a (l 'A: | |||
| v) a (ld A: | |||
| v) a (rd A: | |||
| sm) a (rt A: | |||
| r) a (t A: | |||
| s) a (maC a | |||
| ng) a (d a | |||
| m) a (n a | |||
| t) a (t A: | |||
| ent) a (r A: | |||
| a (t_ a | |||
| a (st a | |||
| s) a (s_ a | |||
| s) a (d_ a | |||
| er) a (t_ a | |||
| åg) a (n a | |||
| t) a (n_ a | |||
| el) a (d a | |||
| nn) a (n a | |||
| mell) a (n a | |||
| arbet arbe:t | |||
| v) a (ld A: | |||
| v) a (rd A: | |||
| sm) a (rt A: | |||
| r) a (t A: | |||
| s) a (maC a | |||
| ng) a (d a | |||
| m) a (n a | |||
| t) a (t A: | |||
| ent) a (r A: | |||
| a (t_ a | |||
| ast ast | |||
| s) a (s_ a | |||
| s) a (d_ a | |||
| er) a (t_ a | |||
| åg) a (n a | |||
| t) a (n_ a | |||
| el) a (d a | |||
| nn) a (n a | |||
| mell) a (n a | |||
| _sk) a (d A: | |||
| ansv) a (r A: | |||
| ll) a (de a | |||
| _v) a (nl A: | |||
| d) a (d_ a | |||
| tt) a (C_ a | |||
| dd) a (C_ a | |||
| arbet arbe:t | |||
| .group b | |||
| b b | |||
| @@ -78,7 +90,11 @@ | |||
| .group d | |||
| d d | |||
| d (d | |||
| dagen dA:gEn | |||
| dagen dA:gEn | |||
| disken dIskEn | |||
| djup j'u-p | |||
| djur j'u-r | |||
| dum d8m | |||
| .group e | |||
| e e: | |||
| @@ -91,7 +107,9 @@ | |||
| d) e (lv e: | |||
| d) e (ln e: | |||
| d) e (lt e: | |||
| d) e (bat E | |||
| s) e (kund E | |||
| ch) e (f E: | |||
| e (ta E | |||
| e (x E | |||
| &) e (_ E | |||
| @@ -113,6 +131,9 @@ | |||
| nyh) e (t e: | |||
| r) e (sul E | |||
| r) e (sur E | |||
| r) e (dak E | |||
| v) e (ta e: | |||
| r) e (ta e: | |||
| pr) e (n E | |||
| _) e (tik E | |||
| r) e (ce E | |||
| @@ -140,6 +161,7 @@ espeak _^_EN | |||
| h h | |||
| h (h | |||
| hj j | |||
| hög hY:g | |||
| heading _^_EN | |||
| .group i | |||
| @@ -172,9 +194,9 @@ espeak _^_EN | |||
| _) k (ö S; | |||
| k (öp S; | |||
| karta kA:rta | |||
| kategori katEg,u:ri: | |||
| kalend kal'End | |||
| känsl SEnsl | |||
| kategori katEg,u:ri: | |||
| kalend kal'End | |||
| känsl S;Ensl | |||
| .group l | |||
| l l | |||
| @@ -185,12 +207,17 @@ espeak _^_EN | |||
| .group m | |||
| m m | |||
| m (m | |||
| menu _^_EN | |||
| människ m'EnIsx, | |||
| medlem m'e:dlEm | |||
| maga maga | |||
| menu _^_EN | |||
| människ m'EnIsx, | |||
| medlem m'e:dlEm | |||
| maga maga | |||
| meny mEn'y: | |||
| minimera mIni:m'e:ra2 | |||
| maximera maksi:m'e:ra2 | |||
| motor m'u:tOr | |||
| motorer m'Otu:rEr | |||
| model mOd'El | |||
| musik mu-s'i:k | |||
| .group n | |||
| n n | |||
| @@ -198,7 +225,8 @@ espeak _^_EN | |||
| ng N | |||
| n (k N | |||
| network _^_EN | |||
| normal nOrmA:l | |||
| normal nOrmA:l | |||
| natur n'at'u-r | |||
| .group o | |||
| o u: | |||
| @@ -229,11 +257,14 @@ espeak _^_EN | |||
| och 'Ok | |||
| k) o (ns O | |||
| pr) o (cent O | |||
| p) o (lis O | |||
| p) o (pu O | |||
| .group p | |||
| p p | |||
| p (p | |||
| paket pak'e:t | |||
| parentes par@nt,e:s | |||
| .group q | |||
| q k | |||
| @@ -295,6 +326,7 @@ espeak _^_EN | |||
| u (n 8 | |||
| u (tl u- | |||
| r) u (m_ 8: | |||
| utmärk 'u-tm@rk | |||
| .group v | |||
| v v | |||
| @@ -322,7 +354,8 @@ espeak _^_EN | |||
| å o: | |||
| å (CC O | |||
| tr) å (d 'o: | |||
| v) å (rt 'o: | |||
| v) å (r 'o: | |||
| h) å (r 'o: | |||
| .group ä | |||
| ä E: | |||
| @@ -20,7 +20,7 @@ | |||
| pl 17 102 | |||
| sk 22 117 | |||
| cs 6 118 | |||
| hr 15 121 | |||
| hr 16 121 | |||
| ru 36 119 | |||
| it 28 111 | |||
| es 7 111 | |||
| @@ -460,7 +460,7 @@ | |||
| 1 vowel/oe_4 sv | |||
| 2 vowel/o_mid hu ro | |||
| 8 vowel/oo en_sc de eo es el sv no zh_yue | |||
| 10 vowel/oo_1 en_n en_rp en_wm af fi sk vi | |||
| 11 vowel/oo_1 en_n en_rp en_wm af fi sk hr vi | |||
| 3 vowel/oo_2 en_sc cy cs | |||
| 1 vowel/oo_3 af | |||
| 2 vowel/oo_4 hi pl | |||
| @@ -46,4 +46,6 @@ | |||
| 0 n^ NULL 0 N | |||
| 0 j NULL 0 y | |||
| 0 S NULL 0 sh | |||
| 0 s. NULL 0 sh | |||
| @@ -19,6 +19,7 @@ | |||
| 0 S; NULL 0 C | |||
| 0 sx NULL 0 S | |||
| 0 S NULL 0 rs | |||
| 0 s. NULL 0 rs | |||
| 0 u- NULL 0 }: | |||
| 0 Y: NULL 0 2: | |||
| 0 y NULL 0 Y | |||
| @@ -13,7 +13,7 @@ endphoneme | |||
| phoneme a | |||
| vowel starttype (a) endtype (a) | |||
| length 140 | |||
| length 150 | |||
| formants vowel/a | |||
| reduceto & 4 | |||
| endphoneme | |||
| @@ -35,14 +35,14 @@ endphoneme | |||
| phoneme E | |||
| vowel starttype (e) endtype (e) | |||
| length 130 | |||
| length 140 | |||
| formants vowel/e_mid | |||
| endphoneme | |||
| phoneme e | |||
| vowel starttype (e) endtype (e) | |||
| length 130 | |||
| length 140 | |||
| formants vowel/e | |||
| endphoneme | |||
| @@ -64,6 +64,13 @@ phoneme I | |||
| endphoneme | |||
| phoneme o | |||
| vowel starttype (o) endtype (o) | |||
| length 140 | |||
| formants vowel/oo_1 | |||
| endphoneme | |||
| phoneme u | |||
| vowel starttype (u) endtype (u) | |||
| length 130 | |||
| @@ -1,6 +1,6 @@ | |||
| phoneme e | |||
| vowel starttype (e) endtype (e) | |||
| length 130 | |||
| length 120 | |||
| formants vowel/e_mid | |||
| endphoneme | |||
| @@ -12,7 +12,7 @@ endphoneme | |||
| phoneme o | |||
| vowel starttype (o) endtype (o) | |||
| length 130 | |||
| length 120 | |||
| formants vowel/oo_2 | |||
| endphoneme | |||
| @@ -1,39 +1,39 @@ | |||
| phoneme i | |||
| vowel starttype (i) endtype (i) | |||
| length 120 | |||
| length 110 | |||
| formants vowel/ii_3 | |||
| linkout ; | |||
| endphoneme | |||
| phoneme i: | |||
| vowel starttype (i) endtype (i) | |||
| length 230 | |||
| length 260 | |||
| formants vowel/i_3 | |||
| linkout ; | |||
| endphoneme | |||
| phoneme & | |||
| vowel starttype (e) endtype (e) | |||
| length 130 | |||
| length 120 | |||
| formants vowel/ee_6 | |||
| endphoneme | |||
| phoneme e | |||
| vowel starttype (e) endtype (e) | |||
| length 130 | |||
| length 120 | |||
| formants vowel/e_mid2 | |||
| endphoneme | |||
| phoneme e: | |||
| vowel starttype (e) endtype (e) | |||
| length 280 | |||
| length 290 | |||
| formants vowel/e_mid | |||
| endphoneme | |||
| phoneme a | |||
| vowel starttype (a) endtype (a) | |||
| length 140 | |||
| length 120 | |||
| formants vowel/a | |||
| endphoneme | |||
| @@ -45,19 +45,19 @@ endphoneme | |||
| phoneme o | |||
| vowel starttype (o) endtype (o) | |||
| length 130 | |||
| length 120 | |||
| formants vowel/oo_1 | |||
| endphoneme | |||
| phoneme o: | |||
| vowel starttype (o) endtype (o) | |||
| length 280 | |||
| length 290 | |||
| formants vowel/oo_1 | |||
| endphoneme | |||
| phoneme u | |||
| vowel starttype (u) endtype (u) | |||
| length 130 | |||
| length 110 | |||
| formants vowel/u_2 | |||
| endphoneme | |||
| @@ -1174,7 +1174,6 @@ include ph_swedish | |||
| phonemetable no base | |||
| include ph_norwegian | |||
| phonemetable vi base | |||
| include ph_vi | |||
| @@ -41,7 +41,7 @@ IR 544 1340 2460 616 1190 2450 | |||
| VR 648 1180 2595 640 1140 2460 | |||
| A~ 640 1120 2640 640 1120 2640 | |||
| E~ 672 1660 2624 672 1660 2624 | |||
| O~ 512 880 2624 512 880 2620 | |||
| O~ 480 839 2760 480 839 2780 | |||
| W~ 694 1360 2624 694 1360 2624 | |||
| y: 280 1720 2340 280 1720 2340 | |||
| Y: 448 1520 2420 463 1520 2400 | |||
| @@ -41,7 +41,7 @@ IR 544 1340 2460 616 1190 2450 | |||
| VR 648 1180 2595 640 1140 2460 | |||
| A~ 640 1120 2640 640 1120 2640 | |||
| E~ 672 1660 2624 672 1660 2624 | |||
| O~ 512 880 2624 512 880 2620 | |||
| O~ 480 839 2760 480 839 2780 | |||
| W~ 694 1360 2624 694 1360 2624 | |||
| y: 280 1720 2340 280 1720 2340 | |||
| Y: 448 1520 2420 463 1520 2400 | |||
| @@ -41,7 +41,7 @@ IR 544 1340 2460 616 1190 2450 | |||
| VR 648 1180 2595 640 1140 2460 | |||
| A~ 640 1120 2640 640 1120 2640 | |||
| E~ 672 1660 2624 672 1660 2624 | |||
| O~ 512 880 2624 512 880 2620 | |||
| O~ 480 839 2760 480 839 2780 | |||
| W~ 694 1360 2624 694 1360 2624 | |||
| y: 280 1720 2340 280 1720 2340 | |||
| Y: 448 1520 2420 463 1520 2400 | |||
| @@ -11,7 +11,7 @@ U 407 1500 2160 392 1500 2160 | |||
| a 784 1180 2680 768 1220 2680 | |||
| a2 760 1420 2600 736 1380 2540 | |||
| aa 784 1180 2680 768 1220 2680 | |||
| E 518 1882 2540 581 1810 2540 | |||
| E 518 1920 2540 581 1810 2540 | |||
| I 504 1700 2560 504 1700 2560 | |||
| i 520 2000 2540 520 2000 2540 | |||
| 0 566 890 2641 566 890 2641 | |||
| @@ -41,7 +41,7 @@ IR 544 1340 2460 616 1190 2450 | |||
| VR 648 1180 2595 640 1140 2460 | |||
| A~ 640 1120 2640 640 1120 2640 | |||
| E~ 672 1660 2624 672 1660 2624 | |||
| O~ 512 880 2624 512 880 2620 | |||
| O~ 480 839 2760 480 839 2780 | |||
| W~ 694 1360 2624 694 1360 2624 | |||
| y: 280 1720 2340 280 1720 2340 | |||
| Y: 448 1520 2420 463 1520 2400 | |||
| @@ -41,7 +41,7 @@ IR 544 1340 2460 616 1190 2450 | |||
| VR 648 1180 2595 640 1140 2460 | |||
| A~ 640 1120 2640 640 1120 2640 | |||
| E~ 672 1660 2624 672 1660 2624 | |||
| O~ 512 880 2624 512 880 2620 | |||
| O~ 480 839 2760 480 839 2780 | |||
| W~ 694 1360 2624 694 1360 2624 | |||
| y: 280 1720 2340 280 1720 2340 | |||
| Y: 448 1520 2420 463 1520 2400 | |||
| @@ -41,7 +41,7 @@ IR 544 1340 2460 616 1190 2450 | |||
| VR 648 1180 2595 640 1140 2460 | |||
| A~ 640 1120 2640 640 1120 2640 | |||
| E~ 672 1660 2624 672 1660 2624 | |||
| O~ 512 880 2624 512 880 2620 | |||
| O~ 480 839 2760 480 839 2780 | |||
| W~ 694 1360 2624 694 1360 2624 | |||
| y: 280 1720 2340 280 1720 2340 | |||
| Y: 448 1520 2420 463 1520 2400 | |||
| @@ -12,8 +12,8 @@ u 320 740 2400 320 740 2400 | |||
| u1 344 800 2360 344 800 2360 | |||
| U 368 800 2660 368 800 2660 | |||
| y 280 1720 2340 280 1720 2340 | |||
| ai 664 1040 2800 312 2240 2940 | |||
| &i 744 1540 2500 355 2222 2720 | |||
| ai 688 1064 2806 312 2300 2820 | |||
| &i 744 1540 2500 328 2280 2720 | |||
| oi 545 780 2780 310 2002 2300 | |||
| ei 547 1855 2536 320 2300 2740 | |||
| Yi 448 1520 2420 355 2222 2720 | |||
| @@ -4,16 +4,16 @@ a 925 1342 2700 925 1342 2700 | |||
| e 464 1980 2520 464 1980 2520 | |||
| E 647 1778 2530 647 1778 2530 | |||
| i 280 2280 2820 200 2398 2820 | |||
| o 454 812 2559 432 824 2520 | |||
| O 670 946 2620 630 902 2700 | |||
| o 464 820 2559 440 820 2600 | |||
| O 480 800 2700 480 800 2700 | |||
| u 320 860 2360 320 860 2360 | |||
| y 272 1820 2280 272 1800 2260 | |||
| Y 448 1520 2420 463 1520 2400 | |||
| W 525 1320 2200 525 1320 2200 | |||
| w^i 280 1832 2436 200 2398 2820 | |||
| A~ 640 1120 2640 640 1120 2640 | |||
| A~ 600 1060 2640 600 1060 2640 | |||
| E~ 694 1360 2624 694 1360 2624 | |||
| O~ 512 880 2624 512 880 2620 | |||
| O~ 381 700 2960 381 700 2960 | |||
| W~ 694 1360 2624 694 1360 2624 | |||
| I 280 2280 2820 200 2398 2820 | |||
| U 320 860 2360 320 860 2360 | |||
| @@ -4,16 +4,16 @@ a 925 1342 2700 925 1342 2700 | |||
| e 464 1980 2520 464 1980 2520 | |||
| E 584 1820 2560 584 1820 2560 | |||
| i 280 2280 2820 200 2398 2820 | |||
| o 454 812 2559 432 824 2520 | |||
| O 670 946 2620 630 902 2700 | |||
| o 464 820 2559 440 820 2600 | |||
| O 480 800 2700 480 800 2700 | |||
| u 320 740 2400 320 740 2400 | |||
| y 272 1820 2280 272 1800 2260 | |||
| Y 448 1520 2420 463 1520 2400 | |||
| W 525 1320 2200 525 1320 2200 | |||
| w^i 280 1832 2436 200 2398 2820 | |||
| A~ 640 1120 2640 640 1120 2640 | |||
| A~ 600 1060 2640 600 1060 2640 | |||
| E~ 672 1660 2624 672 1660 2624 | |||
| O~ 512 880 2624 512 880 2620 | |||
| O~ 381 700 2960 381 700 2960 | |||
| W~ 694 1360 2624 694 1360 2624 | |||
| I 384 2030 2610 384 2030 2610 | |||
| U 368 880 2440 368 900 2440 | |||
| @@ -26,5 +26,5 @@ U 368 880 2440 368 900 2440 | |||
| u: 320 740 2400 320 740 2400 | |||
| u2: 320 860 2360 320 860 2360 | |||
| l- 352 1240 3020 352 1200 3020 | |||
| aI 744 1540 2500 355 2222 2720 | |||
| aI 744 1540 2500 328 2280 2720 | |||
| aU 724 1130 2760 472 780 2500 | |||
| @@ -24,3 +24,4 @@ ja 485 1672 2340 795 1122 2580 | |||
| V# 659 1278 2583 659 1278 2583 | |||
| Y 452 1709 2460 452 1709 2460 | |||
| a 925 1320 2700 896 1340 2660 | |||
| a# 658 1408 2460 658 1408 2460 | |||
| @@ -7,7 +7,7 @@ e 464 1980 2520 464 1980 2520 | |||
| i 296 2220 2820 200 2398 2820 | |||
| O 664 1000 2731 664 1020 2731 | |||
| o 512 860 2648 512 860 2648 | |||
| u 392 740 2760 392 720 2760 | |||
| u 392 736 2760 392 736 2760 | |||
| y 448 1520 2420 463 1520 2400 | |||
| @: 686 1280 2595 686 1280 2595 | |||
| aI 672 1460 2430 400 2000 2700 | |||
| @@ -876,6 +876,7 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int | |||
| int final_ph; | |||
| int mnem; | |||
| int post_tonic; | |||
| int opt_length; | |||
| unsigned char vowel_stress[N_WORD_PHONEMES/2]; | |||
| char syllable_type[N_WORD_PHONEMES/2]; | |||
| @@ -1143,19 +1144,20 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int | |||
| tonic = langopts.unstressed_wd2; /* more than one syllable, used secondary stress as the main stress */ | |||
| } | |||
| if(tonic >= 0) | |||
| max_stress = 0; | |||
| max_stress_posn = 0; | |||
| for(v=1; v<vowel_count; v++) | |||
| { | |||
| /* find position of highest stress, and replace it by 'tonic' */ | |||
| max_stress = 0; | |||
| max_stress_posn = 0; | |||
| for(v=1; v<vowel_count; v++) | |||
| if(vowel_stress[v] >= max_stress) | |||
| { | |||
| if(vowel_stress[v] >= max_stress) | |||
| { | |||
| max_stress = vowel_stress[v]; | |||
| max_stress_posn = v; | |||
| } | |||
| max_stress = vowel_stress[v]; | |||
| max_stress_posn = v; | |||
| } | |||
| } | |||
| if(tonic >= 0) | |||
| { | |||
| /* find position of highest stress, and replace it by 'tonic' */ | |||
| /* don't disturb an explicitly set stress by 'unstress-at-end' flag */ | |||
| if((tonic > max_stress) || (max_stress <= 4)) | |||
| @@ -1303,20 +1305,36 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int | |||
| break; | |||
| } | |||
| if(langopts.param[LOPT_IT_LENGTHEN] && (*p == phonLENGTHEN)) | |||
| if(vowel_stress[v] > max_stress) | |||
| { | |||
| max_stress = vowel_stress[v]; | |||
| } | |||
| if((*p == phonLENGTHEN) && ((opt_length = langopts.param[LOPT_IT_LENGTHEN]) != 0)) | |||
| { | |||
| // remove lengthen indicator from non-stressed syllables | |||
| int shorten=0; | |||
| if(opt_length & 0x10) | |||
| { | |||
| // only allow lengthen indicator on the highest stress syllable in the word | |||
| if(v != max_stress_posn) | |||
| shorten = 1; | |||
| } | |||
| else | |||
| if(v_stress < 4) | |||
| { | |||
| // only allow lengthen indicator if stress >= 4. | |||
| shorten = 1; | |||
| } | |||
| if(((opt_length & 0xf)==2) && (v != (vowel_count - 2))) | |||
| shorten = 1; // LANG=Italian, remove lengthen indicator from non-penultimate syllables | |||
| if(shorten) | |||
| p++; | |||
| else | |||
| if((langopts.param[LOPT_IT_LENGTHEN]==2) && (v != (vowel_count - 2))) | |||
| p++; // LANG=Italian, remove lengthen indicator from non-penultimate syllables | |||
| } | |||
| if(vowel_stress[v] > max_stress) | |||
| { | |||
| max_stress = vowel_stress[v]; | |||
| } | |||
| v++; | |||
| } | |||
| @@ -1553,6 +1571,7 @@ void Translator::MatchRule(char *word[], const char *group, char *rule, MatchRec | |||
| int letter_group; | |||
| int distance_right; | |||
| int distance_left; | |||
| int lg_pts; | |||
| MatchRecord match; | |||
| static MatchRecord best; | |||
| @@ -1682,7 +1701,10 @@ void Translator::MatchRule(char *word[], const char *group, char *rule, MatchRec | |||
| letter_group = *rule++ - 'A'; | |||
| if(IsLetter(letter_w,letter_group)) | |||
| { | |||
| match.points += (20-distance_right); | |||
| lg_pts = 20; | |||
| if(letter_group==2) | |||
| lg_pts = 19; // fewer points for C, general consonant | |||
| match.points += (lg_pts-distance_right); | |||
| post_ptr += letter_xbytes; | |||
| } | |||
| else | |||
| @@ -1830,7 +1852,10 @@ void Translator::MatchRule(char *word[], const char *group, char *rule, MatchRec | |||
| letter_group = *rule++ - 'A'; | |||
| if(IsLetter(letter_w,letter_group)) | |||
| { | |||
| match.points += (20-distance_left); | |||
| lg_pts = 20; | |||
| if(letter_group==2) | |||
| lg_pts = 19; // fewer points for C, general consonant | |||
| match.points += (lg_pts-distance_left); | |||
| pre_ptr -= letter_xbytes; | |||
| } | |||
| else | |||
| @@ -267,7 +267,9 @@ static TONE_TABLE tone_table[N_TONE_TABLE] = { | |||
| {PITCHfrise, 38,10, PITCHfrise2, 36,10, // comma, or question | |||
| 20, 25, 34, 20, drops_0, 3, 3, 15, 25, 0}, | |||
| {PITCHdrop, 38, 1, PITCHdrop, 42,25, // exclamation | |||
| // {PITCHdrop, 38, 1, PITCHdrop, 42,25, // exclamation | |||
| // 20, 25, 34, 22, drops_0, 3, 3, 12, 8, 0}, | |||
| {PITCHfall, 30, 5, PITCHfall, 30, 7, // statement | |||
| 20, 25, 34, 22, drops_0, 3, 3, 12, 8, 0}, | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.24.04 08.May.07"; | |||
| const char *version_string = "1.24.06 10.May.07"; | |||
| const int version_phdata = 0x012201; | |||
| int option_device_number = -1; | |||
| @@ -241,8 +241,8 @@ Translator *SelectTranslator(const char *name) | |||
| case L('h','i'): | |||
| { | |||
| static const char dev_consonants2[] = {0x02,0x03,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f}; | |||
| static wchar_t replace_chars_hi[11] = {0x966,0x967,0x968,0x969,0x96a,0x96b,0x96c,0x96d,0x96e,0x96f,0}; // digits 0-9 | |||
| static wchar_t replacement_chars_hi[11] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0}; | |||
| static const wchar_t replace_chars_hi[11] = {0x966,0x967,0x968,0x969,0x96a,0x96b,0x96c,0x96d,0x96e,0x96f,0}; // digits 0-9 | |||
| static const unsigned int replacement_chars_hi[11] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0}; | |||
| static int stress_lengths_hi[8] = {190, 190, 210, 210, 0, 0, 230, 250}; | |||
| static int stress_amps_hi[8] = {17,14, 20,20, 20,24, 24,22 }; | |||
| @@ -269,8 +269,8 @@ Translator *SelectTranslator(const char *name) | |||
| { | |||
| static int stress_amps_hu[8] = {16,16, 20,20, 20,24, 24,22 }; | |||
| static int stress_lengths_hu[8] = {180,150, 200,180, 0,0, 230,270}; | |||
| static wchar_t replace_chars_hu[] = {0xd4,0xf4,0xdb,0xfb,0}; | |||
| static wchar_t replacement_chars_hu[] = {0x150,0x151,0x170,0x171,0}; // allow o,u-circumflex for o,u-double-acute | |||
| static const wchar_t replace_chars_hu[] = {0xd4,0xf4,0xdb,0xfb,0}; | |||
| static const unsigned int replacement_chars_hu[] = {0x150,0x151,0x170,0x171,0}; // allow o,u-circumflex for o,u-double-acute | |||
| tr = new Translator(); | |||
| SetupTranslator(tr,stress_lengths_hu,stress_amps_hu); | |||
| @@ -290,6 +290,26 @@ Translator *SelectTranslator(const char *name) | |||
| } | |||
| break; | |||
| case L('i','s'): // Icelandic | |||
| { | |||
| static int stress_amps_is[] = {16,16, 20,20, 20,24, 24,22 }; | |||
| static int stress_lengths_is[8] = {180,140, 200,200, 0,0, 240,260}; | |||
| static const wchar_t is_L08[] = {'c','f','h','k','p','s','t','x',0xfe,0}; // voiceless conants, including 'þ' | |||
| tr = new Translator(); | |||
| SetupTranslator(tr,stress_lengths_is,stress_amps_is); | |||
| tr->langopts.stress_rule = 1; | |||
| tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11; // remove lengthen indicator from unstressed vowels | |||
| SetLetterBits(tr,4,"kpst"); // Letter group F | |||
| SetLetterBits(tr,3,"jvr"); // Letter group H | |||
| tr->letter_groups[8] = is_L08; | |||
| SetLetterVowel(tr,'y'); | |||
| tr->langopts.numbers = 0xe9; | |||
| tr->langopts.numbers2 = 0x2; | |||
| } | |||
| break; | |||
| case L('i','t'): // Italian | |||
| { | |||
| static int stress_lengths_it[8] = {150, 140, 180, 180, 0, 0, 270, 320}; | |||
| @@ -378,8 +398,8 @@ Translator *SelectTranslator(const char *name) | |||
| { | |||
| static int stress_lengths_ro[8] = {170, 170, 180, 180, 0, 0, 240, 260}; | |||
| static int stress_amps_ro[8] = {15,13, 18,18, 20,22, 22,22 }; | |||
| static wchar_t replace_chars_ro[5] = {0x218,0x219,0x21a,0x21b,0}; | |||
| static wchar_t replacement_chars_ro[5] = {0x15e,0x15f,0x162,0x163,0}; // replace s-comma, t-comma by s-cedilla, t-cedilla | |||
| static const wchar_t replace_chars_ro[5] = {0x218,0x219,0x21a,0x21b,0}; | |||
| static const unsigned int replacement_chars_ro[5] = {0x15e,0x15f,0x162,0x163,0}; // replace s-comma, t-comma by s-cedilla, t-cedilla | |||
| tr = new Translator(); | |||
| SetupTranslator(tr,stress_lengths_ro,stress_amps_ro); | |||
| @@ -403,9 +423,24 @@ Translator *SelectTranslator(const char *name) | |||
| case L('c','s'): // Czech | |||
| case L('h','r'): // Croatian | |||
| { | |||
| static const wchar_t replace_chars_hr[] = | |||
| {0x430,0x431,0x446,0x45b,0x447,0x434,0x452,0x45f, | |||
| 0x435,0x444,0x433,0x445,0x438,0x458,0x43a,0x43b, | |||
| 0x459,0x43c,0x43d,0x45a,0x43e,0x43f,0x440,0x441, | |||
| 0x448,0x442,0x443,0x432,0x437,0x436, | |||
| 0x453,0x455,0x45c,0}; // ѓ ѕ ќ | |||
| static const unsigned int replacement_chars_hr[] = | |||
| {'a','b','c',0x107,0x10d,'d',0x111,'d'+(0x17e<<16), | |||
| 'e','f','g','h','i','j','k','l', | |||
| 'l'+('j'<<16),'m','n','n'+('j'<<16),'o','p','r','s', | |||
| 0x161,'t','u','v','z',0x17e, | |||
| 0x111,'d'+('z'<<16),0x107,0}; | |||
| static int stress_amps_sk[8] = {16,16, 20,20, 20,24, 24,22 }; | |||
| static int stress_lengths_sk[8] = {180,180, 200,180, 0,0, 220,230}; | |||
| static char *sk_voiced = "bdgjlmnrvwzaeiouy"; | |||
| // static int stress_lengths_sk[8] = {180,180, 200,200, 0,0, 210,220}; | |||
| static int stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; | |||
| static char *sk_voiced = "bdgjlmnrvwzaeiouy"; | |||
| tr = new Translator(); | |||
| SetupTranslator(tr,stress_lengths_sk,stress_amps_sk); | |||
| @@ -420,7 +455,12 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.numbers = 0x1c0d + 0x84000; | |||
| if(name2 == L('h','r')) | |||
| { | |||
| tr->langopts.numbers2 = 0xa; // variant numbers before thousands,milliards | |||
| tr->langopts.replace_chars = replace_chars_hr; | |||
| tr->langopts.replacement_chars = replacement_chars_hr; | |||
| } | |||
| if(name2 == L('c','s')) | |||
| tr->langopts.numbers2 = 0x8; // variant numbers before milliards | |||
| @@ -835,8 +875,8 @@ Translator_Afrikaans::Translator_Afrikaans() : Translator() | |||
| } | |||
| int Translator_Afrikaans::TranslateChar(char *ptr, int prev_in, int c, int next_in) | |||
| {//=============================================================================== | |||
| int Translator_Afrikaans::TranslateChar(char *ptr, int prev_in, int c, int next_in, int *insert) | |||
| {//============================================================================================= | |||
| // look for 'n and replace by a special character (unicode: schwa) | |||
| if(!iswalpha(prev_in)) | |||
| @@ -51,7 +51,7 @@ class Translator_Afrikaans: public Translator | |||
| public: | |||
| Translator_Afrikaans(); | |||
| private: | |||
| int TranslateChar(char *ptr, int prev_in, int c, int next_in); | |||
| int TranslateChar(char *ptr, int prev_in, int c, int next_in, int *insert); | |||
| }; // end of class Translator_Afrikaans | |||
| @@ -393,7 +393,7 @@ Translator::Translator() | |||
| SetLetterBits(this,1,"bcdfgjklmnpqstvxz"); // B hard consonants, excluding h,r,w | |||
| SetLetterBits(this,2,"bcdfghjklmnpqrstvwxz"); // C all consonants | |||
| SetLetterBits(this,3,"hlmnr"); // H 'soft' consonants | |||
| SetLetterBits(this,4,"cfhkpqstx"); // F voiceless consonants | |||
| SetLetterBits(this,5,"bdgjlmnrvwyz"); // G voiced | |||
| SetLetterBits(this,6,"eiy"); // Letter group Y, front vowels | |||
| SetLetterBits(this,7,"aeiouy"); // vowels, including y | |||
| @@ -1470,18 +1470,28 @@ static int EmbeddedCommand(unsigned int &source_index) | |||
| int Translator::TranslateChar(char *ptr, int prev_in, int c, int next_in) | |||
| {//====================================================================== | |||
| int Translator::TranslateChar(char *ptr, int prev_in, int c, int next_in, int *insert) | |||
| {//=================================================================================== | |||
| // To allow language specific examination and replacement of characters | |||
| const wchar_t *p; | |||
| unsigned int new_c; | |||
| if(c == 0) return(0); | |||
| if(langopts.replace_chars != NULL) | |||
| { | |||
| // there is a list of character codes to be substituted with alternative codes | |||
| if((p = wcschr(langopts.replace_chars,c)) != NULL) | |||
| { | |||
| return(langopts.replacement_chars[p - langopts.replace_chars]); | |||
| new_c = langopts.replacement_chars[p - langopts.replace_chars]; | |||
| if(new_c & 0xffe00000) | |||
| { | |||
| // there is a second character to be inserted | |||
| *insert = (new_c >> 16); | |||
| new_c &= 0xffff; | |||
| } | |||
| return(new_c); | |||
| } | |||
| } | |||
| return(c); | |||
| @@ -1500,6 +1510,7 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_ | |||
| int prev_out2; | |||
| int prev_in2=0; | |||
| int next_in; | |||
| int char_inserted=0; | |||
| int clause_pause; | |||
| int pre_pause=0; | |||
| int pre_pause_add=0; | |||
| @@ -1626,9 +1637,19 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_ | |||
| utf8_in(&prev_in,&source[source_index-1],1); // prev_in = source[source_index-1]; | |||
| } | |||
| prev_source_index = source_index; | |||
| source_index += utf8_in(&cc,&source[source_index],0); // cc = source[source_index++]; | |||
| c = cc; | |||
| if(char_inserted) | |||
| { | |||
| c = char_inserted; | |||
| char_inserted = 0; | |||
| } | |||
| else | |||
| { | |||
| source_index += utf8_in(&cc,&source[source_index],0); // cc = source[source_index++]; | |||
| c = cc; | |||
| } | |||
| utf8_in(&next_in,&source[source_index],0); | |||
| if((c == CTRL_EMBEDDED) || (c == ctrl_embedded)) | |||
| { | |||
| // start of embedded command in the text | |||
| @@ -1705,7 +1726,9 @@ if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out) | |||
| c = '\''; | |||
| } | |||
| c = TranslateChar(&source[source_index],prev_in,c,next_in); // optional language specific function | |||
| c = TranslateChar(&source[source_index], prev_in,c, next_in, &char_inserted); // optional language specific function | |||
| if(char_inserted) | |||
| next_in = char_inserted; | |||
| if(!IsAlpha(c) && !iswspace(c) && (c != '\'')) | |||
| { | |||
| @@ -212,6 +212,7 @@ extern const int param_defaults[N_SPEECH_PARAM]; | |||
| #define N_LOPTS 12 | |||
| #define LOPT_DIERESES 1 | |||
| // 1=remove [:] from unstressed syllables, 2= remove from unstressed or non-penultimate syllables | |||
| // bit 4=0, if stress < 4, bit 4=1, if not the highest stress in the word | |||
| #define LOPT_IT_LENGTHEN 2 | |||
| // 1=german | |||
| #define LOPT_PREFIXES 3 | |||
| @@ -295,8 +296,8 @@ typedef struct { | |||
| char tone_numbers; | |||
| char ideographs; // treat as separate words | |||
| int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" | |||
| const wchar_t *replace_chars; // characters to be substitutes | |||
| const wchar_t *replacement_chars; // substitutes for replace_chars | |||
| const wchar_t *replace_chars; // characters to be substitutes | |||
| const unsigned int *replacement_chars; // substitutes for replace_chars | |||
| } LANGUAGE_OPTIONS; | |||
| @@ -392,7 +393,7 @@ protected: | |||
| virtual int Unpronouncable(char *word); | |||
| virtual void SetWordStress(char *output, unsigned int dictionary_flags, int tonic, int prev_stress); | |||
| virtual int RemoveEnding(char *word, int end_type, char *word_copy); | |||
| virtual int TranslateChar(char *ptr, int prev_in, int c, int next_in); | |||
| virtual int TranslateChar(char *ptr, int prev_in, int c, int next_in, int *insert); | |||
| virtual int TranslateNumber(char *word1, char *ph_out, unsigned int *flags, int wflags); | |||
| virtual int ChangePhonemes(PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch); | |||
| @@ -48,7 +48,7 @@ MNEM_TAB genders [] = { | |||
| {NULL, 0 }}; | |||
| //int tone_points[10] = {250,140, 1200,110, -1,0, -1,0, -1,0}; | |||
| int tone_points[10] = {600,180, 1200,140, 2000,110, 3000,110, -1,0}; | |||
| int tone_points[10] = {600,170, 1200,135, 2000,110, 3000,110, -1,0}; | |||
| // limit the rate of change for each formant number | |||
| //static int formant_rate_22050[9] = {50, 104, 165, 230, 220, 220, 220, 220, 220}; // values for 22kHz sample rate | |||