Fix lettergroups: Sort items to longest first. Lang en-us: Use rhotic [3] in place of [@] when [r] follows. Voice files: add attribute "fast-test" to experiment with faster talking speeds. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@212 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @@ -1,4 +1,4 @@ | |||
| //maintainer: Willem van der Walt | |||
| //maintainer: Willem van der Walt | |||
| // email: [email protected] | |||
| // tel: +27 12 8413996 | |||
| // Meraka Institute, CSIR | |||
| @@ -313,6 +313,7 @@ david _^_EN | |||
| (da vinci) da||v'intSi | |||
| debora d@bo@ra | |||
| debussy d@bus'i: | |||
| de d@ | |||
| (de la) d@||la $u // de la Rey/de la Bat, etc. | |||
| der d@r | |||
| derick dErik | |||
| @@ -608,7 +609,6 @@ voor $u $strend2 | |||
| // misc unstressed | |||
| de d@ | |||
| dat $u $strend | |||
| te t@ $verbf | |||
| nie $unstressend $verbextend | |||
| @@ -84,8 +84,6 @@ _" uvozovki | |||
| _, tSa:Rka | |||
| _- mi:nus | |||
| _; zdR^edn^i:k | |||
| _= Rovno | |||
| _* hvjezJitSka | |||
| _? otazn^i:k | |||
| __ pottr-Zen^i: | |||
| _` 'obRa:ts,ena:||tS'a:Rka | |||
| @@ -99,14 +97,20 @@ _< menSi: | |||
| _> vjetSi: | |||
| _| sv'isla:||tS'a:Ra | |||
| _: dv'ojtetSka | |||
| % pRotsento | |||
| + plus | |||
| . tetSka $max3 | |||
| * hvjezJitSka $max3 | |||
| = Rovno $max3 | |||
| * hvjezJitSka $max3 | |||
| % pRotsento $max3 | |||
| + plus $max3 | |||
| ! vigR^itSn^i:k $max3 | |||
| € eURo | |||
| @ zavina:tS | |||
| & ampr-sent | |||
| # gR^i:Zek | |||
| / lomeno | |||
| _\ beksleS | |||
| \ beksleS | |||
| ° stupen^ | |||
| × kRa:t | |||
| @@ -631,18 +631,9 @@ _flegma) ti ti | |||
| ü i | |||
| $ dola:R | |||
| ! vigR^itSn^i:k | |||
| . tetSka | |||
| . (. _: | |||
| \.) . | |||
| __) - (_D mi:nus | |||
| A_) - (_D _ | |||
| C_) - (_D _ | |||
| --) - | |||
| * hvj'ezJitSka | |||
| *) * (* | |||
| ** | |||
| **) * (_ _:: | |||
| @@ -15,9 +15,19 @@ | |||
| // spoken when "speak punctuation" option is on. | |||
| _. pUnkt | |||
| _, kOma | |||
| * StE*n $max3 | |||
| % p@-*o:ts'Ent $max3 | |||
| + plUs $max3 | |||
| = glaIC $max3 | |||
| # nUm3 $max3 | |||
| € OY*o: | |||
| £ paUnd | |||
| & Unt | |||
| @ kl'ame:*,af@ | |||
| ~ tIld@ | |||
| \ bEkslES | |||
| _, kOma | |||
| _| paIp | |||
| _: d'Op@lp,UNkt | |||
| _; St@-*'ICpUNkt | |||
| @@ -64,6 +74,13 @@ _rng k@-*'u:Ze:k | |||
| _stk S@-*'Egst@-*IC | |||
| _tld t'Ild@ | |||
| æ $accent | |||
| é $accent | |||
| ç $accent | |||
| č $accent | |||
| š $accent | |||
| ž $accent | |||
| // Not Roman numbers | |||
| v faU | |||
| x Iks | |||
| @@ -1150,24 +1150,5 @@ | |||
| , (D kOma | |||
| $ dOl'A: | |||
| € OY*o: | |||
| £ paUnd | |||
| % p@-*o:ts'Ent | |||
| & Unt | |||
| @ kl'ame:*,af@ | |||
| # nUm3 | |||
| + plUs | |||
| = glaIC | |||
| ~ tIld@ | |||
| \ bEkslES | |||
| . pUnkt | |||
| . (. _: | |||
| \.) . | |||
| * StE*n | |||
| *) * (* | |||
| ** | |||
| **) * (_ _:: | |||
| @@ -20,6 +20,7 @@ Dictionary bn_dict | |||
| & a a: a~ e E e~ i | |||
| I i: i:~ i~ l- o O o: | |||
| O~ o~ r- U u u: u:~ u~ | |||
| V | |||
| * b B bh c C ch d | |||
| d. d.h dh g gh h j J | |||
| @@ -46,10 +47,11 @@ Dictionary cs_dict | |||
| i i: l- o o: oU r- u | |||
| u: | |||
| * ; b c d dZ f g | |||
| h j J k l l^ m n | |||
| N n^ p r R R^ R^/ s | |||
| S t tS ts v x z Z | |||
| * ; b c d dZ dz f | |||
| g h j J k l l^ m | |||
| n N n^ p r R R^ R^/ | |||
| s S t tS ts v x z | |||
| Z | |||
| Dictionary cy_dict | |||
| @@ -180,10 +182,10 @@ Dictionary hbs_dict | |||
| E e e: i I i: l- O | |||
| o o: oU r* r- u U u: | |||
| * ; b d dZ dZ; f g | |||
| h j k l l^ m n N | |||
| n^ p r R R2 s S t | |||
| tS ts tS; v x z Z | |||
| * ; b d dZ dz dZ; f | |||
| g h j k l l^ m n | |||
| N n^ p r R R2 s S | |||
| t tS ts tS; v x z Z | |||
| Dictionary hi_dict | |||
| @@ -323,9 +325,9 @@ i: ie iu o o: u u: ui | |||
| uo | |||
| : b c d dZ f g h | |||
| j J k l l^ m n n^ | |||
| p r R R2 s S t tS | |||
| ts v x z Z | |||
| j J k l l^ m n N | |||
| n^ p r R R2 s S t | |||
| tS ts v z Z | |||
| Dictionary mk_dict | |||
| @@ -334,10 +336,10 @@ Dictionary mk_dict | |||
| e e: i I i: l- o o: | |||
| oU r- u u: | |||
| * b d dZ dZ; f g h | |||
| j k k^ l l^ m n N | |||
| n^ p r R s S t tS | |||
| ts tS; v x z Z | |||
| * b d dZ dz dZ; f g | |||
| h j k k^ l l^ m n | |||
| N n^ p r R s S t | |||
| tS ts tS; v x z Z | |||
| Dictionary ml_dict | |||
| @@ -411,10 +413,10 @@ a E E# E~ i O O~ u | |||
| y | |||
| : ; b c C d d; dZ | |||
| dz; f g h j k l m | |||
| n N n^ p r R s S | |||
| s; S; t t; tS ts ts; tS; | |||
| v w x z Z Z; | |||
| dz dz; f g h j k l | |||
| m n N n^ p r R s | |||
| S s; S; t t; tS ts ts; | |||
| tS; v w x z Z Z; | |||
| Dictionary pt_dict | |||
| @@ -476,10 +478,11 @@ Dictionary sk_dict | |||
| l- l: o o: oU r- r: u | |||
| u: | |||
| * ; b d d; dZ f g | |||
| h j k l l^ m n N | |||
| n^ p r R R^ R^/ s S | |||
| t t; tS ts v x z Z | |||
| * ; b d d; dZ dz f | |||
| g h j k l l^ m n | |||
| N n^ p r R R^ R^/ s | |||
| S t t; tS ts v x z | |||
| Z | |||
| Dictionary sq_dict | |||
| @@ -178,6 +178,8 @@ _‴ trIp@LpraIm | |||
| _‼ Ekskla2m'eIS@nz | |||
| _₠ jU@roU | |||
| @ _at_ | |||
| & _and | |||
| \ bakstroUk $max3 | |||
| / stroUk $max3 | |||
| ?3 \ bakslaS $max3 | |||
| @@ -2279,7 +2281,7 @@ Berlin b3:l'In | |||
| Bhutan bu:t'an | |||
| Bogota b0g@t'A: | |||
| ?3 Boston bOst@n | |||
| Bucharest bu:k@r'Est | |||
| Bucharest bu:ka2r'Est | |||
| Budapest bu:d@p'Est | |||
| Buenos bweIn0s | |||
| Burundi bUr'UndI | |||
| @@ -2308,7 +2310,7 @@ Djibouti dZIb'u:tI | |||
| Egyptian IdZ'IpS@n | |||
| Eire e@r@ | |||
| Geneva dZ@ni:v@ | |||
| Harare h@rA:rI | |||
| Harare ha2rA:rI | |||
| Hanoi han'OI | |||
| Hawaii h@w'aIi: | |||
| Hawai'i h@w'aIi: | |||
| @@ -2327,7 +2329,7 @@ Jakarta $2 | |||
| Jerusalem dZ@ru:s@l@m | |||
| Johannesburg $2 | |||
| Kalgoorlie kalgU@lI | |||
| Karachi k@rA@tSI | |||
| Karachi ka2rA@tSI | |||
| Kentucky $2 | |||
| Kiev ki:Ev | |||
| Khmer kmi@3 | |||
| @@ -2413,7 +2415,7 @@ Taipei t,aIp'eI | |||
| Taiwan taI'wan | |||
| (tel aviv) t,El||a2v'i:v | |||
| Tibet tI2b'Et | |||
| Totonto t@r0ntoU | |||
| Toronto t@r0ntoU | |||
| Timor ti:mo@ | |||
| Tokyo toUkIoU | |||
| Toulouse tu:l'u:z | |||
| @@ -730,6 +730,7 @@ | |||
| r) anged (S1 d | |||
| perm) an @n | |||
| ang (er aNg | |||
| h) ang (er aN | |||
| m) anoeu (v @nu: | |||
| _qu) an 0n | |||
| _w) an 0n | |||
| @@ -3404,7 +3405,9 @@ | |||
| cla) ng (er Ng | |||
| ta) ngi ndZI | |||
| i) ng (er Ng | |||
| bi) ng (er ndZ | |||
| ri) ng (er N | |||
| si) ng (er N | |||
| bi) ng (er ndZ | |||
| gi) ng (er ndZ | |||
| o) ng (er Ng | |||
| you) ng (er Ng | |||
| @@ -5338,8 +5341,6 @@ | |||
| : koUl@n | |||
| D_) : (_DD_ // omit colon in time, eg: 2:30 | |||
| $ d0l3 | |||
| @ at_: | |||
| & _!%and | |||
| != n0ti:kw@Lz | |||
| >= greIt@O@i:kw@L | |||
| <= lEsO@i:kw@L | |||
| @@ -61,14 +61,14 @@ _- dividost@-*eko | |||
| __ subst@-*eko | |||
| ~ tildo | |||
| ° gradoI | |||
| % p@-*otsento | |||
| % p@-*otsento $max3 | |||
| @ _tSe_ | |||
| & kaI | |||
| = egala | |||
| & _kaI | |||
| = egala $max3 | |||
| \ deklivo | |||
| / oblikvo | |||
| | duktosigno | |||
| * asteRisko | |||
| * asteRisko $max3 | |||
| © kopiRaIto | |||
| _( R'ondak@-*'ampo | |||
| _) f'eRmaRondak@-*'ampo | |||
| @@ -67,15 +67,17 @@ _< p'ienempIk'uin | |||
| _> s'u:*empIk'uin | |||
| _- vi:va2 | |||
| __ ala2vi:va2 | |||
| + plus | |||
| + plus $max3 | |||
| * asteriski $max3 | |||
| = 'yht&k'uin $max3 | |||
| % p@-*osent:I $max3 | |||
| / kaut:a2 | |||
| \ keno | |||
| € eu*o | |||
| £ punta2 | |||
| ¤ valu:t:a2 | |||
| & et | |||
| @ &t | |||
| % p@-*osent:I | |||
| & _et | |||
| @ _&t | |||
| ~ tilde | |||
| _acu 'aku:t:I | |||
| @@ -207,13 +207,11 @@ | |||
| .group | |||
| å o | |||
| å o: | |||
| åå o: | |||
| š S | |||
| ž Z | |||
| $ dollarin | |||
| * asteriski | |||
| = 'yht&k'uin | |||
| __) - (_D mi:nus | |||
| A_) - (_D _ | |||
| C_) - (_D _ | |||
| @@ -111,7 +111,6 @@ _# djEz | |||
| _' a2postr'Of | |||
| _( 'uvR@-parA~t'Ez | |||
| _) f'Erm parA~t'Ez | |||
| _* asterisk: | |||
| _, virgyl | |||
| _- tirE | |||
| _. _|pw%E~ | |||
| @@ -142,10 +141,11 @@ _§ sEksj'O~ | |||
| // symbols that are normally spoken when reading text | |||
| @ arobaz | |||
| % pursA~ | |||
| & e $u $brk | |||
| % pursA~ $max3 | |||
| * asterisk: $max3 | |||
| & _e | |||
| _& _e_komErsj'al | |||
| + plys | |||
| + plys $max3 | |||
| ~ tilde | |||
| € @ro | |||
| ¢ sEnt | |||
| @@ -51,7 +51,7 @@ _ú $accent | |||
| _lig l'ig&t,UR& | |||
| _acu 'akUt | |||
| _ac2 dv'ostr**UkI;'akUt | |||
| //_brv | |||
| _brv br**'Ev // ?? | |||
| _ced ts'EdIl& | |||
| _cir ts'iRkUmflEks | |||
| _dia 'uml&Ut | |||
| @@ -71,8 +71,12 @@ _tld t'ild& | |||
| _cap k'apIt&l // ?? use English until I find the correct word | |||
| © 'aUtoRsk&||pr*av& | |||
| % p'osto | |||
| + plus | |||
| * zvj'ezdits& $max3 | |||
| = _j'edn&ko $max3 | |||
| % p'osto $max3 | |||
| + plus $max3 | |||
| . totSk& $max3 | |||
| ?4 . tatSk& $max3 | |||
| € 'euRo | |||
| ?4 € 'evr*o | |||
| @ _'at | |||
| @@ -82,9 +86,9 @@ _tld t'ild& | |||
| ?2 ! 'uzvItSnIk | |||
| : dv'ototSk& | |||
| ?4 : dv'ot&tSk& | |||
| # br*'oj_ | |||
| / kr*'oz_ | |||
| \\ b'EkslES | |||
| # br*'oj_ $max3 | |||
| / kr*'oz_ $max3 | |||
| \ b'EkslES $max3 | |||
| ^ ts'iRkumfleks | |||
| ~ t'ild& | |||
| ¤ v'alut& | |||
| @@ -148,25 +148,10 @@ | |||
| $ d'ol&R | |||
| . totSk& | |||
| ?4 . tatSk& | |||
| . (. _: | |||
| \.) . | |||
| __) - (_D minus | |||
| A_) - (_D _ | |||
| C_) - (_D _ | |||
| --) - | |||
| * zvj'ezdits& | |||
| *) * (* | |||
| ** | |||
| **) * (_ _:: | |||
| = _j'edn&ko | |||
| = (== | |||
| =) = (= | |||
| ==) = (_ _:: | |||
| .group 0xce // Greek letters | |||
| @@ -50,7 +50,7 @@ _lig ligAtu:R2A | |||
| _acu e:lES | |||
| _ac2 kEt:Y:S | |||
| _brv fe:lkYR2 | |||
| //_ced // cedilla | |||
| _ced tse:dillE | |||
| _cir tsiR2kumflEks | |||
| _dia tR2e:mA | |||
| //_dot // dot above | |||
| @@ -343,10 +343,49 @@ ty ce: | |||
| ly Ellipsilon | |||
| ny En^ | |||
| _. pont | |||
| ä $accent | |||
| æ $accent | |||
| ç $accent | |||
| ñ $accent | |||
| ø $accent | |||
| ß _^_DE | |||
| . pont $max3 | |||
| * tS'illAg $max3 | |||
| % sa:zAle:k $max3 | |||
| + plus $max3 | |||
| = EJEnlY:Se:g $max3 | |||
| @ kukAts | |||
| & e:SjEl | |||
| € EuR2o | |||
| ¶ bEkEzde:S | |||
| § pAR2AgR2AfuS | |||
| ~ tildE | |||
| ^ hia:n^ | |||
| ° fokjEl | |||
| Ft foR2int | |||
| _, vEss2Y: | |||
| _; pontoSvEss2Y: | |||
| _: kEt:Y:Spont | |||
| _! fElkia:lto: | |||
| _? ke:R2dY: | |||
| _- kYtY:jEl | |||
| __ Ala:hu:za:S | |||
| _' ApostR2o:f | |||
| _– nAJkYtY: | |||
| _— kviR2tmi:nus | |||
| _" ide:zY: | |||
| _( za:R2o: | |||
| _) za:R2o: | |||
| _[ s'YglEtES||z'a:R2o: | |||
| _] s'YglEtES||z'a:R2o: | |||
| _{ k'AptSoS||z'a:R2o: | |||
| _} k'AptSoS||z'a:R2o: | |||
| _# sa:mjEl | |||
| _… ha:R2_mASpont | |||
| _• di:spont | |||
| _\ viss2ApER2 | |||
| // Main Exceptions List | |||
| //===================== | |||
| @@ -336,19 +336,3 @@ _szára) zs (ág zS | |||
| ç tS | |||
| ñ n^ | |||
| ø Y | |||
| % sa:zAle:k | |||
| @ kukAts | |||
| € EuR2o | |||
| + plus | |||
| § pAR2AgR2AfuS | |||
| . pont | |||
| . (. _: | |||
| \.) . | |||
| * tS'illAg // asterisk | |||
| *) * (* | |||
| ** | |||
| **) * (_ _:: | |||
| @@ -441,7 +441,6 @@ principi $1 | |||
| tesser tess'ER | |||
| uomini $1 | |||
| // $alt = use ò or è in the stressed syllable | |||
| // If the final vowel is omitted, then the rule applies to 'a' 'e' 'i' 'o' | |||
| $textmode | |||
| @@ -174,21 +174,21 @@ _{ n,av;as||klamROvy | |||
| _} pRavy||n,av;as||klamR'Ovy | |||
| _' ap'OstROf | |||
| . kR'Opka | |||
| . kR'Opka $max3 | |||
| ~ t'ylda | |||
| = R'uvna||S;E | |||
| / slES | |||
| * gv;'astka | |||
| \ b'EkslES | |||
| = R'uvna||S;E $max3 | |||
| / slES $max3 | |||
| * gv;'astka $max3 | |||
| \ b'EkslES $max3 | |||
| | kR,Eska||p;On'Ova | |||
| # haS | |||
| # haS $max3 | |||
| _$ d'OlaR | |||
| % pR'OtsEnt | |||
| ^ d'aSEk // what's be better? | |||
| & and | |||
| ` 'aktsEnt | |||
| @ m'awpa | |||
| + plus | |||
| + plus $max3 | |||
| // other characters | |||
| @@ -53,11 +53,11 @@ _ô $accent | |||
| _õ $accent | |||
| _ú $accent | |||
| _ü $accent | |||
| ß _^_DE | |||
| v ve // not Roman numbers | |||
| x Sis# | |||
| _cap maI'uskulU | |||
| _?A l'etR&_ | |||
| _?? s'imbolU_ | |||
| @@ -65,21 +65,31 @@ _#32 esp'asU | |||
| ?1 _#32 Sp'asU | |||
| _#9 tab | |||
| _. p'oNtU | |||
| * &ste*'iskU $max3 | |||
| = __igw'&l_ $max3 | |||
| . p'oNtU $max3 | |||
| + maIs# $max3 | |||
| % pors'eINtU $max3 | |||
| & _'e_ | |||
| @ &x'ob& | |||
| ¤ 'eU*U | |||
| € 'eU*U | |||
| § p&*'agRafU | |||
| _! ,eskl&mas'&U~ | |||
| _" 'asp&s# | |||
| ?1 _# k,ardin'al | |||
| ?2 _# k,ardZin'aU | |||
| _$ s,ifR'&U~ | |||
| _% pors'eINtU | |||
| _& 'e | |||
| ?1 _' ap'Ostr,ofy | |||
| ?2 _' &p'OstRofU | |||
| _( ,abRipa*'eINtezy | |||
| _) f,ES&pa*'eINtezy | |||
| _* &ste*'iskU | |||
| _+ m'aIs# | |||
| _− m'enUs | |||
| _, v'irgul& | |||
| _- 'ifeIN | |||
| @@ -91,7 +101,6 @@ _< men'Or | |||
| ?2 _= igw'aU | |||
| _> maI'Or | |||
| _? ,iNtex,ogas'&U~ | |||
| _@ &x'ob& | |||
| _[ ,abRikowS'etSi | |||
| _\ b,ax&,iNvertS'id& | |||
| _] f,ES&kowS'etSi | |||
| @@ -838,39 +838,17 @@ | |||
| ü u | |||
| ß s | |||
| % pors'eINtU | |||
| $ sifR'&U~ | |||
| _r_) $ | |||
| − m'enUs | |||
| + maIs# | |||
| & 'e | |||
| @ &x'ob& | |||
| ¤ 'eU*U | |||
| € 'eU*U | |||
| § p&*'agRafU | |||
| D_) º %o // ordinal | |||
| D_) ª %a // ordinal | |||
| // don't speak multiple occurances of these symbols | |||
| , (D v'irgul& | |||
| . p'oNtU | |||
| . (. _: | |||
| \.) . | |||
| * &ste*'iskU | |||
| *) * (* | |||
| ** | |||
| **) * (_ _:: | |||
| __) - (_D m'enUs | |||
| A_) - (_D _ | |||
| C_) - (_D _ | |||
| --) - | |||
| = __igw'&l_ | |||
| = (== | |||
| =) = (= | |||
| ==) = (_ _:: | |||
| @@ -46,6 +46,7 @@ z zet | |||
| â ,ydin'a $atend | |||
| ă '@ $atend | |||
| î ,ydin'i $atend | |||
| ö $accent | |||
| _?? ka*akt'er | |||
| _cap maZusk'ul@ | |||
| @@ -69,7 +70,7 @@ _tld t'ild@ | |||
| // punctuation and symbols | |||
| _. punkt | |||
| _, v'irgul@ | |||
| _: do'u@p'unkte | |||
| _; p'unkt||Siv'irgul@ | |||
| @@ -93,9 +94,11 @@ _| b'ar@vertik'al@ | |||
| _#9 t'ab | |||
| _#32 sp'atsiU | |||
| = eg'al | |||
| # dj'ez | |||
| + plus | |||
| . punkt $max3 | |||
| * aste*isk $max3 | |||
| = eg'al $max3 | |||
| # dj'ez $max3 | |||
| + plus $max3 | |||
| & ampersand | |||
| © k'apiraIt | |||
| @ a*'ond | |||
| @@ -104,7 +107,6 @@ _#32 sp'atsiU | |||
| ° g@-*ade | |||
| // numeric | |||
| //******** | |||
| _0 z'e*o | |||
| @@ -180,6 +182,9 @@ _dpt _v'irgul@ | |||
| _0Z2 s'utimi | |||
| _0Z3 m'iImi | |||
| // not Roman numbers | |||
| vi vi | |||
| vii viI | |||
| // Abbreviations | |||
| //************** | |||
| @@ -7,7 +7,8 @@ | |||
| .replace | |||
| ș ş | |||
| ț ţ | |||
| Ș ş // because Windows doesn't convert upper-case Ș Ț to lower-case | |||
| Ț ţ | |||
| .group a | |||
| a a | |||
| @@ -471,19 +472,9 @@ | |||
| , (D v'irgul@ | |||
| . punkt | |||
| . (. _: | |||
| \.) . | |||
| __) - (_D m'inus | |||
| A_) - (_D _ | |||
| C_) - (_D _ | |||
| --) - | |||
| * aste*isk | |||
| *) * (* | |||
| ** | |||
| **) * (_ _:: | |||
| @@ -47,6 +47,8 @@ y ipsilon | |||
| _z zet | |||
| ž Zet | |||
| ě $accent | |||
| // accent names | |||
| _lig l'igat,u:Rov,ane: | |||
| _acu s_d'l:Zn^om | |||
| @@ -72,16 +74,19 @@ _#9 t'ab | |||
| _#32 'medzeRa | |||
| _?A znak | |||
| * hviezda $max3 | |||
| + plus $max3 | |||
| = Rovna:sa $max3 | |||
| @ zavina:tS | |||
| & ampeRsand | |||
| # kRi:Zik $max3 | |||
| _! vi:kRitSn^i:k | |||
| _" u:vodzovki | |||
| _# kRi:Zik | |||
| _$ dola:R | |||
| _& ampeRsand | |||
| _' apostRof | |||
| _( za:tvoRka | |||
| _) zatvoRit; | |||
| _* hviezda | |||
| + plus | |||
| _, tSiaRka | |||
| _- poml-tSka | |||
| __ podtSiaRknutie | |||
| @@ -90,10 +95,8 @@ _/ lomeno | |||
| _: dvojbodka | |||
| _; bodkotSiaRka | |||
| _< menSi: | |||
| _= Rovna:sa | |||
| _> vetSSi: | |||
| _? ota:zn^ik | |||
| _@ zavina:tS | |||
| _[ hRanata:||za:tvoRka | |||
| _\ opatSne:||lomeno | |||
| _] hRanata:||zatvoRit; | |||
| @@ -179,8 +182,15 @@ _2C dv'est'o | |||
| _0M1 t;'isi:ts | |||
| _1M1 t;'isi:ts | |||
| _2M1 dv'et;'isi:ts | |||
| _0M2 m'ilio:n | |||
| _0M3 m'iljaRda | |||
| _0M2 m'ilio:nou // others, 5-9 | |||
| _0MA2 m'ilio:ni // for 2,3,4 million | |||
| _1M2 m'ilio:n // for 1 million | |||
| _0M3 m'iljaRt | |||
| _0MA3 m'iljaRdi | |||
| _1M3 m'iljaRda | |||
| _0M4 b'ilio:nou | |||
| _0MA4 b'ilio:ni | |||
| _1M4 b'ilio:n | |||
| _dpt _:tSj,arka_ | |||
| @@ -44,7 +44,7 @@ _?A haRf | |||
| _acu vURg'UimI | |||
| _ac2 tS'IftvURg'UimI | |||
| _brv ku#s'altmaimI | |||
| _ced tSEnJ'El | |||
| _ced h'aRf | |||
| _cir Sapk'a | |||
| _dia Umla'Ut | |||
| _dot YstnOkt'a | |||
| @@ -75,15 +75,17 @@ _^ IndZ'EltmEiSa*et'I | |||
| _& v'EiSa*et'I | |||
| _* j'u#ldu#z | |||
| _@ kUjRUkl'U'a | |||
| _\\ t'ERs||ej,IktSIzg'I | |||
| _\ t'ERs||ej,IktSIzg'I | |||
| ¶ pa*agR'af | |||
| § tSEnJ'El | |||
| ° de*edZ'E | |||
| _# dij'Ez | |||
| _~ jaklaS'u#k | |||
| __ ,alttSIzg'I | |||
| + aRt'u# | |||
| € avR'O | |||
| = ESIt $max3 | |||
| % jYzdE $max3 | |||
| + aRtu# $max3 | |||
| € avRO | |||
| _0 su#fu#R | |||
| @@ -321,5 +321,5 @@ | |||
| .group | |||
| $ dolar | |||
| ' (Pb % // split a word at ' and translate the first part separately. | |||
| ' (Pb // split a word at ' and translate the first part separately. | |||
| @@ -2,12 +2,12 @@ | |||
| new total | |||
| base 103 103 | |||
| base2 24 122 | |||
| en 51 149 | |||
| en_n 31 149 | |||
| en_us 36 150 | |||
| en 50 149 | |||
| en_n 32 149 | |||
| en_us 37 150 | |||
| en_sc 39 151 | |||
| en_rp 34 149 | |||
| en_wm 30 149 | |||
| en_wm 31 149 | |||
| en_wi 30 149 | |||
| af 39 135 | |||
| cy 29 129 | |||
| @@ -22,12 +22,12 @@ | |||
| hu 23 119 | |||
| lv 29 126 | |||
| nl 28 126 | |||
| pl 19 116 | |||
| sk 28 134 | |||
| cs 6 134 | |||
| hr 26 139 | |||
| mk 3 140 | |||
| sr 14 139 | |||
| pl 20 117 | |||
| sk 28 135 | |||
| cs 6 135 | |||
| hr 26 140 | |||
| mk 3 141 | |||
| sr 14 140 | |||
| ru 39 134 | |||
| it 17 125 | |||
| la 21 121 | |||
| @@ -49,15 +49,15 @@ | |||
| tr 18 127 | |||
| ku 18 127 | |||
| id 15 124 | |||
| sq 35 127 | |||
| hy 24 119 | |||
| rw 15 129 | |||
| ko 18 159 | |||
| da 15 133 | |||
| sq 35 127 | |||
| ml 13 151 | |||
| kn 15 151 | |||
| bn 59 155 | |||
| ne 18 157 | |||
| hy 24 119 | |||
| om 25 125 | |||
| en_klatt 77 149 | |||
| ga 18 117 | |||
| @@ -184,6 +184,7 @@ d/xd [d] base | |||
| [d.h] hi | |||
| [d] hu | |||
| [d] pl | |||
| [dz] pl | |||
| [d] hr | |||
| [d] ru | |||
| [d;] ro | |||
| @@ -192,9 +193,9 @@ d/xd [d] base | |||
| [d] id | |||
| [d] sq | |||
| [dz] sq | |||
| [dz] hy | |||
| [d] bn | |||
| [d.] bn | |||
| [dz] hy | |||
| [d[] ga | |||
| d/xd2 [d`] om | |||
| d/xd3 [dh] hi | |||
| @@ -751,10 +752,12 @@ n/nj [n] base | |||
| [n] da | |||
| n/n_long_ [n] zh | |||
| nn/_nn [N] base | |||
| [N] en | |||
| [N] en_n | |||
| [N] en_wm | |||
| [N] zh | |||
| nn/nn_ [N] base | |||
| [N] en | |||
| [N] en_n | |||
| [N] en_wm | |||
| nn/nn@ [(@)] base | |||
| [(@)] en_klatt | |||
| nn/nn#_ [N#] is | |||
| @@ -945,8 +948,8 @@ ufric/s [s] base | |||
| [z2] fr | |||
| [s] es | |||
| [s#] pt | |||
| [s`] ko | |||
| [z] sq | |||
| [s`] ko | |||
| [s] en_klatt | |||
| ufric/s_ [s] base | |||
| [z] base | |||
| @@ -1103,10 +1106,10 @@ ustop/k_unasp [k] base | |||
| [k] sk | |||
| [k] el | |||
| [k] zhy | |||
| [k`] ko | |||
| [k] sq | |||
| [k] bn | |||
| [k] hy | |||
| [k`] ko | |||
| [k] bn | |||
| ustop/k_unasp_ [k] zh | |||
| ustop/null [?] base | |||
| ustop/p [p] base | |||
| @@ -1119,8 +1122,8 @@ ustop/p_ [p] base | |||
| [p2] fr | |||
| [ph] hi | |||
| [ph] zh | |||
| [ph] bn | |||
| [p#] hy | |||
| [ph] bn | |||
| ustop/p_asp [bh] hi | |||
| [ph] hi | |||
| [p#] hy | |||
| @@ -1138,10 +1141,10 @@ ustop/pl [p] base | |||
| [p] la | |||
| [p;] ro | |||
| [p] sq | |||
| [p] bn | |||
| [ph] bn | |||
| [p] hy | |||
| [p#] hy | |||
| [p] bn | |||
| [ph] bn | |||
| ustop/pr [p] base | |||
| [p] base2 | |||
| [p] fi | |||
| @@ -1151,10 +1154,10 @@ ustop/pr [p] base | |||
| [p] hu | |||
| [p] la | |||
| [p;] ro | |||
| [p] bn | |||
| [ph] bn | |||
| [p] hy | |||
| [p#] hy | |||
| [p] bn | |||
| [ph] bn | |||
| ustop/p_unasp [p] base | |||
| [p] base2 | |||
| [p] fi | |||
| @@ -1166,10 +1169,10 @@ ustop/p_unasp [p] base | |||
| [p] la | |||
| [p;] ro | |||
| [p] zh | |||
| [p`] ko | |||
| [p] sq | |||
| [p] bn | |||
| [p] hy | |||
| [p`] ko | |||
| [p] bn | |||
| ustop/p_unasp_ [p] base2 | |||
| [p] fi | |||
| [p] hi | |||
| @@ -1179,8 +1182,8 @@ ustop/p_unasp_ [p] base2 | |||
| [p] la | |||
| [p;] ro | |||
| [p] sq | |||
| [p] bn | |||
| [p] hy | |||
| [p] bn | |||
| ustop/q [q] base | |||
| ustop/q_u [q] base | |||
| ustop/t [t] base | |||
| @@ -1216,18 +1219,18 @@ ustop/t_dnt [t] base | |||
| [t;] ro | |||
| [t[] vi | |||
| [t] sw | |||
| [t`] ko | |||
| [t] sq | |||
| [t] bn | |||
| [t] hy | |||
| [t`] ko | |||
| [t] bn | |||
| [t[] ga | |||
| ustop/t_dnt2 [t[] vi | |||
| ustop/t_ejc [t`] om | |||
| ustop/t_hi [t] hi | |||
| [t] sq | |||
| [t] hy | |||
| [t] bn | |||
| [th] bn | |||
| [t] hy | |||
| ustop/t_pzd [t;] pl | |||
| [t;] ru | |||
| ustop/tr [t] base | |||
| @@ -1240,6 +1243,7 @@ ustop/ts [ts] base2 | |||
| [ts] eo | |||
| [ts] hu | |||
| [ts] pl | |||
| [dz] pl | |||
| [ts] ru | |||
| [ts;] ro | |||
| [z] zhy | |||
| @@ -1254,6 +1258,7 @@ ustop/ts_ [ts] base2 | |||
| [ts] hu | |||
| [ts] lv | |||
| [ts] pl | |||
| [dz] pl | |||
| [ts] ru | |||
| [ts;] ro | |||
| [ts] sq | |||
| @@ -1289,13 +1294,13 @@ ustop/ts_pzd [tS;] base | |||
| [ch] bn | |||
| ustop/ts_pzd_ [c] hi | |||
| [c] hu | |||
| [c] bn | |||
| [c] hy | |||
| [c] bn | |||
| ustop/ts_pzd2 [c] hi | |||
| [c] hu | |||
| [c] hy | |||
| [c`] ko | |||
| [c] bn | |||
| [c] hy | |||
| ustop/ts_pzd3 [tS;] hr | |||
| [dZ;] hr | |||
| ustop/t_sr [d] sr | |||
| @@ -1406,8 +1411,8 @@ vdiph/ai [aI] base2 | |||
| [aI] pt | |||
| [a:I] vi | |||
| [aI] id | |||
| [aI] kn | |||
| [aI] hy | |||
| [aI] kn | |||
| vdiph/ai_2 [aI] en | |||
| [aI] cy | |||
| [aY] cy | |||
| @@ -1440,8 +1445,8 @@ vdiph/eei [EI] base2 | |||
| [EI] de | |||
| [EI] nl | |||
| [EI] vi | |||
| [eI] ne | |||
| [eI] hy | |||
| [eI] ne | |||
| vdiph/eei_2 [eI] eo | |||
| [ei] fi | |||
| [ei] lv | |||
| @@ -1704,10 +1709,10 @@ vowel/@ [@] base | |||
| [@] en_rp | |||
| [V] cy | |||
| [@4] hi | |||
| [@] hy | |||
| [@] ml | |||
| [@] kn | |||
| [@4] bn | |||
| [@] hy | |||
| [@] ga | |||
| vowel/@- [@-] base | |||
| [r*] hr | |||
| @@ -1726,7 +1731,8 @@ vowel/0 [0] en | |||
| vowel/0_2 [0] en_n | |||
| [O] pt_pt | |||
| [o] sw | |||
| vowel/0_3 [O] en_sc | |||
| vowel/0_3 [O:] en_us | |||
| [O] en_sc | |||
| [0] en_rp | |||
| [A] hu | |||
| vowel/@_2 [@] vi | |||
| @@ -1754,7 +1760,6 @@ vowel/@_4 [@] en_us | |||
| [@] nl | |||
| [@] no | |||
| vowel/@_5 [W] fr | |||
| vowel/@_6 [@/] en_us | |||
| vowel/8 [o-] zh | |||
| vowel/8_2 [U] en_us | |||
| [8] sv | |||
| @@ -1820,8 +1825,8 @@ vowel/a_3 [a] en_sc | |||
| [a:] la | |||
| [a] is | |||
| [A] zh | |||
| [A] da | |||
| [a] sq | |||
| [A] da | |||
| vowel/a#_3 [a2] en | |||
| [a2] en_n | |||
| [a2] en_us | |||
| @@ -1871,8 +1876,7 @@ vowel/aa_2 [A:] en | |||
| [A] zh | |||
| vowel/aa_3 [A:] af | |||
| [A] sq | |||
| vowel/aa_4 [O:] en_us | |||
| [A:] sv | |||
| vowel/aa_4 [A:] sv | |||
| [O] vi | |||
| vowel/aa_5 [A:] en_n | |||
| [A:] en_wm | |||
| @@ -1915,11 +1919,11 @@ vowel/e [e] base2 | |||
| [e] grc | |||
| [e] vi | |||
| [e] id | |||
| [e] sq | |||
| [e] rw | |||
| [e#] rw | |||
| [e] ko | |||
| [e] da | |||
| [e] sq | |||
| [e] ml | |||
| [e:] ml | |||
| [e:] kn | |||
| @@ -1991,9 +1995,9 @@ vowel/e_mid [E] en_rp | |||
| [E] tr | |||
| [E] id | |||
| [E2] id | |||
| [e] hy | |||
| [E] da | |||
| [E] bn | |||
| [e] hy | |||
| vowel/e_mid2 [E] af | |||
| [E] de | |||
| [E2] de | |||
| @@ -2007,8 +2011,8 @@ vowel/e_mid2 [E] af | |||
| [e] el | |||
| [e] sw | |||
| [e] tr | |||
| [E] ko | |||
| [e#] sq | |||
| [E] ko | |||
| [e] kn | |||
| [E] om | |||
| [E#] om | |||
| @@ -2038,13 +2042,13 @@ vowel/i [i] base2 | |||
| [i] zhy | |||
| [i] zh | |||
| [i] sw | |||
| [i] hy | |||
| [i] rw | |||
| [i#] rw | |||
| [i] ko | |||
| [i:] ml | |||
| [i:] kn | |||
| [i] ne | |||
| [i] hy | |||
| [i:] om | |||
| [i:] ga | |||
| vowel/i# [y:] cy | |||
| @@ -2156,6 +2160,8 @@ vowel/@_low [3] en_rp | |||
| [@2] bn | |||
| [V] ne | |||
| [@/] ne | |||
| vowel/@_low2 [@/] en_us | |||
| [@2] en_us | |||
| vowel/o [o] base2 | |||
| [o:] en | |||
| [oU] en_n | |||
| @@ -2172,6 +2178,7 @@ vowel/o [o] base2 | |||
| [o] grc | |||
| [o:] sv | |||
| [o] id | |||
| [o] hy | |||
| [o] rw | |||
| [o#] rw | |||
| [o] ml | |||
| @@ -2179,7 +2186,6 @@ vowel/o [o] base2 | |||
| [o] kn | |||
| [o:] kn | |||
| [o] bn | |||
| [o] hy | |||
| [o:] ga | |||
| vowel/o_2 [o:] cy | |||
| [o2] fr | |||
| @@ -2204,8 +2210,8 @@ vowel/o_7 [o] ku | |||
| vowel/oe [W] en | |||
| [W] af | |||
| [W] de | |||
| [W] da | |||
| [W] hy | |||
| [W] da | |||
| vowel/oe_2 [W] no | |||
| [W] tr | |||
| vowel/oe_4 [W] sv | |||
| @@ -2342,12 +2348,12 @@ vowel/u_bck [u] base2 | |||
| [u] is | |||
| [u] zhy | |||
| [u] zh | |||
| [u] hy | |||
| [u] rw | |||
| [u#] rw | |||
| [u] ko | |||
| [u:] bn | |||
| [u] ne | |||
| [u] hy | |||
| [u:] ga | |||
| vowel/u_bck2 [u:] la | |||
| [u] sq | |||
| @@ -27,18 +27,6 @@ phoneme t2 // [t] which doesn't reduce | |||
| endphoneme | |||
| phoneme N | |||
| vcd vel nasal | |||
| vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk | |||
| length 100 | |||
| formants NULL | |||
| after _ nn/_nn | |||
| before _ nn/nn_ | |||
| lengthmod 8 // longer than 'n' | |||
| linkout g- | |||
| endphoneme | |||
| phoneme l | |||
| liquid | |||
| length 100 | |||
| @@ -1,4 +1,16 @@ | |||
| phoneme N | |||
| vcd vel nasal | |||
| vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk | |||
| length 100 | |||
| formants NULL | |||
| after _ nn/_nn | |||
| before _ nn/nn_ | |||
| lengthmod 8 // longer than 'n' | |||
| linkout g- | |||
| endphoneme | |||
| //******************************************************************* | |||
| // VOWELS | |||
| @@ -1,5 +1,4 @@ | |||
| //******************************************************************* | |||
| // VOWELS | |||
| //******************************************************************* | |||
| @@ -10,7 +9,6 @@ phoneme 3 // Schwa, used for rhotic schwa in American | |||
| formants vwl_en_us/3_us | |||
| unstressed | |||
| linkout r- | |||
| // beforevowel @ | |||
| length 210 | |||
| endphoneme | |||
| @@ -19,16 +17,24 @@ phoneme @ // Schwa | |||
| vowel starttype (@) endtype (@) | |||
| formants vowel/@_4 | |||
| unstressed | |||
| before_r 3 | |||
| length 130 | |||
| endphoneme | |||
| phoneme @/ // Schwa, end of word | |||
| vowel starttype (@) endtype (@) | |||
| formants vowel/@_6 | |||
| formants vowel/@_low2 | |||
| unstressed | |||
| length 130 | |||
| endphoneme | |||
| phoneme @2 // Schwa, changes to I before a vowel | |||
| vowel starttype (@) endtype (@) | |||
| formants vowel/@_low2 | |||
| unstressed | |||
| beforevowel I2 | |||
| length 120 | |||
| endphoneme | |||
| phoneme @L | |||
| vowel starttype (@) endtype l | |||
| @@ -137,7 +143,7 @@ endphoneme | |||
| phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American | |||
| vowel starttype (a) endtype (@) | |||
| length 250 | |||
| length 260 | |||
| formants vwl_en_us/ar | |||
| appendph r | |||
| endphoneme | |||
| @@ -160,12 +166,10 @@ endphoneme | |||
| phoneme O: | |||
| vowel starttype (a) endtype (a) | |||
| vowel starttype (o) endtype (o) | |||
| length 210 | |||
| formants vowel/aa_4 | |||
| // formants vowel/aa_4 | |||
| formants vowel/0_3 | |||
| before r vwl_en_us/oor | |||
| // before r vwl_en_us/or | |||
| reduceto @ 0 | |||
| endphoneme | |||
| @@ -188,7 +192,7 @@ endphoneme | |||
| phoneme O | |||
| vowel starttype (a) endtype (a) | |||
| vowel starttype (o) endtype (o) | |||
| length 200 | |||
| formants vowel/aa# | |||
| reduceto @ 0 | |||
| @@ -1,4 +1,16 @@ | |||
| phoneme N | |||
| vcd vel nasal | |||
| vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk | |||
| length 100 | |||
| formants NULL | |||
| after _ nn/_nn | |||
| before _ nn/nn_ | |||
| lengthmod 8 // longer than 'n' | |||
| linkout g- | |||
| endphoneme | |||
| //******************************************************************* | |||
| // VOWELS | |||
| @@ -138,7 +138,6 @@ phoneme d; | |||
| endphoneme | |||
| phoneme ts | |||
| vls alv afr sibilant | |||
| vowelin f1=0 f2=1700 -300 300 f3=-100 80 | |||
| @@ -146,10 +145,25 @@ phoneme ts | |||
| lengthmod 2 | |||
| wave ustop/ts | |||
| before _ ustop/ts_ | |||
| switchvoicing dz | |||
| endphoneme | |||
| phoneme dz | |||
| vcd alv afr sibilant | |||
| vowelin f1=1 f2=1700 -300 300 f3=-100 80 | |||
| vowelout f1=2 f2=1700 -300 300 f3=-100 80 | |||
| formants d/xd+ustop/ts | |||
| before _ d/xd+ustop/ts_ | |||
| after _ NULL | |||
| after @ d/xd | |||
| lengthmod 5 | |||
| switchvoicing ts | |||
| endphoneme | |||
| phoneme w | |||
| liquid | |||
| length 100 | |||
| @@ -365,6 +365,7 @@ endphoneme | |||
| phoneme r | |||
| liquid starttype #r endtype #r | |||
| rhotic | |||
| length 100 | |||
| lengthmod 7 | |||
| beforenotvowel r/ | |||
| @@ -1324,6 +1325,12 @@ include ph_kurdish | |||
| phonemetable id base2 | |||
| include ph_indonesian | |||
| phonemetable sq base | |||
| include ph_albanian | |||
| phonemetable hy base | |||
| include ph_armenian | |||
| phonemetable rw base2 | |||
| @@ -1335,9 +1342,6 @@ include ph_korean | |||
| phonemetable da is | |||
| include ph_danish | |||
| phonemetable sq base | |||
| include ph_albanian | |||
| phonemetable ml hi | |||
| include ph_malayalam | |||
| @@ -1350,9 +1354,6 @@ include ph_bengali | |||
| phonemetable ne hi | |||
| include ph_nepali | |||
| phonemetable hy base | |||
| include ph_armenian | |||
| phonemetable om base | |||
| include ph_oromo | |||
| @@ -69,6 +69,7 @@ | |||
| #define tBEFORENOTVOWEL 19 | |||
| #define tBEFORENOTVOWEL2 20 | |||
| #define tSWITCHVOICING 21 | |||
| #define tBEFORE_R 22 | |||
| #define tLINKOUT 23 | |||
| #define tVOWELIN 24 | |||
| @@ -83,7 +84,7 @@ | |||
| #define tSTRESSTYPE 32 | |||
| static const int flags_alternative[] = {phBEFOREVOWEL,phBEFOREVOWELPAUSE,phBEFORENOTVOWEL,phBEFORENOTVOWEL2,phSWITCHVOICING}; | |||
| static const int flags_alternative[] = {phBEFOREVOWEL,phBEFOREVOWELPAUSE,phBEFORENOTVOWEL,phBEFORENOTVOWEL2,phSWITCHVOICING,phBEFORE_R}; | |||
| extern void MakeVowelLists(void); | |||
| extern void FindPhonemesUsed(void); | |||
| @@ -243,6 +244,7 @@ static keywtab_t keywords[] = { | |||
| {"beforevowelpause", tBEFOREVOWELPAUSE}, | |||
| {"beforenotvowel",tBEFORENOTVOWEL}, | |||
| {"beforenotvowel2",tBEFORENOTVOWEL2}, | |||
| {"before_r",tBEFORE_R}, | |||
| {"linkout",tLINKOUT}, | |||
| {"switchvoicing",tSWITCHVOICING}, | |||
| {"vowelin",tVOWELIN}, | |||
| @@ -263,6 +265,7 @@ static keywtab_t keywords[] = { | |||
| {"palatal", 0x2000000+phPALATAL}, | |||
| {"long", 0x2000000+phLONG}, | |||
| {"brkafter", 0x2000000+phBRKAFTER}, | |||
| {"rhotic", 0x2000000+phRHOTIC}, | |||
| {"nonsyllabic",0x2000000+phNONSYLLABIC}, | |||
| {"lengthenstop",0x2000000+phLENGTHENSTOP}, | |||
| @@ -1465,6 +1468,7 @@ int Compile::CPhoneme() | |||
| case tBEFORENOTVOWEL: | |||
| case tBEFORENOTVOWEL2: | |||
| case tSWITCHVOICING: | |||
| case tBEFORE_R: | |||
| ph->phflags |= flags_alternative[item - tBEFOREVOWEL]; | |||
| if((phcode = NextItem(tPHONEMEMNEM)) == -1) | |||
| phcode = LookupPhoneme(item_string,1); | |||
| @@ -1813,7 +1817,7 @@ int LoadEnvelope2(FILE *f, const char *fname) | |||
| n = sscanf(line_buf,"%f %f %d",&env_x[n_points],&env_y[n_points],&env_lin[n_points]); | |||
| if(n >= 2) | |||
| { | |||
| env_x[n_points] *= 1.28; // convert range 0-100 to 0-128 | |||
| env_x[n_points] *= (float)1.28; // convert range 0-100 to 0-128 | |||
| n_points++; | |||
| } | |||
| } | |||
| @@ -1271,7 +1271,16 @@ static void output_rule_group(FILE *f_out, int n_rules, char **rules, char *name | |||
| static int compile_lettergroup(char *input, FILE *f_out) | |||
| {//===================================================== | |||
| char *p; | |||
| char *p_start; | |||
| int group; | |||
| int ix; | |||
| int n_items; | |||
| int length; | |||
| int max_length = 0; | |||
| #define N_LETTERGP_ITEMS 200 | |||
| char *items[N_LETTERGP_ITEMS]; | |||
| char item_length[N_LETTERGP_ITEMS]; | |||
| p = input; | |||
| if(!isdigit(p[0]) || !isdigit(p[1])) | |||
| @@ -1296,18 +1305,38 @@ static int compile_lettergroup(char *input, FILE *f_out) | |||
| fputc(group + 'A', f_out); | |||
| letterGroupsDefined[group] = 1; | |||
| for(;;) | |||
| n_items = 0; | |||
| while(n_items < N_LETTERGP_ITEMS) | |||
| { | |||
| while(isspace2(*p)) p++; | |||
| if(*p == 0) | |||
| break; | |||
| items[n_items] = p_start = p; | |||
| while((*p & 0xff) > ' ') | |||
| { | |||
| fputc(*p++, f_out); | |||
| p++; | |||
| } | |||
| fputc(0,f_out); | |||
| *p++ = 0; | |||
| length = p - p_start; | |||
| if(length > max_length) | |||
| max_length = length; | |||
| item_length[n_items++] = length; | |||
| } | |||
| // write out the items, longest first | |||
| while(max_length > 1) | |||
| { | |||
| for(ix=0; ix < n_items; ix++) | |||
| { | |||
| if(item_length[ix] == max_length) | |||
| { | |||
| fwrite(items[ix],1,max_length,f_out); | |||
| } | |||
| } | |||
| max_length--; | |||
| } | |||
| fputc(RULE_GROUP_END,f_out); | |||
| return(0); | |||
| @@ -829,7 +829,10 @@ static const char *M_Variant(int value) | |||
| {//==================================== | |||
| // returns M, or perhaps MA for some cases | |||
| if(((value % 100)>20) || ((value % 100)<10)) // but not teens, 10 to 19 | |||
| if((translator->langopts.numbers2 & 0x100) && (value >= 2) && (value <= 4)) | |||
| return("0MA"); // Czech, Slovak | |||
| else | |||
| if(((value % 100) < 10) || ((value % 100) > 20)) // but not teens, 10 to 19 | |||
| { | |||
| if ((translator->langopts.numbers2 & 0x40) && | |||
| ((value % 10)>=2) && | |||
| @@ -55,10 +55,12 @@ | |||
| #define phBEFORENOTVOWEL 0x0c00 | |||
| #define phBEFORENOTVOWEL2 0x1000 | |||
| #define phSWITCHVOICING 0x0800 | |||
| #define phBEFORE_R 0x1400 | |||
| #define phNONSYLLABIC 0x100000 // don't count this vowel as a syllable when finding the stress position | |||
| #define phLONG 0x200000 | |||
| #define phLENGTHENSTOP 0x400000 // make the pre-pause slightly longer | |||
| #define phRHOTIC 0x800000 | |||
| // fixed phoneme code numbers, these can be used from the program code | |||
| #define phonCONTROL 1 | |||
| @@ -427,6 +427,13 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence) | |||
| if(next->type == phVOWEL) | |||
| alternative = ph->alternative_ph; | |||
| break; | |||
| case phBEFORE_R: | |||
| if(next->phflags & phRHOTIC) | |||
| { | |||
| alternative = ph->alternative_ph; | |||
| } | |||
| break; | |||
| } | |||
| } | |||
| if(ph->phflags & phBEFOREPAUSE) | |||
| @@ -1750,7 +1750,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb | |||
| } | |||
| if((attr2 = GetSsmlAttribute(px,"time")) != NULL) | |||
| { | |||
| value = (attrnumber(attr2,0,1) * 25) / speed_factor1; // compensate for speaking speed to keep constant pause length | |||
| value = (attrnumber(attr2,0,1) * 25) / speed.speed_factor1; // compensate for speaking speed to keep constant pause length | |||
| if(terminator == 0) | |||
| terminator = CLAUSE_NONE; | |||
| @@ -136,24 +136,37 @@ void SetSpeed(int control) | |||
| { | |||
| // these are used in synthesis file | |||
| s1 = (x * voice->speedf1)/256; | |||
| speed_factor1 = (256 * s1)/115; // full speed adjustment, used for pause length | |||
| if(speed_factor1 < 15) | |||
| speed_factor1 = 15; | |||
| speed.speed_factor1 = (256 * s1)/115; // full speed adjustment, used for pause length | |||
| if(speed.speed_factor1 < 15) | |||
| speed.speed_factor1 = 15; | |||
| if(wpm >= 170) | |||
| // speed_factor2 = 100 + (166*s1)/128; // reduced speed adjustment, used for playing recorded sounds | |||
| speed_factor2 = 110 + (150*s1)/128; // reduced speed adjustment, used for playing recorded sounds | |||
| speed.speed_factor2 = 110 + (150*s1)/128; // reduced speed adjustment, used for playing recorded sounds | |||
| else | |||
| speed_factor2 = 128 + (128*s1)/130; // = 215 at 170 wpm | |||
| speed.speed_factor2 = 128 + (128*s1)/130; // = 215 at 170 wpm | |||
| if(wpm2 > 369) | |||
| { | |||
| if(wpm2 > 390) | |||
| wpm2 = 390; | |||
| speed_factor2 = faster[wpm2 - 370]; | |||
| speed.speed_factor2 = faster[wpm2 - 370]; | |||
| } | |||
| } | |||
| speed_min_sample_len = 450; | |||
| speed.min_sample_len = 450; | |||
| speed.speed_factor3 = 110; // controls the effect of FRFLAG_LEN_MOD reduce length change | |||
| if(wpm2 >= 370) | |||
| { | |||
| // TESTING | |||
| // use experimental fast settings if they have been specified in the Voice | |||
| if(speed.fast_settings[0] > 0) | |||
| speed.speed_factor1 = speed.fast_settings[0]; | |||
| if(speed.fast_settings[1] > 0) | |||
| speed.speed_factor2 = speed.fast_settings[1]; | |||
| if(speed.fast_settings[2] > 0) | |||
| speed.speed_factor3 = speed.fast_settings[2]; | |||
| } | |||
| } // end of SetSpeed | |||
| @@ -528,8 +541,7 @@ void CalcLengths(Translator *tr) | |||
| length_mod *= speed3; | |||
| length_mod = length_mod / 128; | |||
| // if(length_mod < 9) | |||
| // length_mod = 9; // restrict how much lengths can be reduced | |||
| if(length_mod < 8) | |||
| length_mod = 8; // restrict how much lengths can be reduced | |||
| @@ -597,13 +597,13 @@ void MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, FILE *f_mbrola) | |||
| { | |||
| // a pause phoneme, which has not been changed by the translation | |||
| name = '_'; | |||
| len = (p->length * speed_factor1)/256; | |||
| len = (p->length * speed.speed_factor1)/256; | |||
| // if(len == 0) continue; | |||
| if(len == 0) | |||
| len = 1; | |||
| } | |||
| else | |||
| len = (80 * speed_factor2)/256; | |||
| len = (80 * speed.speed_factor2)/256; | |||
| #ifdef USE_MBROLA_LIB | |||
| MbrolaMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, ph->mnemonic); | |||
| @@ -664,7 +664,7 @@ void MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, FILE *f_mbrola) | |||
| break; | |||
| case phVSTOP: | |||
| len = (80 * speed_factor2)/256; | |||
| len = (80 * speed.speed_factor2)/256; | |||
| break; | |||
| case phFRICATIVE: | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.39.42 17.Dec.08"; | |||
| const char *version_string = "1.39.48 19.Dec.08"; | |||
| const int version_phdata = 0x013900; | |||
| int option_device_number = -1; | |||
| @@ -45,9 +45,7 @@ PHONEME_LIST phoneme_list[N_PHONEME_LIST]; | |||
| int mbrola_delay; | |||
| char mbrola_name[20]; | |||
| int speed_factor1; | |||
| int speed_factor2; | |||
| int speed_min_sample_len; | |||
| SPEED_FACTORS speed; | |||
| static int last_pitch_cmd; | |||
| static int last_amp_cmd; | |||
| @@ -192,9 +190,9 @@ int PauseLength(int pause, int control) | |||
| int len; | |||
| if(control == 0) | |||
| len = (pause * speed_factor1)/256; | |||
| len = (pause * speed.speed_factor1)/256; | |||
| else | |||
| len = (pause * speed_factor2)/256; | |||
| len = (pause * speed.speed_factor2)/256; | |||
| if(len < 5) len = 5; // mS, limit the amount to which pauses can be shortened | |||
| return(len); | |||
| @@ -253,8 +251,8 @@ static int DoSample2(int index, int which, int length_mod, int amp) | |||
| length = length1; | |||
| length = (length * speed_factor2)/256; | |||
| min_length = speed_min_sample_len; | |||
| length = (length * speed.speed_factor2)/256; | |||
| min_length = speed.min_sample_len; | |||
| if(format==0) | |||
| min_length *= 2; | |||
| @@ -982,7 +980,7 @@ if(which==1) | |||
| length_factor = length_mod; | |||
| if(frame1->frflags & FRFLAG_LEN_MOD) // reduce effect of length mod | |||
| { | |||
| length_factor = (length_mod*4 + 256*3)/7; | |||
| length_factor = (length_mod*(256-speed.speed_factor3) + 256*speed.speed_factor3)/256; | |||
| } | |||
| len = (frame_length * samplerate)/1000; | |||
| len = (len * length_factor)/256; | |||
| @@ -213,6 +213,14 @@ typedef struct { | |||
| int control; | |||
| } MBROLA_TAB; | |||
| typedef struct { | |||
| int speed_factor1; | |||
| int speed_factor2; | |||
| int speed_factor3; | |||
| int min_sample_len; | |||
| int fast_settings[8]; | |||
| } SPEED_FACTORS; | |||
| // phoneme table | |||
| extern PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; | |||
| @@ -304,9 +312,7 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha | |||
| extern unsigned char *envelope_data[18]; | |||
| extern int formant_rate[]; // max rate of change of each formant | |||
| extern int speed_factor1; | |||
| extern int speed_factor2; | |||
| extern int speed_min_sample_len; | |||
| extern SPEED_FACTORS speed; | |||
| extern long count_samples; | |||
| extern int outbuf_size; | |||
| @@ -282,7 +282,7 @@ Translator *SelectTranslator(const char *name) | |||
| SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama | |||
| tr->langopts.numbers = 0x1; | |||
| tr->langopts.numbers2 = 0x100; | |||
| tr->langopts.numbers2 = NUM2_100000; | |||
| } | |||
| break; | |||
| @@ -849,13 +849,13 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.param[LOPT_COMBINE_WORDS] = 4; // combine some prepositions with the following word | |||
| tr->langopts.numbers = 0x0401 + 0x4000 + NUM_ROMAN; | |||
| tr->langopts.numbers2 = 0x40; | |||
| tr->langopts.numbers2 = 0x100; | |||
| tr->langopts.thousands_sep = 0; //no thousands separator | |||
| tr->langopts.decimal_sep = ','; | |||
| if(name2 == L('c','s')) | |||
| { | |||
| tr->langopts.numbers2 = 0x48; // variant numbers before milliards | |||
| tr->langopts.numbers2 = 0x108; // variant numbers before milliards | |||
| } | |||
| SetLetterVowel(tr,'y'); | |||
| @@ -349,14 +349,15 @@ typedef struct { | |||
| // bit21= say "roman" after the number, not before | |||
| int numbers; | |||
| #define NUM2_100000 0x100 // numbers for 100,000 and 10,000,000 | |||
| #define NUM2_100000a 0x500 // numbers for 100,000 and 1,000,000 | |||
| #define NUM2_100000 0x800 // numbers for 100,000 and 10,000,000 | |||
| #define NUM2_100000a 0xc00 // numbers for 100,000 and 1,000,000 | |||
| // bits 1-4 use variant form of numbers before thousands,millions,etc. | |||
| // bit6=(LANG=pl) two forms of plural, M or MA | |||
| // bit7=(LANG-ru) use MB for 1 thousand, million, etc | |||
| // bit8=(LANG=hi) special word for 100,000 and 10,000,000 | |||
| // bit8=(LANG=cs,sk) two forms of plural, M or MA | |||
| // bit9=(LANG=rw) say "thousand" and "million" before its number, not after | |||
| // bit10=(LANG=sw) special word for 100,000 and 1,000,000 | |||
| // bit11=(LANG=hi) special word for 100,000 and 10,000,000 | |||
| int numbers2; | |||
| int max_roman; | |||
| @@ -69,44 +69,46 @@ static int len_path_voices; | |||
| espeak_VOICE voice_selected; | |||
| #define V_NAME 1 | |||
| #define V_LANGUAGE 2 | |||
| #define V_GENDER 3 | |||
| #define V_TRANSLATOR 4 | |||
| #define V_PHONEMES 5 | |||
| #define V_DICTIONARY 6 | |||
| enum { | |||
| V_NAME = 1, | |||
| V_LANGUAGE, | |||
| V_GENDER, | |||
| V_TRANSLATOR, | |||
| V_PHONEMES, | |||
| V_DICTIONARY, | |||
| // these affect voice quality, are independent of language | |||
| #define V_FORMANT 7 | |||
| #define V_PITCH 8 | |||
| #define V_ECHO 9 | |||
| #define V_FLUTTER 10 | |||
| #define V_ROUGHNESS 11 | |||
| #define V_CLARITY 12 | |||
| #define V_TONE 13 | |||
| #define V_VOICING 14 | |||
| #define V_BREATH 15 | |||
| #define V_BREATHW 16 | |||
| V_FORMANT, | |||
| V_PITCH, | |||
| V_ECHO, | |||
| V_FLUTTER, | |||
| V_ROUGHNESS, | |||
| V_CLARITY, | |||
| V_TONE, | |||
| V_VOICING, | |||
| V_BREATH, | |||
| V_BREATHW, | |||
| // these override defaults set by the translator | |||
| #define V_WORDGAP 17 | |||
| #define V_INTONATION 18 | |||
| #define V_STRESSLENGTH 19 | |||
| #define V_STRESSAMP 20 | |||
| #define V_STRESSADD 21 | |||
| #define V_DICTRULES 22 | |||
| #define V_STRESSRULE 23 | |||
| #define V_CHARSET 24 | |||
| #define V_NUMBERS 25 | |||
| #define V_OPTION 26 | |||
| #define V_MBROLA 27 | |||
| #define V_KLATT 28 | |||
| V_WORDGAP, | |||
| V_INTONATION, | |||
| V_STRESSLENGTH, | |||
| V_STRESSAMP, | |||
| V_STRESSADD, | |||
| V_DICTRULES, | |||
| V_STRESSRULE, | |||
| V_CHARSET, | |||
| V_NUMBERS, | |||
| V_OPTION, | |||
| V_MBROLA, | |||
| V_KLATT, | |||
| V_FAST, | |||
| // these need a phoneme table to have been specified | |||
| #define V_REPLACE 29 | |||
| #define V_CONSONANTS 30 | |||
| V_REPLACE, | |||
| V_CONSONANTS | |||
| }; | |||
| @@ -147,6 +149,7 @@ static keywtab_t keyword_tab[] = { | |||
| {"mbrola", V_MBROLA}, | |||
| {"consonants", V_CONSONANTS}, | |||
| {"klatt", V_KLATT}, | |||
| {"fast_test", V_FAST}, | |||
| // these just set a value in langopts.param[] | |||
| {"l_dieresis", 0x100+LOPT_DIERESES}, | |||
| @@ -385,6 +388,7 @@ void VoiceReset(int tone_only) | |||
| voice->consonant_amp = 100; | |||
| voice->consonant_ampv = 100; | |||
| memset(voice->klatt,0,sizeof(voice->klatt)); | |||
| memset(speed.fast_settings,0,sizeof(speed.fast_settings)); | |||
| #ifdef PLATFORM_RISCOS | |||
| voice->roughness = 1; | |||
| @@ -880,6 +884,11 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| voice->klatt[KLATT_Kopen] -= 40; | |||
| break; | |||
| case V_FAST: | |||
| Read8Numbers(p,speed.fast_settings); | |||
| SetSpeed(2); | |||
| break; | |||
| default: | |||
| if((key & 0xff00) == 0x100) | |||
| { | |||