From f9725f9f64d672d94979fcd9531621dc0d709228 Mon Sep 17 00:00:00 2001 From: jonsd Date: Sat, 10 Nov 2007 22:10:43 +0000 Subject: [PATCH] [1.29.18] Add data for Serbian voice ("sr"). 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 --- dictsource/dict_phonemes | 33 +- dictsource/en_list | 1 + dictsource/en_rules | 2 +- dictsource/grc_list | 29 ++ dictsource/grc_rules | 344 ++++++++++++++++ dictsource/hbs_list | 603 +++++++++++++++++++++++++++++ dictsource/{hr_rules => hbs_rules} | 22 +- dictsource/hu_list | 336 ---------------- espeak-data/voices/bs | 2 +- espeak-data/voices/grc | 8 + espeak-data/voices/hr | 3 + espeak-data/voices/sr | 14 + espeak-data/voices/zh | 29 ++ phsource/compile_report | 118 ++++-- phsource/ph_croatian | 8 + phsource/ph_finnish | 14 +- phsource/ph_hindi | 30 +- phsource/ph_latin | 14 +- phsource/ph_serbian | 227 ++++++++++- phsource/phonemes | 18 +- phsource/ufric/ch_sr.wav | Bin 0 -> 6114 bytes phsource/ufric/h@.wav | Bin 2762 -> 0 bytes phsource/ufric/h_.wav | Bin 3452 -> 0 bytes phsource/ufric/ha.wav | Bin 3356 -> 0 bytes phsource/ufric/he.wav | Bin 3400 -> 0 bytes phsource/ufric/hi.wav | Bin 2898 -> 0 bytes phsource/ufric/ho.wav | Bin 3482 -> 0 bytes phsource/ufric/hu.wav | Bin 3688 -> 0 bytes phsource/ufric/hu_fi.wav | Bin 4608 -> 0 bytes phsource/ufric/sh_sr.wav | Bin 0 -> 4652 bytes phsource/ufric/x_sr.wav | Bin 0 -> 4382 bytes phsource/ustop/t_sr.wav | Bin 0 -> 1684 bytes phsource/ustop/ts_sr.wav | Bin 0 -> 3992 bytes phsource/ustop/tsh_sr.wav | Bin 0 -> 4688 bytes phsource/vdiph2/ei_4 | Bin 0 -> 6240 bytes phsource/vdiph2/vowelchart.png | Bin 39799 -> 40428 bytes phsource/vowel/u_7 | Bin 8311 -> 8311 bytes phsource/vwl_en_us/a | Bin 6237 -> 6237 bytes src/compiledata.cpp | 36 +- src/compiledict.cpp | 5 +- src/dictionary.cpp | 38 +- src/phoneme.h | 5 +- src/phonemelist.cpp | 12 +- src/setlengths.cpp | 2 +- src/speak.cpp | 18 +- src/speech.h | 6 +- src/synthdata.cpp | 2 +- src/synthesize.cpp | 10 - src/tr_english.cpp | 2 - src/tr_languages.cpp | 17 +- src/translate.h | 7 +- 51 files changed, 1512 insertions(+), 503 deletions(-) create mode 100644 dictsource/grc_list create mode 100644 dictsource/grc_rules create mode 100644 dictsource/hbs_list rename dictsource/{hr_rules => hbs_rules} (83%) mode change 100644 => 100755 delete mode 100644 dictsource/hu_list create mode 100755 espeak-data/voices/grc create mode 100644 espeak-data/voices/sr create mode 100644 espeak-data/voices/zh create mode 100644 phsource/ufric/ch_sr.wav delete mode 100644 phsource/ufric/h@.wav delete mode 100644 phsource/ufric/h_.wav delete mode 100644 phsource/ufric/ha.wav delete mode 100644 phsource/ufric/he.wav delete mode 100644 phsource/ufric/hi.wav delete mode 100644 phsource/ufric/ho.wav delete mode 100644 phsource/ufric/hu.wav delete mode 100644 phsource/ufric/hu_fi.wav create mode 100644 phsource/ufric/sh_sr.wav create mode 100644 phsource/ufric/x_sr.wav create mode 100644 phsource/ustop/t_sr.wav create mode 100644 phsource/ustop/ts_sr.wav create mode 100644 phsource/ustop/tsh_sr.wav create mode 100644 phsource/vdiph2/ei_4 diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index b22b9ca8..1a0e990c 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -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 diff --git a/dictsource/en_list b/dictsource/en_list index a728b89b..11cc444c 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -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 diff --git a/dictsource/en_rules b/dictsource/en_rules index f22e6921..d224391a 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -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 diff --git a/dictsource/grc_list b/dictsource/grc_list new file mode 100644 index 00000000..38ecac38 --- /dev/null +++ b/dictsource/grc_list @@ -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 // τάς + diff --git a/dictsource/grc_rules b/dictsource/grc_rules new file mode 100644 index 00000000..8c6c4444 --- /dev/null +++ b/dictsource/grc_rules @@ -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: + + + + + + + + + + + diff --git a/dictsource/hbs_list b/dictsource/hbs_list new file mode 100644 index 00000000..8bb35ab8 --- /dev/null +++ b/dictsource/hbs_list @@ -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 diff --git a/dictsource/hr_rules b/dictsource/hbs_rules old mode 100644 new mode 100755 similarity index 83% rename from dictsource/hr_rules rename to dictsource/hbs_rules index 74a538f0..45804b09 --- a/dictsource/hr_rules +++ b/dictsource/hbs_rules @@ -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 diff --git a/dictsource/hu_list b/dictsource/hu_list deleted file mode 100644 index df8b1dad..00000000 --- a/dictsource/hu_list +++ /dev/null @@ -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: - - - diff --git a/espeak-data/voices/bs b/espeak-data/voices/bs index a06b01fc..4307c138 100755 --- a/espeak-data/voices/bs +++ b/espeak-data/voices/bs @@ -1,7 +1,7 @@ name bosnian language bs phonemes hr -dictionary hr +dictionary hbs gender male pitch 81 120 diff --git a/espeak-data/voices/grc b/espeak-data/voices/grc new file mode 100755 index 00000000..a8799222 --- /dev/null +++ b/espeak-data/voices/grc @@ -0,0 +1,8 @@ +name greek-ancient +language grc +gender male + +stressLength 170 170 190 190 0 0 230 240 +dictrules 1 +words 1 + diff --git a/espeak-data/voices/hr b/espeak-data/voices/hr index 29d119b7..f6ff1c5e 100755 --- a/espeak-data/voices/hr +++ b/espeak-data/voices/hr @@ -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 diff --git a/espeak-data/voices/sr b/espeak-data/voices/sr new file mode 100644 index 00000000..6041a0cd --- /dev/null +++ b/espeak-data/voices/sr @@ -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 diff --git a/espeak-data/voices/zh b/espeak-data/voices/zh new file mode 100644 index 00000000..b7e7036b --- /dev/null +++ b/espeak-data/voices/zh @@ -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 \ No newline at end of file diff --git a/phsource/compile_report b/phsource/compile_report index 7ad6a359..5c753326 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -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 + [] la +h/h@ [h] base + [h] fi + [H] hi + [h] hi + [th] hi + [h] sr + [] la +h/ha [h] base + [h] fi + [H] hi + [h] hi + [] la +h/he [h] base + [h] fi + [H] hi + [h] hi + [] la +h/hi [h] base + [h] fi + [H] hi + [h] hi + [] la +h/ho [h] base + [H] hi + [h] hi + [] la +h/hu [h] base + [H] hi + [h] hi + [] 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 - [] la -ufric/h@ [h] base - [h] fi - [H] hi - [h] hi - [th] hi - [] la -ufric/ha [h] base - [h] fi - [H] hi - [h] hi - [] la -ufric/he [h] base - [h] fi - [H] hi - [h] hi - [] la -ufric/hi [h] base - [h] fi - [H] hi - [h] hi - [] la -ufric/ho [h] base - [H] hi - [h] hi - [] la -ufric/hu [h] base - [H] hi - [h] hi - [] 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 diff --git a/phsource/ph_croatian b/phsource/ph_croatian index ff0f29f6..9705d0e6 100644 --- a/phsource/ph_croatian +++ b/phsource/ph_croatian @@ -146,4 +146,12 @@ phoneme R lengthmod 6 endphoneme +phoneme r* + vowel nonsyllabic + starttype (@) endtype (@) + formants vowel/@- + unstressed + appendph * + length 50 +endphoneme diff --git a/phsource/ph_finnish b/phsource/ph_finnish index 4159ee15..097c5885 100644 --- a/phsource/ph_finnish +++ b/phsource/ph_finnish @@ -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 diff --git a/phsource/ph_hindi b/phsource/ph_hindi index 5aaaf9b9..f2461b23 100644 --- a/phsource/ph_hindi +++ b/phsource/ph_hindi @@ -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 diff --git a/phsource/ph_latin b/phsource/ph_latin index 2b9b9a88..a6341f0e 100644 --- a/phsource/ph_latin +++ b/phsource/ph_latin @@ -149,13 +149,13 @@ phoneme 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 diff --git a/phsource/ph_serbian b/phsource/ph_serbian index 29bab21b..613d16a0 100644 --- a/phsource/ph_serbian +++ b/phsource/ph_serbian @@ -1,9 +1,222 @@ -// include any phonemes which are different from those -// which are inherited from the base language(s) +// 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 -phoneme a - vowel starttype (a) endtype (a) - length 160 - formants vowel/a - reduceto & 4 +// 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 diff --git a/phsource/phonemes b/phsource/phonemes index 2b9df916..4230552c 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -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 diff --git a/phsource/ufric/ch_sr.wav b/phsource/ufric/ch_sr.wav new file mode 100644 index 0000000000000000000000000000000000000000..b19c6ef7bd21b673442e0e53e6f0fb2425fd5779 GIT binary patch literal 6114 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 literal 0 HcmV?d00001 diff --git a/phsource/ufric/h@.wav b/phsource/ufric/h@.wav deleted file mode 100644 index c851d447bb3d3e0618e940b0b11d0afd9d79e623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2762 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 WUBY_iaifhNW6i(vAr}IcRR0Gt61B7d diff --git a/phsource/ufric/ha.wav b/phsource/ufric/ha.wav deleted file mode 100644 index 4268dcf9c86b4702ad2ac561a7cc5d81e2751eea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3356 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 Sv!3=x{1t!BSJm!Xoc{;$DQq7A diff --git a/phsource/ufric/he.wav b/phsource/ufric/he.wav deleted file mode 100644 index 4ee15cd5213dc4b6b5dde1da8172ddeb48c9a9e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3400 zcmW+(dwfn;7G3+?`{h-{ds1&n8!BE^l%}YVw1{U3qB_w~qNPQU#4DXf6B4CfDN59{ zr3s~;qsTPzN-2hFNCl#$DEaO=d(ZjJ@BY4jzTdg$oW1tiYppx1UtHWvHGz@6 z6Jp<-lG>s+0J2Yb0?_vhK%q9qk4qib#I9+878r_NSSNWBgcorD-^vQ}sVS8$c$?Dc zEOx<@ef+ZY#X0;PMw($QCgDruAYb0%G9D%@wdo{Mpy)i3@eeu1*}O&Ku@bk@6ram( ziIY~6Ap;~`qR!FVj(o`3S_j5-;ydYrJRoJZ5)jAye)8 zgS3KXz=v(}hx~{dG#sa8g-o?OPen(0M?%pL1M!yBlaaWEF1Rg?FbJJ6L&_wLlJJr= zw7A@n8ghgOOC&zVFEW)2*yB@@f@lmt2fJf0ERjKyj*I9+S+vQbnhOtm(NNm(B|ag6 zsFeG%7|&q0thOhdKv&G>RQB0_w#!6O*hZwTAriwaj-9YZezvRA&=XheyUV0458@5- zB(m`oGO-Y^q7+X^C?Ap&v|0^PFH;1~q!8MGFC~eSZTEkc=LEcwKbEcBoEzDmq~bjy z+Afje%0cdjFa_F=OO%Z}9KxGeQ5Oo4Z#YM`%YKZtor*-1EaWZ7QvH;WP#8*ht-bvu ztiylVm07m-VRC|ZaU9Otz9-33mUD+uA4{dZ>_uJGkG3G$-YXnQqWOSDd5NjXzwoc7 z9T&-`7NZgw!-m&OG}7p48i;(nrb?(Urs07!mzI)ldYLo`C9649Tl{?8?$OJ#Z#tc! z7wEoxEM3$@XDc4@E$+jMWtv6*i0yqAm-5e?%L642@1dQ=F+jHP+xU|*sWqOk6+A)& zuJS&9R@VK$l5hDY&qpI7yly_x&&oyofIV0*S2>89sqWMcE9IXw#|c$sSd5VvW_i;M z1-!-_;rX%%o2VJyLC*6|Z7Q~tdf(JB=Z)BtKcrPy%CB&ewB~UB1rEj2T|3E_&{rj^`f9DL zHgBTbtr>8U3iT?TXMcmFhkYi~D$9%<^K*{oKb&MG3aB0yd1AKM8#4M^`x6Z zbEG|$ajeNhYuadW=qG>ZCcIe!EGOSUOKB>juv{{5Kn*~?zU`Iky*Tbm2?%zEbFO!o z3#gjPDThyc8%&{{h;V+LVU?&4oufMVUdm+(PEZBzN}6=!qwGnDtmfeuX%Tn;wzEEm zxAFvD$;Grx)uR%ciCoKsTv~@V7$EoT`OivobVqNV&QbC{XPbT!tkNtiuFx!8;d`=N z0x(N5I1wonu5z41lw(*g=S~tXowz2iMoYDwX5*v`l}|awEaLm>L*EEzmn<|{JitzV zI_;rOa>tC|6I_g2Y5}#8n$i|U=7M*Guh84>QnwK0Ceu9Nd}N>jWvUow1;v;=e|s|z zK`K!-z)sym&*pT>aBry9x`+QOuRfomGtOvdiId~DbH1W5xv$^glYEbd@K)0UfvOlU z^Yi8!w?!klXBJ5YRgj@t&O?fnFzl2F)1Oybj<Z~#$93kIZFG-aP9LyzBjB2Swo{CogvbtEJjUIxHs#0CF z3fjv0R)q94wQTR!po`V0*_1{t`Drr@gB_?!>wJl5qmH{P)CB3x^)Q=GQzb|FEBwF7 zZYs6@Rw=V&tVuV8X1QTn?@Mv~6yR)CY!&}1Z!_I_j$Bil+?F)ibTzql&Zk(W{UEOq z%L4wpdChit6V|H5Rv|uc7C1jqV|&jRan-8VP^P%;gR0Yu`-u7Avo5^!8k4^S2L zF+22R=dwE%*~ZaB{YSXF8ypZ4_@+Bv4}HAai;%Q-8)l;F z?QV9?Qxj<1rM_w{l1;f@r$+e>I%Av)I;#JwKeVp%*bCGz>#2GW^>mtApBwDFqn5~N z^MwA%JC5+cDM5prMESRDpf8k5kG$R0Ro)nm!PhE+Zul#z+h9Ll@%ET_)xatCJr{Ic zh3gyMBAF~T`44`QubOhJjcF>yH^~XZ4{`(T)wgJjVCS)VNOuBeIR~m2JX+)R)}cDh ztl=``yM5ePp6`F;kFryn?TiS>bxGBtYD75UPJ0|Q%XO^hcta$KQc=%2;@gAe{`~3} zy#zfIJ|~xYU=f|C(N>S1q298Kt1!^|My0dc`9fWEKBoj-*FWED&)c~ZS6B`E3^}$7 zUz?-4u1r=hy081@sS^E;zaGEjRs@|2_=G}qxEE*kTi57ld-oL5%`9`069ux?bTr#6 zZb`g=Zqs0-NDbOS4b@0zj&-Y2PPdwQ$U4~$nQ4<+250F654x4Cv#x!{dP5zXEN`fD zzPNy9PN>Y)4@^yIg+f|Rp*SOjx|`0o3cXwRmp>^VNJetDHS9-tPw2AR1 zM$%-<@fWzcPS>By9X`OF=#+}FRWDTu^t<(fJ9x~kt?K331Q4&@KrpZ3iKdmmi@uH< zR7B%ceNp;1(+@4Ur+HP*;xwLCRjQf0(oJxFlq=p8eNOUiI*OuK=p(+)r);W>lmbpQ zzw7DT8GGnCIwno&lFGDs=q%>j8`I@{SGXwc_jW*Ig8Oxu_L^Trob%}SyE43$gr;8X%tyLbPWs*vEqEW6xOkJDI z^XOMPB**2F8tAT-MP`Ov6|1M1Cq-tVNu;Uncg{UpNs|PZY{bkg*J;G z<+2E*FiMqKCv9T0)<5i*!vv`^ z9k?;_Y?5tfo&OjS@QmGFr%@T7=MyfMTl>31S uRqNDc>Q9|jV<$_+*-xS|DxQ|1Cq2Yvld5~#-1x}supXG}eWra>s{RMafL4G2 diff --git a/phsource/ufric/hi.wav b/phsource/ufric/hi.wav deleted file mode 100644 index 320df58d6df491ebe35d020baa5be41734b9dd29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 zcmWkwcYIbw7Cm>~7YHB;UDQA#B~;g-fPhOkfdmK;1Pws~f)uGzr07EE3Q~5FBGLr2 z^yZ2nB@%EEFc=_Gq=b@S=t4wFzBl*m?C<^cesA8)+;h%7=O)F+#U+#i-fG<=cEGSP zQDp##d#d#S-q;KnltKT#WBNwBHCtGPajb+BxQLZ#g&&xRFOiBb*^m>sh+iWgVKM|i zX(w&KL!s=1va(6G zi^v(C)8blBdoc?$B~*%`G}|+gxq46Y_#M_E1S|P1vp9z{cvTy*Ix=w>eUX9!7BG`j z-0I@Eg*TUYd`SR`TskLUv}i7!B$ zlXTgHbzH4c%*E$2OQuR)*@3f|tyzI~#=Bk*<4Qz=g{F8riDSu&4=_TPfP2Vy2hm%7Pw^4xN@(9;(2hF4qTTvCq z^`dQ~XLuav(HSwkY**XOS{GeW$nW_nf6&UhP}@7~7oa`LqcTV9FqV}1CdsVCb^VCF zkbt|aDpO2vGhS9RsLJlrO(r{KRKZx(#7s`nz4|soc~~FvSA2w?tfx2Z9_~af@nj^r zaJKEMJ)8#m$^mlyb2!}6|UCY7-c-3ZKZwZ@@?TR9M=20G^4OR!@GJh# z2#4@+xr1FOL^xh>3OtOuW~~`2FFN$*Gl+4LjG@|9$H7N`Zr0l@C%57A9j$A(+YL;V z7A9RhcS=RaL3Px2bzasDHd4Fdl3X+m<%SK{D|&>RCCh8zwM11Gs&Oj&5cTkwLmdte z5Ng&)B$9Q!En_EYKpL3sQUa6Mgg3Rb4F)gRg|gM_AS1NArf6M$j_qiN?Q%kjNe7w3 z$##&=#_O`rBzm(YnM3rRJ+0+rl1Y|)r}hkf&AD2KMTj%UB!s=~Ky}@S`mAQt{6tN| zO&K5;U41v*e?G=bDt`RGF3o7Oj*<3(O_ADxgg}CM76a^J`wv~^klf6+C@K9VLJo40 zHq#2cYXdwkO#?#%ky6u6FUlyY$A_k|w^W{Tf_AYx{T+S?8kqa8_IOvp5;oDAS_%Ut z3jy<~_g)~|)MY7q-fzTdGR{j1)bYxrla92FY=)MX5D9ZQ6=!qJ^Ox9o-jY$~2wLec zb`ZiP({Yw%_h|=7Fz;iVtzj40l2j~`(q@FYDwbpIML&v9&ClL2FJ9X47*nK*xC-?n zw|iyp6YspNw!4BA?G-(PG;>k*q8Vd!xWV=3barD87!f1%40B!5WD*ZA}}LWi13* z0rgRg&mtFxB-1oBeTB|6$06p|R2h8}jQea#>4ZTnSS0pw^L9@>nI(sNBx=jAaEwo+azj1(fnX*-NnY<-oVJf zVl%L;|mZt!EbFb=C~Xir%AF%{;7BTG=H#5 z{}Lw5OJGx-WpDVy^`Ja452PHIXlb+8H=Z!IY{EV-;7J8vm2mt?vrz#D#4uzqkSn-xnc))+ZY zS3GVTOp?p)UgPviaA`0D%kZlfIe+UYo6LE0N}mKP>suzSSPyTF>xCBnG_7jRdre*M z{^gve2!m~?j`a!xcLIt!_74W_9A=s{li<>Sy1R1|rt3rfyLM)@*<(7Pt$)Gq9Zay( zO-FAnH)=I~Q>Rjp&-L2I%?nlVo9n3@9KljIhxI_19>Zi)gx;FuQtPqSGqt>Hxa8N- zweX&Y?+mw5`i@CO=n;RzS1=%K5ndjee|F*_yF(%T>qqQSl zmJUR+_pz6OHe86$OemUaI?I_v`N9hcY(jz^6CA83vDDlSgqRqA%ab~`llP4&Bdrk5 zS2@w&ZHHR$sXk}sdgsvxC;j`um-MW34k;eEtFggIyIYQ!_`rA>@4EMUeHYQrL7MVE zCfg)A%(8n%#0$UNz@j0zZcoH=Fd8 MJzkEaf1faLxFa6+eUWoHK2G-0H!OvEl__Y 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 XA$p~}A;qtGdd)t!*c~cYPv!prU^mGg diff --git a/phsource/ufric/hu.wav b/phsource/ufric/hu.wav deleted file mode 100644 index 16cc4f8c57883718d29ebbc6dbf18c81eb9588f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3688 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�c8Y^Fg^0=fc^ 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 YAu>UZ2-{wyTh|M=r|4;KcG|)J0qoS>oB#j- diff --git a/phsource/ufric/sh_sr.wav b/phsource/ufric/sh_sr.wav new file mode 100644 index 0000000000000000000000000000000000000000..3e7abc301ab40066cb38625ce2629ecc8dcb7d32 GIT binary patch literal 4652 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 literal 0 HcmV?d00001 diff --git a/phsource/ufric/x_sr.wav b/phsource/ufric/x_sr.wav new file mode 100644 index 0000000000000000000000000000000000000000..a924bb9cbd5bd1447a8fb9fdc8ae7148be4f8541 GIT binary patch literal 4382 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 literal 0 HcmV?d00001 diff --git a/phsource/ustop/t_sr.wav b/phsource/ustop/t_sr.wav new file mode 100644 index 0000000000000000000000000000000000000000..9079e8721eae710063b5b24e96381da418b5fda3 GIT binary patch literal 1684 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 H96|mc9hBiy literal 0 HcmV?d00001 diff --git a/phsource/ustop/tsh_sr.wav b/phsource/ustop/tsh_sr.wav new file mode 100644 index 0000000000000000000000000000000000000000..a9e63ac8a7c85cbc8195cb3adf1d0d4f11b83faa GIT binary patch literal 4688 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 literal 39799 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 diff --git a/phsource/vowel/u_7 b/phsource/vowel/u_7 index f84a3452982ba02569946e6e60b87140a1a726f4..3d5bab179c9b042f89e5d5866b9c9327bd7067b4 100644 GIT binary patch delta 150 zcmezF@ZDj8I4c7PY?R?(VfoQ*bYQav3y}4*`)$Ew6Apdu2G*%eQ<$zWE@5ccoX2sF zndRrD_Y)>N@W5mqG0p|bRPg|1e)TGynCv3}lQ{?0(<`7uVBoUCz W6|)_iQzU>k{`$U8U~_>CI|~42O*O^< delta 150 zcmezF@ZDj8III1ibsU--WjI(^{%qSFx>aMxf%BnM;s<|qzk0RSwQ1hfDE delta 14 Vcmca>aMxf%BnM;4<|qzk0RSwu1i1hJ diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 37bf526d..825a471a 100755 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -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); - LoadVoice(dictname,0); + // 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 0) { diff --git a/src/compiledict.cpp b/src/compiledict.cpp index 092920a7..4ed5dbcf 100755 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -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; diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 68d945f6..69238cc8 100755 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -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 diff --git a/src/phoneme.h b/src/phoneme.h index 54c9b50d..c35cc156 100755 --- a/src/phoneme.h +++ b/src/phoneme.h @@ -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 diff --git a/src/phonemelist.cpp b/src/phonemelist.cpp index daaff7c4..b749382c 100755 --- a/src/phonemelist.cpp +++ b/src/phonemelist.cpp @@ -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) diff --git a/src/setlengths.cpp b/src/setlengths.cpp index 9ae577d5..e66616ef 100755 --- a/src/setlengths.cpp +++ b/src/setlengths.cpp @@ -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; diff --git a/src/speak.cpp b/src/speak.cpp index 89fa071a..7dd944f6 100755 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -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; diff --git a/src/speech.h b/src/speech.h index 8e416443..686669e8 100755 --- a/src/speech.h +++ b/src/speech.h @@ -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); diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 42b6c002..090928fe 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -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; diff --git a/src/synthesize.cpp b/src/synthesize.cpp index da505426..01fb155b 100755 --- a/src/synthesize.cpp +++ b/src/synthesize.cpp @@ -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) diff --git a/src/tr_english.cpp b/src/tr_english.cpp index acf66917..6818d584 100644 --- a/src/tr_english.cpp +++ b/src/tr_english.cpp @@ -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; } diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 16d0b4ba..41e85e61 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -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; diff --git a/src/translate.h b/src/translate.h index a7446735..b32ce27d 100755 --- a/src/translate.h +++ b/src/translate.h @@ -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