Fix numbers greater than 1000000, for Indian languages. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@221 d46cf337-b52f-0410-862d-fd96e6ae7743master
| D f g h j J k l | D f g h j J k l | ||||
| l# m m# n N n# N# n^ | l# m m# n N n# N# n^ | ||||
| n^# p Q r R r# R2 s | n^# p Q r R r# R2 s | ||||
| S s2 t T tl# v x z | |||||
| s2 t T tl# v x z | |||||
| Dictionary it_dict | Dictionary it_dict |
| evildoers i:v@Ldu:3z | evildoers i:v@Ldu:3z | ||||
| ewe ju: | ewe ju: | ||||
| evening i:vnI2N | evening i:vnI2N | ||||
| every Iv3:t | |||||
| evit EvI2t // inevitable | evit EvI2t // inevitable | ||||
| exalt Egz'0lt | exalt Egz'0lt | ||||
| execute EksI2kju:t // not $2 | execute EksI2kju:t // not $2 | ||||
| Peru p@ru: | Peru p@ru: | ||||
| Phillipine fIlI2pi:n | Phillipine fIlI2pi:n | ||||
| Philipine fIlI2pi:n // misspell | Philipine fIlI2pi:n // misspell | ||||
| Poland poUl@nd | |||||
| Polish poUlIS $capital $only | Polish poUlIS $capital $only | ||||
| Portuguese po@tju:g'i:z | Portuguese po@tju:g'i:z | ||||
| Potomac $2 | Potomac $2 |
| adv) an (c an | adv) an (c an | ||||
| _) an (cie eIn | _) an (cie eIn | ||||
| &l) an (d @n | &l) an (d @n | ||||
| yl) an (d an | |||||
| usb) an (d @n | usb) an (d @n | ||||
| @) an (Ca_ 'an | @) an (Ca_ 'an | ||||
| ando (_ 'andoU | ando (_ 'andoU | ||||
| w) l (_ l | w) l (_ l | ||||
| r) l (_ l | r) l (_ l | ||||
| Al) l (_ | Al) l (_ | ||||
| &) la (nd_ la2 | |||||
| over) la (nd la | |||||
| &) lim (ent lIm | &) lim (ent lIm | ||||
| &t) ling (_ _lI2N | &t) ling (_ _lI2N | ||||
| &B) ling (_ lI2N | &B) ling (_ lI2N | ||||
| .group ol | .group ol | ||||
| &st) ol (_ @L | &st) ol (_ @L | ||||
| ol (and_ oUl | |||||
| ol (ar oUl | ol (ar oUl | ||||
| @@) ol (ar 'oUl | @@) ol (ar 'oUl | ||||
| h) ol (ar 0l | h) ol (ar 0l |
| // 2006-11-18 Gilles Casse <[email protected]> | // 2006-11-18 Gilles Casse <[email protected]> | ||||
| // | // | ||||
| // Updated 2009-05-14 Michel Such <[email protected]> | |||||
| // Updated 2009-06-08 Michel Such <[email protected]> | |||||
| // | // | ||||
| // * Numbers, a few abbreviations and exceptions. | // * Numbers, a few abbreviations and exceptions. | ||||
| // | // | ||||
| kg kilogram | kg kilogram | ||||
| khz kiloErts | khz kiloErts | ||||
| km kilomètre $text | km kilomètre $text | ||||
| (km player) ka,EmplEj'Wr | |||||
| (kmplayer) ka,EmplEj'Wr | |||||
| kw kilowat | kw kilowat | ||||
| m. m@siY | m. m@siY | ||||
| mbit megabit | mbit megabit | ||||
| ou $u $brk | ou $u $brk | ||||
| eh $u $brk | eh $u $brk | ||||
| et e $u $brk | et e $u $brk | ||||
| ni $u $brk | |||||
| car $u $brk | |||||
| ni $u | |||||
| car $u | |||||
| car $noun | car $noun | ||||
| cependant $brk | |||||
| néanmoins $brk | |||||
| toutefois $brk | |||||
| avant $u+ $brk | |||||
| après $u+ $brk | |||||
| cependant | |||||
| néanmoins $u+ | |||||
| toutefois $u+ | |||||
| avant $u+ | |||||
| après $u+ | |||||
| (temps en temps) tA~zA~tA~ | (temps en temps) tA~zA~tA~ | ||||
| alors alOr $u+ | alors alOr $u+ | ||||
| depuis $u+ | depuis $u+ | ||||
| (parce qu'elles) parskElz2 $u+ | (parce qu'elles) parskElz2 $u+ | ||||
| (parce qu'on) parskO~n2 $u+ | (parce qu'on) parskO~n2 $u+ | ||||
| tant tA~t2 $u+ | tant tA~t2 $u+ | ||||
| (tant mieux) tA~mjY $u+ | |||||
| (tant pis) tA~pi $u+ | |||||
| qui $verbf $u+ | qui $verbf $u+ | ||||
| quoique $u | quoique $u | ||||
| quant kA~t2 $u | quant kA~t2 $u |
| // 2006-11-18 Gilles Casse <[email protected]> | // 2006-11-18 Gilles Casse <[email protected]> | ||||
| // | // | ||||
| // Updated: 2009-05-14 Michel Such <[email protected]> | |||||
| // Updated: 2009-05-28 Michel Such <[email protected]> | |||||
| // | // | ||||
| // Letter classes: | // Letter classes: | ||||
| vin) gt (_neuvi t | vin) gt (_neuvi t | ||||
| gt (_ // vingt doigts | gt (_ // vingt doigts | ||||
| gt t // vingtaine doigté | gt t // vingtaine doigté | ||||
| gui gi // anguille | gui gi // anguille | ||||
| ai) gu (il gy // aiguillage | |||||
| in) gu (is gy // linguiste | |||||
| ai) gui (l gw^i // aiguillage | |||||
| in) gui (s gw^i // linguiste | |||||
| g (C g | g (C g | ||||
| _ran) g (_ // rang | _ran) g (_ // rang | ||||
| C) ucci utSi // capuccino | C) ucci utSi // capuccino | ||||
| c) ueill Wj // cueillir | c) ueill Wj // cueillir | ||||
| c) ueil (_ Wj // recueil | c) ueil (_ Wj // recueil | ||||
| _g) u (a u | |||||
| ag) u (a_ u | |||||
| tig) u (a_ u | |||||
| _g) ua wA | |||||
| ag) ua (_ wA | |||||
| Ctig) ua (_ wA | |||||
| _c) ul (_ y | _c) ul (_ y | ||||
| _) ultra (P5 yltra | _) ultra (P5 yltra | ||||
| g) u (ay u | g) u (ay u |
| _9 n'O: | _9 n'O: | ||||
| ?3 _9 n'aU | ?3 _9 n'aU | ||||
| _10 dVs | |||||
| _10 d'Vs | |||||
| _11 gj'a:r@2 | _11 gj'a:r@2 | ||||
| _12 b'a:r@2 | _12 b'a:r@2 | ||||
| _13 t'E:r@2 | _13 t'E:r@2 | ||||
| _0M1 h@z'a:r | _0M1 h@z'a:r | ||||
| _0M2 l'a:kh | _0M2 l'a:kh | ||||
| _0M3 cr'ore | _0M3 cr'ore | ||||
| _0M4 b'ilion // ?? English | |||||
| _0M4 'Vr@b | |||||
| _0M5 kh'Vr@b | |||||
| _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | _dpt _d@s@ml'o:_ // ?? what is Hi for "." ? | ||||
| // Single consonants | // Single consonants |
| _4f fj'W:Qyrr# | _4f fj'W:Qyrr# | ||||
| _5 f'Im | _5 f'Im | ||||
| _6 s'e:xs | _6 s'e:xs | ||||
| _7 S'W: | |||||
| _7 sj'W: | |||||
| _8 'aUhd& | _8 'aUhd& | ||||
| _9 n'i:;y | _9 n'i:;y | ||||
| _10 t'i:;y | _10 t'i:;y |
| // letter group F p,t,k,s | // letter group F p,t,k,s | ||||
| // letter group H j,r,v, | // letter group H j,r,v, | ||||
| .replace | |||||
| x xz | |||||
| .group a | .group a | ||||
| a a: | a a: | ||||
| e (CC E | e (CC E | ||||
| e (ng eI | e (ng eI | ||||
| e (nk eI | e (nk eI | ||||
| egi eI:jI | |||||
| ei eI: | ei eI: | ||||
| ey eI: | ey eI: | ||||
| ei (FH eI: | ei (FH eI: | ||||
| hj C | hj C | ||||
| hl l# | hl l# | ||||
| hn hn# | hn hn# | ||||
| hr r# | |||||
| hv kv | hv kv | ||||
| ó) nn dn | ó) nn dn | ||||
| ú) nn dn | ú) nn dn | ||||
| ý) nn dn | ý) nn dn | ||||
| æ) nn dn | |||||
| au) nn dn | au) nn dn | ||||
| ei) nn dn | ei) nn dn | ||||
| ey) nn dn | ey) nn dn | ||||
| .group r | .group r | ||||
| _) r R2 | |||||
| _) r _|R2 | |||||
| C) r @-R | C) r @-R | ||||
| l) r **R | l) r **R | ||||
| A) r (A *R | A) r (A *R | ||||
| B) r r# | B) r r# | ||||
| r (B rr# | r (B rr# | ||||
| r (_ rr# | |||||
| r (_ _|R | |||||
| r _|R2 | r _|R2 | ||||
| rr R*R | rr R*R | ||||
| rl dl | rl dl | ||||
| .group s | .group s | ||||
| s s | s s | ||||
| ss ss2 | ss ss2 | ||||
| sj S | |||||
| .group t | .group t | ||||
| u (CC y | u (CC y | ||||
| K) u (ng u | K) u (ng u | ||||
| K) u (nk u | K) u (nk u | ||||
| &) ur (_ y#r# | |||||
| .group ú | .group ú | ||||
| .group x | .group x | ||||
| x xs | |||||
| x ks | |||||
| xz ks | |||||
| .group y | .group y | ||||
| y I: | y I: | ||||
| _) ö (@P1N ,W: | _) ö (@P1N ,W: | ||||
| .group | .group | ||||
| $ dolar | |||||
| $ dOllar | |||||
| [(o)] base | [(o)] base | ||||
| [(u)] base | [(u)] base | ||||
| [Y] fr | [Y] fr | ||||
| [a] fr | |||||
| [A~] fr | |||||
| ufric/ch [C] base | ufric/ch [C] base | ||||
| [J^] base | [J^] base | ||||
| [C2] de | [C2] de | ||||
| vwl_fr/@R3 [Q2] hy | vwl_fr/@R3 [Q2] hy | ||||
| vwl_fr/@R4 [Q2] hy | vwl_fr/@R4 [Q2] hy | ||||
| vwl_fr/@R5 [Q2] hy | vwl_fr/@R5 [Q2] hy | ||||
| vwl_fr/r_a [wA] fr | |||||
| vwl_fr/r_a [a] fr | |||||
| [wA] fr | |||||
| vwl_fr/r_e [E] fr | vwl_fr/r_e [E] fr | ||||
| [e] fr | [e] fr | ||||
| vwl_fr/r_i [i] fr | vwl_fr/r_i [i] fr | ||||
| vwl_fr/tr [r] fr | vwl_fr/tr [r] fr | ||||
| vwl_fr/w_a [wA] fr | vwl_fr/w_a [wA] fr | ||||
| vwl_fr/xr [a] fr | vwl_fr/xr [a] fr | ||||
| [wA] fr | |||||
| [A~] fr | [A~] fr | ||||
| vwl_hi/l-voc [l-] jbo | vwl_hi/l-voc [l-] jbo | ||||
| [l-] hi | [l-] hi |
| formants vowel/a_6 | formants vowel/a_6 | ||||
| after l l/la-15 | after l l/la-15 | ||||
| before l/ DFT+l/l_a | before l/ DFT+l/l_a | ||||
| before (r) DFT-10+vwl_fr/xr | |||||
| before r/2 DFT+r/xr | |||||
| before (r) DFT+vwl_fr/xr | |||||
| before r/2 DFT-20+vwl_fr/r_a | |||||
| endphoneme | endphoneme | ||||
| after (l) l/li-15 | after (l) l/li-15 | ||||
| before l/ DFT+l/l_i | before l/ DFT+l/l_i | ||||
| before (r) DFT-20+vwl_fr/r_i | before (r) DFT-20+vwl_fr/r_i | ||||
| before r/2 DFT+vwl_fr/r_i | |||||
| before r/2 DFT-20+vwl_fr/r_i | |||||
| endphoneme | endphoneme | ||||
| formants vowel/o_mid | formants vowel/o_mid | ||||
| after (l) l/lo-10 | after (l) l/lo-10 | ||||
| before l/ DFT+l/l_o | before l/ DFT+l/l_o | ||||
| before r/2 DFT+vwl_fr/r_o | |||||
| before r/2 DFT-20+vwl_fr/r_o | |||||
| reduceto o2 1 | reduceto o2 1 | ||||
| endphoneme | endphoneme | ||||
| after (l) l/lo-10 | after (l) l/lo-10 | ||||
| before l/ DFT+l/l_o | before l/ DFT+l/l_o | ||||
| before (r) DFT+vwl_fr/r_o | before (r) DFT+vwl_fr/r_o | ||||
| before r/2 DFT+vwl_fr/r_o | |||||
| before r/2 DFT-20+vwl_fr/r_o | |||||
| endphoneme | endphoneme | ||||
| after l l/lu-20 | after l l/lu-20 | ||||
| before l/ DFT-20+l/l_u | before l/ DFT-20+l/l_u | ||||
| before (r) DFT+vwl_fr/r_u | before (r) DFT+vwl_fr/r_u | ||||
| before r/2 DFT+vwl_fr/r_u | |||||
| before r/2 DFT-30+vwl_fr/r_u | |||||
| before i DFT-50 | before i DFT-50 | ||||
| endphoneme | endphoneme | ||||
| after l l/lu-20 | after l l/lu-20 | ||||
| before l/ DFT-30+l/l_y | before l/ DFT-30+l/l_y | ||||
| before (r) DFT+vwl_fr/r_y | before (r) DFT+vwl_fr/r_y | ||||
| before r/2 DFT+vwl_fr/r_y | |||||
| before r/2 DFT-30+vwl_fr/r_y | |||||
| before E~ DFT-50 | before E~ DFT-50 | ||||
| endphoneme | endphoneme | ||||
| after (l) l/l@-20 | after (l) l/l@-20 | ||||
| before l/ DFT-20+l/l_@ | before l/ DFT-20+l/l_@ | ||||
| before (r) DFT+vwl_fr/r_@2 | before (r) DFT+vwl_fr/r_@2 | ||||
| before r/2 DFT+vwl_fr/r_@2 | |||||
| before r/2 DFT-30+vwl_fr/r_@2 | |||||
| reduceto Y 1 | reduceto Y 1 | ||||
| endphoneme | endphoneme | ||||
| formants vwl_fr/w_a | formants vwl_fr/w_a | ||||
| after (l) l/lo-10 | after (l) l/lo-10 | ||||
| before l/ DFT-10+l/l_a | before l/ DFT-10+l/l_a | ||||
| before (r) DFT+vwl_fr/r_a | |||||
| before (r) DFT+vwl_fr/xr | |||||
| before r/2 DFT+vwl_fr/r_a | before r/2 DFT+vwl_fr/r_a | ||||
| endphoneme | endphoneme | ||||
| formants vnasal/aa_n4 | formants vnasal/aa_n4 | ||||
| before l/ DFT+l/l_a | before l/ DFT+l/l_a | ||||
| before (r) DFT+vwl_fr/xr | before (r) DFT+vwl_fr/xr | ||||
| before r/2 DFT+r/xr-40 | |||||
| before r/2 DFT+vwl_fr/xr | |||||
| endphoneme | endphoneme | ||||
| phoneme r | phoneme r | ||||
| liquid starttype (r) endtype (r) | liquid starttype (r) endtype (r) | ||||
| vowelin f1=0 f2=1800 10 10 f3=-200 100 | |||||
| vowelin f1=1 f2=1800 10 10 f3=-200 100 | |||||
| vowelout f1=1 f2=1800 10 10 f3=-200 100 | vowelout f1=1 f2=1800 10 10 f3=-200 100 | ||||
| length 100 | length 100 | ||||
| lengthmod 7 | lengthmod 7 | ||||
| after p vwl_fr/tr+r3/rx%35 | after p vwl_fr/tr+r3/rx%35 | ||||
| after s vwl_fr/tr+r3/rx%30 | after s vwl_fr/tr+r3/rx%30 | ||||
| after S vwl_fr/tr+r3/rx%45 | after S vwl_fr/tr+r3/rx%45 | ||||
| after t vwl_fr/tr+r3/rx%15 | |||||
| after t vwl_fr/tr+r3/rx%30 | |||||
| after v vwl_fr/tr+r3/rx%30 | after v vwl_fr/tr+r3/rx%30 | ||||
| after z vwl_fr/tr+r3/rx%30 | after z vwl_fr/tr+r3/rx%30 | ||||
| after Z vwl_fr/tr+r3/rx%30 | after Z vwl_fr/tr+r3/rx%30 |
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.40.21 29.May.09"; | |||||
| const char *version_string = "1.40.22 19.Jun.09"; | |||||
| const int version_phdata = 0x014015; | const int version_phdata = 0x014015; | ||||
| int option_device_number = -1; | int option_device_number = -1; |
| char *pn; | char *pn; | ||||
| char *pw; | char *pw; | ||||
| static unsigned int break_numbers1 = 0x49249248; | static unsigned int break_numbers1 = 0x49249248; | ||||
| static unsigned int break_numbers2 = 0x492492a8; // for languages which have numbers for 100,000 and 100,00,000 | |||||
| static unsigned int break_numbers2 = 0x24924aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | |||||
| static unsigned int break_numbers3 = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 | static unsigned int break_numbers3 = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000 | ||||
| unsigned int break_numbers; | unsigned int break_numbers; | ||||
| char number_buf[80]; | char number_buf[80]; | ||||
| pn = &number_buf[1]; | pn = &number_buf[1]; | ||||
| nx = n_digits; | nx = n_digits; | ||||
| if(tr->langopts.numbers2 & NUM2_100000a) | |||||
| if((tr->langopts.numbers2 & NUM2_100000a) == NUM2_100000a) | |||||
| break_numbers = break_numbers3; | break_numbers = break_numbers3; | ||||
| else | else | ||||
| if(tr->langopts.numbers2 & NUM2_100000) | if(tr->langopts.numbers2 & NUM2_100000) |