Moved Croatian/Bosnian/Serbian dictionary source data to hbs_rules, hbs_list.
Added data for Ancient Greek voice ("grc").
In voice files, the attribute: word n adds a short pause between words. n = 1 to 4 for increasing pause length.
git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@103 d46cf337-b52f-0410-862d-fd96e6ae7743
master
| th v w x z | th v w x z | ||||
| Dictionary hr_dict | |||||
| & @ @- @2 a A a: aI | |||||
| aU E e e: E~ i I i: | |||||
| l- O o o: oU r- u U | |||||
| u: y | |||||
| * b d dZ dZ; f g h | |||||
| j k l l^ m n N n^ | |||||
| p r R s S t tS ts | |||||
| tS; v x z Z | |||||
| Dictionary hu_dict | Dictionary hu_dict | ||||
| A a: E e: i i: o o: | |||||
| u u: Y Y: | |||||
| : b c d dZ f g h | |||||
| j J k l m n n^ p | |||||
| R R2 s S s2 t tS ts | |||||
| v z Z | |||||
| Dictionary it_dict | Dictionary it_dict | ||||
| p ph R R2 R3 s s. S; | p ph R R2 R3 s s. S; | ||||
| t th ts ts. ts. tS; tS; tsh | t th ts ts. ts. tS; tS; tsh | ||||
| v w x z z. | v w x z z. | ||||
| Dictionary hbs_dict | |||||
| & @ @2 a A a: aI aU | |||||
| E e e: E~ i I i: l- | |||||
| O o o: oU r* r- u U | |||||
| u: y | |||||
| * b d dZ dZ; f g h | |||||
| j k l L l^ m n N | |||||
| n^ p r R s S t tS | |||||
| ts tS; v x z Z |
| naif naI'i:f | naif naI'i:f | ||||
| naïve naI'i:v | naïve naI'i:v | ||||
| nasa nasa2 | |||||
| nascent neIs@nt | nascent neIs@nt | ||||
| nativity $2 | nativity $2 | ||||
| natural natS@r@L | natural natS@r@L |
| as (tern a2s | as (tern a2s | ||||
| as (thm as | as (thm as | ||||
| as (tral as | as (tral as | ||||
| as (tro aas | |||||
| as (tro as | |||||
| as (trolog a2s | as (trolog a2s | ||||
| as (trono a2s | as (trono a2s | ||||
| ass (ym as | ass (ym as |
| ?1 _0lang _^_EN // speak numbers in English | |||||
| // articles | |||||
| hο $u // ὁ | |||||
| τὼ $u // τώ | |||||
| οhι $u // οἱ | |||||
| hη $u // ἡ | |||||
| τὰ $u // τά | |||||
| αhι $u // αἱ | |||||
| τὸ $u // τό | |||||
| τοὺ $u // τοῦ | |||||
| τοὶν $u // τοῖν | |||||
| τὴς $u // τῆς | |||||
| ταὶν $u // ταῖν | |||||
| τὼν $u // τῶν | |||||
| τῲ $u // τῷ | |||||
| τοὶς $u // τοῖς | |||||
| τῂ $u // τῇ | |||||
| ταὶν $u // ταῖν | |||||
| ταὶς $u // ταῖς | |||||
| τὸν $u // τόν | |||||
| τοὺς $u // τούς | |||||
| τὴν $u // τήν | |||||
| τὰς $u // τάς | |||||
| // Spelling to Phoneme rules for: Ancient Greek | |||||
| // Preliminary character substitution: | |||||
| // Convert tonos, oxia and perispomeni to varia | |||||
| // Remove psili (soft breathing) | |||||
| // Convert dasia accent to a separate prefix character ("h") | |||||
| // Remove iota subscripts | |||||
| // Replace Latin characters by same-shape Greek characters | |||||
| .replace | |||||
| a α // Latin->Greek | |||||
| o ο | |||||
| v ν | |||||
| A Α | |||||
| B Β | |||||
| E Ε | |||||
| Z Ζ | |||||
| H Η | |||||
| I Ι | |||||
| K Κ | |||||
| M Μ | |||||
| N Ν | |||||
| O Ο | |||||
| P Ρ | |||||
| T Τ | |||||
| Y Υ | |||||
| X Χ | |||||
| // alpha | |||||
| ά ὰ // tonos | |||||
| ά ὰ // oxia | |||||
| ᾴ ᾲ | |||||
| ᾶ ὰ | |||||
| ᾷ ᾲ | |||||
| ἀ α | |||||
| ἁ hα | |||||
| ἂ ὰ | |||||
| ἃ hὰ | |||||
| ἄ ὰ | |||||
| ἅ hὰ | |||||
| ἆ ὰ | |||||
| ἇ hὰ | |||||
| ᾀ ᾳ | |||||
| ᾁ hᾳ | |||||
| ᾂ ᾲ | |||||
| ᾃ hᾲ | |||||
| ᾄ ᾲ | |||||
| ᾅ hᾲ | |||||
| ᾆ ᾲ | |||||
| ᾇ hᾲ | |||||
| // epsilon | |||||
| έ ὲ | |||||
| έ ὲ | |||||
| ἐ ε | |||||
| ἑ hε | |||||
| ἒ ὲ | |||||
| ἓ hὲ | |||||
| ἔ ὲ | |||||
| ἕ hὲ | |||||
| // eta | |||||
| ή ὴ | |||||
| ή ὴ | |||||
| ῄ ῂ | |||||
| ῆ ὴ | |||||
| ῇ ῂ | |||||
| ἠ η | |||||
| ἡ hη | |||||
| ἢ ὴ | |||||
| ἣ hὴ | |||||
| ἤ ὴ | |||||
| ἥ hὴ | |||||
| ἦ ὴ | |||||
| ἧ hὴ | |||||
| ᾐ ῃ | |||||
| ᾑ hῃ | |||||
| ᾒ ῂ | |||||
| ᾓ hῂ | |||||
| ᾔ ῂ | |||||
| ᾕ hῂ | |||||
| ᾖ ῂ | |||||
| ᾗ hῂ | |||||
| //iota | |||||
| ί ὶ | |||||
| ί ὶ | |||||
| ῖ ὶ | |||||
| ἰ ι | |||||
| ἱ hι | |||||
| ἲ ὶ | |||||
| ἳ hὶ | |||||
| ἴ ὶ | |||||
| ἵ hὶ | |||||
| ἶ ὶ | |||||
| ἷ hὶ | |||||
| ΐ ῒ | |||||
| ῗ ῒ | |||||
| // omicron | |||||
| ό ὸ | |||||
| ό ὸ | |||||
| ὀ ο | |||||
| ὁ hο | |||||
| ὂ ὸ | |||||
| ὃ hὸ | |||||
| ὄ ὸ | |||||
| ὅ hὸ | |||||
| // upsilon | |||||
| ύ ὺ | |||||
| ύ ὺ | |||||
| ῦ ὺ | |||||
| ὐ υ | |||||
| ὑ hυ | |||||
| ὒ ὺ | |||||
| ὓ hὺ | |||||
| ὔ ὺ | |||||
| ὕ hὺ | |||||
| ὖ ὺ | |||||
| ὗ hὺ | |||||
| ΰ ῢ | |||||
| ῧ ῢ | |||||
| // omega | |||||
| ώ ὼ | |||||
| ώ ὼ | |||||
| ῴ ῲ | |||||
| ῶ ὼ | |||||
| ῷ ῲ | |||||
| ὠ ω | |||||
| ὡ hω | |||||
| ὢ ὼ | |||||
| ὣ hὼ | |||||
| ὤ ὼ | |||||
| ὥ hὼ | |||||
| ὦ ὼ | |||||
| ὧ hὼ | |||||
| ᾠ ῳ | |||||
| ᾡ hῳ | |||||
| ᾢ ῲ | |||||
| ᾣ hῲ | |||||
| ᾤ ῲ | |||||
| ᾥ hῲ | |||||
| ᾦ ῲ | |||||
| ᾧ hῲ | |||||
| // rho | |||||
| ῤ ρ | |||||
| ῥ hρ | |||||
| .group α | |||||
| α a | |||||
| αι aI | |||||
| αὶ 'aI | |||||
| αυ aU | |||||
| αὺ 'aU | |||||
| αhι haI | |||||
| αhὶ 'haI | |||||
| αhυ haU | |||||
| αhὺ 'haU | |||||
| .group β | |||||
| β b | |||||
| .group γ | |||||
| γ g | |||||
| γγ Ng | |||||
| .group δ | |||||
| δ d | |||||
| .group ε | |||||
| ε e | |||||
| ει e: | |||||
| εὶ 'e: | |||||
| ευ eU | |||||
| εὺ 'eU | |||||
| εhι he: | |||||
| εhὶ 'he: | |||||
| εhυ heU | |||||
| εhὺ 'heU | |||||
| .group ζ | |||||
| ζ z | |||||
| .group η | |||||
| η E: | |||||
| ηι EI: | |||||
| ηὶ 'EI: | |||||
| ηυ EU: | |||||
| ηὺ 'EU: | |||||
| ηhι hEI: | |||||
| ηhὶ 'hEI: | |||||
| ηhυ hEU: | |||||
| ηhὺ 'hEU: | |||||
| .group θ | |||||
| θ T | |||||
| .group ι | |||||
| ι i | |||||
| .group ϊ | |||||
| ϊ i | |||||
| .group κ | |||||
| κ k | |||||
| .group λ | |||||
| λ l | |||||
| .group μ | |||||
| μ m | |||||
| .group ν | |||||
| ν n | |||||
| .group ξ | |||||
| ξ ks | |||||
| .group ο | |||||
| ο o | |||||
| οι oI | |||||
| οὶ 'oI | |||||
| ου u: | |||||
| οὺ 'u: | |||||
| οhι hoI | |||||
| οhὶ 'hoI | |||||
| οhυ hu: | |||||
| οhὺ 'hu: | |||||
| .group π | |||||
| π p | |||||
| .group ρ | |||||
| ρ R | |||||
| .group ς | |||||
| ς s | |||||
| .group σ | |||||
| σ s | |||||
| .group τ | |||||
| τ t | |||||
| .group υ | |||||
| υ y | |||||
| υι yI | |||||
| υὶ 'yI | |||||
| υhι hyI | |||||
| υhὶ 'hyI | |||||
| .group ϋ | |||||
| ϋ y | |||||
| ϋι yI | |||||
| ϋὶ 'yI | |||||
| ϋhι hyI | |||||
| ϋhὶ 'hyI | |||||
| .group φ | |||||
| φ f | |||||
| .group χ | |||||
| χ x | |||||
| .group ψ | |||||
| ψ ps | |||||
| .group ω | |||||
| ω O: | |||||
| ωι OI: | |||||
| ωὶ 'OI: | |||||
| ωυ OU: | |||||
| ωὺ 'OU: | |||||
| ωhι hOI: | |||||
| ωhὶ 'hOI: | |||||
| ωhυ hOU: | |||||
| ωhὺ 'hOU: | |||||
| .group h // dasia (rough breathing) | |||||
| h h | |||||
| .group | |||||
| ὰ 'a | |||||
| ᾳ aI: | |||||
| ᾲ 'aI: | |||||
| ὲ 'e | |||||
| ὴ 'E: | |||||
| ῃ EI: | |||||
| ῂ 'EI: | |||||
| ὶ 'i | |||||
| ῒ 'i | |||||
| ὸ 'o | |||||
| ὺ 'y | |||||
| ῢ 'y | |||||
| ὼ 'O: | |||||
| ῳ OI: | |||||
| ῲ 'OI: | |||||
| // "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage | |||||
| // This file is UTF-8 encoded | |||||
| // Conditional rules: | |||||
| // ?1 Croatian | |||||
| // ?2 Serbian | |||||
| // ?3 Bosnian (Bosna and Hercegovina) | |||||
| // ?4 Serbian & Bosnian | |||||
| // Letters | |||||
| b b@ | |||||
| c ts@ | |||||
| č tS@ | |||||
| ć tS;@2 | |||||
| d d@ | |||||
| dž dZ@ | |||||
| đ dZ;@2 | |||||
| f f@ | |||||
| g g@ | |||||
| h x@ | |||||
| j j@2 | |||||
| k k@ | |||||
| l l@ | |||||
| lj l^@ | |||||
| m m@ | |||||
| n n@ | |||||
| nj n^@ | |||||
| p p@ | |||||
| q kv@ | |||||
| r R@ | |||||
| _s s@ | |||||
| š S@ | |||||
| t t@ | |||||
| v v@ | |||||
| w dvostr*uko||v@ | |||||
| ?2 w duplo||v@ | |||||
| x iks | |||||
| y ipsilon | |||||
| z z@ | |||||
| ž Z@ | |||||
| // symbols | |||||
| _?? znak // unknown symbol | |||||
| _?A slovo // unknown letter | |||||
| © 'aUtoRsk&||pr*av& | |||||
| % p'osto | |||||
| + plus | |||||
| € 'euRo | |||||
| ?4 € 'evr*o | |||||
| @ _'at | |||||
| ?2 @ tRgovatSkoi | |||||
| & _'end | |||||
| ! 'usklItSnIk | |||||
| ?2 ! 'uzvItSnIk | |||||
| : dv'ototSk& | |||||
| ?4 : dv'ot&tSk& | |||||
| # br*'oj_ | |||||
| / kr*'oz_ | |||||
| \\ b'EkslES | |||||
| ^ ts'iRkumfleks | |||||
| ~ t'ild& | |||||
| ¤ v'alut& | |||||
| § 'odlom&k | |||||
| µ m'ikr*o | |||||
| ¶ tSl'an&k | |||||
| ° st'up&n^ | |||||
| ?4 ° st'epen | |||||
| _" n'avodnIk | |||||
| ?2 _" n'avod | |||||
| _‚ 'otvoReni||n'avodnIk | |||||
| _„ sp'uSteni||n'avodnIk | |||||
| ?2 _„ z&tvoReni||n'avodnIk | |||||
| … tr*'i||t'otSke | |||||
| ?4 … tr*'i||t'atSke | |||||
| † kr*'iZ | |||||
| ?2 † kr-'st | |||||
| ‡ dv'ostr*Uki||kr*'iZ | |||||
| ?2 ‡ dv'ostRUki||kR'st | |||||
| ‰ pr*'omil | |||||
| _‹ 'otvoReni||n'avodnIk | |||||
| _‘ 'otvoReni||n'avodnIk | |||||
| _’ j'ednostr*'uki||n'avodnIk | |||||
| _“ 'otvoReni||n'avodnIk | |||||
| _” z'atvoReni||n'avodnIk | |||||
| • kr*'upna||t'otSk& | |||||
| ?4 • kr*'upna||t'atSk& | |||||
| _– En||ts'r-t& | |||||
| _— Em||ts'r-t& | |||||
| ™ pr*'o'izvodZ&tS | |||||
| ˘ br*'evis | |||||
| ¨ pr*'ijegl&s | |||||
| ?2 ¨ pr*'egl&s | |||||
| _« 'otvoReni||n'avodnIk | |||||
| _ pr*'ivr*emen&||ts'r-t'its& | |||||
| · p'ut& | |||||
| ¸ sed'il& | |||||
| _» z'atvoReni||n'avodnIk | |||||
| ® R'egistr*atsIj& | |||||
| ł l@||s&||ts'r-t'itsom | |||||
| × p'ut& | |||||
| ÷ p'odijel^,eno | |||||
| ?2 ÷ p'odel^,eno | |||||
| _$ d'ol&R | |||||
| _- m'inus | |||||
| _* zvj'ezdits& | |||||
| ?2 _* zv'ezdits& | |||||
| _= j'edn&ko | |||||
| _@ t'r-g'ov&tSko||'a | |||||
| ?2 _@ et | |||||
| _( 'otvoRen&||z'agr*ad& | |||||
| _) z'atvoRen&||z'agr*ad& | |||||
| _' 'apostr*of | |||||
| _, z'aRez | |||||
| ?2 _, z'apeta | |||||
| _- ts'r-t'its& | |||||
| _. t'otSk& | |||||
| ?4 _. t'atSk& | |||||
| _; t'otSk&z,a*Ez | |||||
| ?2 _; t'atSk&z,apeta | |||||
| ?3 _; t'atSk&z,a*Ez | |||||
| _< m'an^i||'od | |||||
| _= j'edn&ko | |||||
| _> v'etSi||'od | |||||
| _? 'upitnIk | |||||
| _& t'r-g'ov&tSko||'i | |||||
| _[ 'otvoRen&||'ugl&t& | |||||
| ?2 _[ 'otvoRen&||'ugl&st& | |||||
| _] z'atvoRen&||'ugl&t& | |||||
| ?2 _] z'atvoRen&||'ugl&st& | |||||
| __ ts'r-t& | |||||
| _` gr*'avis | |||||
| _{ 'otvoRen&||v'ititS&st& | |||||
| _| 'okomits& | |||||
| ?2 _| 'uspR&vn& | |||||
| _} z'atvoRen&||v'ititS&st& | |||||
| // Numbers | |||||
| _0 n'ul& | |||||
| _1 j'ed&n | |||||
| _2 dv'a | |||||
| _2f dv'ije | |||||
| ?2 _2f dv'E | |||||
| _3 tr*'i | |||||
| _4 tS'EtIRI | |||||
| _5 p'Et | |||||
| _6 S'Est | |||||
| _7 s'Ed&m | |||||
| _8 'os&m | |||||
| _9 d'EvEt | |||||
| _10 d'EsEt | |||||
| _11 j'ed&naIst | |||||
| _12 dv'anaIst | |||||
| _13 tr*'inaIst | |||||
| _14 tS'Etr-naIst | |||||
| _15 p'EtnaIst | |||||
| _16 S'EsnaIst | |||||
| _17 s'Ed&mnaIst | |||||
| _18 'os&mnaIst | |||||
| _19 d'EvEtnaIst | |||||
| ?2 _11 j'ed&naEst | |||||
| ?2 _12 dv'anaEst | |||||
| ?2 _13 tr*'inaEst | |||||
| ?2 _14 tS'Etr-naEst | |||||
| ?2 _15 p'EtnaEst | |||||
| ?2 _16 S'EsnaEst | |||||
| ?2 _17 s'Ed&mnaEst | |||||
| ?2 _18 'os&mnaEst | |||||
| ?2 _19 d'EvEtnaEst | |||||
| _2X dv'adEsEt | |||||
| _3X tr*'idEsEt | |||||
| _4X tS'Etr-dEsEt | |||||
| _5X p'EdEsEt | |||||
| _6X S'EzdEsEt | |||||
| _7X s'Ed&mdEsEt | |||||
| _8X 'os&mdEsEt | |||||
| _9X d'EvEdEsEt | |||||
| _0C st'o_ | |||||
| ?2 _0C st'O_ | |||||
| _2C dvj'est'o | |||||
| ?2 _2C dv'est'a_ | |||||
| ?2 _3C tR'ist'a_ | |||||
| ?2 _4C tSetR'ist'o_ | |||||
| _6C S'Est'o | |||||
| _0M1 t'isUtS;& | |||||
| _0MA1 t'isUtS;e | |||||
| _1M1 t'isUtS;U | |||||
| ?2 _0M1 h'il^,&d& | |||||
| ?2 _0MA1 h'il^,&de | |||||
| ?2 _1M1 h'il^,&dU | |||||
| ?2 _1MA1 jedn&||hiL&d& | |||||
| ?3 _0M1 h'il^ad& | |||||
| ?3 _0MA1 h'il^ade | |||||
| ?3 _1M1 h'il^adU | |||||
| _0M2 m'ilijUna | |||||
| _0MA2 m'ilijUna | |||||
| _1M2 m'ilijUn | |||||
| ?4 _0M2 m'ilijOna | |||||
| ?4 _0MA2 m'ilijOna | |||||
| ?4 _1M2 m'ilijOn | |||||
| _0M3 m'iliaRdI | |||||
| _0MA3 m'iliaRde | |||||
| _1M3 m'iliaRdU | |||||
| ?2 _0M3 milijArdI | |||||
| ?2 _0MA3 milijArde | |||||
| ?2 _1M3 milijArdU | |||||
| _0M4 b'ilijUna | |||||
| _1M4 b'ilijUn | |||||
| ?4 _0M4 b'ilijOna | |||||
| ?4 _1M4 b'ilijOn | |||||
| _dpt _:z'a*Ez_ | |||||
| _roman r*'imsko | |||||
| // not Roman numerals | |||||
| // vi vi // not needed if only all-capitals are spoken as Roman numbers | |||||
| // Abbreviations | |||||
| aaa $abbrev | |||||
| aac $abbrev | |||||
| ab $only $abbrev $capital | |||||
| abc $abbrev | |||||
| abk $only $abbrev | |||||
| abs $abbrev | |||||
| acc $only $abbrev | |||||
| acf $only $abbrev | |||||
| acfm $abbrev | |||||
| acg $only $abbrev | |||||
| acgm $abbrev | |||||
| acl $only $abbrev | |||||
| acm $only $abbrev | |||||
| acw $only $abbrev | |||||
| add $only $abbrev | |||||
| adn $only $abbrev | |||||
| adp $only $abbrev | |||||
| adsl $abbrev | |||||
| agm $abbrev | |||||
| ahk $only $abbrev | |||||
| aif $only $abbrev | |||||
| aip $only $abbrev | |||||
| alg $only $abbrev | |||||
| alm $only $abbrev | |||||
| amd $only $abbrev | |||||
| amf $only $abbrev | |||||
| amg $only $abbrev | |||||
| aph $only $abbrev | |||||
| apj $only $abbrev | |||||
| apl $only $abbrev | |||||
| apm $only $abbrev | |||||
| app $only $abbrev | |||||
| arg $only $abbrev | |||||
| arj $only $abbrev | |||||
| asc $only $abbrev | |||||
| asf $only $abbrev | |||||
| asm $only $abbrev | |||||
| asn $only $abbrev | |||||
| asp $only $abbrev | |||||
| asx $only $abbrev | |||||
| atf $only $abbrev | |||||
| atp $abbrev | |||||
| av $only $abbrev | |||||
| avg $abbrev | |||||
| avr $only $abbrev | |||||
| awb $only $abbrev | |||||
| awt $only $abbrev | |||||
| brf $abbrev | |||||
| brl $abbrev | |||||
| brx $abbrev | |||||
| cca $abbrev | |||||
| cda $only $abbrev | |||||
| cdr $abbrev | |||||
| cdrw $abbrev | |||||
| cgi $abbrev | |||||
| clr $abbrev | |||||
| cpe $only $abbrev | |||||
| cpu $only $abbrev | |||||
| cr $only $abbrev | |||||
| crt $only $abbrev | |||||
| ctrl $abbrev | |||||
| daa $only $abbrev | |||||
| doo $abbrev | |||||
| dox $only $abbrev | |||||
| dqy $abbrev | |||||
| dsr $only $abbrev | |||||
| ear $only $abbrev | |||||
| ecdl $only $abbrev | |||||
| ecp $only $abbrev | |||||
| ecs $only $abbrev | |||||
| elm $only $abbrev | |||||
| emf $only $abbrev | |||||
| emh $only $abbrev | |||||
| eml $only $abbrev | |||||
| ems $only $abbrev | |||||
| epf $only $abbrev | |||||
| eq $only $abbrev | |||||
| esc $only $abbrev | |||||
| etd $only $abbrev | |||||
| eu $only $abbrev | |||||
| eur $only $abbrev | |||||
| exc $only $abbrev | |||||
| faq $abbrev | |||||
| fbi $abbrev | |||||
| ffa $only $abbrev | |||||
| fr $only $abbrev | |||||
| frm $abbrev | |||||
| frt $only $abbrev | |||||
| frx $abbrev | |||||
| gho $only $abbrev | |||||
| gr $only $abbrev | |||||
| grr $abbrev | |||||
| grrr $abbrev | |||||
| grp $abbrev | |||||
| grps $abbrev | |||||
| grs $only $abbrev | |||||
| grx $only $abbrev | |||||
| gui $only $abbrev | |||||
| hho $abbrev | |||||
| hr $only $abbrev | |||||
| hrk $only $abbrev | |||||
| hrt $only $abbrev $capital | |||||
| hrv $only $abbrev | |||||
| hta $only $abbrev | |||||
| hzzo $abbrev | |||||
| ibm $abbrev | |||||
| icc $only $abbrev | |||||
| icm $only $abbrev | |||||
| ics $only $abbrev | |||||
| idb $only $abbrev | |||||
| idc $only $abbrev | |||||
| idm $only $abbrev | |||||
| iff $only $abbrev | |||||
| ifu $only $abbrev | |||||
| ilk $only $abbrev | |||||
| img $only $abbrev | |||||
| iml $only $abbrev | |||||
| isdn $abbrev | |||||
| isl $only $abbrev | |||||
| isp $only $abbrev | |||||
| iss $only $abbrev | |||||
| iq $only $abbrev | |||||
| iqy $only $abbrev | |||||
| itw $only $abbrev | |||||
| itz $only $abbrev | |||||
| ivf $only $abbrev | |||||
| jpi $only $abbrev | |||||
| jrr $abbrev | |||||
| jse $only $abbrev | |||||
| lha $abbrev | |||||
| liq $only $abbrev | |||||
| maq $only $abbrev | |||||
| maw $only $abbrev | |||||
| mda $only $abbrev | |||||
| mde $only $abbrev | |||||
| mdi $only $abbrev | |||||
| mga $only $abbrev | |||||
| mge $only $abbrev | |||||
| mgi $only $abbrev | |||||
| mpa $only $abbrev | |||||
| mpe $only $abbrev | |||||
| mpr $only $abbrev | |||||
| msi $only $abbrev | |||||
| mup $abbrev $capital | |||||
| nco $only $abbrev | |||||
| nfo $only $abbrev | |||||
| nji $only $abbrev | |||||
| nr $only $abbrev | |||||
| nra $only $abbrev | |||||
| nrb $only $abbrev | |||||
| nrc $only $abbrev | |||||
| nre $only $abbrev | |||||
| nrf $only $abbrev | |||||
| nrg $abbrev | |||||
| nrh $only $abbrev | |||||
| nri $only $abbrev | |||||
| nrm $only $abbrev | |||||
| nrq $only $abbrev | |||||
| nrs $only $abbrev | |||||
| nru $only $abbrev | |||||
| nrw $only $abbrev | |||||
| nsa $only $abbrev | |||||
| nsi $only $abbrev | |||||
| nvda $abbrev | |||||
| obd $only $abbrev | |||||
| obj $only $abbrev | |||||
| obt $only $abbrev | |||||
| obz $only $abbrev | |||||
| ocr $only $abbrev | |||||
| ocx $only $abbrev | |||||
| oem $abbrev | |||||
| off $only $abbrev | |||||
| oft $only $abbrev | |||||
| ofx $only $abbrev | |||||
| ogc $only $abbrev | |||||
| ogg $only $abbrev | |||||
| ogl $only $abbrev | |||||
| omw $abbrev | |||||
| oqy $only $abbrev | |||||
| os $only $abbrev $capital | |||||
| oss $only $abbrev | |||||
| otf $only $abbrev | |||||
| otm $only $abbrev | |||||
| pda $abbrev | |||||
| pdi $only $abbrev | |||||
| pgi $only $abbrev | |||||
| pho $only $abbrev | |||||
| pko $only $abbrev | |||||
| pma $only $abbrev | |||||
| ppa $only $abbrev | |||||
| pr $only $abbrev | |||||
| prf $only $abbrev | |||||
| prg $only $abbrev | |||||
| prn $abbrev | |||||
| prt $only $abbrev | |||||
| qbr $abbrev | |||||
| qpr $abbrev | |||||
| raw $only $abbrev | |||||
| rb $abbrev | |||||
| rba $abbrev | |||||
| rc $only $abbrev | |||||
| rcc $abbrev | |||||
| rcd $abbrev | |||||
| rcs $abbrev | |||||
| rd $only $abbrev | |||||
| rds $abbrev | |||||
| rgb $abbrev | |||||
| rh $only $abbrev | |||||
| rk $only $abbrev | |||||
| rm $only $abbrev | |||||
| rma $only $abbrev | |||||
| rme $only $abbrev | |||||
| rmf $only $abbrev | |||||
| rmi $only $abbrev | |||||
| rmt $only $abbrev | |||||
| rmx $abbrev | |||||
| rn $only $abbrev | |||||
| rnk $only $abbrev | |||||
| rp $only $abbrev | |||||
| rqy $only $abbrev | |||||
| rs $abbrev | |||||
| rss $abbrev | |||||
| rta $abbrev | |||||
| rtf $abbrev | |||||
| rtl $abbrev | |||||
| rttl $abbrev | |||||
| rtv $abbrev | |||||
| rw $abbrev | |||||
| rwo $only $abbrev | |||||
| rx $abbrev | |||||
| sbr $only $abbrev | |||||
| scr $only $abbrev | |||||
| sr $only $abbrev | |||||
| srd $only $abbrev | |||||
| ssa $only $abbrev | |||||
| sys $only $abbrev | |||||
| tpu $only $abbrev | |||||
| udf $only $abbrev | |||||
| udl $only $abbrev | |||||
| udt $abbrev | |||||
| uhh $abbrev | |||||
| uif $only $abbrev | |||||
| uip $only $abbrev | |||||
| url $only $abbrev | |||||
| usd $only $abbrev | |||||
| usr $only $abbrev | |||||
| uss $only $abbrev | |||||
| uu $only $abbrev | |||||
| uue $only $abbrev | |||||
| uup $only $abbrev | |||||
| uxd $only $abbrev | |||||
| vba $only $abbrev | |||||
| vbe $only $abbrev | |||||
| vbr $abbrev | |||||
| vga $abbrev | |||||
| wax $only $abbrev | |||||
| wbr $abbrev | |||||
| wiz $only $abbrev | |||||
| wma $only $abbrev | |||||
| wri $only $abbrev | |||||
| wta $abbrev | |||||
| xam $only $abbrev | |||||
| xba $only $abbrev | |||||
| xiw $only $abbrev | |||||
| xla $only $abbrev | |||||
| xpa $only $abbrev | |||||
| xpi $only $abbrev | |||||
| xsi $only $abbrev | |||||
| xxa $only $abbrev | |||||
| xxe $only $abbrev | |||||
| xy $abbrev | |||||
| xyz $abbrev | |||||
| yu $only $abbrev | |||||
| zaa $only $abbrev | |||||
| zoo $only $abbrev | |||||
| br $dot $abbrev | |||||
| dr $dot $abbrev | |||||
| mr $dot $abbrev | |||||
| mrs $dot $abbrev | |||||
| itd $dot $abbrev | |||||
| npr $dot $abbrev | |||||
| str $only $dot $abbrev | |||||
| inc $dot | |||||
| prof $dot | |||||
| sl $dot | |||||
| tj $dot | |||||
| tzv $dot | |||||
| // Demonstratives | |||||
| tko $u+ | |||||
| ?4 šta $u+ | |||||
| što $u+ | |||||
| koga $pause | |||||
| čega $pause | |||||
| // Pronouns | |||||
| // Prepositions | |||||
| o $u $brk | |||||
| u $u $brk | |||||
| s s_ $brk | |||||
| // Conjunctions | |||||
| a $u $pause // and | |||||
| i $u $pause // and | |||||
| ali $pause // but | |||||
| nego $pause // but | |||||
| ili $u $pause // or | |||||
| // Auxillary verbs | |||||
| li $u // question | |||||
| sam $u // to be, short form | |||||
| si $u | |||||
| je $u | |||||
| smo $u | |||||
| ste $u | |||||
| su $u | |||||
| bio $u // to be, past tense | |||||
| bila $u | |||||
| bilo $u | |||||
| bili $u | |||||
| nisam $u+ // to be, negative | |||||
| nisi $u+ | |||||
| nije $u+ | |||||
| nismo $u+ | |||||
| niste $u+ | |||||
| nisu $u+ | |||||
| imam $u+ // to have | |||||
| imaš $u+ | |||||
| ima $u+ | |||||
| imamo $u+ | |||||
| imate $u+ | |||||
| imaju $u+ | |||||
| nemam $u+ // to have, negative | |||||
| nemaš $u+ | |||||
| nema $u+ | |||||
| nemamo $u+ | |||||
| nemate $u+ | |||||
| nemaju $u+ | |||||
| // treat as letters if at the end of the clause | |||||
| a a $atend // letter-a | |||||
| i i $atend // letter-i | |||||
| o o $atend // letter-o | |||||
| s s@ $atend | |||||
| u u $atend | |||||
| // Exceptions | |||||
| ctrl tsontRo:l | |||||
| control tsontRo:l | |||||
| docx d'ots||'iks | |||||
| jpeg j@2||p'eg | |||||
| macx m'ats||'iks | |||||
| potx p'ot||'iks | |||||
| sisx s'is||'iks | |||||
| start st'aRt | |||||
| utf u||te||ef | |||||
| ?2 ra R& | |||||
| ?2 re Re | |||||
| ?2 ar &R | |||||
| ?2 er eR |
| // translation rules for Croatian | |||||
| // "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage | |||||
| // This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
| //The next line gives a voice which is used to find a phoneme table to use to compile this dictionary | |||||
| //voice=hr | |||||
| // Conditional rules: | // Conditional rules: | ||||
| // ?1 Croatian | // ?1 Croatian | ||||
| // ?2 Bosnian (Bosna and Hercegovina) | |||||
| // ?2 Serbian | |||||
| // ?3 Bosnian (Bosna and Hercegovina) | |||||
| // ?4 Serbian & Bosnian | |||||
| .group a | .group a | ||||
| a a | a a | ||||
| e E | e E | ||||
| j) e e | j) e e | ||||
| e (j e | e (j e | ||||
| ._) exe %ekse // filetype | |||||
| _) exe %ekse // filetype | |||||
| ?2 _) exe %eikse // filetype | |||||
| .group f | .group f | ||||
| f f | f f | ||||
| .group q | .group q | ||||
| q k | q k | ||||
| qu kv | qu kv | ||||
| ?2 qu ku | |||||
| .group r | .group r | ||||
| r R | r R | ||||
| A) r (A R | A) r (A R | ||||
| K) r (A @-* | |||||
| K) r (A r* // this phoneme expands to [@-*] | |||||
| rr R | rr R | ||||
| r (_ R | r (_ R | ||||
| $ d'ol&R | $ d'ol&R | ||||
| . totSk& | . totSk& | ||||
| ?2 . tatSk& | |||||
| ?4 . tatSk& | |||||
| . (. _: | . (. _: | ||||
| \.) . | \.) . | ||||
| μ m'i | μ m'i | ||||
| ν n'i | ν n'i | ||||
| ξ ks'i | ξ ks'i | ||||
| ο 'omIk@-*on_ | |||||
| ο 'omIkr*on_ | |||||
| .group 0xcf // Greek letters | .group 0xcf // Greek letters | ||||
| ψ ps'i | ψ ps'i | ||||
| ω 'omeg& | ω 'omeg& | ||||
| ώ 'omeg&||t'onos | ώ 'omeg&||t'onos | ||||
| ό 'omIk@-*on||t'onos | |||||
| ό 'omIkr*on||t'onos | |||||
| // Translations for Hungarian words | |||||
| // This file is UTF-8 encoded. | |||||
| // Conditional rules: | |||||
| // ?1 speak "i" as Roman number | |||||
| // Numbers | |||||
| _0 nullA | |||||
| _1 EJ | |||||
| _2 kEttY: | |||||
| _3 ha:R2om | |||||
| _4 ne:J | |||||
| _5 Yt | |||||
| _6 hAt | |||||
| _7 he:t | |||||
| _8 n^olts | |||||
| _9 kilEnts | |||||
| _10 ti:z | |||||
| _1X tizEn | |||||
| _20 hu:s | |||||
| _2X huson | |||||
| _3X hAR2mints | |||||
| _4X nEJvEn | |||||
| _5X YtvEn | |||||
| _6X hAtvAn | |||||
| _7X hEtvEn | |||||
| _8X n^oltsvAn | |||||
| _9X kilEntsvEn | |||||
| _0C sa:z | |||||
| _1C sa:z | |||||
| _0M1 EzER2 | |||||
| _1M1 EzER2 | |||||
| _2M1 ke:tEzER2 | |||||
| _0M2 millio: | |||||
| _1M2 millio: | |||||
| _2M2 ke:tmillio: | |||||
| _0M3 millia:R2d | |||||
| _1M3 millia:R2d | |||||
| _1M3 ke:tmillia:R2d | |||||
| _0M4 billio: | |||||
| _1M4 billio: | |||||
| _2M4 ke:tbillio: | |||||
| _dpt ||_vEss2Y:_ | |||||
| // Abbreviations | |||||
| km kilo:me:tER2 | |||||
| mm milime:tER2 | |||||
| a.m An^n^i||m'int $dot | |||||
| dr doktoR2 $dot | |||||
| gpu $abbrev | |||||
| id idY:SEb: $dot | |||||
| ill illEdvE $dot | |||||
| ifj ifjAb: $dot | |||||
| mta $abbrev | |||||
| pl pe:lda:ul $dot | |||||
| stb SAtYb:i $dot | |||||
| u.n u:JnEvEzEt: $dot | |||||
| ú.n u:JnEvEzEt: $dot | |||||
| vö v'EZd||_'Yss2E | |||||
| ?1 i EJ $abbrev // option for Roman number | |||||
| // Articles | |||||
| a $u // the | |||||
| az $u | |||||
| aki $u+ // that | |||||
| ez $u+ // this | |||||
| // Pronouns | |||||
| // If these are only used for emphasis then then don't need $u | |||||
| // én $u | |||||
| // te $u | |||||
| // ő $u | |||||
| // mi $u | |||||
| // ti $u | |||||
| // ők $u | |||||
| // maga $u | |||||
| // maguk $u | |||||
| // Conjunctions | |||||
| és $u $strend2 // and | |||||
| de $u+ $pause // but | |||||
| vagy $u+ $pause // or | |||||
| mert $u $pause // because | |||||
| miatt $u // because | |||||
| bár $u $pause // although | |||||
| habár $u $pause // although | |||||
| ha $u $pause // if | |||||
| noha $u $pause // even thought | |||||
| // Prepositions etc. | |||||
| // Negative | |||||
| nem $alt2 $strend | |||||
| ne $u+ | |||||
| e $u // "-e" question | |||||
| e $atend // stressed at end of sentence | |||||
| // Unstressed adverbs prepositions etc. | |||||
| néhány $u+ | |||||
| is $u // also | |||||
| elöl $u // in front of | |||||
| elől $u | |||||
| elé $u | |||||
| előtt $u | |||||
| mögül $u // behind | |||||
| mögött $u | |||||
| mögé $u | |||||
| kívül $u | |||||
| után $u // after | |||||
| alól $u | |||||
| alá $u | |||||
| alatt $u // below | |||||
| felől $u // above | |||||
| felé $u | |||||
| fölé $u | |||||
| felett $u // above | |||||
| fölött $u | |||||
| mellől $u // besides | |||||
| mellé $u | |||||
| mellett $u | |||||
| közül $u | |||||
| közé $u | |||||
| között $u | |||||
| an $u // so many persons | |||||
| as $u | |||||
| ba $u // into | |||||
| ban $u // in | |||||
| be $u | |||||
| ben $u | |||||
| ból $u // from inside | |||||
| ből $u | |||||
| e $u // in query, his/her | |||||
| ei $u // his her multiole | |||||
| en $u | |||||
| es $u | |||||
| hez $u | |||||
| hoz $u // to | |||||
| höz $u | |||||
| ig $u // up to | |||||
| ik $u // -th | |||||
| nak $u // of, him/her | |||||
| nek $u | |||||
| nál $u // by | |||||
| nél $u | |||||
| on $u // on | |||||
| en $u // on | |||||
| os $u | |||||
| ra $u // onto | |||||
| re $u | |||||
| ról $u // from top of, about | |||||
| röl $u | |||||
| ről $u | |||||
| szer $u | |||||
| szor $u // times | |||||
| szór $u | |||||
| ször $u | |||||
| tól $u // from | |||||
| töl $u | |||||
| től $u | |||||
| val $u // with | |||||
| vel $u | |||||
| án $u // on that day | |||||
| é $u // his, her | |||||
| éi $u // his, her multiple | |||||
| én $u | |||||
| ón $u | |||||
| ós $u | |||||
| ön $u | |||||
| ös $u | |||||
| ellen $u // against | |||||
| elé $u // before | |||||
| óta $u // since | |||||
| sok $u // many | |||||
| kevés $u // few | |||||
| se $u // neither | |||||
| sem $u // nor | |||||
| be $u //into | |||||
| ki $u // out of | |||||
| le $u // down | |||||
| fel $u // up | |||||
| föl $u // up | |||||
| meg $u // finish an action | |||||
| el $u // away | |||||
| át $u //through | |||||
| rá $u //onto | |||||
| ide $u // here | |||||
| oda $u // there | |||||
| szét $u //apart | |||||
| össze $u //connect with | |||||
| vissza $u //back | |||||
| ellen $u //against | |||||
| volna $u // would | |||||
| részén $u //on ... part of | |||||
| nélkül $u // without | |||||
| folytán $u // because of | |||||
| úgy $u // like that | |||||
| így $u // like this | |||||
| egyaránt $u // alike | |||||
| minden $u // all | |||||
| részben $u // partly | |||||
| egyik $u // one of | |||||
| másik $u // the other | |||||
| // word pairs | |||||
| (hogy a) h,oJ,A | |||||
| (hogy az) h,oJ,Az | |||||
| (hogy aki) h,oJ,Aki | |||||
| // Verbs | |||||
| vagyok $u // to be, present | |||||
| vagy $u | |||||
| van $u | |||||
| vagyunk $u | |||||
| vagytok $u | |||||
| vannak $u | |||||
| voltam $u // to be, past | |||||
| voltál $u | |||||
| volt $u | |||||
| voltunk $u | |||||
| voltatok $u | |||||
| voltak $u | |||||
| leszek $u // to be, future | |||||
| leszel $u | |||||
| lesz $u | |||||
| leszünk $u | |||||
| lesztek $u | |||||
| lesznek $u | |||||
| kell $u+ // should | |||||
| szabad $u+ // can (allowed) | |||||
| fog $u+ // going to | |||||
| fogok $u+ | |||||
| fogsz $u+ | |||||
| fogunk $u+ | |||||
| fogtok $u+ | |||||
| fognak $u+ | |||||
| tud $u+ // can | |||||
| tudok $u+ | |||||
| tudsz $u+ | |||||
| tudunk $u+ | |||||
| tudtok $u+ | |||||
| tudnak $u+ | |||||
| // Letters | |||||
| _a A: | |||||
| a A: $atend // letter "a" | |||||
| b be: | |||||
| c tse: | |||||
| d de: | |||||
| _e E | |||||
| f Eff | |||||
| g ge: | |||||
| h ha: | |||||
| j je: | |||||
| k ka: | |||||
| l Ell | |||||
| m Emm | |||||
| n Enn | |||||
| p pe: | |||||
| q ku | |||||
| r ERR | |||||
| s S_ | |||||
| s ES $atend | |||||
| _s ES | |||||
| v ve: | |||||
| w duplAve: | |||||
| x iks | |||||
| y ipsilon | |||||
| z ze: | |||||
| _é e: | |||||
| é $atend | |||||
| cs tSe: | |||||
| dz dze: | |||||
| dzs dZe: | |||||
| sz Es | |||||
| zs Ze: | |||||
| gy Je: | |||||
| ty ce: | |||||
| ly Ellipsilon | |||||
| ny En^ | |||||
| _. pont | |||||
| Ft foR2int | |||||
| // Main Exceptions List | |||||
| //===================== | |||||
| nato na:to: | |||||
| name bosnian | name bosnian | ||||
| language bs | language bs | ||||
| phonemes hr | phonemes hr | ||||
| dictionary hr | |||||
| dictionary hbs | |||||
| gender male | gender male | ||||
| pitch 81 120 | pitch 81 120 |
| name greek-ancient | |||||
| language grc | |||||
| gender male | |||||
| stressLength 170 170 190 190 0 0 230 240 | |||||
| dictrules 1 | |||||
| words 1 | |||||
| name croatian | name croatian | ||||
| language hr | language hr | ||||
| language hbs | |||||
| gender male | gender male | ||||
| dictionary hbs | |||||
| // attributes towards !variant3 | // attributes towards !variant3 | ||||
| pitch 81 120 | pitch 81 120 | ||||
| formant 0 100 100 100 | formant 0 100 100 100 |
| name serbian | |||||
| language sr | |||||
| gender male | |||||
| dictionary hbs | |||||
| // attributes towards !variant3 pitch 80 120 | |||||
| formant 0 100 100 100 | |||||
| formant 1 97 97 100 | |||||
| formant 2 97 97 100 | |||||
| formant 3 97 102 100 | |||||
| formant 4 97 102 100 | |||||
| formant 5 97 102 100 | |||||
| stressAdd 10 10 0 0 0 0 -30 -30 |
| name Mandarin test | |||||
| language zh | |||||
| gender male | |||||
| words 1 | |||||
| //for some dialects | |||||
| //[en]: replace ng with n | |||||
| //[zh]: 无后鼻音,ng读成n | |||||
| //replace 0 N n | |||||
| //[en]: replace rfx consonants | |||||
| //[zh]: 无卷舌音,r读成l或z,er读成e | |||||
| //replace 0 ts.h tsh | |||||
| //replace 0 ts. ts | |||||
| //replace 0 s. s | |||||
| //replace 0 i. i[ | |||||
| //replace 0 z. l | |||||
| //replace 0 z. z | |||||
| //replace 0 @r @ | |||||
| //[en]: replace beginning n or l | |||||
| //[zh]: 不分nl,n读成l或l读成n | |||||
| //replace 2 n l | |||||
| //replace 2 l n | |||||
| //[en]: replace beginning w with v | |||||
| //[zh]: w读成v | |||||
| //replace 0 w v |
| pl 15 107 | pl 15 107 | ||||
| sk 29 125 | sk 29 125 | ||||
| cs 6 125 | cs 6 125 | ||||
| hr 19 129 | |||||
| mk 3 130 | |||||
| sr 2 129 | |||||
| hr 20 130 | |||||
| mk 3 131 | |||||
| sr 18 130 | |||||
| ru 38 126 | ru 38 126 | ||||
| it 17 118 | it 17 118 | ||||
| la 21 114 | la 21 114 | ||||
| [d;] ro | [d;] ro | ||||
| [d] el | [d] el | ||||
| [d] sw | [d] sw | ||||
| d/d_dnt [d] sr | |||||
| d/dr [*] base | d/dr [*] base | ||||
| [d] base | [d] base | ||||
| [d[] base | [d[] base | ||||
| [dz;] base | [dz;] base | ||||
| [J] hi | [J] hi | ||||
| [dZ;] mk | [dZ;] mk | ||||
| [dZ] sr | |||||
| [dZ;] sr | |||||
| [dZ;] ru | [dZ;] ru | ||||
| dzh/dzh_ [dZ] base | dzh/dzh_ [dZ] base | ||||
| [dZ;] base | [dZ;] base | ||||
| g/xg [g] base | g/xg [g] base | ||||
| [g] cy | [g] cy | ||||
| [g] es | [g] es | ||||
| h/h_ [h] base | |||||
| [h] fi | |||||
| [H] hi | |||||
| [h] hi | |||||
| [<h>] la | |||||
| h/h@ [h] base | |||||
| [h] fi | |||||
| [H] hi | |||||
| [h] hi | |||||
| [th] hi | |||||
| [h] sr | |||||
| [<h>] la | |||||
| h/ha [h] base | |||||
| [h] fi | |||||
| [H] hi | |||||
| [h] hi | |||||
| [<h>] la | |||||
| h/he [h] base | |||||
| [h] fi | |||||
| [H] hi | |||||
| [h] hi | |||||
| [<h>] la | |||||
| h/hi [h] base | |||||
| [h] fi | |||||
| [H] hi | |||||
| [h] hi | |||||
| [<h>] la | |||||
| h/ho [h] base | |||||
| [H] hi | |||||
| [h] hi | |||||
| [<h>] la | |||||
| h/hu [h] base | |||||
| [H] hi | |||||
| [h] hi | |||||
| [<h>] la | |||||
| h/hu_fi [h] fi | |||||
| j2/_j2 [;] base | j2/_j2 [;] base | ||||
| j2/j2@ [(@)] base | j2/j2@ [(@)] base | ||||
| j2/j2a [(a)] base | j2/j2a [(a)] base | ||||
| [(o)] base | [(o)] base | ||||
| [(u)] base | [(u)] base | ||||
| m/_m [m] base | m/_m [m] base | ||||
| [m] sr | |||||
| [m;] ru | [m;] ru | ||||
| [m;] ro | [m;] ro | ||||
| [m] zh | [m] zh | ||||
| m/m_ [m] base | m/m_ [m] base | ||||
| [m] sr | |||||
| [m;] ru | [m;] ru | ||||
| [m;] ro | [m;] ro | ||||
| m/m@ [(@)] base | m/m@ [(@)] base | ||||
| m/me [(e)] base | m/me [(e)] base | ||||
| m/mi [(i)] base | m/mi [(i)] base | ||||
| m/mj [m] base | m/mj [m] base | ||||
| [m] sr | |||||
| [m;] ru | [m;] ru | ||||
| [m;] ro | [m;] ro | ||||
| m/mo [(o)] base | m/mo [(o)] base | ||||
| m/m_sr.wav [m] sr | |||||
| m/mu [(u)] base | m/mu [(u)] base | ||||
| n^/_n^ [n^] base | n^/_n^ [n^] base | ||||
| [n^] sr | |||||
| n^/n^_ [n^] base | n^/n^_ [n^] base | ||||
| [n^] sr | |||||
| n^/n^@ [(@)] base | n^/n^@ [(@)] base | ||||
| n^/n^#_ [n^#] is | n^/n^#_ [n^#] is | ||||
| n/_n [n] base | n/_n [n] base | ||||
| [n] sr | |||||
| [n;] ro | [n;] ro | ||||
| [n] zh | [n] zh | ||||
| n/n_ [n] base | n/n_ [n] base | ||||
| [n] sr | |||||
| [n;] ro | [n;] ro | ||||
| [n] zh | [n] zh | ||||
| n/n@ [(@)] base | n/n@ [(@)] base | ||||
| n/nj [n] base | n/nj [n] base | ||||
| [n.] base | [n.] base | ||||
| [n^] base | [n^] base | ||||
| [n] sr | |||||
| [n^] sr | |||||
| [n;] ro | [n;] ro | ||||
| n^/nj_sr.wav [N] sr | |||||
| [n^] sr | |||||
| nn/_nn [N] base | nn/_nn [N] base | ||||
| [N] en | [N] en | ||||
| [N] sr | |||||
| [N] zh | [N] zh | ||||
| nn/nn_ [N] base | nn/nn_ [N] base | ||||
| [N] en | [N] en | ||||
| [N] sr | |||||
| [N] zh | [N] zh | ||||
| nn/nn@ [(@)] base | nn/nn@ [(@)] base | ||||
| nn/nn#_ [N#] is | nn/nn#_ [N#] is | ||||
| nn/nne [(e)] base | nn/nne [(e)] base | ||||
| nn/nni [(i)] base | nn/nni [(i)] base | ||||
| nn/nnj [N] base | nn/nnj [N] base | ||||
| [N] sr | |||||
| nn/nno [(o)] base | nn/nno [(o)] base | ||||
| nn/nnu [(u)] base | nn/nnu [(u)] base | ||||
| n^/n^o [(o)] base | n^/n^o [(o)] base | ||||
| n/no [(o)] base | n/no [(o)] base | ||||
| n/_nr [n.] base | n/_nr [n.] base | ||||
| n/nr_ [n.] base | n/nr_ [n.] base | ||||
| n/n_sr.wav [N] sr | |||||
| [n] sr | |||||
| n^/n^u [(u)] base | n^/n^u [(u)] base | ||||
| n/nu [(u)] base | n/nu [(u)] base | ||||
| r2/_r2 [r-] base | r2/_r2 [r-] base | ||||
| r3/r_n [r/] base | r3/r_n [r/] base | ||||
| [r/] ru | [r/] ru | ||||
| r3/r_o [(o)] base | r3/r_o [(o)] base | ||||
| r3/r_sr.wav [R] sr | |||||
| [r*] sr | |||||
| [r-] sr | |||||
| r3/r_trill [R2] base | r3/r_trill [R2] base | ||||
| [R3] base | [R3] base | ||||
| [r] af | [r] af | ||||
| [r] cy | [r] cy | ||||
| [r] nl | [r] nl | ||||
| [R] sk | [R] sk | ||||
| [R] sr | |||||
| [r*] sr | |||||
| [r-] sr | |||||
| [x] pt | [x] pt | ||||
| r3/r_trill2 [R] base | r3/r_trill2 [R] base | ||||
| [R] hr | [R] hr | ||||
| [(u)] base | [(u)] base | ||||
| ufric/ch [C] base | ufric/ch [C] base | ||||
| [C2] de | [C2] de | ||||
| ufric/ch_sr [h] sr | |||||
| [x] sr | |||||
| ufric/f [f] base | ufric/f [f] base | ||||
| [pF] de | [pF] de | ||||
| [f;] ro | [f;] ro | ||||
| [f] zh | [f] zh | ||||
| ufric/f_ [f] base | ufric/f_ [f] base | ||||
| [f;] ro | [f;] ro | ||||
| ufric/h_ [h] base | |||||
| [h] fi | |||||
| [H] hi | |||||
| [h] hi | |||||
| [<h>] la | |||||
| ufric/h@ [h] base | |||||
| [h] fi | |||||
| [H] hi | |||||
| [h] hi | |||||
| [th] hi | |||||
| [<h>] la | |||||
| ufric/ha [h] base | |||||
| [h] fi | |||||
| [H] hi | |||||
| [h] hi | |||||
| [<h>] la | |||||
| ufric/he [h] base | |||||
| [h] fi | |||||
| [H] hi | |||||
| [h] hi | |||||
| [<h>] la | |||||
| ufric/hi [h] base | |||||
| [h] fi | |||||
| [H] hi | |||||
| [h] hi | |||||
| [<h>] la | |||||
| ufric/ho [h] base | |||||
| [H] hi | |||||
| [h] hi | |||||
| [<h>] la | |||||
| ufric/hu [h] base | |||||
| [H] hi | |||||
| [h] hi | |||||
| [<h>] la | |||||
| ufric/hu_fi [h] fi | |||||
| ufric/ll [L] base | ufric/ll [L] base | ||||
| [l#] is | [l#] is | ||||
| ufric/s [s] base | ufric/s [s] base | ||||
| ufric/sh_pzd_ [S;] base | ufric/sh_pzd_ [S;] base | ||||
| [Z;] base | [Z;] base | ||||
| ufric/sh_rfx [s.] base | ufric/sh_rfx [s.] base | ||||
| ufric/sh_sr.wav [S] sr | |||||
| [Z] sr | |||||
| [dZ] sr | |||||
| ufric/s_pzd [s;] base | ufric/s_pzd [s;] base | ||||
| [z;] base | [z;] base | ||||
| [s;] ro | [s;] ro | ||||
| [x2] nl | [x2] nl | ||||
| [x2] pt | [x2] pt | ||||
| ufric/x_hr [x] hr | ufric/x_hr [x] hr | ||||
| ufric/x_sr [h] sr | |||||
| [x] sr | |||||
| ustop/c [c] base | ustop/c [c] base | ||||
| ustop/k [k] base | ustop/k [k] base | ||||
| [k] en | [k] en | ||||
| [t] el | [t] el | ||||
| ustop/tsh_pzd [tS;] zh | ustop/tsh_pzd [tS;] zh | ||||
| ustop/tsh_pzd_unasp [tS;] zh | ustop/tsh_pzd_unasp [tS;] zh | ||||
| ustop/tsh_sr.wav [tS] sr | |||||
| ustop/ts_pzd [tS;] base | ustop/ts_pzd [tS;] base | ||||
| [ts;] base | [ts;] base | ||||
| [ch] hi | [ch] hi | ||||
| [c] hu | [c] hu | ||||
| ustop/ts_pzd2 [c] hi | ustop/ts_pzd2 [c] hi | ||||
| [c] hu | [c] hu | ||||
| ustop/t_sr [d] sr | |||||
| [t] sr | |||||
| ustop/ts_rfx [ts.] zh | ustop/ts_rfx [ts.] zh | ||||
| ustop/ts_rfx_unasp [ts.] zh | ustop/ts_rfx_unasp [ts.] zh | ||||
| ustop/ts_sr.wav [tS;] sr | |||||
| [dZ;] sr | |||||
| ustop/ts_unasp [ts] zh | ustop/ts_unasp [ts] zh | ||||
| ustop/t_unasp [t] zh | ustop/t_unasp [t] zh | ||||
| vdiph/0i [OI] pt | vdiph/0i [OI] pt | ||||
| voc/zh [Z] base | voc/zh [Z] base | ||||
| [z.] base | [z.] base | ||||
| [R^] sk | [R^] sk | ||||
| [Z] sr | |||||
| [Z;] ro | [Z;] ro | ||||
| voc/zh_ [Z] base | voc/zh_ [Z] base | ||||
| [z.] base | [z.] base | ||||
| [@4] hi | [@4] hi | ||||
| [@] hr | [@] hr | ||||
| vowel/@- [@-] base | vowel/@- [@-] base | ||||
| [r*] hr | |||||
| vowel/& [a] en_rp | vowel/& [a] en_rp | ||||
| [&] fi | [&] fi | ||||
| [&:] hi | [&:] hi | ||||
| [a:] sk | [a:] sk | ||||
| [A] hr | [A] hr | ||||
| [a] hr | [a] hr | ||||
| [a] sr | |||||
| [a] it | [a] it | ||||
| [a:] la | [a:] la | ||||
| [a] zh | [a] zh |
| lengthmod 6 | lengthmod 6 | ||||
| endphoneme | endphoneme | ||||
| phoneme r* | |||||
| vowel nonsyllabic | |||||
| starttype (@) endtype (@) | |||||
| formants vowel/@- | |||||
| unstressed | |||||
| appendph * | |||||
| length 50 | |||||
| endphoneme | |||||
| vls glt apr | vls glt apr | ||||
| length 100 | length 100 | ||||
| lengthmod 3 | lengthmod 3 | ||||
| wave ufric/h_%70 // no vowel following | |||||
| before (@) ufric/h@ | |||||
| before (a) ufric/ha | |||||
| before (e) ufric/he | |||||
| before (i) ufric/hi | |||||
| before (o) ufric/hu_fi%70 | |||||
| before (u) ufric/hu_fi%80 | |||||
| wave h/h_%70 // no vowel following | |||||
| before (@) h/h@ | |||||
| before (a) h/ha | |||||
| before (e) h/he | |||||
| before (i) h/hi | |||||
| before (o) h/hu_fi%70 | |||||
| before (u) h/hu_fi%80 | |||||
| endphoneme | endphoneme | ||||
| vls glt apr | vls glt apr | ||||
| length 100 | length 100 | ||||
| lengthmod 3 | lengthmod 3 | ||||
| wave ufric/h_%70 // no vowel following | |||||
| before (@) ufric/h@+35 | |||||
| before (a) ufric/ha+35 | |||||
| before (e) ufric/he+35 | |||||
| before (i) ufric/hi+35 | |||||
| before (o) ufric/ho+35 | |||||
| before (u) ufric/hu+35 | |||||
| wave h/h_%70 // no vowel following | |||||
| before (@) h/h@+35 | |||||
| before (a) h/ha+35 | |||||
| before (e) h/he+35 | |||||
| before (i) h/hi+35 | |||||
| before (o) h/ho+35 | |||||
| before (u) h/hu+35 | |||||
| endphoneme | endphoneme | ||||
| phoneme H // use for full "h" | phoneme H // use for full "h" | ||||
| vls glt apr | vls glt apr | ||||
| length 100 | length 100 | ||||
| lengthmod 3 | lengthmod 3 | ||||
| wave ufric/h_%70 // no vowel following | |||||
| before (@) ufric/h@ | |||||
| before (a) ufric/ha | |||||
| before (e) ufric/he | |||||
| before (i) ufric/hi | |||||
| before (o) ufric/ho | |||||
| before (u) ufric/hu | |||||
| wave h/h_%70 // no vowel following | |||||
| before (@) h/h@ | |||||
| before (a) h/ha | |||||
| before (e) h/he | |||||
| before (i) h/hi | |||||
| before (o) h/ho | |||||
| before (u) h/hu | |||||
| endphoneme | endphoneme | ||||
| vowelin f1=0 f2=1500 -300 300 f3=-100 80 | vowelin f1=0 f2=1500 -300 300 f3=-100 80 | ||||
| vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | ||||
| lengthmod 2 | lengthmod 2 | ||||
| wave ustop/t_hi%50+ufric/h@ | |||||
| wave ustop/t_hi%50+h/h@ | |||||
| switchvoicing d | switchvoicing d | ||||
| endphoneme | endphoneme | ||||
| vls glt apr | vls glt apr | ||||
| length 50 | length 50 | ||||
| lengthmod 3 | lengthmod 3 | ||||
| wave ufric/h_%70 // no vowel following | |||||
| before (@) ufric/h@ | |||||
| before (a) ufric/ha | |||||
| before (e) ufric/he | |||||
| before (i) ufric/hi | |||||
| before (o) ufric/ho | |||||
| before (u) ufric/hu | |||||
| wave h/h_%70 // no vowel following | |||||
| before (@) h/h@ | |||||
| before (a) h/ha | |||||
| before (e) h/he | |||||
| before (i) h/hi | |||||
| before (o) h/ho | |||||
| before (u) h/hu | |||||
| endphoneme | endphoneme | ||||
| // include any phonemes which are different from those | |||||
| // which are inherited from the base language(s) | |||||
| phoneme a | |||||
| vowel starttype (a) endtype (a) | |||||
| length 160 | |||||
| formants vowel/a | |||||
| reduceto & 4 | |||||
| // ufric/x_sr | |||||
| // ufric/ch_sr | |||||
| // ufric/sh_sr | |||||
| // ustop/t_sr | |||||
| // ustop/ts_sr | |||||
| // ustop/tsh_sr | |||||
| // r3/r_sr | |||||
| // m/m_sr | |||||
| // n/n_sr | |||||
| // n^/nj_sr | |||||
| // This file inherits phonemes from ph_croatian | |||||
| // Only phonemes which differ from the inherited phonemes need | |||||
| // to be included here. | |||||
| phoneme t // dental variant of /t/ | |||||
| vls dnt stop | |||||
| vowelin f1=0 f2=1600 -300 300 f3=-100 80 | |||||
| vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20 | |||||
| lengthmod 2 | |||||
| wave ustop/t_sr%50 | |||||
| before _ ustop/t_sr%35 | |||||
| switchvoicing d | |||||
| endphoneme | |||||
| phoneme d | |||||
| vcd alv stop | |||||
| vowelin f1=2 f2=1700 -300 300 f3=-100 80 amp=16 | |||||
| vowelout f1=2 f2=1700 -300 300 f3=-100 80 | |||||
| formants d/d_dnt+ustop/t_sr%50 | |||||
| before _ d/d_dnt+ustop/t_sr | |||||
| before r d/d_dnt+ustop/t_sr%50 | |||||
| after _ d/d_dnt+ustop/t_sr | |||||
| after @ d/d_dnt+ustop/t_sr | |||||
| lengthmod 5 | |||||
| switchvoicing t | |||||
| endphoneme | |||||
| // This is for letter "h" at the beginning of a word | |||||
| phoneme x | |||||
| vls vel frc | |||||
| lengthmod 3 | |||||
| wave ufric/x_sr%70 // no vowel following | |||||
| before (a) ufric/x_sr | |||||
| before (e) ufric/ch_sr | |||||
| before (i) ufric/ch_sr | |||||
| before (o) ufric/x_sr | |||||
| before (u) ufric/x_sr | |||||
| endphoneme | |||||
| // This is for letter "h" not at the beginning of word | |||||
| phoneme h | |||||
| vls vel frc | |||||
| lengthmod 3 | |||||
| wave ufric/x_sr%70 // no vowel following | |||||
| before (@) h/h@ | |||||
| before (a) ufric/x_sr | |||||
| before (e) ufric/ch_sr | |||||
| before (i) ufric/ch_sr | |||||
| before (o) ufric/x_sr | |||||
| before (u) ufric/x_sr | |||||
| endphoneme | |||||
| phoneme R | |||||
| liquid | |||||
| vowelin f1=0 f2=1600 -300 300 f3=-200 80 | |||||
| vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk | |||||
| formants r3/r_trill+r3/r_sr.wav%65 | |||||
| after & r3/r_trill+r3/r_sr.wav | |||||
| after e r3/r_trill+r3/r_sr.wav | |||||
| after i r3/r_trill+r3/r_sr.wav | |||||
| after o r3/r_trill+r3/r_sr.wav | |||||
| after u r3/r_trill+r3/r_sr.wav | |||||
| after y r3/r_trill+r3/r_sr.wav | |||||
| trill | |||||
| lengthmod 6 | |||||
| endphoneme | |||||
| // This is "r" which doesn't follow a vowel | |||||
| phoneme r* | |||||
| liquid | |||||
| vowelin f1=0 f2=1600 -300 300 f3=-200 80 | |||||
| vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk | |||||
| formants r3/r_trill+r3/r_sr.wav%65 | |||||
| trill | |||||
| lengthmod 6 | |||||
| endphoneme | |||||
| // This is "r" which doesn't have a vowel before or after it | |||||
| phoneme r- | |||||
| liquid | |||||
| vowelin f1=0 f2=1600 -300 300 f3=-200 80 | |||||
| vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk | |||||
| formants r3/r_trill+r3/r_sr.wav%65 | |||||
| trill | |||||
| lengthmod 6 | |||||
| endphoneme | |||||
| phoneme dZ | |||||
| vcd pla afr sibilant | |||||
| vowelin f1=2 f2=2300 200 400 f3=100 80 | |||||
| vowelout f1=2 f2=2300 250 300 f3=100 80 brk | |||||
| formants dzh/dzh+ufric/sh_sr.wav | |||||
| before _ dzh/dzh+ufric/sh_sr.wav | |||||
| after _ NULL | |||||
| after @ dzh/dzh+ufric/sh_sr.wav | |||||
| lengthmod 5 | |||||
| switchvoicing tS | |||||
| endphoneme | |||||
| phoneme dZ; | |||||
| vcd pla afr sibilant palatal | |||||
| vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | |||||
| formants dzh/dzh+ustop/ts_sr.wav | |||||
| before _ dzh/dzh+ustop/ts_sr.wav | |||||
| after _ NULL | |||||
| after @ dzh/dzh+ustop/ts_sr.wav | |||||
| lengthmod 5 | |||||
| switchvoicing tS; | |||||
| endphoneme | |||||
| phoneme tS | |||||
| vls pla afr sibilant | |||||
| vowelin f1=0 f2=2300 200 400 f3=-100 80 | |||||
| lengthmod 2 | |||||
| wave ustop/tsh_sr.wav | |||||
| before _ ustop/tsh_sr.wav | |||||
| switchvoicing dZ | |||||
| endphoneme | |||||
| phoneme tS; | |||||
| vls pal afr sibilant palatal | |||||
| vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 | |||||
| lengthmod 2 | |||||
| wave ustop/ts_sr.wav | |||||
| before _ ustop/ts_sr.wav | |||||
| switchvoicing dZ; | |||||
| endphoneme | |||||
| phoneme Z | |||||
| vcd pla frc sibilant | |||||
| vowelin f1=0 f2=2000 0 300 f3=-200 80 | |||||
| vowelout f1=2 f2=2000 0 300 f3=-200 80 brk | |||||
| formants voc/zh+ufric/sh_sr.wav | |||||
| before _ voc/zh+ufric/sh_sr.wav | |||||
| lengthmod 6 | |||||
| switchvoicing S | |||||
| endphoneme | |||||
| phoneme S | |||||
| vls pla frc sibilant | |||||
| vowelin f1=0 f2=2100 100 300 f3=-100 80 | |||||
| vowelout f1=0 f2=2100 100 300 f3=-100 80 | |||||
| length 100 | |||||
| lengthmod 3 | |||||
| wave ufric/sh_sr.wav | |||||
| before _ ufric/sh_sr.wav | |||||
| switchvoicing Z | |||||
| endphoneme | |||||
| phoneme m | |||||
| vcd blb nasal | |||||
| vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk | |||||
| length 100 | |||||
| lengthmod 4 | |||||
| formants NULL | |||||
| after _ m/_m+m/m_sr.wav | |||||
| before _ m/m_+m/m_sr.wav | |||||
| before (r) m/mj+m/m_sr.wav | |||||
| endphoneme | |||||
| phoneme n | |||||
| vcd alv nasal | |||||
| vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk | |||||
| length 100 | |||||
| lengthmod 4 | |||||
| formants NULL | |||||
| after _ n/_n+n/n_sr.wav | |||||
| after n n/_n+n/n_sr.wav // lengthen [nn] | |||||
| before _ n/n_+n/n_sr.wav | |||||
| before (r) n/nj+n/n_sr.wav | |||||
| endphoneme | |||||
| phoneme n^ | |||||
| vcd pal nasal palatal | |||||
| vowelout f1=3 f2=2500 300 500 f3=100 80 len=45 brk rate | |||||
| length 100 | |||||
| lengthmod 4 | |||||
| formants NULL | |||||
| after _ n^/_n^+n^/nj_sr.wav | |||||
| before _ n^/n^_+n^/nj_sr.wav | |||||
| before (r) n/nj+n^/nj_sr.wav | |||||
| endphoneme | |||||
| phoneme N | |||||
| vcd vel nasal | |||||
| // vowelout brk | |||||
| vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk | |||||
| length 100 | |||||
| formants NULL | |||||
| after _ nn/_nn+n/n_sr.wav | |||||
| before _ nn/nn_+n/n_sr.wav | |||||
| before (r) nn/nnj+n^/nj_sr.wav | |||||
| lengthmod 8 // longer than 'n' | |||||
| endphoneme | endphoneme |
| phonemenumber 21 _^_ // Change language | phonemenumber 21 _^_ // Change language | ||||
| phonemenumber 22 _X1 // a language specific action | phonemenumber 22 _X1 // a language specific action | ||||
| phonemenumber 23 _| // very short pause | phonemenumber 23 _| // very short pause | ||||
| phonemenumber 24 t# // reduced version of [t] | |||||
| phonemenumber 24 _:: // long pause | |||||
| phonemenumber 25 t# // reduced version of [t] | |||||
| // The base phoneme table contains the utility phonemes, the consonants, | // The base phoneme table contains the utility phonemes, the consonants, | ||||
| // and a schwa. The vowels are defined in the language specific phoneme | // and a schwa. The vowels are defined in the language specific phoneme | ||||
| starttype _ endtype _ | starttype _ endtype _ | ||||
| length 45 | length 45 | ||||
| lengthmod 5 // ?? | lengthmod 5 // ?? | ||||
| beforenotvowel _ // change to pause_short | |||||
| nolink | nolink | ||||
| endphoneme | endphoneme | ||||
| vls glt apr | vls glt apr | ||||
| length 100 | length 100 | ||||
| lengthmod 3 | lengthmod 3 | ||||
| wave ufric/h_%70 // no vowel following | |||||
| before (@) ufric/h@ | |||||
| before (a) ufric/ha | |||||
| before (e) ufric/he | |||||
| before (i) ufric/hi | |||||
| before (o) ufric/ho | |||||
| before (u) ufric/hu | |||||
| wave h/h_%70 // no vowel following | |||||
| before (@) h/h@ | |||||
| before (a) h/ha | |||||
| before (e) h/he | |||||
| before (i) h/hi | |||||
| before (o) h/ho | |||||
| before (u) h/hu | |||||
| endphoneme | endphoneme | ||||
| int err; | int err; | ||||
| int errors = 0; | int errors = 0; | ||||
| int dict_count = 0; | int dict_count = 0; | ||||
| FILE *f_in; | |||||
| FILE *log; | FILE *log; | ||||
| FILE *f_phused; | FILE *f_phused; | ||||
| char dictname[80]; | char dictname[80]; | ||||
| char fname_log[sizeof(path_dsource)+20]; | char fname_log[sizeof(path_dsource)+20]; | ||||
| char save_voice_name[80]; | char save_voice_name[80]; | ||||
| char path[sizeof(path_home)+40]; // path_dsource+20 | |||||
| char buf[200]; | |||||
| char voicename[80]; | |||||
| if(!wxDirExists(path_dictsource)) | if(!wxDirExists(path_dictsource)) | ||||
| { | { | ||||
| dictstr = fname.GetName().BeforeLast('_'); | dictstr = fname.GetName().BeforeLast('_'); | ||||
| strcpy(dictname,dictstr.mb_str(wxConvLocal)); | strcpy(dictname,dictstr.mb_str(wxConvLocal)); | ||||
| dict_count++; | dict_count++; | ||||
| strcpy(voicename,dictname); | |||||
| // read the *_rules file to see if a phoneme table is specified though a voice name | |||||
| sprintf(path,"%s%s_rules",path_dsource,dictname); | |||||
| if((f_in = fopen(path,"r")) != NULL) | |||||
| { | |||||
| unsigned int ix; | |||||
| unsigned int c; | |||||
| for(ix=0; ix<20; ix++) | |||||
| { | |||||
| if(fgets(buf,sizeof(buf),f_in) == NULL) | |||||
| break; | |||||
| if(memcmp(buf,"//voice=",8)==0) | |||||
| { | |||||
| for(ix=0; ix<sizeof(voicename); ix++) | |||||
| { | |||||
| if(isspace(c = buf[ix+8])) | |||||
| { | |||||
| break; | |||||
| } | |||||
| voicename[ix] = c; | |||||
| } | |||||
| voicename[ix] = 0; | |||||
| break; | |||||
| } | |||||
| } | |||||
| fclose(f_in); | |||||
| } | |||||
| LoadVoice(dictname,0); | |||||
| LoadVoice(voicename,0); | |||||
| if((err = CompileDictionary(path_dsource, dictname,log,NULL)) > 0) | if((err = CompileDictionary(path_dsource, dictname,log,NULL)) > 0) | ||||
| { | { |
| //#define OPT_FORMAT // format the text and write formatted copy to Log file | //#define OPT_FORMAT // format the text and write formatted copy to Log file | ||||
| //#define OUTPUT_FORMAT | //#define OUTPUT_FORMAT | ||||
| extern void Write4Bytes(FILE *f, int value); | |||||
| int HashDictionary(const char *string); | int HashDictionary(const char *string); | ||||
| static FILE *f_log = NULL; | static FILE *f_log = NULL; | ||||
| } | } | ||||
| if(replace1 != 0) | if(replace1 != 0) | ||||
| { | { | ||||
| fwrite(&replace1,1,4,f_out); | |||||
| fwrite(&replace2,1,4,f_out); | |||||
| Write4Bytes(f_out,replace1); // write as little-endian | |||||
| Write4Bytes(f_out,replace2); // if big-endian, reverse the bytes in LoadDictionary() | |||||
| } | } | ||||
| } | } | ||||
| break; | break; |
| to[size-1] = 0; | to[size-1] = 0; | ||||
| } | } | ||||
| #ifdef ARCH_BIG | |||||
| int reverse_word_bytes(int word) | |||||
| {//============================= | |||||
| // reverse the order of bytes from little-endian to big-endian | |||||
| int ix; | |||||
| int word2 = 0; | |||||
| for(ix=24; ix>=0; ix -= 8) | |||||
| { | |||||
| word2 |= (word >> ix) & 0xff; | |||||
| word2 = word2 << 8; | |||||
| } | |||||
| return(word2); | |||||
| } | |||||
| #endif | |||||
| int LookupMnem(MNEM_TAB *table, char *string) | int LookupMnem(MNEM_TAB *table, char *string) | ||||
| pw += 2; // find the end of the replacement list, each entry is 2 words. | pw += 2; // find the end of the replacement list, each entry is 2 words. | ||||
| } | } | ||||
| p = (char *)(pw+1); | p = (char *)(pw+1); | ||||
| #ifdef ARCH_BIG | |||||
| pw = (unsigned int *)langopts.replace_chars; | |||||
| while(*pw != 0) | |||||
| { | |||||
| *pw = reverse_word_bytes(*pw); | |||||
| pw++; | |||||
| } | |||||
| #endif | |||||
| continue; | continue; | ||||
| } | } | ||||
| if((ph = phoneme_tab[*p]) != NULL) | if((ph = phoneme_tab[*p]) != NULL) | ||||
| { | { | ||||
| int gap = langopts.word_gap & 0xf00; | |||||
| if(ph->type == phSTRESS) | if(ph->type == phSTRESS) | ||||
| ph = phoneme_tab[p[1]]; | ph = phoneme_tab[p[1]]; | ||||
| if(((gap) && (vowel_stress[1] >= 4) && (prev_stress >= 4)) || (langopts.word_gap & 0x8)) | |||||
| #ifdef deleted | |||||
| int gap = langopts.word_gap & 0x700; | |||||
| if((gap) && (vowel_stress[1] >= 4) && (prev_stress >= 4)) | |||||
| { | { | ||||
| /* two primary stresses together, insert a short pause */ | /* two primary stresses together, insert a short pause */ | ||||
| if(gap == 0x0300) | |||||
| *output++ = phonPAUSE; | |||||
| else | |||||
| if((gap == 0x0200) && (ph->type == phVOWEL)) | |||||
| *output++ = phonGLOTTALSTOP; | |||||
| else | |||||
| *output++ = phonPAUSE_SHORT; | |||||
| *output++ = pause_phonemes[gap >> 8]; | |||||
| } | } | ||||
| else | else | ||||
| #endif | |||||
| if((langopts.vowel_pause & 0x30) && (ph->type == phVOWEL)) | if((langopts.vowel_pause & 0x30) && (ph->type == phVOWEL)) | ||||
| { | { | ||||
| // word starts with a vowel | // word starts with a vowel |
| #define phonSWITCH 21 | #define phonSWITCH 21 | ||||
| #define phonX1 22 // a language specific action | #define phonX1 22 // a language specific action | ||||
| #define phonPAUSE_VSHORT 23 | #define phonPAUSE_VSHORT 23 | ||||
| #define phonT_REDUCED 24 | |||||
| #define phonPAUSE_LONG 24 | |||||
| #define phonT_REDUCED 25 | |||||
| extern const unsigned char pause_phonemes[8]; // 0, vshort, short, pause, long, glottalstop | |||||
| // place of articulation | // place of articulation | ||||
| #define phPLACE 0xf0000 | #define phPLACE 0xf0000 |
| #include "translate.h" | #include "translate.h" | ||||
| const unsigned char pause_phonemes[8] = {0, phonPAUSE_VSHORT, phonPAUSE_SHORT, phonPAUSE, phonPAUSE_LONG, phonGLOTTALSTOP, phonPAUSE_LONG, phonPAUSE_LONG}; | |||||
| int Translator::ChangePhonemes(PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch) | int Translator::ChangePhonemes(PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch) | ||||
| { | { | ||||
| int x; | int x; | ||||
| if(langopts.word_gap & 1) | |||||
| { | |||||
| insert_ph = phonPAUSE_VSHORT; | |||||
| } | |||||
| if(langopts.vowel_pause && (ph->type != phPAUSE) && (next->type == phVOWEL)) | if(langopts.vowel_pause && (ph->type != phPAUSE) && (next->type == phVOWEL)) | ||||
| { | { | ||||
| if(langopts.vowel_pause & 0x04) | if(langopts.vowel_pause & 0x04) | ||||
| insert_ph = phonPAUSE_SHORT; | insert_ph = phonPAUSE_SHORT; | ||||
| } | } | ||||
| } | } | ||||
| if((x = (langopts.word_gap & 0x7)) != 0) | |||||
| { | |||||
| insert_ph = pause_phonemes[x]; | |||||
| } | |||||
| } | } | ||||
| next2 = phoneme_tab[(plist2+2)->phcode]; | next2 = phoneme_tab[(plist2+2)->phcode]; | ||||
| } | } | ||||
| } | } | ||||
| else | else | ||||
| if(((langopts.word_gap & 2)==0) || ((plist2+1)->sourceix == 0)) | |||||
| if(((langopts.word_gap & 8)==0) || ((plist2+1)->sourceix == 0)) | |||||
| { | { | ||||
| // This phoneme can be linked to a following vowel by inserting a linking phoneme | // This phoneme can be linked to a following vowel by inserting a linking phoneme | ||||
| if(next->type == phVOWEL) | if(next->type == phVOWEL) |
| { | { | ||||
| len = langopts.length_mods0[next2->ph->length_mod *10+ next->ph->length_mod]; | len = langopts.length_mods0[next2->ph->length_mod *10+ next->ph->length_mod]; | ||||
| if((next->newword) && (langopts.word_gap & 0x4)) | |||||
| if((next->newword) && (langopts.word_gap & 0x20)) | |||||
| { | { | ||||
| // consider as a pause + first phoneme of the next word | // consider as a pause + first phoneme of the next word | ||||
| length_mod = (len + langopts.length_mods0[next->ph->length_mod *10+ 1])/2; | length_mod = (len + langopts.length_mods0[next->ph->length_mod *10+ 1])/2; |
| static void init_path(void) | |||||
| {//======================== | |||||
| static void init_path(char *argv0) | |||||
| {//=============================== | |||||
| #ifdef PLATFORM_WINDOWS | #ifdef PLATFORM_WINDOWS | ||||
| HKEY RegKey; | HKEY RegKey; | ||||
| unsigned long size; | unsigned long size; | ||||
| unsigned long var_type; | unsigned long var_type; | ||||
| char *p; | |||||
| char *env; | char *env; | ||||
| unsigned char buf[sizeof(path_home)-12]; | unsigned char buf[sizeof(path_home)-12]; | ||||
| { | { | ||||
| sprintf(path_home,"%s\\espeak-data",env); | sprintf(path_home,"%s\\espeak-data",env); | ||||
| if(GetFileLength(path_home) == -2) | if(GetFileLength(path_home) == -2) | ||||
| return; // an espeak-data directory exists | |||||
| return; // an espeak-data directory exists in the directory specified by environment variable | |||||
| } | |||||
| strcpy(path_home,argv0); | |||||
| if((p = strrchr(path_home,'\\')) != NULL) | |||||
| { | |||||
| strcpy(&p[1],"espeak-data"); | |||||
| if(GetFileLength(path_home) == -2) | |||||
| return; // an espeak-data directory exists in the same directory as the espeak program | |||||
| } | } | ||||
| // otherwise, look in the Windows Registry | |||||
| buf[0] = 0; | buf[0] = 0; | ||||
| RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Speech\\Voices\\Tokens\\eSpeak", 0, KEY_READ, &RegKey); | RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Speech\\Voices\\Tokens\\eSpeak", 0, KEY_READ, &RegKey); | ||||
| size = sizeof(buf); | size = sizeof(buf); | ||||
| option_multibyte = espeakCHARS_AUTO; // auto | option_multibyte = espeakCHARS_AUTO; // auto | ||||
| f_trans = stdout; | f_trans = stdout; | ||||
| init_path(); | |||||
| init_path(argv[0]); | |||||
| #ifdef NEED_GETOPT | #ifdef NEED_GETOPT | ||||
| optind = 1; | optind = 1; |
| int LookupMnem(MNEM_TAB *table, char *string); | int LookupMnem(MNEM_TAB *table, char *string); | ||||
| #ifdef PLATFORM_WINDOWS | |||||
| #define N_PATH_HOME 220 | |||||
| #else | |||||
| #define N_PATH_HOME 150 | |||||
| #endif | |||||
| #define N_PATH_HOME 120 | |||||
| extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | ||||
| extern void strncpy0(char *to,const char *from, int size); | extern void strncpy0(char *to,const char *from, int size); |
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.29.17 08.Nov.07"; | |||||
| const char *version_string = "1.29.18 10.Nov.07"; | |||||
| const int version_phdata = 0x012901; | const int version_phdata = 0x012901; | ||||
| int option_device_number = -1; | int option_device_number = -1; |
| DoMarker(espeakEVENT_WORD, (p->sourceix & 0x7ff) + clause_start_char, p->sourceix >> 11, clause_start_word + word_count++); | DoMarker(espeakEVENT_WORD, (p->sourceix & 0x7ff) + clause_start_char, p->sourceix >> 11, clause_start_word + word_count++); | ||||
| } | } | ||||
| if((translator->langopts.word_gap & 1) || (translator->langopts.vowel_pause && (next->type == phVOWEL))) | |||||
| { | |||||
| // prevent word merging into next, make it look as though next is a pause | |||||
| if((next->newword) && (next->type != phPAUSE)) | |||||
| { | |||||
| // next_pause.ph = phoneme_tab[phonPAUSE]; | |||||
| // next = &next_pause; | |||||
| } | |||||
| } | |||||
| EndAmplitude(); | EndAmplitude(); | ||||
| if(p->prepause > 0) | if(p->prepause > 0) |
| static const short stress_lengths2[8] = {182,140, 220,220, 0,0, 248,275}; | static const short stress_lengths2[8] = {182,140, 220,220, 0,0, 248,275}; | ||||
| memcpy(stress_lengths,stress_lengths2,sizeof(stress_lengths)); | memcpy(stress_lengths,stress_lengths2,sizeof(stress_lengths)); | ||||
| langopts.vowel_pause = 0; | |||||
| langopts.stress_rule = 0; | langopts.stress_rule = 0; | ||||
| langopts.word_gap = 0; | |||||
| langopts.numbers = 0x41 + NUM_ROMAN; | langopts.numbers = 0x41 + NUM_ROMAN; | ||||
| } | } |
| // 'diminished' is an unstressed final syllable | // 'diminished' is an unstressed final syllable | ||||
| tr->langopts.stress_flags = 0x6 | 0x10; | tr->langopts.stress_flags = 0x6 | 0x10; | ||||
| tr->langopts.word_gap = 0; | |||||
| tr->langopts.vowel_pause = 0; | |||||
| tr->langopts.unstressed_wd1 = 0; | tr->langopts.unstressed_wd1 = 0; | ||||
| tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
| tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | ||||
| static const short stress_lengths_de[8] = {150,130, 190,190, 0, 0, 260,275}; | static const short stress_lengths_de[8] = {150,130, 190,190, 0, 0, 260,275}; | ||||
| tr = new Translator(); | tr = new Translator(); | ||||
| tr->langopts.stress_rule = 0; | tr->langopts.stress_rule = 0; | ||||
| tr->langopts.word_gap = 0x2; // don't use linking phonemes | |||||
| tr->langopts.word_gap = 0x8; // don't use linking phonemes | |||||
| tr->langopts.vowel_pause = 0x30; | tr->langopts.vowel_pause = 0x30; | ||||
| tr->langopts.param[LOPT_PREFIXES] = 1; | tr->langopts.param[LOPT_PREFIXES] = 1; | ||||
| memcpy(tr->stress_lengths,stress_lengths_de,sizeof(tr->stress_lengths)); | memcpy(tr->stress_lengths,stress_lengths_de,sizeof(tr->stress_lengths)); | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.stress_rule = 2; | tr->langopts.stress_rule = 2; | ||||
| tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished | ||||
| tr->langopts.word_gap = 0; | |||||
| tr->langopts.vowel_pause = 0; | |||||
| tr->langopts.unstressed_wd1 = 0; | tr->langopts.unstressed_wd1 = 0; | ||||
| tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
| tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | ||||
| // stress last syllable if it doesn't end in vowel or "s" or "n" | // stress last syllable if it doesn't end in vowel or "s" or "n" | ||||
| // 'diminished' is an unstressed final syllable | // 'diminished' is an unstressed final syllable | ||||
| tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; | tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; | ||||
| tr->langopts.word_gap = 0; | |||||
| tr->langopts.vowel_pause = 0; | |||||
| tr->langopts.unstressed_wd1 = 0; | tr->langopts.unstressed_wd1 = 0; | ||||
| tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
| tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.stress_rule = 2; | tr->langopts.stress_rule = 2; | ||||
| tr->langopts.word_gap = 0; | |||||
| tr->langopts.vowel_pause = 1; | tr->langopts.vowel_pause = 1; | ||||
| tr->langopts.unstressed_wd1 = 2; | tr->langopts.unstressed_wd1 = 2; | ||||
| tr->langopts.unstressed_wd2 = 2; | tr->langopts.unstressed_wd2 = 2; | ||||
| tr = new Translator(); | tr = new Translator(); | ||||
| tr->langopts.stress_rule = 0; | tr->langopts.stress_rule = 0; | ||||
| tr->langopts.word_gap = 0; | |||||
| tr->langopts.vowel_pause = 1; | tr->langopts.vowel_pause = 1; | ||||
| tr->langopts.param[LOPT_DIERESES] = 1; | tr->langopts.param[LOPT_DIERESES] = 1; | ||||
| tr->langopts.param[LOPT_PREFIXES] = 1; | tr->langopts.param[LOPT_PREFIXES] = 1; | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.stress_rule = 0; | tr->langopts.stress_rule = 0; | ||||
| tr->langopts.word_gap = 0x4; // length of a final vowel is less dependent on the next consonant | |||||
| tr->langopts.word_gap = 0x20; // length of a final vowel is less dependent on the next consonant | |||||
| tr->langopts.vowel_pause = 4; | tr->langopts.vowel_pause = 4; | ||||
| tr->letter_groups[0] = vowels_vi; | tr->letter_groups[0] = vowels_vi; | ||||
| // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | ||||
| case L('z','h'): | case L('z','h'): | ||||
| case L_zhy: | case L_zhy: | ||||
| { | { | ||||
| static const short stress_lengths_zh[8] = {220,150, 230,230, 230,0, 230,250}; | |||||
| static const short stress_lengths_zh[8] = {230,150, 230,230, 230,0, 230,250}; | |||||
| static const unsigned char stress_amps_zh[] = {22,16, 22,22, 22,22, 22,22 }; | static const unsigned char stress_amps_zh[] = {22,16, 22,22, 22,22, 22,22 }; | ||||
| tr = new Translator; | tr = new Translator; | ||||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | ||||
| tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping) | tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping) | ||||
| tr->langopts.ideographs = 1; | tr->langopts.ideographs = 1; | ||||
| tr->langopts.word_gap = 0x5; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word | |||||
| tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word | |||||
| if(name2 == L('z','h')) | if(name2 == L('z','h')) | ||||
| { | { | ||||
| tr->langopts.textmode = 1; | tr->langopts.textmode = 1; | ||||
| static const short stress_lengths2[8] = {170,140, 220,220, 0, 0, 250,270}; | static const short stress_lengths2[8] = {170,140, 220,220, 0, 0, 250,270}; | ||||
| langopts.stress_rule = 0; | langopts.stress_rule = 0; | ||||
| langopts.word_gap = 0; | |||||
| langopts.vowel_pause = 0x30; | langopts.vowel_pause = 0x30; | ||||
| langopts.param[LOPT_DIERESES] = 1; | langopts.param[LOPT_DIERESES] = 1; | ||||
| langopts.param[LOPT_PREFIXES] = 1; | langopts.param[LOPT_PREFIXES] = 1; |
| typedef struct { | typedef struct { | ||||
| // bit0=don't link consonants with the next word | |||||
| // bit1=don't add linking phonemes | |||||
| // bit2=length of a final vowel doesn't depend on the next phoneme | |||||
| // bits0-2 separate words with (1=pause_vshort, 2=pause_short, 3=pause, 4=pause_long 5=[?] phonemme) | |||||
| // bit 3=don't use linking phoneme | |||||
| // bit4=longer pause before STOP, VSTOP,FRIC | // bit4=longer pause before STOP, VSTOP,FRIC | ||||
| // bit8-11=separate words with adjacent stressed syllables with (1=pause, 2=long pausem 3=[?] phoneme) | |||||
| // bit5=length of a final vowel doesn't depend on the next phoneme | |||||
| int word_gap; | int word_gap; | ||||
| int vowel_pause; | int vowel_pause; | ||||
| int stress_rule; // 1=first syllable, 2=penultimate, 3=last | int stress_rule; // 1=first syllable, 2=penultimate, 3=last |