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) |