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