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
| //maintainer: Willem van der Walt | |||||
| //maintainer: Willem van der Walt | |||||
| // email: [email protected] | // email: [email protected] | ||||
| // tel: +27 12 8413996 | // tel: +27 12 8413996 | ||||
| // Meraka Institute, CSIR | // Meraka Institute, CSIR | ||||
| (da vinci) da||v'intSi | (da vinci) da||v'intSi | ||||
| debora d@bo@ra | debora d@bo@ra | ||||
| debussy d@bus'i: | debussy d@bus'i: | ||||
| de d@ | |||||
| (de la) d@||la $u // de la Rey/de la Bat, etc. | (de la) d@||la $u // de la Rey/de la Bat, etc. | ||||
| der d@r | der d@r | ||||
| derick dErik | derick dErik | ||||
| // misc unstressed | // misc unstressed | ||||
| de d@ | |||||
| dat $u $strend | dat $u $strend | ||||
| te t@ $verbf | te t@ $verbf | ||||
| nie $unstressend $verbextend | nie $unstressend $verbextend |
| _, tSa:Rka | _, tSa:Rka | ||||
| _- mi:nus | _- mi:nus | ||||
| _; zdR^edn^i:k | _; zdR^edn^i:k | ||||
| _= Rovno | |||||
| _* hvjezJitSka | |||||
| _? otazn^i:k | _? otazn^i:k | ||||
| __ pottr-Zen^i: | __ pottr-Zen^i: | ||||
| _` 'obRa:ts,ena:||tS'a:Rka | _` 'obRa:ts,ena:||tS'a:Rka | ||||
| _> vjetSi: | _> vjetSi: | ||||
| _| sv'isla:||tS'a:Ra | _| sv'isla:||tS'a:Ra | ||||
| _: dv'ojtetSka | _: dv'ojtetSka | ||||
| % pRotsento | |||||
| + plus | |||||
| . tetSka $max3 | |||||
| * hvjezJitSka $max3 | |||||
| = Rovno $max3 | |||||
| * hvjezJitSka $max3 | |||||
| % pRotsento $max3 | |||||
| + plus $max3 | |||||
| ! vigR^itSn^i:k $max3 | |||||
| € eURo | € eURo | ||||
| @ zavina:tS | @ zavina:tS | ||||
| & ampr-sent | & ampr-sent | ||||
| # gR^i:Zek | # gR^i:Zek | ||||
| / lomeno | / lomeno | ||||
| _\ beksleS | |||||
| \ beksleS | |||||
| ° stupen^ | ° stupen^ | ||||
| × kRa:t | × kRa:t |
| ü i | ü i | ||||
| $ dola:R | $ dola:R | ||||
| ! vigR^itSn^i:k | |||||
| . tetSka | |||||
| . (. _: | |||||
| \.) . | |||||
| __) - (_D mi:nus | __) - (_D mi:nus | ||||
| A_) - (_D _ | A_) - (_D _ | ||||
| C_) - (_D _ | C_) - (_D _ | ||||
| --) - | |||||
| * hvj'ezJitSka | |||||
| *) * (* | |||||
| ** | |||||
| **) * (_ _:: |
| // spoken when "speak punctuation" option is on. | // spoken when "speak punctuation" option is on. | ||||
| _. pUnkt | _. 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 | _| paIp | ||||
| _: d'Op@lp,UNkt | _: d'Op@lp,UNkt | ||||
| _; St@-*'ICpUNkt | _; St@-*'ICpUNkt | ||||
| _stk S@-*'Egst@-*IC | _stk S@-*'Egst@-*IC | ||||
| _tld t'Ild@ | _tld t'Ild@ | ||||
| æ $accent | |||||
| é $accent | |||||
| ç $accent | |||||
| č $accent | |||||
| š $accent | |||||
| ž $accent | |||||
| // Not Roman numbers | // Not Roman numbers | ||||
| v faU | v faU | ||||
| x Iks | x Iks |
| , (D kOma | , (D kOma | ||||
| $ dOl'A: | $ dOl'A: | ||||
| € OY*o: | |||||
| £ paUnd | |||||
| % p@-*o:ts'Ent | |||||
| & Unt | |||||
| @ kl'ame:*,af@ | |||||
| # nUm3 | |||||
| + plUs | |||||
| = glaIC | |||||
| ~ tIld@ | |||||
| \ bEkslES | |||||
| . pUnkt | |||||
| . (. _: | |||||
| \.) . | |||||
| * StE*n | |||||
| *) * (* | |||||
| ** | |||||
| **) * (_ _:: | |||||
| & a a: a~ e E e~ i | & a a: a~ e E e~ i | ||||
| I i: i:~ i~ l- o O o: | I i: i:~ i~ l- o O o: | ||||
| O~ o~ r- U u u: u:~ u~ | O~ o~ r- U u u: u:~ u~ | ||||
| V | |||||
| * b B bh c C ch d | * b B bh c C ch d | ||||
| d. d.h dh g gh h j J | d. d.h dh g gh h j J | ||||
| i i: l- o o: oU r- u | i i: l- o o: oU r- u | ||||
| 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 | Dictionary cy_dict | ||||
| E e e: i I i: l- O | E e e: i I i: l- O | ||||
| o o: oU r* r- u U u: | 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 | Dictionary hi_dict | ||||
| uo | uo | ||||
| : b c d dZ f g h | : 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 | Dictionary mk_dict | ||||
| e e: i I i: l- o o: | e e: i I i: l- o o: | ||||
| oU r- u u: | 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 | Dictionary ml_dict | ||||
| y | y | ||||
| : ; b c C d d; dZ | : ; 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 | Dictionary pt_dict | ||||
| l- l: o o: oU r- r: u | l- l: o o: oU r- r: u | ||||
| 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 | Dictionary sq_dict |
| _‼ Ekskla2m'eIS@nz | _‼ Ekskla2m'eIS@nz | ||||
| _₠ jU@roU | _₠ jU@roU | ||||
| @ _at_ | |||||
| & _and | |||||
| \ bakstroUk $max3 | \ bakstroUk $max3 | ||||
| / stroUk $max3 | / stroUk $max3 | ||||
| ?3 \ bakslaS $max3 | ?3 \ bakslaS $max3 | ||||
| Bhutan bu:t'an | Bhutan bu:t'an | ||||
| Bogota b0g@t'A: | Bogota b0g@t'A: | ||||
| ?3 Boston bOst@n | ?3 Boston bOst@n | ||||
| Bucharest bu:k@r'Est | |||||
| Bucharest bu:ka2r'Est | |||||
| Budapest bu:d@p'Est | Budapest bu:d@p'Est | ||||
| Buenos bweIn0s | Buenos bweIn0s | ||||
| Burundi bUr'UndI | Burundi bUr'UndI | ||||
| Egyptian IdZ'IpS@n | Egyptian IdZ'IpS@n | ||||
| Eire e@r@ | Eire e@r@ | ||||
| Geneva dZ@ni:v@ | Geneva dZ@ni:v@ | ||||
| Harare h@rA:rI | |||||
| Harare ha2rA:rI | |||||
| Hanoi han'OI | Hanoi han'OI | ||||
| Hawaii h@w'aIi: | Hawaii h@w'aIi: | ||||
| Hawai'i h@w'aIi: | Hawai'i h@w'aIi: | ||||
| Jerusalem dZ@ru:s@l@m | Jerusalem dZ@ru:s@l@m | ||||
| Johannesburg $2 | Johannesburg $2 | ||||
| Kalgoorlie kalgU@lI | Kalgoorlie kalgU@lI | ||||
| Karachi k@rA@tSI | |||||
| Karachi ka2rA@tSI | |||||
| Kentucky $2 | Kentucky $2 | ||||
| Kiev ki:Ev | Kiev ki:Ev | ||||
| Khmer kmi@3 | Khmer kmi@3 | ||||
| Taiwan taI'wan | Taiwan taI'wan | ||||
| (tel aviv) t,El||a2v'i:v | (tel aviv) t,El||a2v'i:v | ||||
| Tibet tI2b'Et | Tibet tI2b'Et | ||||
| Totonto t@r0ntoU | |||||
| Toronto t@r0ntoU | |||||
| Timor ti:mo@ | Timor ti:mo@ | ||||
| Tokyo toUkIoU | Tokyo toUkIoU | ||||
| Toulouse tu:l'u:z | Toulouse tu:l'u:z |
| r) anged (S1 d | r) anged (S1 d | ||||
| perm) an @n | perm) an @n | ||||
| ang (er aNg | ang (er aNg | ||||
| h) ang (er aN | |||||
| m) anoeu (v @nu: | m) anoeu (v @nu: | ||||
| _qu) an 0n | _qu) an 0n | ||||
| _w) an 0n | _w) an 0n | ||||
| cla) ng (er Ng | cla) ng (er Ng | ||||
| ta) ngi ndZI | ta) ngi ndZI | ||||
| i) ng (er Ng | i) ng (er Ng | ||||
| bi) ng (er ndZ | |||||
| ri) ng (er N | |||||
| si) ng (er N | |||||
| bi) ng (er ndZ | |||||
| gi) ng (er ndZ | gi) ng (er ndZ | ||||
| o) ng (er Ng | o) ng (er Ng | ||||
| you) ng (er Ng | you) ng (er Ng | ||||
| : koUl@n | : koUl@n | ||||
| D_) : (_DD_ // omit colon in time, eg: 2:30 | D_) : (_DD_ // omit colon in time, eg: 2:30 | ||||
| $ d0l3 | $ d0l3 | ||||
| @ at_: | |||||
| & _!%and | |||||
| != n0ti:kw@Lz | != n0ti:kw@Lz | ||||
| >= greIt@O@i:kw@L | >= greIt@O@i:kw@L | ||||
| <= lEsO@i:kw@L | <= lEsO@i:kw@L |
| __ subst@-*eko | __ subst@-*eko | ||||
| ~ tildo | ~ tildo | ||||
| ° gradoI | ° gradoI | ||||
| % p@-*otsento | |||||
| % p@-*otsento $max3 | |||||
| @ _tSe_ | @ _tSe_ | ||||
| & kaI | |||||
| = egala | |||||
| & _kaI | |||||
| = egala $max3 | |||||
| \ deklivo | \ deklivo | ||||
| / oblikvo | / oblikvo | ||||
| | duktosigno | | duktosigno | ||||
| * asteRisko | |||||
| * asteRisko $max3 | |||||
| © kopiRaIto | © kopiRaIto | ||||
| _( R'ondak@-*'ampo | _( R'ondak@-*'ampo | ||||
| _) f'eRmaRondak@-*'ampo | _) f'eRmaRondak@-*'ampo |
| _> s'u:*empIk'uin | _> s'u:*empIk'uin | ||||
| _- vi:va2 | _- vi:va2 | ||||
| __ ala2vi:va2 | __ ala2vi:va2 | ||||
| + plus | |||||
| + plus $max3 | |||||
| * asteriski $max3 | |||||
| = 'yht&k'uin $max3 | |||||
| % p@-*osent:I $max3 | |||||
| / kaut:a2 | / kaut:a2 | ||||
| \ keno | \ keno | ||||
| € eu*o | € eu*o | ||||
| £ punta2 | £ punta2 | ||||
| ¤ valu:t:a2 | ¤ valu:t:a2 | ||||
| & et | |||||
| @ &t | |||||
| % p@-*osent:I | |||||
| & _et | |||||
| @ _&t | |||||
| ~ tilde | ~ tilde | ||||
| _acu 'aku:t:I | _acu 'aku:t:I |
| .group | .group | ||||
| å o | å o | ||||
| å o: | |||||
| åå o: | |||||
| š S | š S | ||||
| ž Z | ž Z | ||||
| $ dollarin | $ dollarin | ||||
| * asteriski | |||||
| = 'yht&k'uin | |||||
| __) - (_D mi:nus | __) - (_D mi:nus | ||||
| A_) - (_D _ | A_) - (_D _ | ||||
| C_) - (_D _ | C_) - (_D _ |
| _' a2postr'Of | _' a2postr'Of | ||||
| _( 'uvR@-parA~t'Ez | _( 'uvR@-parA~t'Ez | ||||
| _) f'Erm parA~t'Ez | _) f'Erm parA~t'Ez | ||||
| _* asterisk: | |||||
| _, virgyl | _, virgyl | ||||
| _- tirE | _- tirE | ||||
| _. _|pw%E~ | _. _|pw%E~ | ||||
| // symbols that are normally spoken when reading text | // symbols that are normally spoken when reading text | ||||
| @ arobaz | @ arobaz | ||||
| % pursA~ | |||||
| & e $u $brk | |||||
| % pursA~ $max3 | |||||
| * asterisk: $max3 | |||||
| & _e | |||||
| _& _e_komErsj'al | _& _e_komErsj'al | ||||
| + plys | |||||
| + plys $max3 | |||||
| ~ tilde | ~ tilde | ||||
| € @ro | € @ro | ||||
| ¢ sEnt | ¢ sEnt |
| _lig l'ig&t,UR& | _lig l'ig&t,UR& | ||||
| _acu 'akUt | _acu 'akUt | ||||
| _ac2 dv'ostr**UkI;'akUt | _ac2 dv'ostr**UkI;'akUt | ||||
| //_brv | |||||
| _brv br**'Ev // ?? | |||||
| _ced ts'EdIl& | _ced ts'EdIl& | ||||
| _cir ts'iRkUmflEks | _cir ts'iRkUmflEks | ||||
| _dia 'uml&Ut | _dia 'uml&Ut | ||||
| _cap k'apIt&l // ?? use English until I find the correct word | _cap k'apIt&l // ?? use English until I find the correct word | ||||
| © 'aUtoRsk&||pr*av& | © 'aUtoRsk&||pr*av& | ||||
| % p'osto | |||||
| + plus | |||||
| * zvj'ezdits& $max3 | |||||
| = _j'edn&ko $max3 | |||||
| % p'osto $max3 | |||||
| + plus $max3 | |||||
| . totSk& $max3 | |||||
| ?4 . tatSk& $max3 | |||||
| € 'euRo | € 'euRo | ||||
| ?4 € 'evr*o | ?4 € 'evr*o | ||||
| @ _'at | @ _'at | ||||
| ?2 ! 'uzvItSnIk | ?2 ! 'uzvItSnIk | ||||
| : dv'ototSk& | : dv'ototSk& | ||||
| ?4 : dv'ot&tSk& | ?4 : dv'ot&tSk& | ||||
| # br*'oj_ | |||||
| / kr*'oz_ | |||||
| \\ b'EkslES | |||||
| # br*'oj_ $max3 | |||||
| / kr*'oz_ $max3 | |||||
| \ b'EkslES $max3 | |||||
| ^ ts'iRkumfleks | ^ ts'iRkumfleks | ||||
| ~ t'ild& | ~ t'ild& | ||||
| ¤ v'alut& | ¤ v'alut& |
| $ d'ol&R | $ d'ol&R | ||||
| . totSk& | |||||
| ?4 . tatSk& | |||||
| . (. _: | |||||
| \.) . | |||||
| __) - (_D minus | __) - (_D minus | ||||
| A_) - (_D _ | A_) - (_D _ | ||||
| C_) - (_D _ | C_) - (_D _ | ||||
| --) - | |||||
| * zvj'ezdits& | |||||
| *) * (* | |||||
| ** | |||||
| **) * (_ _:: | |||||
| = _j'edn&ko | |||||
| = (== | |||||
| =) = (= | |||||
| ==) = (_ _:: | |||||
| .group 0xce // Greek letters | .group 0xce // Greek letters | ||||
| _acu e:lES | _acu e:lES | ||||
| _ac2 kEt:Y:S | _ac2 kEt:Y:S | ||||
| _brv fe:lkYR2 | _brv fe:lkYR2 | ||||
| //_ced // cedilla | |||||
| _ced tse:dillE | |||||
| _cir tsiR2kumflEks | _cir tsiR2kumflEks | ||||
| _dia tR2e:mA | _dia tR2e:mA | ||||
| //_dot // dot above | //_dot // dot above | ||||
| ly Ellipsilon | ly Ellipsilon | ||||
| ny En^ | 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 | 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 | // Main Exceptions List | ||||
| //===================== | //===================== |
| ç tS | ç tS | ||||
| ñ n^ | ñ n^ | ||||
| ø Y | ø Y | ||||
| % sa:zAle:k | |||||
| @ kukAts | |||||
| € EuR2o | |||||
| + plus | |||||
| § pAR2AgR2AfuS | |||||
| . pont | |||||
| . (. _: | |||||
| \.) . | |||||
| * tS'illAg // asterisk | |||||
| *) * (* | |||||
| ** | |||||
| **) * (_ _:: |
| tesser tess'ER | tesser tess'ER | ||||
| uomini $1 | uomini $1 | ||||
| // $alt = use ò or è in the stressed syllable | // $alt = use ò or è in the stressed syllable | ||||
| // If the final vowel is omitted, then the rule applies to 'a' 'e' 'i' 'o' | // If the final vowel is omitted, then the rule applies to 'a' 'e' 'i' 'o' | ||||
| $textmode | $textmode |
| _} pRavy||n,av;as||klamR'Ovy | _} pRavy||n,av;as||klamR'Ovy | ||||
| _' ap'OstROf | _' ap'OstROf | ||||
| . kR'Opka | |||||
| . kR'Opka $max3 | |||||
| ~ t'ylda | ~ 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 | | kR,Eska||p;On'Ova | ||||
| # haS | |||||
| # haS $max3 | |||||
| _$ d'OlaR | _$ d'OlaR | ||||
| % pR'OtsEnt | % pR'OtsEnt | ||||
| ^ d'aSEk // what's be better? | ^ d'aSEk // what's be better? | ||||
| & and | & and | ||||
| ` 'aktsEnt | ` 'aktsEnt | ||||
| @ m'awpa | @ m'awpa | ||||
| + plus | |||||
| + plus $max3 | |||||
| // other characters | // other characters | ||||
| _õ $accent | _õ $accent | ||||
| _ú $accent | _ú $accent | ||||
| _ü $accent | _ü $accent | ||||
| ß _^_DE | |||||
| v ve // not Roman numbers | v ve // not Roman numbers | ||||
| x Sis# | x Sis# | ||||
| _cap maI'uskulU | _cap maI'uskulU | ||||
| _?A l'etR&_ | _?A l'etR&_ | ||||
| _?? s'imbolU_ | _?? s'imbolU_ | ||||
| ?1 _#32 Sp'asU | ?1 _#32 Sp'asU | ||||
| _#9 tab | _#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~ | _! ,eskl&mas'&U~ | ||||
| _" 'asp&s# | _" 'asp&s# | ||||
| ?1 _# k,ardin'al | ?1 _# k,ardin'al | ||||
| ?2 _# k,ardZin'aU | ?2 _# k,ardZin'aU | ||||
| _$ s,ifR'&U~ | _$ s,ifR'&U~ | ||||
| _% pors'eINtU | |||||
| _& 'e | _& 'e | ||||
| ?1 _' ap'Ostr,ofy | ?1 _' ap'Ostr,ofy | ||||
| ?2 _' &p'OstRofU | ?2 _' &p'OstRofU | ||||
| _( ,abRipa*'eINtezy | _( ,abRipa*'eINtezy | ||||
| _) f,ES&pa*'eINtezy | _) f,ES&pa*'eINtezy | ||||
| _* &ste*'iskU | _* &ste*'iskU | ||||
| _+ m'aIs# | |||||
| _− m'enUs | |||||
| _, v'irgul& | _, v'irgul& | ||||
| _- 'ifeIN | _- 'ifeIN | ||||
| ?2 _= igw'aU | ?2 _= igw'aU | ||||
| _> maI'Or | _> maI'Or | ||||
| _? ,iNtex,ogas'&U~ | _? ,iNtex,ogas'&U~ | ||||
| _@ &x'ob& | |||||
| _[ ,abRikowS'etSi | _[ ,abRikowS'etSi | ||||
| _\ b,ax&,iNvertS'id& | _\ b,ax&,iNvertS'id& | ||||
| _] f,ES&kowS'etSi | _] f,ES&kowS'etSi |
| ü u | ü u | ||||
| ß s | ß s | ||||
| % pors'eINtU | |||||
| $ sifR'&U~ | $ sifR'&U~ | ||||
| _r_) $ | _r_) $ | ||||
| − m'enUs | |||||
| + maIs# | |||||
| & 'e | |||||
| @ &x'ob& | |||||
| ¤ 'eU*U | |||||
| € 'eU*U | |||||
| § p&*'agRafU | |||||
| D_) º %o // ordinal | D_) º %o // ordinal | ||||
| D_) ª %a // ordinal | D_) ª %a // ordinal | ||||
| // don't speak multiple occurances of these symbols | |||||
| , (D v'irgul& | , (D v'irgul& | ||||
| . p'oNtU | |||||
| . (. _: | |||||
| \.) . | |||||
| * &ste*'iskU | |||||
| *) * (* | |||||
| ** | |||||
| **) * (_ _:: | |||||
| __) - (_D m'enUs | __) - (_D m'enUs | ||||
| A_) - (_D _ | A_) - (_D _ | ||||
| C_) - (_D _ | C_) - (_D _ | ||||
| --) - | |||||
| = __igw'&l_ | |||||
| = (== | |||||
| =) = (= | |||||
| ==) = (_ _:: | |||||
| â ,ydin'a $atend | â ,ydin'a $atend | ||||
| ă '@ $atend | ă '@ $atend | ||||
| î ,ydin'i $atend | î ,ydin'i $atend | ||||
| ö $accent | |||||
| _?? ka*akt'er | _?? ka*akt'er | ||||
| _cap maZusk'ul@ | _cap maZusk'ul@ | ||||
| // punctuation and symbols | // punctuation and symbols | ||||
| _. punkt | |||||
| _, v'irgul@ | _, v'irgul@ | ||||
| _: do'u@p'unkte | _: do'u@p'unkte | ||||
| _; p'unkt||Siv'irgul@ | _; p'unkt||Siv'irgul@ | ||||
| _#9 t'ab | _#9 t'ab | ||||
| _#32 sp'atsiU | _#32 sp'atsiU | ||||
| = eg'al | |||||
| # dj'ez | |||||
| + plus | |||||
| . punkt $max3 | |||||
| * aste*isk $max3 | |||||
| = eg'al $max3 | |||||
| # dj'ez $max3 | |||||
| + plus $max3 | |||||
| & ampersand | & ampersand | ||||
| © k'apiraIt | © k'apiraIt | ||||
| @ a*'ond | @ a*'ond | ||||
| ° g@-*ade | ° g@-*ade | ||||
| // numeric | // numeric | ||||
| //******** | //******** | ||||
| _0 z'e*o | _0 z'e*o | ||||
| _0Z2 s'utimi | _0Z2 s'utimi | ||||
| _0Z3 m'iImi | _0Z3 m'iImi | ||||
| // not Roman numbers | |||||
| vi vi | |||||
| vii viI | |||||
| // Abbreviations | // Abbreviations | ||||
| //************** | //************** |
| .replace | .replace | ||||
| ș ş | ș ş | ||||
| ț ţ | ț ţ | ||||
| Ș ş // because Windows doesn't convert upper-case Ș Ț to lower-case | |||||
| Ț ţ | |||||
| .group a | .group a | ||||
| a a | a a | ||||
| , (D v'irgul@ | , (D v'irgul@ | ||||
| . punkt | |||||
| . (. _: | |||||
| \.) . | |||||
| __) - (_D m'inus | __) - (_D m'inus | ||||
| A_) - (_D _ | A_) - (_D _ | ||||
| C_) - (_D _ | C_) - (_D _ | ||||
| --) - | |||||
| * aste*isk | |||||
| *) * (* | |||||
| ** | |||||
| **) * (_ _:: | |||||
| _z zet | _z zet | ||||
| ž Zet | ž Zet | ||||
| ě $accent | |||||
| // accent names | // accent names | ||||
| _lig l'igat,u:Rov,ane: | _lig l'igat,u:Rov,ane: | ||||
| _acu s_d'l:Zn^om | _acu s_d'l:Zn^om | ||||
| _#32 'medzeRa | _#32 'medzeRa | ||||
| _?A znak | _?A znak | ||||
| * hviezda $max3 | |||||
| + plus $max3 | |||||
| = Rovna:sa $max3 | |||||
| @ zavina:tS | |||||
| & ampeRsand | |||||
| # kRi:Zik $max3 | |||||
| _! vi:kRitSn^i:k | _! vi:kRitSn^i:k | ||||
| _" u:vodzovki | _" u:vodzovki | ||||
| _# kRi:Zik | |||||
| _$ dola:R | _$ dola:R | ||||
| _& ampeRsand | |||||
| _' apostRof | _' apostRof | ||||
| _( za:tvoRka | _( za:tvoRka | ||||
| _) zatvoRit; | _) zatvoRit; | ||||
| _* hviezda | |||||
| + plus | |||||
| _, tSiaRka | _, tSiaRka | ||||
| _- poml-tSka | _- poml-tSka | ||||
| __ podtSiaRknutie | __ podtSiaRknutie | ||||
| _: dvojbodka | _: dvojbodka | ||||
| _; bodkotSiaRka | _; bodkotSiaRka | ||||
| _< menSi: | _< menSi: | ||||
| _= Rovna:sa | |||||
| _> vetSSi: | _> vetSSi: | ||||
| _? ota:zn^ik | _? ota:zn^ik | ||||
| _@ zavina:tS | |||||
| _[ hRanata:||za:tvoRka | _[ hRanata:||za:tvoRka | ||||
| _\ opatSne:||lomeno | _\ opatSne:||lomeno | ||||
| _] hRanata:||zatvoRit; | _] hRanata:||zatvoRit; | ||||
| _0M1 t;'isi:ts | _0M1 t;'isi:ts | ||||
| _1M1 t;'isi:ts | _1M1 t;'isi:ts | ||||
| _2M1 dv'et;'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_ | _dpt _:tSj,arka_ | ||||
| _acu vURg'UimI | _acu vURg'UimI | ||||
| _ac2 tS'IftvURg'UimI | _ac2 tS'IftvURg'UimI | ||||
| _brv ku#s'altmaimI | _brv ku#s'altmaimI | ||||
| _ced tSEnJ'El | |||||
| _ced h'aRf | |||||
| _cir Sapk'a | _cir Sapk'a | ||||
| _dia Umla'Ut | _dia Umla'Ut | ||||
| _dot YstnOkt'a | _dot YstnOkt'a | ||||
| _& v'EiSa*et'I | _& v'EiSa*et'I | ||||
| _* j'u#ldu#z | _* j'u#ldu#z | ||||
| _@ kUjRUkl'U'a | _@ kUjRUkl'U'a | ||||
| _\\ t'ERs||ej,IktSIzg'I | |||||
| _\ t'ERs||ej,IktSIzg'I | |||||
| ¶ pa*agR'af | ¶ pa*agR'af | ||||
| § tSEnJ'El | § tSEnJ'El | ||||
| ° de*edZ'E | ° de*edZ'E | ||||
| _# dij'Ez | _# dij'Ez | ||||
| _~ jaklaS'u#k | _~ jaklaS'u#k | ||||
| __ ,alttSIzg'I | __ ,alttSIzg'I | ||||
| + aRt'u# | |||||
| € avR'O | |||||
| = ESIt $max3 | |||||
| % jYzdE $max3 | |||||
| + aRtu# $max3 | |||||
| € avRO | |||||
| _0 su#fu#R | _0 su#fu#R |
| .group | .group | ||||
| $ dolar | $ dolar | ||||
| ' (Pb % // split a word at ' and translate the first part separately. | |||||
| ' (Pb // split a word at ' and translate the first part separately. | |||||
| new total | new total | ||||
| base 103 103 | base 103 103 | ||||
| base2 24 122 | 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_sc 39 151 | ||||
| en_rp 34 149 | en_rp 34 149 | ||||
| en_wm 30 149 | |||||
| en_wm 31 149 | |||||
| en_wi 30 149 | en_wi 30 149 | ||||
| af 39 135 | af 39 135 | ||||
| cy 29 129 | cy 29 129 | ||||
| hu 23 119 | hu 23 119 | ||||
| lv 29 126 | lv 29 126 | ||||
| nl 28 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 | ru 39 134 | ||||
| it 17 125 | it 17 125 | ||||
| la 21 121 | la 21 121 | ||||
| tr 18 127 | tr 18 127 | ||||
| ku 18 127 | ku 18 127 | ||||
| id 15 124 | id 15 124 | ||||
| sq 35 127 | |||||
| hy 24 119 | |||||
| rw 15 129 | rw 15 129 | ||||
| ko 18 159 | ko 18 159 | ||||
| da 15 133 | da 15 133 | ||||
| sq 35 127 | |||||
| ml 13 151 | ml 13 151 | ||||
| kn 15 151 | kn 15 151 | ||||
| bn 59 155 | bn 59 155 | ||||
| ne 18 157 | ne 18 157 | ||||
| hy 24 119 | |||||
| om 25 125 | om 25 125 | ||||
| en_klatt 77 149 | en_klatt 77 149 | ||||
| ga 18 117 | ga 18 117 | ||||
| [d.h] hi | [d.h] hi | ||||
| [d] hu | [d] hu | ||||
| [d] pl | [d] pl | ||||
| [dz] pl | |||||
| [d] hr | [d] hr | ||||
| [d] ru | [d] ru | ||||
| [d;] ro | [d;] ro | ||||
| [d] id | [d] id | ||||
| [d] sq | [d] sq | ||||
| [dz] sq | [dz] sq | ||||
| [dz] hy | |||||
| [d] bn | [d] bn | ||||
| [d.] bn | [d.] bn | ||||
| [dz] hy | |||||
| [d[] ga | [d[] ga | ||||
| d/xd2 [d`] om | d/xd2 [d`] om | ||||
| d/xd3 [dh] hi | d/xd3 [dh] hi | ||||
| [n] da | [n] da | ||||
| n/n_long_ [n] zh | n/n_long_ [n] zh | ||||
| nn/_nn [N] base | nn/_nn [N] base | ||||
| [N] en | |||||
| [N] en_n | |||||
| [N] en_wm | |||||
| [N] zh | [N] zh | ||||
| nn/nn_ [N] base | nn/nn_ [N] base | ||||
| [N] en | |||||
| [N] en_n | |||||
| [N] en_wm | |||||
| nn/nn@ [(@)] base | nn/nn@ [(@)] base | ||||
| [(@)] en_klatt | [(@)] en_klatt | ||||
| nn/nn#_ [N#] is | nn/nn#_ [N#] is | ||||
| [z2] fr | [z2] fr | ||||
| [s] es | [s] es | ||||
| [s#] pt | [s#] pt | ||||
| [s`] ko | |||||
| [z] sq | [z] sq | ||||
| [s`] ko | |||||
| [s] en_klatt | [s] en_klatt | ||||
| ufric/s_ [s] base | ufric/s_ [s] base | ||||
| [z] base | [z] base | ||||
| [k] sk | [k] sk | ||||
| [k] el | [k] el | ||||
| [k] zhy | [k] zhy | ||||
| [k`] ko | |||||
| [k] sq | [k] sq | ||||
| [k] bn | |||||
| [k] hy | [k] hy | ||||
| [k`] ko | |||||
| [k] bn | |||||
| ustop/k_unasp_ [k] zh | ustop/k_unasp_ [k] zh | ||||
| ustop/null [?] base | ustop/null [?] base | ||||
| ustop/p [p] base | ustop/p [p] base | ||||
| [p2] fr | [p2] fr | ||||
| [ph] hi | [ph] hi | ||||
| [ph] zh | [ph] zh | ||||
| [ph] bn | |||||
| [p#] hy | [p#] hy | ||||
| [ph] bn | |||||
| ustop/p_asp [bh] hi | ustop/p_asp [bh] hi | ||||
| [ph] hi | [ph] hi | ||||
| [p#] hy | [p#] hy | ||||
| [p] la | [p] la | ||||
| [p;] ro | [p;] ro | ||||
| [p] sq | [p] sq | ||||
| [p] bn | |||||
| [ph] bn | |||||
| [p] hy | [p] hy | ||||
| [p#] hy | [p#] hy | ||||
| [p] bn | |||||
| [ph] bn | |||||
| ustop/pr [p] base | ustop/pr [p] base | ||||
| [p] base2 | [p] base2 | ||||
| [p] fi | [p] fi | ||||
| [p] hu | [p] hu | ||||
| [p] la | [p] la | ||||
| [p;] ro | [p;] ro | ||||
| [p] bn | |||||
| [ph] bn | |||||
| [p] hy | [p] hy | ||||
| [p#] hy | [p#] hy | ||||
| [p] bn | |||||
| [ph] bn | |||||
| ustop/p_unasp [p] base | ustop/p_unasp [p] base | ||||
| [p] base2 | [p] base2 | ||||
| [p] fi | [p] fi | ||||
| [p] la | [p] la | ||||
| [p;] ro | [p;] ro | ||||
| [p] zh | [p] zh | ||||
| [p`] ko | |||||
| [p] sq | [p] sq | ||||
| [p] bn | |||||
| [p] hy | [p] hy | ||||
| [p`] ko | |||||
| [p] bn | |||||
| ustop/p_unasp_ [p] base2 | ustop/p_unasp_ [p] base2 | ||||
| [p] fi | [p] fi | ||||
| [p] hi | [p] hi | ||||
| [p] la | [p] la | ||||
| [p;] ro | [p;] ro | ||||
| [p] sq | [p] sq | ||||
| [p] bn | |||||
| [p] hy | [p] hy | ||||
| [p] bn | |||||
| ustop/q [q] base | ustop/q [q] base | ||||
| ustop/q_u [q] base | ustop/q_u [q] base | ||||
| ustop/t [t] base | ustop/t [t] base | ||||
| [t;] ro | [t;] ro | ||||
| [t[] vi | [t[] vi | ||||
| [t] sw | [t] sw | ||||
| [t`] ko | |||||
| [t] sq | [t] sq | ||||
| [t] bn | |||||
| [t] hy | [t] hy | ||||
| [t`] ko | |||||
| [t] bn | |||||
| [t[] ga | [t[] ga | ||||
| ustop/t_dnt2 [t[] vi | ustop/t_dnt2 [t[] vi | ||||
| ustop/t_ejc [t`] om | ustop/t_ejc [t`] om | ||||
| ustop/t_hi [t] hi | ustop/t_hi [t] hi | ||||
| [t] sq | [t] sq | ||||
| [t] hy | |||||
| [t] bn | [t] bn | ||||
| [th] bn | [th] bn | ||||
| [t] hy | |||||
| ustop/t_pzd [t;] pl | ustop/t_pzd [t;] pl | ||||
| [t;] ru | [t;] ru | ||||
| ustop/tr [t] base | ustop/tr [t] base | ||||
| [ts] eo | [ts] eo | ||||
| [ts] hu | [ts] hu | ||||
| [ts] pl | [ts] pl | ||||
| [dz] pl | |||||
| [ts] ru | [ts] ru | ||||
| [ts;] ro | [ts;] ro | ||||
| [z] zhy | [z] zhy | ||||
| [ts] hu | [ts] hu | ||||
| [ts] lv | [ts] lv | ||||
| [ts] pl | [ts] pl | ||||
| [dz] pl | |||||
| [ts] ru | [ts] ru | ||||
| [ts;] ro | [ts;] ro | ||||
| [ts] sq | [ts] sq | ||||
| [ch] bn | [ch] bn | ||||
| ustop/ts_pzd_ [c] hi | ustop/ts_pzd_ [c] hi | ||||
| [c] hu | [c] hu | ||||
| [c] bn | |||||
| [c] hy | [c] hy | ||||
| [c] bn | |||||
| ustop/ts_pzd2 [c] hi | ustop/ts_pzd2 [c] hi | ||||
| [c] hu | [c] hu | ||||
| [c] hy | |||||
| [c`] ko | [c`] ko | ||||
| [c] bn | [c] bn | ||||
| [c] hy | |||||
| ustop/ts_pzd3 [tS;] hr | ustop/ts_pzd3 [tS;] hr | ||||
| [dZ;] hr | [dZ;] hr | ||||
| ustop/t_sr [d] sr | ustop/t_sr [d] sr | ||||
| [aI] pt | [aI] pt | ||||
| [a:I] vi | [a:I] vi | ||||
| [aI] id | [aI] id | ||||
| [aI] kn | |||||
| [aI] hy | [aI] hy | ||||
| [aI] kn | |||||
| vdiph/ai_2 [aI] en | vdiph/ai_2 [aI] en | ||||
| [aI] cy | [aI] cy | ||||
| [aY] cy | [aY] cy | ||||
| [EI] de | [EI] de | ||||
| [EI] nl | [EI] nl | ||||
| [EI] vi | [EI] vi | ||||
| [eI] ne | |||||
| [eI] hy | [eI] hy | ||||
| [eI] ne | |||||
| vdiph/eei_2 [eI] eo | vdiph/eei_2 [eI] eo | ||||
| [ei] fi | [ei] fi | ||||
| [ei] lv | [ei] lv | ||||
| [@] en_rp | [@] en_rp | ||||
| [V] cy | [V] cy | ||||
| [@4] hi | [@4] hi | ||||
| [@] hy | |||||
| [@] ml | [@] ml | ||||
| [@] kn | [@] kn | ||||
| [@4] bn | [@4] bn | ||||
| [@] hy | |||||
| [@] ga | [@] ga | ||||
| vowel/@- [@-] base | vowel/@- [@-] base | ||||
| [r*] hr | [r*] hr | ||||
| vowel/0_2 [0] en_n | vowel/0_2 [0] en_n | ||||
| [O] pt_pt | [O] pt_pt | ||||
| [o] sw | [o] sw | ||||
| vowel/0_3 [O] en_sc | |||||
| vowel/0_3 [O:] en_us | |||||
| [O] en_sc | |||||
| [0] en_rp | [0] en_rp | ||||
| [A] hu | [A] hu | ||||
| vowel/@_2 [@] vi | vowel/@_2 [@] vi | ||||
| [@] nl | [@] nl | ||||
| [@] no | [@] no | ||||
| vowel/@_5 [W] fr | vowel/@_5 [W] fr | ||||
| vowel/@_6 [@/] en_us | |||||
| vowel/8 [o-] zh | vowel/8 [o-] zh | ||||
| vowel/8_2 [U] en_us | vowel/8_2 [U] en_us | ||||
| [8] sv | [8] sv | ||||
| [a:] la | [a:] la | ||||
| [a] is | [a] is | ||||
| [A] zh | [A] zh | ||||
| [A] da | |||||
| [a] sq | [a] sq | ||||
| [A] da | |||||
| vowel/a#_3 [a2] en | vowel/a#_3 [a2] en | ||||
| [a2] en_n | [a2] en_n | ||||
| [a2] en_us | [a2] en_us | ||||
| [A] zh | [A] zh | ||||
| vowel/aa_3 [A:] af | vowel/aa_3 [A:] af | ||||
| [A] sq | [A] sq | ||||
| vowel/aa_4 [O:] en_us | |||||
| [A:] sv | |||||
| vowel/aa_4 [A:] sv | |||||
| [O] vi | [O] vi | ||||
| vowel/aa_5 [A:] en_n | vowel/aa_5 [A:] en_n | ||||
| [A:] en_wm | [A:] en_wm | ||||
| [e] grc | [e] grc | ||||
| [e] vi | [e] vi | ||||
| [e] id | [e] id | ||||
| [e] sq | |||||
| [e] rw | [e] rw | ||||
| [e#] rw | [e#] rw | ||||
| [e] ko | [e] ko | ||||
| [e] da | [e] da | ||||
| [e] sq | |||||
| [e] ml | [e] ml | ||||
| [e:] ml | [e:] ml | ||||
| [e:] kn | [e:] kn | ||||
| [E] tr | [E] tr | ||||
| [E] id | [E] id | ||||
| [E2] id | [E2] id | ||||
| [e] hy | |||||
| [E] da | [E] da | ||||
| [E] bn | [E] bn | ||||
| [e] hy | |||||
| vowel/e_mid2 [E] af | vowel/e_mid2 [E] af | ||||
| [E] de | [E] de | ||||
| [E2] de | [E2] de | ||||
| [e] el | [e] el | ||||
| [e] sw | [e] sw | ||||
| [e] tr | [e] tr | ||||
| [E] ko | |||||
| [e#] sq | [e#] sq | ||||
| [E] ko | |||||
| [e] kn | [e] kn | ||||
| [E] om | [E] om | ||||
| [E#] om | [E#] om | ||||
| [i] zhy | [i] zhy | ||||
| [i] zh | [i] zh | ||||
| [i] sw | [i] sw | ||||
| [i] hy | |||||
| [i] rw | [i] rw | ||||
| [i#] rw | [i#] rw | ||||
| [i] ko | [i] ko | ||||
| [i:] ml | [i:] ml | ||||
| [i:] kn | [i:] kn | ||||
| [i] ne | [i] ne | ||||
| [i] hy | |||||
| [i:] om | [i:] om | ||||
| [i:] ga | [i:] ga | ||||
| vowel/i# [y:] cy | vowel/i# [y:] cy | ||||
| [@2] bn | [@2] bn | ||||
| [V] ne | [V] ne | ||||
| [@/] ne | [@/] ne | ||||
| vowel/@_low2 [@/] en_us | |||||
| [@2] en_us | |||||
| vowel/o [o] base2 | vowel/o [o] base2 | ||||
| [o:] en | [o:] en | ||||
| [oU] en_n | [oU] en_n | ||||
| [o] grc | [o] grc | ||||
| [o:] sv | [o:] sv | ||||
| [o] id | [o] id | ||||
| [o] hy | |||||
| [o] rw | [o] rw | ||||
| [o#] rw | [o#] rw | ||||
| [o] ml | [o] ml | ||||
| [o] kn | [o] kn | ||||
| [o:] kn | [o:] kn | ||||
| [o] bn | [o] bn | ||||
| [o] hy | |||||
| [o:] ga | [o:] ga | ||||
| vowel/o_2 [o:] cy | vowel/o_2 [o:] cy | ||||
| [o2] fr | [o2] fr | ||||
| vowel/oe [W] en | vowel/oe [W] en | ||||
| [W] af | [W] af | ||||
| [W] de | [W] de | ||||
| [W] da | |||||
| [W] hy | [W] hy | ||||
| [W] da | |||||
| vowel/oe_2 [W] no | vowel/oe_2 [W] no | ||||
| [W] tr | [W] tr | ||||
| vowel/oe_4 [W] sv | vowel/oe_4 [W] sv | ||||
| [u] is | [u] is | ||||
| [u] zhy | [u] zhy | ||||
| [u] zh | [u] zh | ||||
| [u] hy | |||||
| [u] rw | [u] rw | ||||
| [u#] rw | [u#] rw | ||||
| [u] ko | [u] ko | ||||
| [u:] bn | [u:] bn | ||||
| [u] ne | [u] ne | ||||
| [u] hy | |||||
| [u:] ga | [u:] ga | ||||
| vowel/u_bck2 [u:] la | vowel/u_bck2 [u:] la | ||||
| [u] sq | [u] sq |
| endphoneme | 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 | phoneme l | ||||
| liquid | liquid | ||||
| length 100 | length 100 |
| 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 | // VOWELS |
| //******************************************************************* | //******************************************************************* | ||||
| // VOWELS | // VOWELS | ||||
| //******************************************************************* | //******************************************************************* | ||||
| formants vwl_en_us/3_us | formants vwl_en_us/3_us | ||||
| unstressed | unstressed | ||||
| linkout r- | linkout r- | ||||
| // beforevowel @ | |||||
| length 210 | length 210 | ||||
| endphoneme | endphoneme | ||||
| vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
| formants vowel/@_4 | formants vowel/@_4 | ||||
| unstressed | unstressed | ||||
| before_r 3 | |||||
| length 130 | length 130 | ||||
| endphoneme | endphoneme | ||||
| phoneme @/ // Schwa, end of word | phoneme @/ // Schwa, end of word | ||||
| vowel starttype (@) endtype (@) | vowel starttype (@) endtype (@) | ||||
| formants vowel/@_6 | |||||
| formants vowel/@_low2 | |||||
| unstressed | unstressed | ||||
| length 130 | length 130 | ||||
| endphoneme | endphoneme | ||||
| phoneme @2 // Schwa, changes to I before a vowel | |||||
| vowel starttype (@) endtype (@) | |||||
| formants vowel/@_low2 | |||||
| unstressed | |||||
| beforevowel I2 | |||||
| length 120 | |||||
| endphoneme | |||||
| phoneme @L | phoneme @L | ||||
| vowel starttype (@) endtype l | vowel starttype (@) endtype l | ||||
| phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American | phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American | ||||
| vowel starttype (a) endtype (@) | vowel starttype (a) endtype (@) | ||||
| length 250 | |||||
| length 260 | |||||
| formants vwl_en_us/ar | formants vwl_en_us/ar | ||||
| appendph r | appendph r | ||||
| endphoneme | endphoneme | ||||
| phoneme O: | phoneme O: | ||||
| vowel starttype (a) endtype (a) | |||||
| vowel starttype (o) endtype (o) | |||||
| length 210 | 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/oor | ||||
| // before r vwl_en_us/or | |||||
| reduceto @ 0 | reduceto @ 0 | ||||
| endphoneme | endphoneme | ||||
| phoneme O | phoneme O | ||||
| vowel starttype (a) endtype (a) | |||||
| vowel starttype (o) endtype (o) | |||||
| length 200 | length 200 | ||||
| formants vowel/aa# | formants vowel/aa# | ||||
| reduceto @ 0 | reduceto @ 0 |
| 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 | // VOWELS |
| endphoneme | endphoneme | ||||
| phoneme ts | phoneme ts | ||||
| vls alv afr sibilant | vls alv afr sibilant | ||||
| vowelin f1=0 f2=1700 -300 300 f3=-100 80 | vowelin f1=0 f2=1700 -300 300 f3=-100 80 | ||||
| lengthmod 2 | lengthmod 2 | ||||
| wave ustop/ts | wave ustop/ts | ||||
| before _ 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 | endphoneme | ||||
| phoneme w | phoneme w | ||||
| liquid | liquid | ||||
| length 100 | length 100 |
| phoneme r | phoneme r | ||||
| liquid starttype #r endtype #r | liquid starttype #r endtype #r | ||||
| rhotic | |||||
| length 100 | length 100 | ||||
| lengthmod 7 | lengthmod 7 | ||||
| beforenotvowel r/ | beforenotvowel r/ | ||||
| phonemetable id base2 | phonemetable id base2 | ||||
| include ph_indonesian | include ph_indonesian | ||||
| phonemetable sq base | |||||
| include ph_albanian | |||||
| phonemetable hy base | |||||
| include ph_armenian | |||||
| phonemetable rw base2 | phonemetable rw base2 | ||||
| phonemetable da is | phonemetable da is | ||||
| include ph_danish | include ph_danish | ||||
| phonemetable sq base | |||||
| include ph_albanian | |||||
| phonemetable ml hi | phonemetable ml hi | ||||
| include ph_malayalam | include ph_malayalam | ||||
| phonemetable ne hi | phonemetable ne hi | ||||
| include ph_nepali | include ph_nepali | ||||
| phonemetable hy base | |||||
| include ph_armenian | |||||
| phonemetable om base | phonemetable om base | ||||
| include ph_oromo | include ph_oromo | ||||
| #define tBEFORENOTVOWEL 19 | #define tBEFORENOTVOWEL 19 | ||||
| #define tBEFORENOTVOWEL2 20 | #define tBEFORENOTVOWEL2 20 | ||||
| #define tSWITCHVOICING 21 | #define tSWITCHVOICING 21 | ||||
| #define tBEFORE_R 22 | |||||
| #define tLINKOUT 23 | #define tLINKOUT 23 | ||||
| #define tVOWELIN 24 | #define tVOWELIN 24 | ||||
| #define tSTRESSTYPE 32 | #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 MakeVowelLists(void); | ||||
| extern void FindPhonemesUsed(void); | extern void FindPhonemesUsed(void); | ||||
| {"beforevowelpause", tBEFOREVOWELPAUSE}, | {"beforevowelpause", tBEFOREVOWELPAUSE}, | ||||
| {"beforenotvowel",tBEFORENOTVOWEL}, | {"beforenotvowel",tBEFORENOTVOWEL}, | ||||
| {"beforenotvowel2",tBEFORENOTVOWEL2}, | {"beforenotvowel2",tBEFORENOTVOWEL2}, | ||||
| {"before_r",tBEFORE_R}, | |||||
| {"linkout",tLINKOUT}, | {"linkout",tLINKOUT}, | ||||
| {"switchvoicing",tSWITCHVOICING}, | {"switchvoicing",tSWITCHVOICING}, | ||||
| {"vowelin",tVOWELIN}, | {"vowelin",tVOWELIN}, | ||||
| {"palatal", 0x2000000+phPALATAL}, | {"palatal", 0x2000000+phPALATAL}, | ||||
| {"long", 0x2000000+phLONG}, | {"long", 0x2000000+phLONG}, | ||||
| {"brkafter", 0x2000000+phBRKAFTER}, | {"brkafter", 0x2000000+phBRKAFTER}, | ||||
| {"rhotic", 0x2000000+phRHOTIC}, | |||||
| {"nonsyllabic",0x2000000+phNONSYLLABIC}, | {"nonsyllabic",0x2000000+phNONSYLLABIC}, | ||||
| {"lengthenstop",0x2000000+phLENGTHENSTOP}, | {"lengthenstop",0x2000000+phLENGTHENSTOP}, | ||||
| case tBEFORENOTVOWEL: | case tBEFORENOTVOWEL: | ||||
| case tBEFORENOTVOWEL2: | case tBEFORENOTVOWEL2: | ||||
| case tSWITCHVOICING: | case tSWITCHVOICING: | ||||
| case tBEFORE_R: | |||||
| ph->phflags |= flags_alternative[item - tBEFOREVOWEL]; | ph->phflags |= flags_alternative[item - tBEFOREVOWEL]; | ||||
| if((phcode = NextItem(tPHONEMEMNEM)) == -1) | if((phcode = NextItem(tPHONEMEMNEM)) == -1) | ||||
| phcode = LookupPhoneme(item_string,1); | phcode = LookupPhoneme(item_string,1); | ||||
| n = sscanf(line_buf,"%f %f %d",&env_x[n_points],&env_y[n_points],&env_lin[n_points]); | n = sscanf(line_buf,"%f %f %d",&env_x[n_points],&env_y[n_points],&env_lin[n_points]); | ||||
| if(n >= 2) | 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++; | n_points++; | ||||
| } | } | ||||
| } | } |
| static int compile_lettergroup(char *input, FILE *f_out) | static int compile_lettergroup(char *input, FILE *f_out) | ||||
| {//===================================================== | {//===================================================== | ||||
| char *p; | char *p; | ||||
| char *p_start; | |||||
| int group; | 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; | p = input; | ||||
| if(!isdigit(p[0]) || !isdigit(p[1])) | if(!isdigit(p[0]) || !isdigit(p[1])) | ||||
| fputc(group + 'A', f_out); | fputc(group + 'A', f_out); | ||||
| letterGroupsDefined[group] = 1; | letterGroupsDefined[group] = 1; | ||||
| for(;;) | |||||
| n_items = 0; | |||||
| while(n_items < N_LETTERGP_ITEMS) | |||||
| { | { | ||||
| while(isspace2(*p)) p++; | while(isspace2(*p)) p++; | ||||
| if(*p == 0) | if(*p == 0) | ||||
| break; | break; | ||||
| items[n_items] = p_start = p; | |||||
| while((*p & 0xff) > ' ') | 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); | fputc(RULE_GROUP_END,f_out); | ||||
| return(0); | return(0); |
| {//==================================== | {//==================================== | ||||
| // returns M, or perhaps MA for some cases | // 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) && | if ((translator->langopts.numbers2 & 0x40) && | ||||
| ((value % 10)>=2) && | ((value % 10)>=2) && |
| #define phBEFORENOTVOWEL 0x0c00 | #define phBEFORENOTVOWEL 0x0c00 | ||||
| #define phBEFORENOTVOWEL2 0x1000 | #define phBEFORENOTVOWEL2 0x1000 | ||||
| #define phSWITCHVOICING 0x0800 | #define phSWITCHVOICING 0x0800 | ||||
| #define phBEFORE_R 0x1400 | |||||
| #define phNONSYLLABIC 0x100000 // don't count this vowel as a syllable when finding the stress position | #define phNONSYLLABIC 0x100000 // don't count this vowel as a syllable when finding the stress position | ||||
| #define phLONG 0x200000 | #define phLONG 0x200000 | ||||
| #define phLENGTHENSTOP 0x400000 // make the pre-pause slightly longer | #define phLENGTHENSTOP 0x400000 // make the pre-pause slightly longer | ||||
| #define phRHOTIC 0x800000 | |||||
| // fixed phoneme code numbers, these can be used from the program code | // fixed phoneme code numbers, these can be used from the program code | ||||
| #define phonCONTROL 1 | #define phonCONTROL 1 |
| if(next->type == phVOWEL) | if(next->type == phVOWEL) | ||||
| alternative = ph->alternative_ph; | alternative = ph->alternative_ph; | ||||
| break; | break; | ||||
| case phBEFORE_R: | |||||
| if(next->phflags & phRHOTIC) | |||||
| { | |||||
| alternative = ph->alternative_ph; | |||||
| } | |||||
| break; | |||||
| } | } | ||||
| } | } | ||||
| if(ph->phflags & phBEFOREPAUSE) | if(ph->phflags & phBEFOREPAUSE) |
| } | } | ||||
| if((attr2 = GetSsmlAttribute(px,"time")) != NULL) | 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) | if(terminator == 0) | ||||
| terminator = CLAUSE_NONE; | terminator = CLAUSE_NONE; |
| { | { | ||||
| // these are used in synthesis file | // these are used in synthesis file | ||||
| s1 = (x * voice->speedf1)/256; | 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) | if(wpm >= 170) | ||||
| // speed_factor2 = 100 + (166*s1)/128; // reduced speed adjustment, used for playing recorded sounds | // 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 | 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 > 369) | ||||
| { | { | ||||
| if(wpm2 > 390) | if(wpm2 > 390) | ||||
| 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 | } // end of SetSpeed | ||||
| length_mod *= speed3; | length_mod *= speed3; | ||||
| length_mod = length_mod / 128; | length_mod = length_mod / 128; | ||||
| // if(length_mod < 9) | |||||
| // length_mod = 9; // restrict how much lengths can be reduced | |||||
| if(length_mod < 8) | if(length_mod < 8) | ||||
| length_mod = 8; // restrict how much lengths can be reduced | length_mod = 8; // restrict how much lengths can be reduced | ||||
| { | { | ||||
| // a pause phoneme, which has not been changed by the translation | // a pause phoneme, which has not been changed by the translation | ||||
| name = '_'; | name = '_'; | ||||
| len = (p->length * speed_factor1)/256; | |||||
| len = (p->length * speed.speed_factor1)/256; | |||||
| // if(len == 0) continue; | // if(len == 0) continue; | ||||
| if(len == 0) | if(len == 0) | ||||
| len = 1; | len = 1; | ||||
| } | } | ||||
| else | else | ||||
| len = (80 * speed_factor2)/256; | |||||
| len = (80 * speed.speed_factor2)/256; | |||||
| #ifdef USE_MBROLA_LIB | #ifdef USE_MBROLA_LIB | ||||
| MbrolaMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, ph->mnemonic); | MbrolaMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, ph->mnemonic); | ||||
| break; | break; | ||||
| case phVSTOP: | case phVSTOP: | ||||
| len = (80 * speed_factor2)/256; | |||||
| len = (80 * speed.speed_factor2)/256; | |||||
| break; | break; | ||||
| case phFRICATIVE: | case phFRICATIVE: |
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.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; | const int version_phdata = 0x013900; | ||||
| int option_device_number = -1; | int option_device_number = -1; |
| int mbrola_delay; | int mbrola_delay; | ||||
| char mbrola_name[20]; | 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_pitch_cmd; | ||||
| static int last_amp_cmd; | static int last_amp_cmd; | ||||
| int len; | int len; | ||||
| if(control == 0) | if(control == 0) | ||||
| len = (pause * speed_factor1)/256; | |||||
| len = (pause * speed.speed_factor1)/256; | |||||
| else | 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 | if(len < 5) len = 5; // mS, limit the amount to which pauses can be shortened | ||||
| return(len); | return(len); | ||||
| length = length1; | 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) | if(format==0) | ||||
| min_length *= 2; | min_length *= 2; | ||||
| length_factor = length_mod; | length_factor = length_mod; | ||||
| if(frame1->frflags & FRFLAG_LEN_MOD) // reduce effect of 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 = (frame_length * samplerate)/1000; | ||||
| len = (len * length_factor)/256; | len = (len * length_factor)/256; |
| int control; | int control; | ||||
| } MBROLA_TAB; | } 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 | // phoneme table | ||||
| extern PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; | extern PHONEME_TAB *phoneme_tab[N_PHONEME_TAB]; | ||||
| extern unsigned char *envelope_data[18]; | extern unsigned char *envelope_data[18]; | ||||
| extern int formant_rate[]; // max rate of change of each formant | 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 long count_samples; | ||||
| extern int outbuf_size; | extern int outbuf_size; |
| SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama | SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama | ||||
| tr->langopts.numbers = 0x1; | tr->langopts.numbers = 0x1; | ||||
| tr->langopts.numbers2 = 0x100; | |||||
| tr->langopts.numbers2 = NUM2_100000; | |||||
| } | } | ||||
| break; | break; | ||||
| tr->langopts.param[LOPT_COMBINE_WORDS] = 4; // combine some prepositions with the following word | tr->langopts.param[LOPT_COMBINE_WORDS] = 4; // combine some prepositions with the following word | ||||
| tr->langopts.numbers = 0x0401 + 0x4000 + NUM_ROMAN; | 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.thousands_sep = 0; //no thousands separator | ||||
| tr->langopts.decimal_sep = ','; | tr->langopts.decimal_sep = ','; | ||||
| if(name2 == L('c','s')) | if(name2 == L('c','s')) | ||||
| { | { | ||||
| tr->langopts.numbers2 = 0x48; // variant numbers before milliards | |||||
| tr->langopts.numbers2 = 0x108; // variant numbers before milliards | |||||
| } | } | ||||
| SetLetterVowel(tr,'y'); | SetLetterVowel(tr,'y'); |
| // bit21= say "roman" after the number, not before | // bit21= say "roman" after the number, not before | ||||
| int numbers; | 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. | // bits 1-4 use variant form of numbers before thousands,millions,etc. | ||||
| // bit6=(LANG=pl) two forms of plural, M or MA | // bit6=(LANG=pl) two forms of plural, M or MA | ||||
| // bit7=(LANG-ru) use MB for 1 thousand, million, etc | // 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 | // bit9=(LANG=rw) say "thousand" and "million" before its number, not after | ||||
| // bit10=(LANG=sw) special word for 100,000 and 1,000,000 | // 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 numbers2; | ||||
| int max_roman; | int max_roman; |
| espeak_VOICE voice_selected; | 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 | // 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 | // 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 | // these need a phoneme table to have been specified | ||||
| #define V_REPLACE 29 | |||||
| #define V_CONSONANTS 30 | |||||
| V_REPLACE, | |||||
| V_CONSONANTS | |||||
| }; | |||||
| {"mbrola", V_MBROLA}, | {"mbrola", V_MBROLA}, | ||||
| {"consonants", V_CONSONANTS}, | {"consonants", V_CONSONANTS}, | ||||
| {"klatt", V_KLATT}, | {"klatt", V_KLATT}, | ||||
| {"fast_test", V_FAST}, | |||||
| // these just set a value in langopts.param[] | // these just set a value in langopts.param[] | ||||
| {"l_dieresis", 0x100+LOPT_DIERESES}, | {"l_dieresis", 0x100+LOPT_DIERESES}, | ||||
| voice->consonant_amp = 100; | voice->consonant_amp = 100; | ||||
| voice->consonant_ampv = 100; | voice->consonant_ampv = 100; | ||||
| memset(voice->klatt,0,sizeof(voice->klatt)); | memset(voice->klatt,0,sizeof(voice->klatt)); | ||||
| memset(speed.fast_settings,0,sizeof(speed.fast_settings)); | |||||
| #ifdef PLATFORM_RISCOS | #ifdef PLATFORM_RISCOS | ||||
| voice->roughness = 1; | voice->roughness = 1; | ||||
| voice->klatt[KLATT_Kopen] -= 40; | voice->klatt[KLATT_Kopen] -= 40; | ||||
| break; | break; | ||||
| case V_FAST: | |||||
| Read8Numbers(p,speed.fast_settings); | |||||
| SetSpeed(2); | |||||
| break; | |||||
| default: | default: | ||||
| if((key & 0xff00) == 0x100) | if((key & 0xff00) == 0x100) | ||||
| { | { |