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
| @@ -134,28 +134,8 @@ r s S s. t T t. t.h | |||
| 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 | |||
| 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 | |||
| @@ -354,3 +334,16 @@ f j k kh l m n N | |||
| p ph R R2 R3 s s. S; | |||
| t th ts ts. ts. tS; tS; tsh | |||
| 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 | |||
| @@ -1229,6 +1229,7 @@ myrrh m3: | |||
| naif naI'i:f | |||
| naïve naI'i:v | |||
| nasa nasa2 | |||
| nascent neIs@nt | |||
| nativity $2 | |||
| natural natS@r@L | |||
| @@ -944,7 +944,7 @@ | |||
| as (tern a2s | |||
| as (thm as | |||
| as (tral as | |||
| as (tro aas | |||
| as (tro as | |||
| as (trolog a2s | |||
| as (trono a2s | |||
| ass (ym as | |||
| @@ -0,0 +1,29 @@ | |||
| ?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 // τάς | |||
| @@ -0,0 +1,344 @@ | |||
| // 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: | |||
| @@ -0,0 +1,603 @@ | |||
| // "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 | |||
| @@ -1,9 +1,15 @@ | |||
| // translation rules for Croatian | |||
| // "hbs" is the ISO 639-3 code for Serbian/Croatian/Bosnian macrolanguage | |||
| // 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: | |||
| // ?1 Croatian | |||
| // ?2 Bosnian (Bosna and Hercegovina) | |||
| // ?2 Serbian | |||
| // ?3 Bosnian (Bosna and Hercegovina) | |||
| // ?4 Serbian & Bosnian | |||
| .group a | |||
| a a | |||
| @@ -34,7 +40,8 @@ | |||
| e E | |||
| j) e e | |||
| e (j e | |||
| ._) exe %ekse // filetype | |||
| _) exe %ekse // filetype | |||
| ?2 _) exe %eikse // filetype | |||
| .group f | |||
| f f | |||
| @@ -82,11 +89,12 @@ | |||
| .group q | |||
| q k | |||
| qu kv | |||
| ?2 qu ku | |||
| .group r | |||
| r R | |||
| A) r (A R | |||
| K) r (A @-* | |||
| K) r (A r* // this phoneme expands to [@-*] | |||
| rr R | |||
| r (_ R | |||
| @@ -140,7 +148,7 @@ | |||
| $ d'ol&R | |||
| . totSk& | |||
| ?2 . tatSk& | |||
| ?4 . tatSk& | |||
| . (. _: | |||
| \.) . | |||
| @@ -179,7 +187,7 @@ | |||
| μ m'i | |||
| ν n'i | |||
| ξ ks'i | |||
| ο 'omIk@-*on_ | |||
| ο 'omIkr*on_ | |||
| .group 0xcf // Greek letters | |||
| @@ -195,6 +203,6 @@ | |||
| ψ ps'i | |||
| ω 'omeg& | |||
| ώ 'omeg&||t'onos | |||
| ό 'omIk@-*on||t'onos | |||
| ό 'omIkr*on||t'onos | |||
| @@ -1,336 +0,0 @@ | |||
| // 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: | |||
| @@ -1,7 +1,7 @@ | |||
| name bosnian | |||
| language bs | |||
| phonemes hr | |||
| dictionary hr | |||
| dictionary hbs | |||
| gender male | |||
| pitch 81 120 | |||
| @@ -0,0 +1,8 @@ | |||
| name greek-ancient | |||
| language grc | |||
| gender male | |||
| stressLength 170 170 190 190 0 0 230 240 | |||
| dictrules 1 | |||
| words 1 | |||
| @@ -1,7 +1,10 @@ | |||
| name croatian | |||
| language hr | |||
| language hbs | |||
| gender male | |||
| dictionary hbs | |||
| // attributes towards !variant3 | |||
| pitch 81 120 | |||
| formant 0 100 100 100 | |||
| @@ -0,0 +1,14 @@ | |||
| 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 | |||
| @@ -0,0 +1,29 @@ | |||
| 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 | |||
| @@ -21,9 +21,9 @@ | |||
| pl 15 107 | |||
| sk 29 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 | |||
| it 17 118 | |||
| la 21 114 | |||
| @@ -95,6 +95,7 @@ d/d_ [d] base | |||
| [d;] ro | |||
| [d] el | |||
| [d] sw | |||
| d/d_dnt [d] sr | |||
| d/dr [*] base | |||
| [d] base | |||
| [d[] base | |||
| @@ -137,6 +138,8 @@ dzh/dzh [dZ] base | |||
| [dz;] base | |||
| [J] hi | |||
| [dZ;] mk | |||
| [dZ] sr | |||
| [dZ;] sr | |||
| [dZ;] ru | |||
| dzh/dzh_ [dZ] base | |||
| [dZ;] base | |||
| @@ -197,6 +200,42 @@ g/g_ [g] base | |||
| g/xg [g] base | |||
| [g] cy | |||
| [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/j2a [(a)] base | |||
| @@ -302,10 +341,12 @@ l/xl [(@)] base | |||
| [(o)] base | |||
| [(u)] base | |||
| m/_m [m] base | |||
| [m] sr | |||
| [m;] ru | |||
| [m;] ro | |||
| [m] zh | |||
| m/m_ [m] base | |||
| [m] sr | |||
| [m;] ru | |||
| [m;] ro | |||
| m/m@ [(@)] base | |||
| @@ -314,18 +355,24 @@ m/ma [(a)] base | |||
| m/me [(e)] base | |||
| m/mi [(i)] base | |||
| m/mj [m] base | |||
| [m] sr | |||
| [m;] ru | |||
| [m;] ro | |||
| m/mo [(o)] base | |||
| m/m_sr.wav [m] sr | |||
| m/mu [(u)] base | |||
| n^/_n^ [n^] base | |||
| [n^] sr | |||
| n^/n^_ [n^] base | |||
| [n^] sr | |||
| n^/n^@ [(@)] base | |||
| n^/n^#_ [n^#] is | |||
| n/_n [n] base | |||
| [n] sr | |||
| [n;] ro | |||
| [n] zh | |||
| n/n_ [n] base | |||
| [n] sr | |||
| [n;] ro | |||
| [n] zh | |||
| n/n@ [(@)] base | |||
| @@ -342,12 +389,18 @@ nn/inn [(i)] base | |||
| n/nj [n] base | |||
| [n.] base | |||
| [n^] base | |||
| [n] sr | |||
| [n^] sr | |||
| [n;] ro | |||
| n^/nj_sr.wav [N] sr | |||
| [n^] sr | |||
| nn/_nn [N] base | |||
| [N] en | |||
| [N] sr | |||
| [N] zh | |||
| nn/nn_ [N] base | |||
| [N] en | |||
| [N] sr | |||
| [N] zh | |||
| nn/nn@ [(@)] base | |||
| nn/nn#_ [N#] is | |||
| @@ -355,12 +408,15 @@ nn/nna [(a)] base | |||
| nn/nne [(e)] base | |||
| nn/nni [(i)] base | |||
| nn/nnj [N] base | |||
| [N] sr | |||
| nn/nno [(o)] base | |||
| nn/nnu [(u)] base | |||
| n^/n^o [(o)] base | |||
| n/no [(o)] base | |||
| n/_nr [n.] base | |||
| n/nr_ [n.] base | |||
| n/n_sr.wav [N] sr | |||
| [n] sr | |||
| n^/n^u [(u)] base | |||
| n/nu [(u)] base | |||
| r2/_r2 [r-] base | |||
| @@ -382,12 +438,18 @@ r3/r_i [(i)] base | |||
| r3/r_n [r/] base | |||
| [r/] ru | |||
| r3/r_o [(o)] base | |||
| r3/r_sr.wav [R] sr | |||
| [r*] sr | |||
| [r-] sr | |||
| r3/r_trill [R2] base | |||
| [R3] base | |||
| [r] af | |||
| [r] cy | |||
| [r] nl | |||
| [R] sk | |||
| [R] sr | |||
| [r*] sr | |||
| [r-] sr | |||
| [x] pt | |||
| r3/r_trill2 [R] base | |||
| [R] hr | |||
| @@ -467,6 +529,8 @@ r/xr [(@)] base | |||
| [(u)] base | |||
| ufric/ch [C] base | |||
| [C2] de | |||
| ufric/ch_sr [h] sr | |||
| [x] sr | |||
| ufric/f [f] base | |||
| [pF] de | |||
| [f;] ro | |||
| @@ -474,41 +538,6 @@ ufric/f [f] base | |||
| [f] zh | |||
| ufric/f_ [f] base | |||
| [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 | |||
| [l#] is | |||
| ufric/s [s] base | |||
| @@ -539,6 +568,9 @@ ufric/sh_pzd [S;] base | |||
| ufric/sh_pzd_ [S;] base | |||
| [Z;] base | |||
| ufric/sh_rfx [s.] base | |||
| ufric/sh_sr.wav [S] sr | |||
| [Z] sr | |||
| [dZ] sr | |||
| ufric/s_pzd [s;] base | |||
| [z;] base | |||
| [s;] ro | |||
| @@ -554,6 +586,8 @@ ufric/x2 [x2] af | |||
| [x2] nl | |||
| [x2] pt | |||
| ufric/x_hr [x] hr | |||
| ufric/x_sr [h] sr | |||
| [x] sr | |||
| ustop/c [c] base | |||
| ustop/k [k] base | |||
| [k] en | |||
| @@ -720,6 +754,7 @@ ustop/t_short [t.] hi | |||
| [t] el | |||
| ustop/tsh_pzd [tS;] zh | |||
| ustop/tsh_pzd_unasp [tS;] zh | |||
| ustop/tsh_sr.wav [tS] sr | |||
| ustop/ts_pzd [tS;] base | |||
| [ts;] base | |||
| [ch] hi | |||
| @@ -728,8 +763,12 @@ ustop/ts_pzd_ [c] hi | |||
| [c] hu | |||
| ustop/ts_pzd2 [c] hi | |||
| [c] hu | |||
| ustop/t_sr [d] sr | |||
| [t] sr | |||
| ustop/ts_rfx [ts.] zh | |||
| ustop/ts_rfx_unasp [ts.] zh | |||
| ustop/ts_sr.wav [tS;] sr | |||
| [dZ;] sr | |||
| ustop/ts_unasp [ts] zh | |||
| ustop/t_unasp [t] zh | |||
| vdiph/0i [OI] pt | |||
| @@ -1016,6 +1055,7 @@ voc/z_ [z] base | |||
| voc/zh [Z] base | |||
| [z.] base | |||
| [R^] sk | |||
| [Z] sr | |||
| [Z;] ro | |||
| voc/zh_ [Z] base | |||
| [z.] base | |||
| @@ -1036,6 +1076,7 @@ vowel/@ [@] base | |||
| [@4] hi | |||
| [@] hr | |||
| vowel/@- [@-] base | |||
| [r*] hr | |||
| vowel/& [a] en_rp | |||
| [&] fi | |||
| [&:] hi | |||
| @@ -1083,7 +1124,6 @@ vowel/a [a] en_n | |||
| [a:] sk | |||
| [A] hr | |||
| [a] hr | |||
| [a] sr | |||
| [a] it | |||
| [a:] la | |||
| [a] zh | |||
| @@ -146,4 +146,12 @@ phoneme R | |||
| lengthmod 6 | |||
| endphoneme | |||
| phoneme r* | |||
| vowel nonsyllabic | |||
| starttype (@) endtype (@) | |||
| formants vowel/@- | |||
| unstressed | |||
| appendph * | |||
| length 50 | |||
| endphoneme | |||
| @@ -337,12 +337,12 @@ phoneme h | |||
| vls glt apr | |||
| length 100 | |||
| 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 | |||
| @@ -233,26 +233,26 @@ phoneme h // use with voiced aspirated conants [bh] [dh] etc | |||
| vls glt apr | |||
| length 100 | |||
| 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 | |||
| phoneme H // use for full "h" | |||
| vls glt apr | |||
| length 100 | |||
| 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 | |||
| @@ -345,7 +345,7 @@ phoneme th // dental variant of /t/ Same as [t] for now | |||
| vowelin f1=0 f2=1500 -300 300 f3=-100 80 | |||
| vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | |||
| lengthmod 2 | |||
| wave ustop/t_hi%50+ufric/h@ | |||
| wave ustop/t_hi%50+h/h@ | |||
| switchvoicing d | |||
| endphoneme | |||
| @@ -149,13 +149,13 @@ phoneme <h> | |||
| vls glt apr | |||
| length 50 | |||
| 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 | |||
| @@ -1,9 +1,222 @@ | |||
| // 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 | |||
| @@ -27,7 +27,8 @@ phonemenumber 20 - // syllabic consonant | |||
| phonemenumber 21 _^_ // Change language | |||
| phonemenumber 22 _X1 // a language specific action | |||
| 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, | |||
| // and a schwa. The vowels are defined in the language specific phoneme | |||
| @@ -148,6 +149,7 @@ phoneme ? // glottal stop | |||
| starttype _ endtype _ | |||
| length 45 | |||
| lengthmod 5 // ?? | |||
| beforenotvowel _ // change to pause_short | |||
| nolink | |||
| endphoneme | |||
| @@ -1109,13 +1111,13 @@ phoneme h | |||
| vls glt apr | |||
| length 100 | |||
| 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 | |||
| @@ -2072,11 +2072,15 @@ wxString CompileAllDictionaries() | |||
| int err; | |||
| int errors = 0; | |||
| int dict_count = 0; | |||
| FILE *f_in; | |||
| FILE *log; | |||
| FILE *f_phused; | |||
| char dictname[80]; | |||
| char fname_log[sizeof(path_dsource)+20]; | |||
| char save_voice_name[80]; | |||
| char path[sizeof(path_home)+40]; // path_dsource+20 | |||
| char buf[200]; | |||
| char voicename[80]; | |||
| if(!wxDirExists(path_dictsource)) | |||
| { | |||
| @@ -2121,8 +2125,38 @@ wxString CompileAllDictionaries() | |||
| dictstr = fname.GetName().BeforeLast('_'); | |||
| strcpy(dictname,dictstr.mb_str(wxConvLocal)); | |||
| 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) | |||
| { | |||
| @@ -34,6 +34,7 @@ | |||
| //#define OPT_FORMAT // format the text and write formatted copy to Log file | |||
| //#define OUTPUT_FORMAT | |||
| extern void Write4Bytes(FILE *f, int value); | |||
| int HashDictionary(const char *string); | |||
| static FILE *f_log = NULL; | |||
| @@ -1378,8 +1379,8 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp) | |||
| } | |||
| 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; | |||
| @@ -86,6 +86,21 @@ void strncpy0(char *to,const char *from, int size) | |||
| 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) | |||
| @@ -237,6 +252,15 @@ void Translator::InitGroups(void) | |||
| pw += 2; // find the end of the replacement list, each entry is 2 words. | |||
| } | |||
| p = (char *)(pw+1); | |||
| #ifdef ARCH_BIG | |||
| pw = (unsigned int *)langopts.replace_chars; | |||
| while(*pw != 0) | |||
| { | |||
| *pw = reverse_word_bytes(*pw); | |||
| pw++; | |||
| } | |||
| #endif | |||
| continue; | |||
| } | |||
| @@ -1280,23 +1304,19 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int | |||
| if((ph = phoneme_tab[*p]) != NULL) | |||
| { | |||
| int gap = langopts.word_gap & 0xf00; | |||
| if(ph->type == phSTRESS) | |||
| 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 */ | |||
| if(gap == 0x0300) | |||
| *output++ = phonPAUSE; | |||
| else | |||
| if((gap == 0x0200) && (ph->type == phVOWEL)) | |||
| *output++ = phonGLOTTALSTOP; | |||
| else | |||
| *output++ = phonPAUSE_SHORT; | |||
| *output++ = pause_phonemes[gap >> 8]; | |||
| } | |||
| else | |||
| #endif | |||
| if((langopts.vowel_pause & 0x30) && (ph->type == phVOWEL)) | |||
| { | |||
| // word starts with a vowel | |||
| @@ -81,8 +81,9 @@ | |||
| #define phonSWITCH 21 | |||
| #define phonX1 22 // a language specific action | |||
| #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 | |||
| #define phPLACE 0xf0000 | |||
| @@ -30,6 +30,7 @@ | |||
| #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) | |||
| @@ -497,10 +498,6 @@ void Translator::MakePhonemeList(int post_pause, int start_sentence) | |||
| { | |||
| 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 & 0x04) | |||
| @@ -524,6 +521,11 @@ void Translator::MakePhonemeList(int post_pause, int start_sentence) | |||
| insert_ph = phonPAUSE_SHORT; | |||
| } | |||
| } | |||
| if((x = (langopts.word_gap & 0x7)) != 0) | |||
| { | |||
| insert_ph = pause_phonemes[x]; | |||
| } | |||
| } | |||
| next2 = phoneme_tab[(plist2+2)->phcode]; | |||
| @@ -540,7 +542,7 @@ void Translator::MakePhonemeList(int post_pause, int start_sentence) | |||
| } | |||
| } | |||
| 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 | |||
| if(next->type == phVOWEL) | |||
| @@ -455,7 +455,7 @@ void Translator::CalcLengths() | |||
| { | |||
| 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 | |||
| length_mod = (len + langopts.length_mods0[next->ph->length_mod *10+ 1])/2; | |||
| @@ -221,12 +221,13 @@ void MarkerEvent(int type, unsigned int char_position, int value, unsigned char | |||
| static void init_path(void) | |||
| {//======================== | |||
| static void init_path(char *argv0) | |||
| {//=============================== | |||
| #ifdef PLATFORM_WINDOWS | |||
| HKEY RegKey; | |||
| unsigned long size; | |||
| unsigned long var_type; | |||
| char *p; | |||
| char *env; | |||
| unsigned char buf[sizeof(path_home)-12]; | |||
| @@ -234,9 +235,18 @@ static void init_path(void) | |||
| { | |||
| sprintf(path_home,"%s\\espeak-data",env); | |||
| 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; | |||
| RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Speech\\Voices\\Tokens\\eSpeak", 0, KEY_READ, &RegKey); | |||
| size = sizeof(buf); | |||
| @@ -383,7 +393,7 @@ int main (int argc, char **argv) | |||
| option_multibyte = espeakCHARS_AUTO; // auto | |||
| f_trans = stdout; | |||
| init_path(); | |||
| init_path(argv[0]); | |||
| #ifdef NEED_GETOPT | |||
| optind = 1; | |||
| @@ -63,8 +63,12 @@ typedef struct { | |||
| 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 void strncpy0(char *to,const char *from, int size); | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.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; | |||
| int option_device_number = -1; | |||
| @@ -1142,16 +1142,6 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
| 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(); | |||
| if(p->prepause > 0) | |||
| @@ -40,9 +40,7 @@ Translator_English::Translator_English() : Translator() | |||
| static const short stress_lengths2[8] = {182,140, 220,220, 0,0, 248,275}; | |||
| memcpy(stress_lengths,stress_lengths2,sizeof(stress_lengths)); | |||
| langopts.vowel_pause = 0; | |||
| langopts.stress_rule = 0; | |||
| langopts.word_gap = 0; | |||
| langopts.numbers = 0x41 + NUM_ROMAN; | |||
| } | |||
| @@ -123,8 +123,6 @@ Translator *SelectTranslator(const char *name) | |||
| // 'diminished' is an unstressed final syllable | |||
| tr->langopts.stress_flags = 0x6 | 0x10; | |||
| tr->langopts.word_gap = 0; | |||
| tr->langopts.vowel_pause = 0; | |||
| tr->langopts.unstressed_wd1 = 0; | |||
| tr->langopts.unstressed_wd2 = 2; | |||
| tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | |||
| @@ -141,7 +139,7 @@ Translator *SelectTranslator(const char *name) | |||
| static const short stress_lengths_de[8] = {150,130, 190,190, 0, 0, 260,275}; | |||
| tr = new Translator(); | |||
| 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.param[LOPT_PREFIXES] = 1; | |||
| memcpy(tr->stress_lengths,stress_lengths_de,sizeof(tr->stress_lengths)); | |||
| @@ -184,8 +182,6 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.stress_rule = 2; | |||
| 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_wd2 = 2; | |||
| tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | |||
| @@ -238,8 +234,6 @@ Translator *SelectTranslator(const char *name) | |||
| // stress last syllable if it doesn't end in vowel or "s" or "n" | |||
| // 'diminished' is an unstressed final syllable | |||
| 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_wd2 = 2; | |||
| tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | |||
| @@ -398,7 +392,6 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.stress_rule = 2; | |||
| tr->langopts.word_gap = 0; | |||
| tr->langopts.vowel_pause = 1; | |||
| tr->langopts.unstressed_wd1 = 2; | |||
| tr->langopts.unstressed_wd2 = 2; | |||
| @@ -449,7 +442,6 @@ SetLengthMods(tr,3); // all equal | |||
| tr = new Translator(); | |||
| tr->langopts.stress_rule = 0; | |||
| tr->langopts.word_gap = 0; | |||
| tr->langopts.vowel_pause = 1; | |||
| tr->langopts.param[LOPT_DIERESES] = 1; | |||
| tr->langopts.param[LOPT_PREFIXES] = 1; | |||
| @@ -637,7 +629,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| 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->letter_groups[0] = vowels_vi; | |||
| // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
| @@ -650,7 +642,7 @@ SetLengthMods(tr,3); // all equal | |||
| case L('z','h'): | |||
| 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 }; | |||
| tr = new Translator; | |||
| @@ -663,7 +655,7 @@ SetLengthMods(tr,3); // all equal | |||
| 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.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')) | |||
| { | |||
| tr->langopts.textmode = 1; | |||
| @@ -955,7 +947,6 @@ Translator_Afrikaans::Translator_Afrikaans() : Translator() | |||
| static const short stress_lengths2[8] = {170,140, 220,220, 0, 0, 250,270}; | |||
| langopts.stress_rule = 0; | |||
| langopts.word_gap = 0; | |||
| langopts.vowel_pause = 0x30; | |||
| langopts.param[LOPT_DIERESES] = 1; | |||
| langopts.param[LOPT_PREFIXES] = 1; | |||
| @@ -254,11 +254,10 @@ extern const int param_defaults[N_SPEECH_PARAM]; | |||
| 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 | |||
| // 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 vowel_pause; | |||
| int stress_rule; // 1=first syllable, 2=penultimate, 3=last | |||