Languages which use non-Latin alphabets will automatically speak a word of Latin characters as English (or another specified language) without the need for entries in its *_rules file. synthesize.cpp, SynthOnTimer(): Ensure the sound channel is open if there items still to be spoken, to prevent sound output lock-up. Reduce warning messages from compilers. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@211 d46cf337-b52f-0410-862d-fd96e6ae7743master
| - : ; ? b c d dZ | - : ; ? b c d dZ | ||||
| f g h j k l L m | f g h j k l L m | ||||
| n N p r s S t tS | |||||
| v w x2 z Z | |||||
| n N p r s S t T | |||||
| tS v w x x2 z Z | |||||
| Dictionary bn_dict | Dictionary bn_dict | ||||
| O~ o~ r- U u u: u:~ u~ | O~ o~ r- U u u: u:~ u~ | ||||
| * b B bh c C ch d | * b B bh c C ch d | ||||
| d. dh g gh h j J k | |||||
| kh l m n N n. n^ p | |||||
| ph Q r r. s S s. t | |||||
| t. t.h th tS x z | |||||
| d. d.h dh g gh h j J | |||||
| Jh k kh l m n N n. | |||||
| n^ p ph Q r r. s S | |||||
| s. t t. t.h th tS x z | |||||
| Dictionary ca_dict | Dictionary ca_dict | ||||
| U u: u~ V | U u: u~ V | ||||
| - : b bh c ch d d. | - : b bh c ch d d. | ||||
| dh f g gh h H j J | |||||
| k kh l l. m n N n. | |||||
| n^ p ph Q q r r. s | |||||
| S s. t T t. t.h th v | |||||
| w x z | |||||
| d.h dh f g gh h H j | |||||
| J Jh k kh l l. m n | |||||
| N n. n^ p ph Q q r | |||||
| r. s S s. t T t. t.h | |||||
| th v w x z | |||||
| Dictionary hu_dict | Dictionary hu_dict | ||||
| @ a aI e eI i i@ o | @ a aI e eI i i@ o | ||||
| u W y | u W y | ||||
| ** b d dZ f g h j | |||||
| k l m n p R R3 s | |||||
| S t tS ts v x z Z | |||||
| ** b c d dZ dz f g | |||||
| h j k k# l m n p | |||||
| p# r R r" s S t t# | |||||
| tS ts ts# v X z Z | |||||
| Dictionary id_dict | Dictionary id_dict | ||||
| I i: o o: r- u u: V | I i: o o: r- u u: V | ||||
| y | y | ||||
| : b bh c ch d d. dh | |||||
| dZ f g gh h j J k | |||||
| kh l l. m n N n. n^ | |||||
| p ph R R2 s S s. S; | |||||
| t t. t.h th tS v w z | |||||
| : b bh c ch d d. d.h | |||||
| dh dZ f g gh h j J | |||||
| Jh k kh l l. m n N | |||||
| n. n^ p ph R R2 s S | |||||
| s. S; t t. t.h th tS v | |||||
| w z | |||||
| Dictionary ko_dict | Dictionary ko_dict | ||||
| I i: o o: r- u u: V | I i: o o: r- u u: V | ||||
| y | y | ||||
| : b bh c ch d d. dh | |||||
| dZ f g gh h j J k | |||||
| kh l l. m n N n. n^ | |||||
| p ph R R2 s s. S; t | |||||
| t. t.h th tS v w z z. | |||||
| : b bh c ch d d. d.h | |||||
| dh dZ f g gh h j J | |||||
| Jh k kh l l. m n N | |||||
| n. n^ p ph R R2 s s. | |||||
| S; t t. t.h th tS v w | |||||
| z z. | |||||
| Dictionary ne_dict | Dictionary ne_dict | ||||
| V~ | V~ | ||||
| - : b bh c ch d d. | - : b bh c ch d d. | ||||
| dh f g gh h H j J | |||||
| k kh l l. m n N n. | |||||
| n^ p ph Q q r r. s | |||||
| S s. t T t. t.h th v | |||||
| w x z z. | |||||
| d.h dh f g gh h H j | |||||
| J Jh k kh l l. m n | |||||
| N n. n^ p ph Q q r | |||||
| r. s S s. t T t. t.h | |||||
| th v w x z z. | |||||
| Dictionary nl_dict | Dictionary nl_dict | ||||
| Dictionary sq_dict | Dictionary sq_dict | ||||
| @ @- @/ a A aI E e | |||||
| eI i I I# O OI u V | |||||
| y yE | |||||
| @ @/ a A aI E e eI | |||||
| i I I# O OI u V y | |||||
| yE | |||||
| ** b c d D dZ dZ; f | |||||
| g h j k l L ll m | |||||
| n n^ p r R R2 s S | |||||
| t T tS ts v w z Z | |||||
| ** : ; b c d D dZ | |||||
| dz dZ; f g h j k l | |||||
| L ll m n n^ p r R | |||||
| R2 s S t T tS ts v | |||||
| w z Z | |||||
| Dictionary sv_dict | Dictionary sv_dict | 
| // If we find a Latin letter a-z, then translate as English | |||||
| .group a | |||||
| a _^_EN | |||||
| .group b | |||||
| b _^_EN | |||||
| .group c | |||||
| c _^_EN | |||||
| .group d | |||||
| d _^_EN | |||||
| .group e | |||||
| e _^_EN | |||||
| .group f | |||||
| f _^_EN | |||||
| .group g | |||||
| g _^_EN | |||||
| .group h | |||||
| h _^_EN | |||||
| .group i | |||||
| i _^_EN | |||||
| .group j | |||||
| j _^_EN | |||||
| .group k | |||||
| k _^_EN | |||||
| .group l | |||||
| l _^_EN | |||||
| .group m | |||||
| m _^_EN | |||||
| .group n | |||||
| n _^_EN | |||||
| .group o | |||||
| o _^_EN | |||||
| .group p | |||||
| p _^_EN | |||||
| .group q | |||||
| q _^_EN | |||||
| .group r | |||||
| r _^_EN | |||||
| .group s | |||||
| s _^_EN | |||||
| .group t | |||||
| t _^_EN | |||||
| .group u | |||||
| u _^_EN | |||||
| .group v | |||||
| v _^_EN | |||||
| .group w | |||||
| w _^_EN | |||||
| .group x | |||||
| x _^_EN | |||||
| .group y | |||||
| y _^_EN | |||||
| .group z | |||||
| z _^_EN | |||||
| .group | .group | ||||
| ά 'a | ά 'a | ||||
| άη 'aI | άη 'aI | 
| LBS $abbrev | LBS $abbrev | ||||
| ltd lImI2tI2d | ltd lImI2tI2d | ||||
| mc m@k $alt2 // combine with the following word | mc m@k $alt2 // combine with the following word | ||||
| ny $abbrev | |||||
| oem $abbrev | oem $abbrev | ||||
| ok $abbrev | ok $abbrev | ||||
| omg $abbrev | omg $abbrev | ||||
| usa $abbrev | usa $abbrev | ||||
| utc $abbrev | utc $abbrev | ||||
| u.s ju:'Es | u.s ju:'Es | ||||
| VI $abbrev | |||||
| wwii dVb@Lju:dVb@Lju:t'u: | wwii dVb@Lju:dVb@Lju:t'u: | ||||
| xxx $abbrev // not roman 30 | xxx $abbrev // not roman 30 | ||||
| xy $abbrev | xy $abbrev | ||||
| mr mIst3 $dot | mr mIst3 $dot | ||||
| mrs mIsI2z $dot | mrs mIsI2z $dot | ||||
| //ms mIz $dot | //ms mIz $dot | ||||
| dr $dot | |||||
| dr d0kt3 $dot | |||||
| lt $dot | lt $dot | ||||
| prof $dot | prof $dot | ||||
| rev $dot | rev $dot | ||||
| commend k@mEnd | commend k@mEnd | ||||
| comment k0mEnt | comment k0mEnt | ||||
| commentary k0m@ntrI | commentary k0m@ntrI | ||||
| commie k0mI | |||||
| committee k@mItI | committee k@mItI | ||||
| communique k@mju:nI2keI | communique k@mju:nI2keI | ||||
| community k@mju:nI2tI | community k@mju:nI2tI | ||||
| neon ni:0n | neon ni:0n | ||||
| nepenthe nI2pEnTI | nepenthe nI2pEnTI | ||||
| nescience nEsI@ns | nescience nEsI@ns | ||||
| nicety naIs@tI | |||||
| niche ni:S | niche ni:S | ||||
| noah noUV | noah noUV | ||||
| nobly noUblI $verbf | nobly noUblI $verbf | ||||
| sibelius sI2beIli@s | sibelius sI2beIli@s | ||||
| sierra sI'e@r@ | sierra sI'e@r@ | ||||
| signage saInI2dZ | signage saInI2dZ | ||||
| signer saIn3 | |||||
| sikh si:k | sikh si:k | ||||
| silhouette sI2lUw'Et | silhouette sI2lUw'Et | ||||
| silo saIloU | silo saIloU | ||||
| standby standbaI | standby standbaI | ||||
| stagnate $2 | stagnate $2 | ||||
| stampede $2 | stampede $2 | ||||
| stiletto stI2lEtoU | |||||
| strychnine str'Ikni:n | strychnine str'Ikni:n | ||||
| sterile stEraIl | sterile stEraIl | ||||
| stomata stoUm@t@ | stomata stoUm@t@ | ||||
| (might have) maItha2v $pastf $u1+ | (might have) maItha2v $pastf $u1+ | ||||
| (might have to) ,maIth'avt@5 $verbf $atend | (might have to) ,maIth'avt@5 $verbf $atend | ||||
| have %hav $pastf $only | |||||
| have %hav $pastf $only $strend2 | |||||
| haves havz | haves havz | ||||
| (have been) %hav%bIn $pastf | (have been) %hav%bIn $pastf | ||||
| (have to) havtU $atend | |||||
| has %ha2z $pastf $only | has %ha2z $pastf $only | ||||
| has haz $only $atend | has haz $only $atend | ||||
| (has been) %haz%bIn $pastf | (has been) %haz%bIn $pastf | ||||
| these %Di:z $nounf $strend2 $only | these %Di:z $nounf $strend2 $only | ||||
| those %DoUz $nounf $strend2 $only | those %DoUz $nounf $strend2 $only | ||||
| there %De@ $strend2 $only | there %De@ $strend2 $only | ||||
| (there be) De@b'i: | |||||
| than %Dan $only | than %Dan $only | ||||
| (than a) ,Dan@ $nounf | (than a) ,Dan@ $nounf | ||||
| ?3 commentary k0m@ntErI | ?3 commentary k0m@ntErI | ||||
| ?3 current k'3@nt | ?3 current k'3@nt | ||||
| ?3 depot di:poU | ?3 depot di:poU | ||||
| ?3 detail $2 | |||||
| ?3 dialog daI@lO:g | ?3 dialog daI@lO:g | ||||
| ?3 envelope A:nv@loUp | ?3 envelope A:nv@loUp | ||||
| ?3 err e@ | ?3 err e@ | 
| h) ar (ass @r | h) ar (ass @r | ||||
| &m) aran @ran | &m) aran @ran | ||||
| sep) ar (at 3r | sep) ar (at 3r | ||||
| w) ar (e e@ | |||||
| w) are e@ | |||||
| k) ar (y ar | k) ar (y ar | ||||
| c) arbo (h ,A@boU | c) arbo (h ,A@boU | ||||
| _) arch (@P4 ,A@tS // prefix | _) arch (@P4 ,A@tS // prefix | ||||
| _) ash aS | _) ash aS | ||||
| _) ash (a a2S | _) ash (a a2S | ||||
| _) ash (o a2S | _) ash (o a2S | ||||
| _) as (in as | |||||
| _) asia eIS@ | _) asia eIS@ | ||||
| ?3 _) asia eIZ@ | ?3 _) asia eIZ@ | ||||
| as (k aas | as (k aas | ||||
| al) av (er 'A:v | al) av (er 'A:v | ||||
| sc) av (en av | sc) av (en av | ||||
| aver (s av'3: | aver (s av'3: | ||||
| _) avi (a eIvI | |||||
| _) avi (A eIvI | |||||
| l) av (i av | l) av (i av | ||||
| sl) av (i A:v | sl) av (i A:v | ||||
| r) av (el av | r) av (el av | ||||
| d) ig (nA Ig | d) ig (nA Ig | ||||
| _) ig (ni %Ig | _) ig (ni %Ig | ||||
| ig (no %Ig | ig (no %Ig | ||||
| s) ign (o %Inj | |||||
| ig (nom Ig | ig (nom Ig | ||||
| ig (noran Ig | ig (noran Ig | ||||
| ig (na Ig | ig (na Ig | ||||
| _) o (per 0 | _) o (per 0 | ||||
| _) ope (n oUp@ | _) ope (n oUp@ | ||||
| un) ope (n oUp@ | un) ope (n oUp@ | ||||
| @) opol '0p@L | |||||
| @) opol (i '0p@L | |||||
| opolitan @p'0lIt@n | opolitan @p'0lIt@n | ||||
| oppor (tu %0p3 | oppor (tu %0p3 | ||||
| opp (res @p | opp (res @p | 
| // If we find a Latin letter a-z, then translate as English | // If we find a Latin letter a-z, then translate as English | ||||
| // (This is now done automatically by the eSpeak program) | |||||
| .group a | |||||
| a _^_EN | |||||
| .group b | |||||
| b _^_EN | |||||
| .group c | |||||
| c _^_EN | |||||
| .group d | |||||
| d _^_EN | |||||
| .group e | |||||
| e _^_EN | |||||
| .group f | |||||
| f _^_EN | |||||
| .group g | |||||
| g _^_EN | |||||
| .group h | |||||
| h _^_EN | |||||
| .group i | |||||
| i _^_EN | |||||
| .group j | |||||
| j _^_EN | |||||
| .group k | |||||
| k _^_EN | |||||
| .group l | |||||
| l _^_EN | |||||
| .group m | |||||
| m _^_EN | |||||
| .group n | |||||
| n _^_EN | |||||
| .group o | .group o | ||||
| o _^_EN | |||||
| D__) of (__D me | D__) of (__D me | ||||
| .group p | |||||
| p _^_EN | |||||
| .group q | |||||
| q _^_EN | |||||
| .group r | |||||
| r _^_EN | |||||
| .group s | |||||
| s _^_EN | |||||
| .group t | |||||
| t _^_EN | |||||
| .group u | |||||
| u _^_EN | |||||
| .group v | |||||
| v _^_EN | |||||
| .group w | |||||
| w _^_EN | |||||
| .group x | |||||
| x _^_EN | |||||
| .group y | |||||
| y _^_EN | |||||
| .group z | |||||
| z _^_EN | |||||
| _dia djeR'e:zI | _dia djeR'e:zI | ||||
| _dot p'unto||s,ov@-*ask@-*'it:o | _dot p'unto||s,ov@-*ask@-*'it:o | ||||
| _grv g@-*'a:ve | _grv g@-*'a:ve | ||||
| //_grv atS:'entog@-*'a:ve | |||||
| _hac h'atSek | _hac h'atSek | ||||
| _mcn m'ak@-*on | _mcn m'ak@-*on | ||||
| _ogo og'o:nek | _ogo og'o:nek | ||||
| _tld t'ilde | _tld t'ilde | ||||
| _! p'untoesklamat'ivo | |||||
| _" viRgolet:e | |||||
| _# kantSellet:o | |||||
| _$ dolla:Ro | |||||
| _% peRtS'ento | |||||
| _& _!e: | |||||
| _' ap'OstRofo | |||||
| _( ap'eRtapaR'entezi | |||||
| _) kj,uzapaR'entezi | |||||
| _* asteRisko | |||||
| _+ pju | |||||
| _, v'iRgola | |||||
| _- t@-*at:ino | |||||
| _. punto | |||||
| _/ slaS | |||||
| _: d,uep'unte | |||||
| _; p'untoev'iRgola | |||||
| _< ap'eRta'angolo | |||||
| _= ugwale | |||||
| _> kj,uza'angolo | |||||
| _? p'untointeRogat'ivo | |||||
| _@ ki'otS:ola | |||||
| _[ ap'eRtakw2'ad@-*a | |||||
| _\ bakslaS | |||||
| _] kj,uzakw2'ad@-*a | |||||
| _^ kap:utS:o | |||||
| __ 'undeRskoRe | |||||
| _` bakp@-*aIm | |||||
| _{ ap'eRtag@-*'af:a | |||||
| _| b'aRa | |||||
| _} kj,uzag@-*'af:a | |||||
| _~ tilde | |||||
| * asteRisko $max3 | |||||
| % pe@-*tS'ento $max3 | |||||
| . punto $max3 | |||||
| = ugwale $max3 | |||||
| + pju $max3 | |||||
| / slaS $max3 | |||||
| \ bakslaS $max3 | |||||
| ₤ lira | |||||
| £ sterl'ina | |||||
| & _e | |||||
| @ ki'otS:ola | |||||
| © k'opiraIt | |||||
| # kantSellet:o | |||||
| @ ki'otS:ola | |||||
| ~ tilde | |||||
| : d,uep'unti | |||||
| _! p,untoesklamat'ivo | |||||
| _" viRgolet:e | |||||
| _' ap'OstRofo | |||||
| _( ap,eRtapaR'entezi | |||||
| _) kj,uzapaR'entezi | |||||
| _, v'iRgola | |||||
| _- t@-*at:ino | |||||
| _; p,untoev'iRgola | |||||
| _< ap,eRta'angolo | |||||
| _> kj,uza'angolo | |||||
| _? p,untointeRogat'ivo | |||||
| _[ ap'eRtakw2'ad@-*a | |||||
| _] kj,uzakw2'ad@-*a | |||||
| _^ kap:utS:o | |||||
| __ 'undeRskoRe | |||||
| _` bakp@-*aIm | |||||
| _{ ap,eRtag@-*'af:a | |||||
| _} kj,uzag@-*'af:a | |||||
| // foreign words | // foreign words | ||||
| chat tSat | |||||
| chat _^_EN | |||||
| cliché kli:Se | cliché kli:Se | ||||
| internet 'internet | |||||
| internet _^_EN | |||||
| jeans dZi:nz | jeans dZi:nz | ||||
| web wEb | web wEb | ||||
| accelerator _^_EN | |||||
| ace _^_EN | |||||
| aces _^_EN | |||||
| // exceptions | // exceptions | ||||
| aereo $2 | |||||
| difficile $2 | |||||
| pneumatici $3 | |||||
| nott nOt: $stem | |||||
| tavol $1 $stem | |||||
| vent vEnt $stem | |||||
| celsius tsElsj'us | |||||
| conoscerla $2 | |||||
| no nO | |||||
| posta pOsta | |||||
| aereo $2 | |||||
| difficile $2 | |||||
| pneumatici $3 | |||||
| nott nOt: $stem | |||||
| tavol $1 $stem | |||||
| vent vEnt $stem | |||||
| celsius tsElsj'us | |||||
| conoscerla $2 | |||||
| no nO | |||||
| posta pOsta | |||||
| principi $1 | principi $1 | ||||
| tesser tess'ER | |||||
| uomini $1 | |||||
| tesser tess'ER | |||||
| uomini $1 | |||||
| // $alt = use ò or è in the stressed syllable | |||||
| // If the final vowel is omitted, then the rule applies to 'a' 'e' 'i' 'o' | |||||
| $textmode | |||||
| abbandonatel $4 | |||||
| abbazie abbazìe | |||||
| abbinano $2 | |||||
| abbinini $2 | |||||
| abbisognino $3 | |||||
| abituarcisi $2 | |||||
| accalcano $2 | |||||
| accalchino $2 | |||||
| accantonal $3 | |||||
| accatastano $3 | |||||
| accatastino $3 | |||||
| accavallio $4 | |||||
| accenditi $2 | |||||
| accertano $2 $alt | |||||
| accertino $2 $alt | |||||
| acclamano $2 | |||||
| acclamino $2 | |||||
| accolit $2 $alt | |||||
| accomunano $3 | |||||
| accomunino $3 | |||||
| accorpano $2 $alt | |||||
| accorpino $2 $alt | |||||
| accostarcisi $3 | |||||
| accovacciano $3 | |||||
| accovaccino $3 | |||||
| acefala $2 | |||||
| acer accer // acer/i/o | |||||
| acid accid // acida/e | |||||
| acidul $1 | |||||
| // letter groups | // letter groups | ||||
| // A any vowel | // A any vowel | ||||
| // C any consonant | |||||
| // K not a vowel (i.e. consonant or end-of-word) | |||||
| // Y front vowels: e i (& accents) | // Y front vowels: e i (& accents) | ||||
| .L01 a à o ò ó u ù | .L01 a à o ò ó u ù | ||||
| .group e | .group e | ||||
| e e: | e e: | ||||
| e (CK e | e (CK e | ||||
| e (T E: // The word has $alt in it_list | |||||
| e (CKT E // $alt | |||||
| ei ej (K | ei ej (K | ||||
| e (r E: // ?? [E] before 'r' | |||||
| e (rK E | |||||
| e (rsi_N e | |||||
| &) e (_S1q e // lookup it_list without suffix | &) e (_S1q e // lookup it_list without suffix | ||||
| // @) e (ce_ =e | // @) e (ce_ =e | ||||
| @) e (ci_ =e | @) e (ci_ =e | ||||
| .group o | .group o | ||||
| o o: | o o: | ||||
| o (CK o | o (CK o | ||||
| o (T O: // $alt | |||||
| o (CKT O // $alt | |||||
| oi oI (K | oi oI (K | ||||
| o (r O: // ?? [O] before 'r' | |||||
| o (rK O | |||||
| o (re_ o | |||||
| &) o (_S1q o // lookup it_list without suffix | &) o (_S1q o // lookup it_list without suffix | ||||
| @) o (ista_ o | @) o (ista_ o | ||||
| sch (Y sk | sch (Y sk | ||||
| sh (K S // foreign words | sh (K S // foreign words | ||||
| K) sh S // foreign words | K) sh S // foreign words | ||||
| @) sia s'ia | |||||
| @) sia s'ia | |||||
| @) s (_S1 s | |||||
| .group t | .group t | ||||
| t t | t t | ||||
| ù 'u: | ù 'u: | ||||
| ù (CK 'u | ù (CK 'u | ||||
| % pertS'ento | |||||
| $ dolla:ro | $ dolla:ro | ||||
| ₤ lira | |||||
| £ sterl'ina | |||||
| & _!e | |||||
| @ ki'otS:ola | |||||
| © k'opiraIt | |||||
| + pju | |||||
| . punto | |||||
| , (D v'irgola | , (D v'irgola | ||||
| : d,uep'unti | |||||
| ; p'untoev'irgola | |||||
| ! _p'untoesklamat'ivo_ | ! _p'untoesklamat'ivo_ | ||||
| !) ! | !) ! | ||||
| ? _p'untointeRogat'ivo_ | ? _p'untointeRogat'ivo_ | ||||
| ?) ? | ?) ? | ||||
| \\ kont@-*ob'aR*a | |||||
| / b'aR*a | |||||
| __) - (_D meno | __) - (_D meno | ||||
| A_) - (_D _ | A_) - (_D _ | ||||
| C_) - (_D _ | C_) - (_D _ | ||||
| --) - | |||||
| − meno | |||||
| * asterisko | |||||
| *) * (* | |||||
| ** | |||||
| **) * (_ _:: | 
| ё 8 | ё 8 | ||||
| // If we find a Latin letter a-z, then translate as English | // If we find a Latin letter a-z, then translate as English | ||||
| .group a | |||||
| a _^_EN | |||||
| .group b | |||||
| b _^_EN | |||||
| .group c | |||||
| c _^_EN | |||||
| .group d | |||||
| d _^_EN | |||||
| .group e | |||||
| e _^_EN | |||||
| .group f | |||||
| f _^_EN | |||||
| .group g | |||||
| g _^_EN | |||||
| .group h | |||||
| h _^_EN | |||||
| .group i | |||||
| i _^_EN | |||||
| .group j | |||||
| j _^_EN | |||||
| .group k | |||||
| k _^_EN | |||||
| .group l | |||||
| l _^_EN | |||||
| .group m | |||||
| m _^_EN | |||||
| .group n | |||||
| n _^_EN | |||||
| .group o | |||||
| o _^_EN | |||||
| .group p | |||||
| p _^_EN | |||||
| .group q | |||||
| q _^_EN | |||||
| .group r | |||||
| r _^_EN | |||||
| .group s | |||||
| s _^_EN | |||||
| .group t | |||||
| t _^_EN | |||||
| .group u | |||||
| u _^_EN | |||||
| .group v | |||||
| v _^_EN | |||||
| .group w | |||||
| w _^_EN | |||||
| .group x | |||||
| x _^_EN | |||||
| .group y | |||||
| y _^_EN | |||||
| .group z | |||||
| z _^_EN | |||||
| // (This is now done automatically by the eSpeak program) | |||||
| .group | .group | ||||
| $ dolar | $ dolar | 
| .group | .group | ||||
| ் // virama | ் // virama | ||||
| $ dolV | $ dolV | ||||
| a _^_EN | |||||
| b _^_EN | |||||
| c _^_EN | |||||
| d _^_EN | |||||
| e _^_EN | |||||
| f _^_EN | |||||
| g _^_EN | |||||
| h _^_EN | |||||
| i _^_EN | |||||
| j _^_EN | |||||
| k _^_EN | |||||
| l _^_EN | |||||
| m _^_EN | |||||
| n _^_EN | |||||
| o _^_EN | |||||
| p _^_EN | |||||
| q _^_EN | |||||
| r _^_EN | |||||
| s _^_EN | |||||
| t _^_EN | |||||
| u _^_EN | |||||
| v _^_EN | |||||
| w _^_EN | |||||
| x _^_EN | |||||
| y _^_EN | |||||
| z _^_EN | 
| fi 40 134 | fi 40 134 | ||||
| fr 54 140 | fr 54 140 | ||||
| fr_ca 11 140 | fr_ca 11 140 | ||||
| hi 59 148 | |||||
| ta 17 151 | |||||
| hi 60 149 | |||||
| ta 17 152 | |||||
| hu 23 119 | hu 23 119 | ||||
| lv 29 126 | lv 29 126 | ||||
| nl 28 126 | nl 28 126 | ||||
| ku 18 127 | ku 18 127 | ||||
| id 15 124 | id 15 124 | ||||
| rw 15 129 | rw 15 129 | ||||
| ko 18 158 | |||||
| ko 18 159 | |||||
| da 15 133 | da 15 133 | ||||
| sq 35 130 | |||||
| ml 13 150 | |||||
| kn 15 150 | |||||
| bn 59 153 | |||||
| ne 18 156 | |||||
| hy 16 116 | |||||
| sq 35 127 | |||||
| ml 13 151 | |||||
| kn 15 151 | |||||
| bn 59 155 | |||||
| ne 18 157 | |||||
| hy 24 119 | |||||
| om 25 125 | om 25 125 | ||||
| en_klatt 77 149 | en_klatt 77 149 | ||||
| ga 18 117 | ga 18 117 | ||||
| mr 1 148 | |||||
| mr 1 149 | |||||
| Data file Used by | Data file Used by | ||||
| b/b [b] base | b/b [b] base | ||||
| [d] hi | [d] hi | ||||
| [d.] hi | [d.] hi | ||||
| [dh] hi | [dh] hi | ||||
| [d.h] hi | |||||
| [d] hu | [d] hu | ||||
| [d] pl | [d] pl | ||||
| [d] hr | [d] hr | ||||
| [d] sw | [d] sw | ||||
| [d] id | [d] id | ||||
| [d] sq | [d] sq | ||||
| [dz] sq | |||||
| [d] bn | [d] bn | ||||
| [d.] bn | [d.] bn | ||||
| [dz] hy | |||||
| [d[] ga | [d[] ga | ||||
| d/xd2 [d`] om | d/xd2 [d`] om | ||||
| d/xd3 [dh] hi | d/xd3 [dh] hi | ||||
| [dZ] sr | [dZ] sr | ||||
| [dZ;] sr | [dZ;] sr | ||||
| [dZ;] ru | [dZ;] ru | ||||
| [dZ;] sq | |||||
| [J] bn | [J] bn | ||||
| dzh/dzh_ [dZ] base | dzh/dzh_ [dZ] base | ||||
| [dZ;] base | [dZ;] base | ||||
| [dZ;] hr | [dZ;] hr | ||||
| [dZ;] mk | [dZ;] mk | ||||
| [dZ;] ru | [dZ;] ru | ||||
| [dZ;] sq | |||||
| [J] bn | [J] bn | ||||
| dzh/dzh2 [dZ] hr | dzh/dzh2 [dZ] hr | ||||
| [dZ;] hr | [dZ;] hr | ||||
| dzh/dz_pzd [J] base | dzh/dz_pzd [J] base | ||||
| [J2] hi | |||||
| [J] tr | [J] tr | ||||
| [J] ku | [J] ku | ||||
| [J2] bn | [J2] bn | ||||
| dzh/dz_pzd_ [J] base | dzh/dz_pzd_ [J] base | ||||
| [J2] hi | |||||
| [J2] bn | [J2] bn | ||||
| dzh/xdzh [dZ] base | dzh/xdzh [dZ] base | ||||
| [dZ;] base | [dZ;] base | ||||
| [dZ;] hr | [dZ;] hr | ||||
| [dZ;] mk | [dZ;] mk | ||||
| [dZ;] ru | [dZ;] ru | ||||
| [dZ;] sq | |||||
| [J] bn | [J] bn | ||||
| dzh/xdz_pzd [J] base | dzh/xdz_pzd [J] base | ||||
| [J2] hi | |||||
| [Jh] hi | |||||
| [J2] bn | [J2] bn | ||||
| envelope/i_risefall [11] zh | envelope/i_risefall [11] zh | ||||
| envelope/i_risefall2 [+2] rw | envelope/i_risefall2 [+2] rw | ||||
| [l] fr | [l] fr | ||||
| [l] la | [l] la | ||||
| [l;] ro | [l;] ro | ||||
| [L] sq | |||||
| l/lo [(o)] base | l/lo [(o)] base | ||||
| [O] fr | [O] fr | ||||
| [o] fr | [o] fr | ||||
| [l] ca | [l] ca | ||||
| [l] pt | [l] pt | ||||
| [l;] ro | [l;] ro | ||||
| [L] sq | |||||
| l/xl [(@)] base | l/xl [(@)] base | ||||
| [(a)] base | [(a)] base | ||||
| [(e)] base | [(e)] base | ||||
| [s] es | [s] es | ||||
| [s#] pt | [s#] pt | ||||
| [s`] ko | [s`] ko | ||||
| [z] sq | |||||
| [s] en_klatt | [s] en_klatt | ||||
| ufric/s_ [s] base | ufric/s_ [s] base | ||||
| [z] base | [z] base | ||||
| [s#] pt | [s#] pt | ||||
| [z;] ro | [z;] ro | ||||
| [s2] is | [s2] is | ||||
| [z] sq | |||||
| [s2] om | [s2] om | ||||
| [s] en_klatt | [s] en_klatt | ||||
| [z] en_klatt | [z] en_klatt | ||||
| [k`] ko | [k`] ko | ||||
| [k] sq | [k] sq | ||||
| [k] bn | [k] bn | ||||
| [k] hy | |||||
| ustop/k_unasp_ [k] zh | ustop/k_unasp_ [k] zh | ||||
| ustop/null [?] base | ustop/null [?] base | ||||
| ustop/p [p] base | ustop/p [p] base | ||||
| [ph] hi | [ph] hi | ||||
| [ph] zh | [ph] zh | ||||
| [ph] bn | [ph] bn | ||||
| [ph] hy | |||||
| [p#] hy | |||||
| ustop/p_asp [bh] hi | ustop/p_asp [bh] hi | ||||
| [ph] hi | [ph] hi | ||||
| [ph] hy | |||||
| [p#] hy | |||||
| ustop/p_ejc [p`] om | ustop/p_ejc [p`] om | ||||
| ustop/percus10 [(X1] base | ustop/percus10 [(X1] base | ||||
| ustop/pl [p] base | ustop/pl [p] base | ||||
| [p] sq | [p] sq | ||||
| [p] bn | [p] bn | ||||
| [ph] bn | [ph] bn | ||||
| [ph] hy | |||||
| [p] hy | |||||
| [p#] hy | |||||
| ustop/pr [p] base | ustop/pr [p] base | ||||
| [p] base2 | [p] base2 | ||||
| [p] fi | [p] fi | ||||
| [p;] ro | [p;] ro | ||||
| [p] bn | [p] bn | ||||
| [ph] bn | [ph] bn | ||||
| [ph] hy | |||||
| [p] hy | |||||
| [p#] hy | |||||
| ustop/p_unasp [p] base | ustop/p_unasp [p] base | ||||
| [p] base2 | [p] base2 | ||||
| [p] fi | [p] fi | ||||
| [p`] ko | [p`] ko | ||||
| [p] sq | [p] sq | ||||
| [p] bn | [p] bn | ||||
| [p] hy | |||||
| ustop/p_unasp_ [p] base2 | ustop/p_unasp_ [p] base2 | ||||
| [p] fi | [p] fi | ||||
| [p] hi | [p] hi | ||||
| [p;] ro | [p;] ro | ||||
| [p] sq | [p] sq | ||||
| [p] bn | [p] bn | ||||
| [p] hy | |||||
| ustop/q [q] base | ustop/q [q] base | ||||
| ustop/q_u [q] base | ustop/q_u [q] base | ||||
| ustop/t [t] base | ustop/t [t] base | ||||
| [t2] en | [t2] en | ||||
| [d.h] hi | |||||
| [t.h] hi | [t.h] hi | ||||
| [t] zhy | [t] zhy | ||||
| [t.h] bn | [t.h] bn | ||||
| [t2] fr | [t2] fr | ||||
| [t3] fr | [t3] fr | ||||
| [t.] hi | [t.] hi | ||||
| [t.h] hi | |||||
| [t] lv | [t] lv | ||||
| [t] sk | [t] sk | ||||
| [t] el | [t] el | ||||
| [th] zh | [th] zh | ||||
| [t3] sq | |||||
| [t.] bn | [t.] bn | ||||
| [t.h] bn | [t.h] bn | ||||
| ustop/t_dnt [t] base | ustop/t_dnt [t] base | ||||
| [t[] vi | [t[] vi | ||||
| [t] sw | [t] sw | ||||
| [t`] ko | [t`] ko | ||||
| [t5] sq | |||||
| [t] sq | |||||
| [t] bn | [t] bn | ||||
| [t] hy | |||||
| [t[] ga | [t[] ga | ||||
| ustop/t_dnt2 [t[] vi | ustop/t_dnt2 [t[] vi | ||||
| ustop/t_ejc [t`] om | ustop/t_ejc [t`] om | ||||
| ustop/t_hard [t2] sq | |||||
| ustop/t_hard_ [t2] sq | |||||
| ustop/t_hi [t] hi | ustop/t_hi [t] hi | ||||
| [t5] sq | |||||
| [t] sq | |||||
| [t] bn | [t] bn | ||||
| [th] bn | [th] bn | ||||
| [t] hy | |||||
| ustop/t_pzd [t;] pl | ustop/t_pzd [t;] pl | ||||
| [t;] ru | [t;] ru | ||||
| ustop/tr [t] base | ustop/tr [t] base | ||||
| [t[] base | [t[] base | ||||
| [t2] en | [t2] en | ||||
| [t.h] hi | |||||
| [t] ru | [t] ru | ||||
| [t.h] bn | [t.h] bn | ||||
| ustop/ts [ts] base2 | ustop/ts [ts] base2 | ||||
| [z] zhy | [z] zhy | ||||
| [tsh] zh | [tsh] zh | ||||
| [ts] sq | [ts] sq | ||||
| [ts] hy | |||||
| [dz] sq | |||||
| [dz] hy | |||||
| [ts#] hy | |||||
| ustop/ts_ [ts] base2 | ustop/ts_ [ts] base2 | ||||
| [ts] de | [ts] de | ||||
| [ts] eo | [ts] eo | ||||
| [ts] ru | [ts] ru | ||||
| [ts;] ro | [ts;] ro | ||||
| [ts] sq | [ts] sq | ||||
| [ts] hy | |||||
| [dz] sq | |||||
| [dz] hy | |||||
| [ts#] hy | |||||
| ustop/ts2 [ts] lv | ustop/ts2 [ts] lv | ||||
| [ts] hy | |||||
| ustop/tsh [tS] base | ustop/tsh [tS] base | ||||
| [c] zhy | [c] zhy | ||||
| ustop/tsh_ [tS] base | ustop/tsh_ [tS] base | ||||
| [t] lv | [t] lv | ||||
| [t] sk | [t] sk | ||||
| [t] el | [t] el | ||||
| [t3] sq | |||||
| [t.] bn | [t.] bn | ||||
| ustop/tsh_pzd [tS;] zh | ustop/tsh_pzd [tS;] zh | ||||
| ustop/tsh_pzd_unasp [tS;] zh | ustop/tsh_pzd_unasp [tS;] zh | ||||
| ustop/tsh_sr [tS] sr | ustop/tsh_sr [tS] sr | ||||
| ustop/ts_pzd [tS;] base | ustop/ts_pzd [tS;] base | ||||
| [ts;] base | [ts;] base | ||||
| [Jh] hi | |||||
| [ch] hi | [ch] hi | ||||
| [tS;] ru | [tS;] ru | ||||
| [c] sq | [c] sq | ||||
| [dZ;] sq | |||||
| [ch] bn | [ch] bn | ||||
| ustop/ts_pzd_ [c] hi | ustop/ts_pzd_ [c] hi | ||||
| [c] hu | [c] hu | ||||
| [c] bn | [c] bn | ||||
| [c] hy | |||||
| ustop/ts_pzd2 [c] hi | ustop/ts_pzd2 [c] hi | ||||
| [c] hu | [c] hu | ||||
| [c`] ko | [c`] ko | ||||
| [c] bn | [c] bn | ||||
| [c] hy | |||||
| ustop/ts_pzd3 [tS;] hr | ustop/ts_pzd3 [tS;] hr | ||||
| [dZ;] hr | [dZ;] hr | ||||
| ustop/t_sr [d] sr | ustop/t_sr [d] sr | ||||
| [t] sr | [t] sr | ||||
| [t4] sq | |||||
| ustop/ts_rfx [ts.] zh | ustop/ts_rfx [ts.] zh | ||||
| ustop/ts_rfx_unasp [ts.] zh | ustop/ts_rfx_unasp [ts.] zh | ||||
| ustop/ts_sr [tS;] sr | ustop/ts_sr [tS;] sr | ||||
| [z2] fr | [z2] fr | ||||
| [z3] fr | [z3] fr | ||||
| [z;] ro | [z;] ro | ||||
| [z] sq | |||||
| voc/z_ [z] base | voc/z_ [z] base | ||||
| [z] fr | [z] fr | ||||
| [z2] fr | [z2] fr | ||||
| [z3] fr | [z3] fr | ||||
| [z;] ro | [z;] ro | ||||
| [z] sq | |||||
| voc/zh [Z] base | voc/zh [Z] base | ||||
| [z.] base | [z.] base | ||||
| [R^] sk | [R^] sk | ||||
| [8] sv | [8] sv | ||||
| vowel/8_3 [eo] zhy | vowel/8_3 [eo] zhy | ||||
| vowel/8_5 [8] ku | vowel/8_5 [8] ku | ||||
| vowel/8_6 [V] sq | |||||
| vowel/8_7 [@] lv | vowel/8_7 [@] lv | ||||
| vowel/a [a] en | vowel/a [a] en | ||||
| [aa] en | [aa] en | ||||
| [a/] en_sc | [a/] en_sc | ||||
| [A:] en_sc | [A:] en_sc | ||||
| [aa] en_sc | [aa] en_sc | ||||
| [a] lv | |||||
| [a:] lv | |||||
| [a:] cs | [a:] cs | ||||
| [a:] la | [a:] la | ||||
| [a] is | [a] is | ||||
| [a:] vi | [a:] vi | ||||
| vowel/aa [a] fi | vowel/aa [a] fi | ||||
| [A] fr_ca | [A] fr_ca | ||||
| [a] lv | |||||
| [a:] lv | |||||
| [A] no | [A] no | ||||
| [A:] no | [A:] no | ||||
| [aa] zhy | [aa] zhy | ||||
| [E] fr_ca | [E] fr_ca | ||||
| [E] hi | [E] hi | ||||
| [E] hu | [E] hu | ||||
| [e] lv | |||||
| [e:] lv | |||||
| [E] pl | [E] pl | ||||
| [e:] sk | [e:] sk | ||||
| [e] cs | [e] cs | ||||
| [E:] de | [E:] de | ||||
| [e] jbo | [e] jbo | ||||
| [e] fi | [e] fi | ||||
| [e] lv | |||||
| [e:] lv | |||||
| [E] nl | [E] nl | ||||
| [e] sk | [e] sk | ||||
| [e] es | [e] es | ||||
| [U] fr | [U] fr | ||||
| [u] ta | [u] ta | ||||
| [u:] ta | [u:] ta | ||||
| [u] lv | |||||
| [u:] lv | |||||
| [u:] cs | [u:] cs | ||||
| [U] la | [U] la | ||||
| [u] id | [u] id | ||||
| [U:] ta | [U:] ta | ||||
| vowel/u#_4 [U] en_sc | vowel/u#_4 [U] en_sc | ||||
| [u:] en_sc | [u:] en_sc | ||||
| vowel/u_5 [u] lv | |||||
| [u:] lv | |||||
| [u] sw | |||||
| vowel/u_5 [u] sw | |||||
| vowel/u#_5 [y] vi | vowel/u#_5 [y] vi | ||||
| vowel/u_6 [U] pt_pt | vowel/u_6 [U] pt_pt | ||||
| [u] pt_pt | [u] pt_pt | ||||
| [u:] ga | [u:] ga | ||||
| vowel/u_bck2 [u:] la | vowel/u_bck2 [u:] la | ||||
| [u] sq | [u] sq | ||||
| vowel/u_fnt [u:] en | |||||
| [u:] en_rp | |||||
| vowel/u_fnt [u:] en_rp | |||||
| vowel/uu [U] en | vowel/uu [U] en | ||||
| [U] en_n | [U] en_n | ||||
| [U] en_wm | [U] en_wm | ||||
| [aa] en_rp | [aa] en_rp | ||||
| vwl_en_rp/aU@ [aU@] en_rp | vwl_en_rp/aU@ [aU@] en_rp | ||||
| vwl_en_rp/i@ [i@] en_rp | vwl_en_rp/i@ [i@] en_rp | ||||
| vwl_en/u_L [u:] en | |||||
| vwl_en_us/3_us [3] en_us | vwl_en_us/3_us [3] en_us | ||||
| vwl_en_us/3_us2 [3:] en_us | vwl_en_us/3_us2 [3:] en_us | ||||
| vwl_en_us/a [a] en_us | vwl_en_us/a [a] en_us | ||||
| [t#] en_us | [t#] en_us | ||||
| [d] fr | [d] fr | ||||
| [d.] hi | [d.] hi | ||||
| [d.h] hi | |||||
| [d] hr | [d] hr | ||||
| [d] el | [d] el | ||||
| [d] is | [d] is | ||||
| [d;] ru | [d;] ru | ||||
| x/dzh [J] base | x/dzh [J] base | ||||
| [dZ] base | [dZ] base | ||||
| [J2] hi | |||||
| [J2] bn | [J2] bn | ||||
| [dZ] en_klatt | [dZ] en_klatt | ||||
| x/dzh_ [dZ] base | x/dzh_ [dZ] base | ||||
| [dZ;] mk | [dZ;] mk | ||||
| [dZ;] ru | [dZ;] ru | ||||
| [J] bn | [J] bn | ||||
| x/dz_pzd_ [J2] hi | |||||
| [J2] bn | |||||
| x/dz_pzd_ [J2] bn | |||||
| x/g_ [g] base | x/g_ [g] base | ||||
| [g] cy | [g] cy | ||||
| [g] fr | [g] fr | 
| vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
| length 210 | length 210 | ||||
| formants vdiph2/uw_2 | formants vdiph2/uw_2 | ||||
| before l/2 vowel/u_fnt-40+l/L2_uL | |||||
| // before l/2 vowel/u_fnt-40+l/L2_uL | |||||
| before l/2 vwl_en/u_L-40+l/L2_uL | |||||
| endphoneme | endphoneme | ||||
| formants vowel/o_3 | formants vowel/o_3 | ||||
| after l l/lo-10 | after l l/lo-10 | ||||
| before (r) DFT+r/xr | before (r) DFT+r/xr | ||||
| reduceto o2 1 | |||||
| endphoneme | endphoneme | ||||
| phoneme l | phoneme l | ||||
| liquid | liquid | ||||
| vowelout f1=1 f2=1600 -300 300 f3=100 80 brk | |||||
| length 100 | length 100 | ||||
| lengthmod 7 | lengthmod 7 | ||||
| beforenotvowel l/ | beforenotvowel l/ | ||||
| vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 | ||||
| lengthmod 5 | lengthmod 5 | ||||
| formants d/xd3+ustop/t_dnt%40 | formants d/xd3+ustop/t_dnt%40 | ||||
| before _ ustop/t_dnt%35 | |||||
| after @ d/xd | after @ d/xd | ||||
| switchvoicing th | switchvoicing th | ||||
| endphoneme | endphoneme | ||||
| lengthmod 2 | lengthmod 2 | ||||
| wave ustop/t_short | wave ustop/t_short | ||||
| before _ ustop/t_ | before _ ustop/t_ | ||||
| switchvoicing d | |||||
| switchvoicing d. | |||||
| endphoneme | endphoneme | ||||
| phoneme t.h | phoneme t.h | ||||
| vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2 | vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2 | ||||
| lengthmod 2 | lengthmod 2 | ||||
| wave ustop/t | wave ustop/t | ||||
| before _ ustop/t_ | |||||
| before r ustop/tr | |||||
| switchvoicing d | |||||
| // wave ustop/th_rfx | |||||
| switchvoicing d.h | |||||
| endphoneme | endphoneme | ||||
| phoneme d. | phoneme d. | ||||
| after _ NULL | after _ NULL | ||||
| after @ d/xd | after @ d/xd | ||||
| lengthmod 5 | lengthmod 5 | ||||
| switchvoicing t | |||||
| switchvoicing t. | |||||
| endphoneme | |||||
| phoneme d.h | |||||
| vcd rfx stop | |||||
| vowelin f1=1 f2=1800 -300 300 f3=-400 80 | |||||
| vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2 | |||||
| formants d/xd+x/d+ustop/t | |||||
| // formants d/xd+x/d+ustop/th_rfx | |||||
| after @ d/xd | |||||
| lengthmod 5 | |||||
| switchvoicing t.h | |||||
| endphoneme | endphoneme | ||||
| //phoneme d.h // use [d.]+[h] | |||||
| // vcd rfx stop | |||||
| // vowelin f1=1 f2=1800 -300 300 f3=-400 80 | |||||
| // vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2 | |||||
| // formants d/d+x/d | |||||
| // before _ d/d_+x/d_ | |||||
| // before r d/dr+x/d | |||||
| // after _ NULL | |||||
| // after @ d/xd | |||||
| // lengthmod 5 | |||||
| // switchvoicing t | |||||
| //endphoneme | |||||
| switchvoicing c | switchvoicing c | ||||
| endphoneme | endphoneme | ||||
| phoneme J2 // TEST | |||||
| vcd pla afr sibilant | |||||
| vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | |||||
| vowelout f1=2 f2=2700 400 600 f3=300 80 colr=1 | |||||
| formants dzh/dz_pzd+x/dzh%40 | |||||
| before _ dzh/dz_pzd_+x/dz_pzd_%70 | |||||
| after _ NULL | |||||
| after @ dzh/xdz_pzd | |||||
| phoneme Jh | |||||
| vcd pal afr sibilant | |||||
| vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 | |||||
| vowelout f1=0 f2=2700 400 600 f3=300 80 colr=1 | |||||
| lengthmod 5 | lengthmod 5 | ||||
| switchvoicing c | |||||
| formants dzh/xdz_pzd+ustop/ts_pzd | |||||
| after @ dzh/xdz_pzd | |||||
| switchvoicing ch | |||||
| endphoneme | endphoneme | ||||
| //phoneme xJh // use [J]+[h] | |||||
| // vcd pla afr sibilant | |||||
| // vowelin f1=1 f2=2700 400 600 f3=300 80 rate len=70 | |||||
| // formants dzh/dzh+x/dz_pzd | |||||
| // before _ dzh/dzh_+x/dzh_ | |||||
| // after _ NULL @ dzh/xdzh | |||||
| // lengthmod 5 | |||||
| // switchvoicing ts; | |||||
| //endphoneme | |||||
| // velar plosives | // velar plosives | 
| vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
| length 170 | length 170 | ||||
| formants vowel/e_mid | formants vowel/e_mid | ||||
| // reduceto e/ 3 // [E] only in stressed syllables ? | |||||
| reduceto e/ 3 // [E] only in stressed syllables ? | |||||
| endphoneme | endphoneme | ||||
| vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
| length 170 | length 170 | ||||
| formants vowel/oo_4 | formants vowel/oo_4 | ||||
| // reduceto o/ 3 // [O] only in stressed syllables ? | |||||
| reduceto o/ 3 // [O] only in stressed syllables ? | |||||
| endphoneme | endphoneme | ||||
| phoneme e | phoneme e | ||||
| vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
| length 120 | length 120 | ||||
| formants vowel/e_mid2 | |||||
| formants vowel/e_mid | |||||
| endphoneme | endphoneme | ||||
| phoneme e: | phoneme e: | ||||
| vowel starttype (e) endtype (e) | vowel starttype (e) endtype (e) | ||||
| length 330 | length 330 | ||||
| formants vowel/e_mid2 | |||||
| formants vowel/e_mid | |||||
| endphoneme | endphoneme | ||||
| phoneme a | phoneme a | ||||
| vowel starttype (a) endtype (a) | vowel starttype (a) endtype (a) | ||||
| length 120 | length 120 | ||||
| formants vowel/aa | |||||
| formants vowel/a_3 | |||||
| reduceto a# 0 | reduceto a# 0 | ||||
| endphoneme | endphoneme | ||||
| phoneme a: | phoneme a: | ||||
| vowel starttype (a) endtype (a) | vowel starttype (a) endtype (a) | ||||
| length 350 | length 350 | ||||
| formants vowel/aa | |||||
| formants vowel/a_3 | |||||
| endphoneme | endphoneme | ||||
| phoneme a# | phoneme a# | ||||
| phoneme u | phoneme u | ||||
| vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
| length 110 | length 110 | ||||
| formants vowel/u_5 | |||||
| formants vowel/u | |||||
| endphoneme | endphoneme | ||||
| phoneme u: | phoneme u: | ||||
| vowel starttype (u) endtype (u) | vowel starttype (u) endtype (u) | ||||
| length 330 | length 330 | ||||
| formants vowel/u_5 | |||||
| formants vowel/u | |||||
| endphoneme | endphoneme | ||||
| include ph_nepali | include ph_nepali | ||||
| phonemetable hy base | phonemetable hy base | ||||
| include ph_armenian_west | |||||
| include ph_armenian | |||||
| phonemetable om base | phonemetable om base | ||||
| include ph_oromo | include ph_oromo | 
| static const int flags_alternative[] = {phBEFOREVOWEL,phBEFOREVOWELPAUSE,phBEFORENOTVOWEL,phBEFORENOTVOWEL2,phSWITCHVOICING}; | static const int flags_alternative[] = {phBEFOREVOWEL,phBEFOREVOWELPAUSE,phBEFORENOTVOWEL,phBEFORENOTVOWEL2,phSWITCHVOICING}; | ||||
| extern void Write4Bytes(FILE *f, int value); | |||||
| extern int Read4Bytes(FILE *f); | |||||
| extern void MakeVowelLists(void); | extern void MakeVowelLists(void); | ||||
| extern void FindPhonemesUsed(void); | extern void FindPhonemesUsed(void); | ||||
| extern void DrawEnvelopes(); | extern void DrawEnvelopes(); | ||||
| extern int LoadEnvelope2(FILE *f, const char *fname); | extern int LoadEnvelope2(FILE *f, const char *fname); | ||||
| extern int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *fname, int flags); | |||||
| static int markers_used[8]; | static int markers_used[8]; | ||||
| int n_envelopes = 0; | int n_envelopes = 0; | ||||
| char envelope_paths[N_ENVELOPES][80]; | char envelope_paths[N_ENVELOPES][80]; | ||||
| unsigned char envelope_dat[N_ENVELOPES][ENV_LEN]; | unsigned char envelope_dat[N_ENVELOPES][ENV_LEN]; | ||||
| FILE *f_phdata; | |||||
| static FILE *f_phdata; | |||||
| } | } | ||||
| int Hash8(const char *string) | |||||
| //=========================== | |||||
| static int Hash8(const char *string) | |||||
| //================================== | |||||
| /* Generate a hash code from the specified string */ | /* Generate a hash code from the specified string */ | ||||
| { | { | ||||
| int c; | int c; | ||||
| int resample_wav = 0; | int resample_wav = 0; | ||||
| char fname_temp[100]; | char fname_temp[100]; | ||||
| int scale_factor=0; | int scale_factor=0; | ||||
| int fd_temp; | |||||
| char command[sizeof(path_source)+200]; | |||||
| fseek(f,24,SEEK_SET); | fseek(f,24,SEEK_SET); | ||||
| sr1 = Read4Bytes(f); | sr1 = Read4Bytes(f); | ||||
| Error("Not mono: ",fname); | Error("Not mono: ",fname); | ||||
| } | } | ||||
| #else | #else | ||||
| strcpy(fname_temp,"/tmp/espeakXXXXXX"); | |||||
| if((fd_temp = mkstemp(fname_temp)) >= 0) | |||||
| { | { | ||||
| close(fd_temp); | |||||
| sprintf(command,"sox \"%s%s.wav\" -r %d -c 1 -w %s polyphase\n",path_source,fname,samplerate,fname_temp); | |||||
| if(system(command) < 0) | |||||
| int fd_temp; | |||||
| char command[sizeof(path_source)+200]; | |||||
| strcpy(fname_temp,"/tmp/espeakXXXXXX"); | |||||
| if((fd_temp = mkstemp(fname_temp)) >= 0) | |||||
| { | { | ||||
| Error("Failed to resample: ",command); | |||||
| close(fd_temp); | |||||
| sprintf(command,"sox \"%s%s.wav\" -r %d -c 1 -w %s polyphase\n",path_source,fname,samplerate,fname_temp); | |||||
| if(system(command) < 0) | |||||
| { | |||||
| Error("Failed to resample: ",command); | |||||
| return(0); | |||||
| } | |||||
| } | |||||
| f = fopen(fname_temp,"rb"); | |||||
| if(f == NULL) | |||||
| { | |||||
| Error("Can't read temp file: ",fname_temp); | |||||
| return(0); | return(0); | ||||
| } | } | ||||
| resample_wav = 1; | |||||
| fseek(f,40,SEEK_SET); // skip past the WAV header, up to before "data length" | |||||
| } | } | ||||
| f = fopen(fname_temp,"rb"); | |||||
| if(f == NULL) | |||||
| { | |||||
| Error("Can't read temp file: ",fname_temp); | |||||
| return(0); | |||||
| } | |||||
| resample_wav = 1; | |||||
| fseek(f,40,SEEK_SET); // skip past the WAV header, up to before "data length" | |||||
| #endif | #endif | ||||
| } | } | ||||
| return(Unpronouncable_en(tr,word)); | return(Unpronouncable_en(tr,word)); | ||||
| } | } | ||||
| utf8_in(&c,word); | |||||
| if((tr->letter_bits_offset > 0) && (c < 0x241)) | |||||
| { | |||||
| // Latin characters for a language with a non-latin alphabet | |||||
| return(0); // so we can re-translate the word as English | |||||
| } | |||||
| if(tr->langopts.param[LOPT_UNPRONOUNCABLE] == 1) | if(tr->langopts.param[LOPT_UNPRONOUNCABLE] == 1) | ||||
| return(0); | return(0); | ||||
| if((match1.points == 0) && ((option_sayas & 0x10) == 0)) | if((match1.points == 0) && ((option_sayas & 0x10) == 0)) | ||||
| { | { | ||||
| // no match, try removing the accent and re-translating the word | |||||
| n = utf8_in(&letter,p-1)-1; | n = utf8_in(&letter,p-1)-1; | ||||
| if(tr->letter_bits_offset > 0) | |||||
| { | |||||
| // not a Latin alphabet, switch to the default Latin alphabet language | |||||
| if((letter <= 0x241) && iswalpha(letter)) | |||||
| { | |||||
| sprintf(phonemes,"%c%s",phonSWITCH,tr->langopts.ascii_language); | |||||
| return(0); | |||||
| } | |||||
| } | |||||
| // no match, try removing the accent and re-translating the word | |||||
| if((letter >= 0xc0) && (letter <= 0x241) && ((ix = remove_accent[letter-0xc0]) != 0)) | if((letter >= 0xc0) && (letter <= 0x241) && ((ix = remove_accent[letter-0xc0]) != 0)) | ||||
| { | { | ||||
| // within range of the remove_accent table | // within range of the remove_accent table | 
| MyChild::~MyChild(void) | MyChild::~MyChild(void) | ||||
| { | { | ||||
| wxWindow *w; | |||||
| canvas = NULL; | canvas = NULL; | ||||
| #ifndef PLATFORM_WINDOWS | #ifndef PLATFORM_WINDOWS | ||||
| wxWindow *w; | |||||
| // bug in wxMDIChildFrame, we need to explicitly remove the ChildFrame from the ClientWindow | // bug in wxMDIChildFrame, we need to explicitly remove the ChildFrame from the ClientWindow | ||||
| w = myframe->GetClientWindow(); | w = myframe->GetClientWindow(); | ||||
| w->RemoveChild(this); | w->RemoveChild(this); | 
| char fname[sizeof(path_dsource)+20]; | char fname[sizeof(path_dsource)+20]; | ||||
| // KOI8-R codes for Russian vowels | // KOI8-R codes for Russian vowels | ||||
| static char vowels[] = {0xa3,0xc0,0xc1,0xc5,0xc9,0xcf,0xd1,0xd5,0xd9,0xdc,0}; | |||||
| static unsigned char vowels[] = {0xa3,0xc0,0xc1,0xc5,0xc9,0xcf,0xd1,0xd5,0xd9,0xdc,0}; | |||||
| typedef struct { | typedef struct { | ||||
| const char *suffix; | const char *suffix; | ||||
| ru_stress = vcount; | ru_stress = vcount; | ||||
| break; | break; | ||||
| } | } | ||||
| if(strchr(vowels,c) != NULL) | |||||
| if(strchr((char *)vowels,c) != NULL) | |||||
| { | { | ||||
| vcount++; | vcount++; | ||||
| } | } | ||||
| const char* text1 = "Hello world. Testing."; | const char* text1 = "Hello world. Testing."; | ||||
| extern void TestCompile2(void); | |||||
| void TestTest(int control) | void TestTest(int control) | ||||
| {//======================= | {//======================= | ||||
| //CharsetToUnicode("ISO-8859-4"); | //CharsetToUnicode("ISO-8859-4"); | ||||
| //CharsetToUnicode("ISCII"); | //CharsetToUnicode("ISCII"); | ||||
| TestCompile2(); | |||||
| return; | return; | ||||
| if(control==2) | if(control==2) | 
| int length; | int length; | ||||
| char fname_temp[100]; | char fname_temp[100]; | ||||
| char fname2[sizeof(path_home)+13+40]; | char fname2[sizeof(path_home)+13+40]; | ||||
| char command[sizeof(fname2)+sizeof(fname2)+40]; | |||||
| if(fname == NULL) | if(fname == NULL) | ||||
| { | { | ||||
| int fd_temp; | int fd_temp; | ||||
| const char *resample; | const char *resample; | ||||
| int header[3]; | int header[3]; | ||||
| char command[sizeof(fname2)+sizeof(fname2)+40]; | |||||
| fseek(f,20,SEEK_SET); | fseek(f,20,SEEK_SET); | ||||
| for(ix=0; ix<3; ix++) | for(ix=0; ix<3; ix++) | ||||
| } // end of attr_prosody_value | } // end of attr_prosody_value | ||||
| static int AddNameData(const char *name, int wide) | |||||
| {//=============================================== | |||||
| int AddNameData(const char *name, int wide) | |||||
| {//======================================== | |||||
| // Add the name to the namedata and return its position | // Add the name to the namedata and return its position | ||||
| // (Used by the Windows SAPI wrapper) | |||||
| int ix; | int ix; | ||||
| int len; | int len; | ||||
| void *vp; | void *vp; | 
| int a_wave_can_be_played = fifo_is_command_enabled(); | int a_wave_can_be_played = fifo_is_command_enabled(); | ||||
| #ifdef DEBUG_ENABLED | |||||
| SHOW("*** dispatch_audio > uid=%d, [write=%p (%d bytes)], sample=%d, a_wave_can_be_played = %d\n", | SHOW("*** dispatch_audio > uid=%d, [write=%p (%d bytes)], sample=%d, a_wave_can_be_played = %d\n", | ||||
| (event) ? event->unique_identifier : 0, wave_test_get_write_buffer(), 2*length, | (event) ? event->unique_identifier : 0, wave_test_get_write_buffer(), 2*length, | ||||
| (event) ? event->sample : 0, | (event) ? event->sample : 0, | ||||
| a_wave_can_be_played); | a_wave_can_be_played); | ||||
| #endif | |||||
| switch(my_mode) | switch(my_mode) | ||||
| { | { | ||||
| else | else | ||||
| { | { | ||||
| event = event_list + i; | event = event_list + i; | ||||
| #ifdef DEBUG_ENABLED | |||||
| SHOW("Synthesize: event->sample(%d) + %d = %d\n", event->sample, the_write_pos, event->sample + the_write_pos); | SHOW("Synthesize: event->sample(%d) + %d = %d\n", event->sample, the_write_pos, event->sample + the_write_pos); | ||||
| #endif | |||||
| event->sample += the_write_pos; | event->sample += the_write_pos; | ||||
| } | } | ||||
| #ifdef DEBUG_ENABLED | |||||
| SHOW("*** Synthesize: i=%d (event_list_ix=%d), length=%d\n",i,event_list_ix,length); | SHOW("*** Synthesize: i=%d (event_list_ix=%d), length=%d\n",i,event_list_ix,length); | ||||
| #endif | |||||
| finished = dispatch_audio((short *)outbuf, length, event); | finished = dispatch_audio((short *)outbuf, length, event); | ||||
| length = 0; // the wave data are played once. | length = 0; // the wave data are played once. | ||||
| i++; | i++; | ||||
| static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, int flags) | static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, int flags) | ||||
| {//======================================================================================== | {//======================================================================================== | ||||
| // Fill the buffer with output sound | // Fill the buffer with output sound | ||||
| ENTER("Synthesize"); | |||||
| int length; | int length; | ||||
| int finished = 0; | int finished = 0; | ||||
| int count_buffers = 0; | int count_buffers = 0; | ||||
| #endif | #endif | ||||
| #ifdef DEBUG_ENABLED | #ifdef DEBUG_ENABLED | ||||
| ENTER("Synthesize"); | |||||
| if (text) | if (text) | ||||
| { | { | ||||
| SHOW("Synthesize > uid=%d, flags=%d, >>>text=%s<<<\n", unique_identifier, flags, text); | SHOW("Synthesize > uid=%d, flags=%d, >>>text=%s<<<\n", unique_identifier, flags, text); | ||||
| for(;;) | for(;;) | ||||
| { | { | ||||
| #ifdef DEBUG_ENABLED | |||||
| SHOW("Synthesize > %s\n","for (next)"); | SHOW("Synthesize > %s\n","for (next)"); | ||||
| #endif | |||||
| out_ptr = outbuf; | out_ptr = outbuf; | ||||
| out_end = &outbuf[outbuf_size]; | out_end = &outbuf[outbuf_size]; | ||||
| event_list_ix = 0; | event_list_ix = 0; | ||||
| ep->audio_position = int(time); | ep->audio_position = int(time); | ||||
| ep->sample = (count_samples + mbrola_delay + (out_ptr - out_start)/2); | ep->sample = (count_samples + mbrola_delay + (out_ptr - out_start)/2); | ||||
| #ifdef DEBUG_ENABLED | |||||
| SHOW("MarkerEvent > count_samples=%d, out_ptr=%x, out_start=0x%x\n",count_samples, out_ptr, out_start); | SHOW("MarkerEvent > count_samples=%d, out_ptr=%x, out_start=0x%x\n",count_samples, out_ptr, out_start); | ||||
| SHOW("*** MarkerEvent > type=%s, uid=%d, text_pos=%d, length=%d, audio_position=%d, sample=%d\n", | SHOW("*** MarkerEvent > type=%s, uid=%d, text_pos=%d, length=%d, audio_position=%d, sample=%d\n", | ||||
| label[ep->type], ep->unique_identifier, ep->text_position, ep->length, | label[ep->type], ep->unique_identifier, ep->text_position, ep->length, | ||||
| ep->audio_position, ep->sample); | ep->audio_position, ep->sample); | ||||
| #endif | |||||
| if((type == espeakEVENT_MARK) || (type == espeakEVENT_PLAY)) | if((type == espeakEVENT_MARK) || (type == espeakEVENT_PLAY)) | ||||
| ep->id.name = &namedata[value]; | ep->id.name = &namedata[value]; | ||||
| else | else | ||||
| unsigned int position, espeak_POSITION_TYPE position_type, | unsigned int position, espeak_POSITION_TYPE position_type, | ||||
| unsigned int end_position, unsigned int flags, void* user_data) | unsigned int end_position, unsigned int flags, void* user_data) | ||||
| {//=========================================================================== | {//=========================================================================== | ||||
| ENTER("sync_espeak_Synth"); | |||||
| #ifdef DEBUG_ENABLED | |||||
| ENTER("sync_espeak_Synth"); | |||||
| SHOW("sync_espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text); | SHOW("sync_espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text); | ||||
| espeak_ERROR aStatus; | |||||
| #endif | |||||
| espeak_ERROR aStatus; | |||||
| InitText(flags); | InitText(flags); | ||||
| my_unique_identifier = unique_identifier; | my_unique_identifier = unique_identifier; | ||||
| unsigned int end_position, unsigned int flags, | unsigned int end_position, unsigned int flags, | ||||
| unsigned int* unique_identifier, void* user_data) | unsigned int* unique_identifier, void* user_data) | ||||
| {//===================================================================================== | {//===================================================================================== | ||||
| #ifdef DEBUG_ENABLED | |||||
| ENTER("espeak_Synth"); | ENTER("espeak_Synth"); | ||||
| SHOW("espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text); | SHOW("espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text); | ||||
| #endif | |||||
| espeak_ERROR a_error=EE_INTERNAL_ERROR; | espeak_ERROR a_error=EE_INTERNAL_ERROR; | ||||
| static unsigned int temp_identifier; | static unsigned int temp_identifier; | ||||
| unsigned int* unique_identifier, | unsigned int* unique_identifier, | ||||
| void* user_data) | void* user_data) | ||||
| {//========================================================================= | {//========================================================================= | ||||
| #ifdef DEBUG_ENABLED | |||||
| ENTER("espeak_Synth_Mark"); | ENTER("espeak_Synth_Mark"); | ||||
| SHOW("espeak_Synth_Mark > index_mark=%s, end_position=%d, flags=%d, text=%s\n", index_mark, end_position, flags, text); | SHOW("espeak_Synth_Mark > index_mark=%s, end_position=%d, flags=%d, text=%s\n", index_mark, end_position, flags, text); | ||||
| #endif | |||||
| espeak_ERROR a_error=EE_OK; | espeak_ERROR a_error=EE_OK; | ||||
| static unsigned int temp_identifier; | static unsigned int temp_identifier; | 
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.39.39 11.Dec.08"; | |||||
| const char *version_string = "1.39.42 17.Dec.08"; | |||||
| const int version_phdata = 0x013900; | const int version_phdata = 0x013900; | ||||
| int option_device_number = -1; | int option_device_number = -1; | ||||
| static int ReadPhFile(char **ptr, const char *fname) | |||||
| {//================================================= | |||||
| static char *ReadPhFile(void *ptr, const char *fname) | |||||
| {//================================================== | |||||
| FILE *f_in; | FILE *f_in; | ||||
| char *p; | char *p; | ||||
| unsigned int length; | unsigned int length; | ||||
| if((f_in = fopen(buf,"rb")) == NULL) | if((f_in = fopen(buf,"rb")) == NULL) | ||||
| { | { | ||||
| fprintf(stderr,"Can't read data file: '%s'\n",buf); | fprintf(stderr,"Can't read data file: '%s'\n",buf); | ||||
| return(1); | |||||
| return(NULL); | |||||
| } | } | ||||
| if(*ptr != NULL) | |||||
| Free(*ptr); | |||||
| if(ptr != NULL) | |||||
| Free(ptr); | |||||
| if((p = Alloc(length)) == NULL) | if((p = Alloc(length)) == NULL) | ||||
| { | { | ||||
| fclose(f_in); | fclose(f_in); | ||||
| return(-1); | |||||
| return(NULL); | |||||
| } | } | ||||
| if(fread(p,1,length,f_in) != length) | if(fread(p,1,length,f_in) != length) | ||||
| { | { | ||||
| fclose(f_in); | fclose(f_in); | ||||
| return(-1); | |||||
| return(NULL); | |||||
| } | } | ||||
| *ptr = p; | |||||
| fclose(f_in); | fclose(f_in); | ||||
| return(0); | |||||
| return(p); | |||||
| } // end of ReadPhFile | } // end of ReadPhFile | ||||
| int result = 1; | int result = 1; | ||||
| unsigned char *p; | unsigned char *p; | ||||
| if(ReadPhFile((char **)(&phoneme_tab_data),"phontab") != 0) | |||||
| if((phoneme_tab_data = (unsigned char *)ReadPhFile((void *)(phoneme_tab_data),"phontab")) == NULL) | |||||
| return(-1); | return(-1); | ||||
| if(ReadPhFile((char **)(&phoneme_index),"phonindex") != 0) | |||||
| if((phoneme_index = (unsigned int *)ReadPhFile((void *)(phoneme_index),"phonindex")) == NULL) | |||||
| return(-1); | return(-1); | ||||
| if(ReadPhFile((char **)(&spects_data),"phondata") != 0) | |||||
| if((spects_data = ReadPhFile((void *)(spects_data),"phondata")) == NULL) | |||||
| return(-1); | return(-1); | ||||
| wavefile_data = (unsigned char *)spects_data; | wavefile_data = (unsigned char *)spects_data; | ||||
| } | } | ||||
| do { | do { | ||||
| if(WcmdqUsed() > 0) | |||||
| WavegenOpenSound(); | |||||
| if(Generate(phoneme_list,&n_phoneme_list,1)==0) | if(Generate(phoneme_list,&n_phoneme_list,1)==0) | ||||
| { | { | ||||
| SpeakNextClause(NULL,NULL,1); | SpeakNextClause(NULL,NULL,1); | ||||
| int clause_tone; | int clause_tone; | ||||
| char *voice_change; | char *voice_change; | ||||
| FILE *f_mbrola; | |||||
| static FILE *f_text=NULL; | static FILE *f_text=NULL; | ||||
| static const void *p_text=NULL; | static const void *p_text=NULL; | ||||
| #ifdef USE_MBROLA_LIB | #ifdef USE_MBROLA_LIB | ||||
| MbrolaTranslate(phoneme_list,n_phoneme_list,NULL); | MbrolaTranslate(phoneme_list,n_phoneme_list,NULL); | ||||
| #else | #else | ||||
| if((f_mbrola = f_trans) == stderr) | |||||
| f_mbrola = stdout; | |||||
| MbrolaTranslate(phoneme_list,n_phoneme_list,f_mbrola); | |||||
| { | |||||
| FILE *f_mbrola; | |||||
| if((f_mbrola = f_trans) == stderr) | |||||
| f_mbrola = stdout; | |||||
| MbrolaTranslate(phoneme_list,n_phoneme_list,f_mbrola); | |||||
| } | |||||
| #endif | #endif | ||||
| } | } | ||||
| void SelectPhonemeTable(int number); | void SelectPhonemeTable(int number); | ||||
| int SelectPhonemeTableName(const char *name); | int SelectPhonemeTableName(const char *name); | ||||
| void Write4Bytes(FILE *f, int value); | |||||
| int Read4Bytes(FILE *f); | |||||
| int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *err_name,int flags); | |||||
| extern unsigned char *envelope_data[18]; | extern unsigned char *envelope_data[18]; | ||||
| extern int formant_rate[]; // max rate of change of each formant | extern int formant_rate[]; // max rate of change of each formant | 
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 's'; // don't count this character at start of word | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 's'; // don't count this character at start of word | ||||
| tr->langopts.max_initial_consonants = 3; | tr->langopts.max_initial_consonants = 3; | ||||
| tr->langopts.replace_chars = NULL; | tr->langopts.replace_chars = NULL; | ||||
| tr->langopts.ascii_language = ""; // Non-Latin alphabet languages, use this language to speak Latin words, default is English | |||||
| SetLengthMods(tr,201); | SetLengthMods(tr,201); | ||||
| // tr->langopts.length_mods = length_mods_en; | // tr->langopts.length_mods = length_mods_en; | ||||
| SetLetterBits(tr,LETTERGP_C,hy_consonants); | SetLetterBits(tr,LETTERGP_C,hy_consonants); | ||||
| tr->langopts.max_initial_consonants = 6; | tr->langopts.max_initial_consonants = 6; | ||||
| tr->langopts.numbers = 0x409; | tr->langopts.numbers = 0x409; | ||||
| // tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||||
| } | } | ||||
| break; | break; | ||||
| case L('k','o'): // Korean, TEST | case L('k','o'): // Korean, TEST | ||||
| { | { | ||||
| static const char ko_ivowels[] = {0x63,0x64,0x67,0x68,0x6d,0x72,0x74,0x75,0}; // y and i vowels | static const char ko_ivowels[] = {0x63,0x64,0x67,0x68,0x6d,0x72,0x74,0x75,0}; // y and i vowels | ||||
| static const char ko_voiced[] = {0x02,0x05,0x06,0xab,0xaf,0xb7,0xbc,0}; // voiced consonants, l,m,n,N | |||||
| static const unsigned char ko_voiced[] = {0x02,0x05,0x06,0xab,0xaf,0xb7,0xbc,0}; // voiced consonants, l,m,n,N | |||||
| tr->letter_bits_offset = OFFSET_KOREAN; | tr->letter_bits_offset = OFFSET_KOREAN; | ||||
| memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | ||||
| SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75); | SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75); | ||||
| SetLetterBits(tr,LETTERGP_Y,ko_ivowels); | SetLetterBits(tr,LETTERGP_Y,ko_ivowels); | ||||
| SetLetterBits(tr,LETTERGP_G,ko_voiced); | |||||
| SetLetterBits(tr,LETTERGP_G,(const char *)ko_voiced); | |||||
| tr->langopts.stress_rule = 8; // ?? 1st syllable if it is heavy, else 2nd syllable | tr->langopts.stress_rule = 8; // ?? 1st syllable if it is heavy, else 2nd syllable | ||||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | 
| int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" | int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2" | ||||
| int listx; // compile *_listx after *list | int listx; // compile *_listx after *list | ||||
| const unsigned int *replace_chars; // characters to be substitutes | const unsigned int *replace_chars; // characters to be substitutes | ||||
| const char *ascii_language; // switch to this language for Latin characters | |||||
| } LANGUAGE_OPTIONS; | } LANGUAGE_OPTIONS; | ||||
| extern int (* phoneme_callback)(const char *); | extern int (* phoneme_callback)(const char *); | ||||
| extern void SetLengthMods(Translator *tr, int value); | extern void SetLengthMods(Translator *tr, int value); | ||||
| int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *err_name,int flags); | |||||
| void LoadConfig(void); | void LoadConfig(void); | ||||
| int TransposeAlphabet(char *text, int offset, int min, int max); | int TransposeAlphabet(char *text, int offset, int min, int max); | ||||
| int utf8_in(int *c, const char *buf); | int utf8_in(int *c, const char *buf); |