Indicate language changes in IPA phoneme output. Phoneme definitions FMT(), second parameter is amplitude percentage. Phoneme definitions CALL(), If phoneme type is not defined, copy the static attributes from the called phoneme. Unpronouncable word check: stop when an apostrophe is reached. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@250 d46cf337-b52f-0410-862d-fd96e6ae7743master
// PB = Peter Bjarkov - [email protected] | |||||
tv $abbrev | |||||
// PB = Peter Bjarkov - [email protected] | |||||
// This file is UTF8 encoded | // This file is UTF8 encoded | ||||
// Spelling-to-phoneme words for Danish | // Spelling-to-phoneme words for Danish |
åre V3 // PB tåre | åre V3 // PB tåre | ||||
å (lti V // PB måltid | å (lti V // PB måltid | ||||
.group ' | |||||
's (_S2 s | |||||
'er (_S3 %V | |||||
'erne (_S5 %Vn@ | |||||
'ernes (_S6 %Vn@s | |||||
'et (_S3 @D | |||||
.group | .group | ||||
$ dVlV // PB changed from [dVlar] | $ dVlV // PB changed from [dVlar] | ||||
ñ _^_ES // PB mañana | ñ _^_ES // PB mañana |
Phonemes which are used in the *_rules and *_list files | Phonemes which are used in the *_rules and *_list files | ||||
Dictionary af_dict | |||||
Dictionary af_dict 2010-05-24 | |||||
& &: 3: @ @- @L @U a | & &: 3: @ @- @L @U a | ||||
A: aI AI aU A~ E e: e@ | A: aI AI aU A~ E e: e@ | ||||
T tS v w x x2 z Z | T tS v w x x2 z Z | ||||
Dictionary ca_dict | |||||
Dictionary ca_dict 2010-05-12 | |||||
@ a a# aI e E E2 i | @ a a# aI e E E2 i | ||||
o O u U | o O u U | ||||
v# w z Z Z; | v# w z Z Z; | ||||
Dictionary cs_dict | |||||
Dictionary cs_dict 2010-07-03 | |||||
@- a a: aU e e: eI eU | @- a a: aU e e: eI eU | ||||
i i: l- o o: oU r- u | i i: l- o o: oU r- u | ||||
Z | Z | ||||
Dictionary cy_dict | |||||
Dictionary cy_dict 2010-05-24 | |||||
@ @- @I @Y a A: aI aU | @ @- @I @Y a A: aI aU | ||||
AY aY E e: eU I i: Iu | AY aY E e: eU I i: Iu | ||||
x z | x z | ||||
Dictionary da_dict | |||||
Dictionary da_dict 2010-07-03 | |||||
& &# 0 3 @ @- a A | & &# 0 3 @ @- a A | ||||
e E i o O u V W | e E i o O u V W | ||||
s S t T tS v w z | s S t T tS v w z | ||||
Dictionary hu_dict | |||||
Dictionary hu_dict 2010-07-17 | |||||
A a: E e: i i: o o: | A a: E e: i i: o o: | ||||
u u: Y y y: Y: | u u: Y y y: Y: | ||||
t tS ts v z Z | t tS ts v z Z | ||||
Dictionary de_dict | |||||
Dictionary de_dict 2010-07-03 | |||||
3 3: @ @- a A A: aI | 3 3: @ @- a A A: aI | ||||
aU E E2 E: e: EI i I | aU E E2 E: e: EI i I | ||||
tS ts v w x z Z | tS ts v w x z Z | ||||
Dictionary el_dict | |||||
Dictionary el_dict 2008-12-16 | |||||
@ @- a aI e i o oI | @ @- a aI e i o oI | ||||
u | u | ||||
T ts v x z z; | T ts v x z z; | ||||
Dictionary en_dict | |||||
Dictionary en_dict 2010-07-13 | |||||
0 3 3: @ @- @2 @5 @L | 0 3 3: @ @- @2 @5 @L | ||||
a a# A: A@ aa aI aI@ aU | a a# A: A@ aa aI aI@ aU | ||||
x z Z | x z Z | ||||
Dictionary eo_dict | |||||
Dictionary eo_dict 2010-05-19 | |||||
@- a aI aU e eI eU i | @- a aI aU e eI eU i | ||||
o oI u uI | o oI u uI | ||||
x z Z | x z Z | ||||
Dictionary es_dict | |||||
Dictionary es_dict 2010-07-13 | |||||
a aI aU e E eI eU i | a aI aU e E eI eU i | ||||
o O oI u | o O oI u | ||||
* ** : b B d D f | * ** : b B d D f | ||||
g j J J^ k l m n | g j J J^ k l m n | ||||
N n^ p Q R R2 s t | |||||
T tS v v# w x z | |||||
N n^ p Q R R2 s S | |||||
t T tS v v# w x z | |||||
Dictionary fi_dict | |||||
Dictionary fi_dict 2009-05-01 | |||||
& &i &y a a2 ai au e | & &i &y a a2 ai au e | ||||
ei eu ey i I ie iu iy | ei eu ey i I ie iu iy | ||||
s2 t v w Z | s2 t v w Z | ||||
Dictionary fr_dict | |||||
Dictionary fr_dict 2010-07-18 | |||||
@ @- a A~ e E E2 E: | @ @- a A~ e E E2 E: | ||||
E~ i I o O o2 o3 O~ | |||||
u u: w W W~ y Y | |||||
E~ i I o O o3 O~ u | |||||
u: w W W~ y Y | |||||
- : b d dZ f g h | - : b d dZ f g h | ||||
j k l m n N n2 n^ | j k l m n N n2 n^ | ||||
t3 tS v z Z z2 z3 | t3 tS v z Z z2 z3 | ||||
Dictionary grc_dict | |||||
Dictionary grc_dict 2008-03-03 | |||||
a aI aU e E EI eU EU | a aI aU e E EI eU EU | ||||
i o O oI OI OU u y | i o O oI OI OU u y | ||||
T v x z | T v x z | ||||
Dictionary hbs_dict | |||||
Dictionary hbs_dict 2008-12-17 | |||||
& @ @2 a A a: aI aU | & @ @2 a A a: aI aU | ||||
e E e: i I i: l- o | e E e: i I i: l- o | ||||
t tS ts tS; v x z Z | t tS ts tS; v x z Z | ||||
Dictionary hi_dict | |||||
Dictionary hi_dict 2009-11-24 | |||||
@ @- @2 @3 a a: aI aU | @ @- @2 @3 a a: aI aU | ||||
e E e: E: E~ i I i: | e E e: E: E~ i I i: | ||||
th. v w x z | th. v w x z | ||||
Dictionary ta_dict | |||||
Dictionary ta_dict 2010-07-18 | |||||
a a: aI aU e E e: i | a a: aI aU e E e: i | ||||
I i: o o: u U u: U: | I i: o o: u U u: U: | ||||
v w z z. | v w z z. | ||||
Dictionary hy_dict | |||||
Dictionary hy_dict 2008-12-22 | |||||
@ a aI e eI i i@ o | @ a aI e eI i i@ o | ||||
u W y | u W y | ||||
tS ts ts# v X z Z | tS ts ts# v X z Z | ||||
Dictionary id_dict | |||||
Dictionary id_dict 2010-01-07 | |||||
@ a aI aU e E E2 i | @ a aI aU e E E2 i | ||||
o O u | o O u | ||||
w x z | w x z | ||||
Dictionary is_dict | |||||
Dictionary is_dict 2010-04-05 | |||||
@- a a: aI aI: aU aU: E | @- a a: aI aI: aU aU: E | ||||
E: eI eI: i I i: I: O | E: eI eI: i I i: I: O | ||||
S s2 t T tl# v x z | S s2 t T tl# v x z | ||||
Dictionary it_dict | |||||
Dictionary it_dict 2009-04-03 | |||||
@- a a/ aI aU e E eI | @- a a/ aI aU e E eI | ||||
i I o O u | i I o O u | ||||
ts v w w2 z | ts v w w2 z | ||||
Dictionary jbo_dict | |||||
Dictionary jbo_dict 2010-02-16 | |||||
@ a aI aU e eI i l- | @ a aI aU e eI i l- | ||||
n- o oI r- u | n- o oI r- u | ||||
t tS v w x z Z | t tS v w x z Z | ||||
Dictionary ku_dict | |||||
Dictionary ku_dict 2008-04-14 | |||||
8 a e E E# eI eU i | 8 a e E E# eI eU i | ||||
I o u U y | I o u U y | ||||
w x z Z | w x z Z | ||||
Dictionary la_dict | |||||
Dictionary la_dict 2008-01-15 | |||||
@- a a: aI aU E e: EU | @- a a: aI aU E e: EU | ||||
I i: O o: OI U u: y | I i: O o: OI U u: y | ||||
p r R s t w z | p r R s t w z | ||||
Dictionary lv_dict | |||||
Dictionary lv_dict 2010-03-12 | |||||
a a: ai au e e: ei i | a a: ai au e e: ei i | ||||
i: ie iu o o: u u: ui | i: ie iu o o: u u: ui | ||||
tS ts v z Z | tS ts v z Z | ||||
Dictionary mk_dict | |||||
Dictionary mk_dict 2007-12-19 | |||||
& @ @- @2 a A a: e | & @ @- @2 a A a: e | ||||
E e: i I i: l- o o: | E e: i I i: l- o o: | ||||
tS ts tS; v x z Z | tS ts tS; v x z Z | ||||
Dictionary nci_dict | |||||
Dictionary nci_dict 2010-01-20 | |||||
a e i o O | a e i o O | ||||
t tS v w x | t tS v w x | ||||
Dictionary nl_dict | |||||
Dictionary nl_dict 2010-07-18 | |||||
8 @ @- A a: A~ E e: | 8 @ @- A a: A~ E e: | ||||
EI eU i I O O: o: u | EI eU i I O O: o: u | ||||
VU Wy y Y: yU | VU Wy y Y: yU | ||||
* : ; b d f g h | |||||
j k l m n N n^ p | |||||
Q r s S t tS v v# | |||||
w x z | |||||
* : ; b d D f g | |||||
h j k l m n N n^ | |||||
p Q r s S t tS v | |||||
v# w x z Z | |||||
Dictionary no_dict | |||||
Dictionary no_dict 2010-01-20 | |||||
@ @2 a A a: A: AI aI | @ @2 a A a: A: AI aI | ||||
aU E E: e: I i: O o: | aU E E: e: I i: O o: | ||||
s S s; t v w x z | s S s; t v w x z | ||||
Dictionary pap_dict | |||||
Dictionary pap_dict 2009-05-02 | |||||
a a/ aI e E eI i o | a a/ aI e E eI i o | ||||
O u y Y | O u y Y | ||||
z Z | z Z | ||||
Dictionary pl_dict | |||||
Dictionary pl_dict 2009-10-19 | |||||
a E E# E~ i O O~ u | a E E# E~ i O O~ u | ||||
y | y | ||||
w x z Z Z; | w x z Z Z; | ||||
Dictionary pt_dict | |||||
Dictionary pt_dict 2010-07-03 | |||||
& &/ &U~ &~ @ @- a A | & &/ &U~ &~ @ @- a A | ||||
aI aU e E eI EI eU EU | aI aU e E eI EI eU EU | ||||
w x z Z | w x z Z | ||||
Dictionary ro_dict | |||||
Dictionary ro_dict 2010-03-12 | |||||
@ @- @I @U a aI aU e | @ @- @I @U a aI aU e | ||||
ea eI eo eU i i/ I^ iI | ea eI eo eU i i/ I^ iI | ||||
z; Z; | z; Z; | ||||
Dictionary ru_dict | |||||
Dictionary ru_dict 2010-03-13 | |||||
8 @- a A e E E# E2 | 8 @- a A e E E# E2 | ||||
E3 i I I# I2 I3 I^ ja | E3 i I I# I2 I3 I^ ja | ||||
Z; | Z; | ||||
Dictionary sk_dict | |||||
Dictionary sk_dict 2010-03-12 | |||||
& @- a a: e e: i i: | & @- a a: e e: i i: | ||||
l- l: o o: oU r- r: u | l- l: o o: oU r- r: u | ||||
Z | Z | ||||
Dictionary sq_dict | |||||
Dictionary sq_dict 2008-12-22 | |||||
@ @/ a A a/ aI e E | @ @/ a A a/ aI e E | ||||
eI i I I# O OI u V | eI i I I# O OI u V | ||||
w z Z | w z Z | ||||
Dictionary sv_dict | |||||
Dictionary sv_dict 2010-05-28 | |||||
8 @ a A: E E- e: E: | 8 @ a A: E E- e: E: | ||||
I i: O o: U u- u: W | I i: O o: U u- u: W | ||||
S s. S; sx t v w z | S s. S; sx t v w z | ||||
Dictionary sw_dict | |||||
Dictionary sw_dict 2008-11-27 | |||||
@- a a/ e i m- n- N- | @- a a/ e i m- n- N- | ||||
o u | o u | ||||
v w x z | v w x z | ||||
Dictionary sl_dict | |||||
Dictionary sl_dict 2010-07-14 | |||||
& @ a e E i o O | |||||
u y | |||||
@ a a: e E e: i i: | |||||
o O o: u u: y | |||||
: b d dZ dz f g h | : b d dZ dz f g h | ||||
j k l l^ m n N n^ | j k l l^ m n N n^ | ||||
v w x z Z | v w x z Z | ||||
Dictionary tr_dict | |||||
Dictionary tr_dict 2010-06-02 | |||||
@ a e E i I o O | @ a e E i I o O | ||||
u U W y Y | u U W y Y | ||||
v w z Z | v w z Z | ||||
Dictionary vi_dict | |||||
Dictionary vi_dict 2010-05-11 | |||||
@ @: @:I @:U @I @U a a: | @ @: @:I @:U @I @U a a: | ||||
a:I a:U aI aU e E eU EU | a:I a:U aI aU e E eU EU | ||||
v w x z Z z. | v w x z Z z. | ||||
Dictionary zh_dict | |||||
Dictionary zh_dict 2010-06-29 | |||||
@ @r a A ai Au E ei | @ @r a A ai Au E ei | ||||
i i. i[ iA iE io iou N- | i i. i[ iA iE io iou N- | ||||
tsh v w x X z. | tsh v w x X z. | ||||
Dictionary zhy_dict | |||||
Dictionary zhy_dict 2009-01-19 | |||||
a aa aai aan aau ai au e | a aa aai aan aau ai au e | ||||
ei eo eoi eu i iu o oe | ei eo eoi eu i iu o oe | ||||
tS v w z | tS v w z | ||||
Dictionary am_dict | |||||
Dictionary am_dict 2010-01-17 | |||||
@ a e i o u y | @ a e i o u y | ||||
S t tS | S t tS | ||||
Dictionary ml_dict | |||||
Dictionary ml_dict 2009-10-10 | |||||
a a: aI aU e E e: i | a a: aI aU e E e: i | ||||
I i: o o: r- u u: V | I i: o o: r- u u: V | ||||
z z. | z z. | ||||
Dictionary ne_dict | |||||
Dictionary ne_dict 2008-12-16 | |||||
@ @/ @2 @3 a aI aU a~ | @ @/ @2 @3 a aI aU a~ | ||||
e E eI eU e~ E~ i I | e E eI eU e~ E~ i I | ||||
w x z z. | w x z z. | ||||
Dictionary pa_dict | |||||
Dictionary pa_dict 2009-11-24 | |||||
@ a a~ e E e~ E~ i | @ a a~ e E e~ E~ i | ||||
I i~ I~ o O O~ o~ r- | I i~ I~ o O O~ o~ r- | ||||
z | z | ||||
Dictionary prs_dict | |||||
Dictionary prs_dict 2009-12-01 | |||||
@ A E eI i o u | @ A E eI i o u | ||||
S t tS v w X z Z | S t tS v w X z Z | ||||
Dictionary rw_dict | |||||
Dictionary rw_dict 2008-03-27 | |||||
a e i o u | a e i o u | ||||
t tS v w x z | t tS v w x z | ||||
Dictionary ur_dict | |||||
Dictionary ur_dict 2009-12-02 | |||||
@ a a: aI aU E e: i | @ a a: aI aU E e: i | ||||
I i: O o: U u: | I i: O o: U u: | ||||
z Z z. | z Z z. | ||||
Dictionary bg_dict | |||||
Dictionary bg_dict 2010-05-19 | |||||
@ a e i o u | @ a e i o u | ||||
tS ts v x z Z z; | tS ts v x z Z z; | ||||
Dictionary nso_dict | |||||
Dictionary nso_dict 2010-05-26 | |||||
@ a e i m- n- N- o | @ a e i m- n- N- o | ||||
u | u | ||||
S t T tS v w x z | S t T tS v w x z | ||||
Dictionary ht_dict | |||||
Dictionary ht_dict 2010-06-29 | |||||
a A~ e E E~ i o O | a A~ e E E~ i o O | ||||
O~ u w y | O~ u w y |
hath %haT $pastf $only | hath %haT $pastf $only | ||||
had %ha#d $pastf $strend2 $only | had %ha#d $pastf $strend2 $only | ||||
had ,had $atend | had ,had $atend | ||||
(had to) h%adt@5 | |||||
(had to) hadtu: $atend | (had to) hadtu: $atend | ||||
(had been) %ha#d%bIn $pastf | (had been) %ha#d%bIn $pastf | ||||
having ,havI2N $strend2 $pastf $only | having ,havI2N $strend2 $pastf $only | ||||
done dVn | done dVn | ||||
make m,eIk $strend2 $only | make m,eIk $strend2 $only | ||||
made m,eId $strend2 $only | |||||
made m,eId $strend2 $only $u+ | |||||
putting pUtI2N | putting pUtI2N | ||||
put ,pUt $onlys $strend2 | put ,pUt $onlys $strend2 |
for (bid f@ | for (bid f@ | ||||
for (bad f@ | for (bad f@ | ||||
for (see f%O@ | for (see f%O@ | ||||
for (ward f'o@ // straightforward | |||||
ft (en f | ft (en f | ||||
.group g | .group g |
_6 s'eIs | _6 s'eIs | ||||
_7 sj'ete | _7 sj'ete | ||||
_8 'OtSo | _8 'OtSo | ||||
_9 nw'eve | |||||
_9 nw'eBe | |||||
_1X dj'ET | _1X dj'ET | ||||
_11 'OnTe | _11 'OnTe | ||||
_12 d'oTe | _12 d'oTe | ||||
_13 t**'eTe | _13 t**'eTe | ||||
_14 kat'ORTe | _14 kat'ORTe | ||||
_15 k'inTe | _15 k'inTe | ||||
_20 v'eInte | |||||
_2X v'eInt | |||||
_20 b'eInte | |||||
_2X b'eInt | |||||
_3X t**'eInta | _3X t**'eInta | ||||
_4X kwa*'Enta | _4X kwa*'Enta | ||||
_5X Tinkw'Enta | _5X Tinkw'Enta | ||||
_6X sEs'Enta | _6X sEs'Enta | ||||
_7X sEt'Enta | _7X sEt'Enta | ||||
_8X OtS'Enta | _8X OtS'Enta | ||||
_9X nOv'Enta | |||||
_9X nOB'Enta | |||||
_0C Tj'EntOs | _0C Tj'EntOs | ||||
_1C0 T'ien // exactly one hundred | _1C0 T'ien // exactly one hundred | ||||
_1C T'iento | _1C T'iento | ||||
_5C kinj'EntOs | _5C kinj'EntOs | ||||
_7C s,eteTj'EntOs | _7C s,eteTj'EntOs | ||||
_9C n,OveTj'EntOs | |||||
_9C n,OBeTj'EntOs | |||||
_0M1 m'il | _0M1 m'il | ||||
_1M1 m'il // no '1' before thousand | _1M1 m'il // no '1' before thousand | ||||
_0M2 miJ^'ones | _0M2 miJ^'ones | ||||
_dpt koma | _dpt koma | ||||
//_roman Rom'ano | //_roman Rom'ano | ||||
vi vi // not a Roman number | |||||
vi bi // not a Roman number | |||||
// articles | // articles | ||||
a a $atend | a a $atend | ||||
_o o | _o o | ||||
o o $atend | o o $atend | ||||
v uve | |||||
x Ekis | |||||
_y ,ig**'iEQa | _y ,ig**'iEQa | ||||
y ,ig**'iEQa $atend | y ,ig**'iEQa $atend | ||||
ch tSe | ch tSe |
// ?1 Castilian | // ?1 Castilian | ||||
// ?2 Latin America | // ?2 Latin America | ||||
.L01 j w l r d g n m | |||||
.L01 j w l r b d g n m p t k c | |||||
.L02 b d g n m // change [s] to [z] before these | .L02 b d g n m // change [s] to [z] before these | ||||
.L03 f h j s y z // allow [B] [D] [Q] before these consonants | |||||
.L04 b v f p // labials, nasals are [m] | |||||
.L05 g k // velars, nasals are [N] | |||||
.group a | .group a | ||||
a a | a a | ||||
.group b | .group b | ||||
b B | |||||
_) b b | |||||
b b | |||||
_) b b // phoneme definition may change it to [B] | |||||
b (A B | |||||
b (cY B | |||||
b (L03 B | |||||
m) b b | m) b b | ||||
n) b b | n) b b | ||||
b (L01 b | |||||
b (iA b | b (iA b | ||||
b (uA b | b (uA b | ||||
.group d | .group d | ||||
d D | |||||
_) d d | |||||
d d | |||||
_) d d // phoneme definition may change it to [D] | |||||
d (A D | |||||
d (cY D | |||||
d (L03 D | |||||
m) d d | m) d d | ||||
n) d d | n) d d | ||||
l) d d | |||||
r) d d | r) d d | ||||
.group g | .group g | ||||
g Q | |||||
_) g g | |||||
g g | |||||
_) g g // phoneme definition may change it to [Q] | |||||
g (A Q | |||||
g (cY Q | |||||
g (L03 Q | |||||
m) g g | m) g g | ||||
n) g g | n) g g | ||||
g (Y+ x // ge gi | g (Y+ x // ge gi | ||||
g (r g | |||||
.group h | .group h | ||||
?2 A) ll (A j: | ?2 A) ll (A j: | ||||
.group m | .group m | ||||
m m | m m | ||||
m (K n | |||||
m (L04 m | |||||
m (_L04 m | |||||
m (L05 N | |||||
m (_L05 N | |||||
m (j N | |||||
.group n | .group n | ||||
n n | n n | ||||
n (b m | |||||
n (v m | |||||
n (f m | |||||
n (p m | |||||
n (g N // ?? | |||||
n (k N // ?? | |||||
n (L04 m | |||||
n (_L04 m | |||||
n (L05 N | |||||
n (_L05 N | |||||
n (j N | n (j N | ||||
.group p | .group p | ||||
p p | p p | ||||
p (t p: | p (t p: | ||||
_) ph f | |||||
ph (K f | |||||
_) ps (ico s | |||||
_) ps (eudo s | |||||
.group q | .group q | ||||
.group s | .group s | ||||
s s | s s | ||||
&) s (_S1 s | &) s (_S1 s | ||||
_) s (C Es | |||||
_) sh S | |||||
sh (K S | |||||
.group t | .group t | ||||
t t | t t | ||||
_) th T | |||||
th (K T | |||||
.group u | .group u | ||||
.group v | .group v | ||||
v B | v B | ||||
_) v v# | |||||
_) v b | |||||
?1 m) v b | ?1 m) v b | ||||
?1 n) v b | ?1 n) v b | ||||
?1 v (L01 b | ?1 v (L01 b |
// 2006-11-18 Gilles Casse <[email protected]> | // 2006-11-18 Gilles Casse <[email protected]> | ||||
// | // | ||||
// Updated 2010-06-22 Michel Such <[email protected]> | |||||
// Updated 2010-07-16 Michel Such <[email protected]> | |||||
// | // | ||||
// * Numbers, a few abbreviations and exceptions. | // * Numbers, a few abbreviations and exceptions. | ||||
// | // | ||||
_# djEz | _# djEz | ||||
_' apostr'Of | _' apostr'Of | ||||
_( 'uvr@-parA~t'Ez | |||||
_) f'Erm parA~t'Ez | |||||
_( parA~tEz_goS | |||||
_) parA~tEz_drwat | |||||
_, virgyl | _, virgyl | ||||
_- tirE2 | _- tirE2 | ||||
_. _|pw%E~ | _. _|pw%E~ | ||||
_/ bar||oblik | |||||
_/ barOblik | |||||
_: d'Y||pw'E~ | _: d'Y||pw'E~ | ||||
_; pwE~||virg'yl | _; pwE~||virg'yl | ||||
_< E~feriWr | _< E~feriWr | ||||
_> syperiWr | _> syperiWr | ||||
_? pwE~||dE~tE2rogasj'O~ | _? pwE~||dE~tE2rogasj'O~ | ||||
_! pwE~||dEksklamasj'O~ | _! pwE~||dEksklamasj'O~ | ||||
_[ uvr@-_kroSE2 | |||||
_\ b'aksl'aS | |||||
_] f'Erm_kroS'E2 | |||||
_[ krOSE2_goS | |||||
_\ barOblik_E~vErse | |||||
_] krOSE2_drwa | |||||
_^ sirkO~flEks | _^ sirkO~flEks | ||||
__ sulin^e | __ sulin^e | ||||
_` aks'A~_gr'av | _` aks'A~_gr'av | ||||
_{ uvr_akolad | |||||
_{ akOlad_goS | |||||
_| bar_vErtik'al | _| bar_vErtik'al | ||||
_} f'Erm_akol'ad | |||||
_} akOlad_drwat | |||||
² pyis'A~s||d'Y | ² pyis'A~s||d'Y | ||||
_« uvre||gijm'E2 | _« uvre||gijm'E2 | ||||
_» fErme||gijm'E2 | _» fErme||gijm'E2 | ||||
// numeric | // numeric | ||||
_0 zero2 $u+ | |||||
_0 zero $u+ | |||||
_1 W~ | _1 W~ | ||||
_2 d@z2 | |||||
_2 dYz2 | |||||
_3 trwaz2 | _3 trwaz2 | ||||
_4 katr | _4 katr | ||||
_5 sE~k | _5 sE~k | ||||
_11 _|O~z | _11 _|O~z | ||||
_12 duz | _12 duz | ||||
_13 trEz | _13 trEz | ||||
_14 katorz | |||||
_14 katOrz | |||||
_15 kE~z | _15 kE~z | ||||
_16 sEz | _16 sEz | ||||
_17 disEt | _17 disEt | ||||
_0M3 miljar | _0M3 miljar | ||||
_0and e | _0and e | ||||
_dpt virgyl | _dpt virgyl | ||||
_roman rom'E~ | |||||
//some numbers have special pronunciation in Belgium and Switzerland | //some numbers have special pronunciation in Belgium and Switzerland | ||||
?2 _7X sEptA~t | ?2 _7X sEptA~t | ||||
cia $abbrev | cia $abbrev | ||||
cio $abbrev | cio $abbrev | ||||
cm centimètre $text | cm centimètre $text | ||||
collins kolins | |||||
collins kOlins | |||||
cpu $abbrev | cpu $abbrev | ||||
ctrl _::kO~trOl | ctrl _::kO~trOl | ||||
dept depart@mA~ | dept depart@mA~ | ||||
pcmcia $abbrev | pcmcia $abbrev | ||||
pda $abbrev | pda $abbrev | ||||
philips filips | philips filips | ||||
p.s postskriptom | |||||
p.s pOstskriptOm | |||||
qq quelque $text | qq quelque $text | ||||
qqs quelques $text | qqs quelques $text | ||||
ratp $abbrev | ratp $abbrev | ||||
après aprEz2 $u+ | après aprEz2 $u+ | ||||
(temps en temps) tA~zA~tA~ | (temps en temps) tA~zA~tA~ | ||||
ainsi $u+ | ainsi $u+ | ||||
alors alor $u+ | |||||
alors alOr $u+ | |||||
aussi $u+ | aussi $u+ | ||||
encore $u+ | encore $u+ | ||||
enfin $u+ | enfin $u+ | ||||
certes $u+ | certes $u+ | ||||
dont dO~t2 $u | dont dO~t2 $u | ||||
lorsque lorsk=@ $u+ | |||||
lorsque lOrsk=@ $u+ | |||||
puisque pyisk=@ $u+ | puisque pyisk=@ $u+ | ||||
presque prEsk=@ $u+ | presque prEsk=@ $u+ | ||||
que $u+ | que $u+ | ||||
ceci $u+ $verbf | ceci $u+ $verbf | ||||
cela $u+ $verbf | cela $u+ $verbf | ||||
voici $u+ | voici $u+ | ||||
voila $u+ | |||||
voilà $u+ | |||||
cet $u $nounf | cet $u $nounf | ||||
cette $u $nounf | cette $u $nounf | ||||
ces sez2 $u $nounf | ces sez2 $u $nounf | ||||
(celle ci) sEl||si $verbf | |||||
(celle la) sEl||la $verbf | |||||
(ceux ci) sY||si $verbf | |||||
(ceux la) sY||la $verbf | |||||
(celles ci) sEl||si $verbf | |||||
(celles la) sEl||la $verbf | |||||
(celle ci) sEl||si $verbf $u+ | |||||
(celle là) sEl||la $verbf $u+ | |||||
(ceux ci) sY||si $verbf $u+ | |||||
(ceux là) sY||la $verbf $u+ | |||||
(celles ci) sEl||si $verbf $u+ | |||||
(celles là) sEl||la $verbf $u+ | |||||
plupart $u+ | plupart $u+ | ||||
// possessives | // possessives | ||||
des dez2 $u $nounf | des dez2 $u $nounf | ||||
//à a $u | |||||
à a $u+ | |||||
au $u $nounf | au $u $nounf | ||||
aux $u $nounf | aux $u $nounf | ||||
quand kA~t2 $u+ | quand kA~t2 $u+ | ||||
quoi $u+ | quoi $u+ | ||||
où $u+ | où $u+ | ||||
comme kom $u+ | |||||
comme kOm $u+ | |||||
comment $u+ | comment $u+ | ||||
pourquoi $u+ | pourquoi $u+ | ||||
pourtant $u+ | pourtant $u+ | ||||
bus bys | bus bys | ||||
bus by $verb | bus by $verb | ||||
cancer kA~sEr | cancer kA~sEr | ||||
canyon kanjon | |||||
canyon kanjOn | |||||
charles Sarl | charles Sarl | ||||
(chef d'oeuvre) chédeuvre $text | (chef d'oeuvre) chédeuvre $text | ||||
(chef d'oeuvres) chédeuvres $text | (chef d'oeuvres) chédeuvres $text | ||||
choeur kYr | |||||
choeur kWr | |||||
cinema sinema | cinema sinema | ||||
cocus koky | |||||
cocus kOky | |||||
couscous kuskus | couscous kuskus | ||||
delete _^_en | delete _^_en | ||||
dernier dErnjer2 | dernier dErnjer2 | ||||
doppler doplEr | |||||
doppler dOplEr | |||||
dot dOt | dot dOt | ||||
éloquent elokA~t2 | éloquent elokA~t2 | ||||
enfer A~fEr | enfer A~fEr | ||||
for $u+ | for $u+ | ||||
francis frA~sis | francis frA~sis | ||||
fred frEd | fred frEd | ||||
free frI | |||||
free frI: | |||||
fuel fjul | fuel fjul | ||||
gangster gA~gstEr | gangster gA~gstEr | ||||
gars ga | gars ga | ||||
genesis Zenezis | genesis Zenezis | ||||
georges ZorZ | |||||
georges ZOrZ | |||||
gilles Zil | gilles Zil | ||||
gin dZin | gin dZin | ||||
gulf gYlf | |||||
gulf gWlf | |||||
gus gys | gus gys | ||||
gym Zim | gym Zim | ||||
hélas elas $u+ | hélas elas $u+ | ||||
jacques Zak | jacques Zak | ||||
karaoke karaoke | |||||
karaoke karaOke | |||||
kevin kevin | kevin kevin | ||||
laetitia letisja | laetitia letisja | ||||
laser lazEr | laser lazEr | ||||
listbox listboks | |||||
listbox listbOks | |||||
louis lwi | louis lwi | ||||
malus malys | malus malys | ||||
mai mE2 | mai mE2 | ||||
patchwork patSwWrk | patchwork patSwWrk | ||||
peter pItWr | peter pItWr | ||||
phallus falys | phallus falys | ||||
polder poldEr | |||||
polder pOldEr | |||||
premier pr@mjer2 | premier pr@mjer2 | ||||
program _^_en | program _^_en | ||||
(program files) programfajlz | |||||
(program files) prOgramfajlz | |||||
query kueri | query kueri | ||||
queries kueri | queries kueri | ||||
quid kwid $u+ | quid kwid $u+ | ||||
brut br'yt | brut br'yt | ||||
but by $verb | but by $verb | ||||
but byt | but byt | ||||
cut kYt | |||||
cut kWt | |||||
mazout mazut | mazout mazut | ||||
michael mikaEl | michael mikaEl | ||||
out aut | out aut | ||||
scorbut scorbutt $text | scorbut scorbutt $text | ||||
scout skut | scout skut | ||||
stout staut | stout staut | ||||
uppercut ypErkyt | |||||
uppercut ypErkWt | |||||
ut yt | ut yt | ||||
zut zyt | zut zyt | ||||
// et (t is said) | // et (t is said) | ||||
exocet E2gzosEt | |||||
exocet E2gzOsEt | |||||
fret fr'Et | fret fr'Et | ||||
budget bydZE2 | budget bydZE2 | ||||
hamlet _|amlEt | hamlet _|amlEt | ||||
lazaret lazarE2 | lazaret lazarE2 | ||||
margaret margarEt | margaret margarEt | ||||
net nEt | net nEt | ||||
offset ofsEt | |||||
offset OfsEt | |||||
set sEt | set sEt | ||||
soviet soviEt | soviet soviEt | ||||
stewart stIwart | stewart stIwart | ||||
yogourt _|iogurt | yogourt _|iogurt | ||||
// ort (t said) | // ort (t said) | ||||
short Sort | |||||
short SOrt | |||||
// art (t said) | // art (t said) | ||||
steward stiwart | steward stiwart | ||||
smart smart | smart smart | ||||
// irt | // irt | ||||
(sweat shirt) swEtSYrt | |||||
(sweat shirts) swEtSYrt | |||||
(sweat shirt) swEtSWrt | |||||
(sweat shirts) swEtSWrt | |||||
(tee shirt) t,IS'Wrt | (tee shirt) t,IS'Wrt | ||||
(tee shirts) t,IS'Wrt | (tee shirts) t,IS'Wrt | ||||
(t shirt) t,IS'Wrt | (t shirt) t,IS'Wrt | ||||
amazon amaz'On | amazon amaz'On | ||||
apple _^_en | apple _^_en | ||||
at at $u+ | at at $u+ | ||||
(audible manager) od,ibl||manadZ'Yr | |||||
(audible manager) od,ibl||manadZ'Wr | |||||
bin bin | bin bin | ||||
bit bit | bit bit | ||||
bluetooth blut'us | bluetooth blut'us | ||||
debian debjan | debian debjan | ||||
edit _^_en | edit _^_en | ||||
emacs E2maks | emacs E2maks | ||||
emacspeak E2makspIk | |||||
emacspeak E2makspI:k | |||||
end _^_en | end _^_en | ||||
espeak @spIk | |||||
espeak @spI:k | |||||
ethernet etErnEt | ethernet etErnEt | ||||
exit egzit | exit egzit | ||||
(file zilla) f,ajl||zij'a | (file zilla) f,ajl||zij'a | ||||
from frOm $u | |||||
from frOm $u+ | |||||
get _^_en | get _^_en | ||||
google gug=Wl | google gug=Wl | ||||
gnome gnOm | gnome gnOm | ||||
in in $u+ | in in $u+ | ||||
inside _^_en | inside _^_en | ||||
internet E~tErn'Et | internet E~tErn'Et | ||||
(internet explorer) E~tErn'Et||E2ksplor'Wr | |||||
(internet explorer) E~tErn'Et||E2ksplOr'Wr | |||||
klaxon klaksOn | klaxon klaksOn | ||||
let _^_en | let _^_en | ||||
lite _^_en | lite _^_en | ||||
partions partjO~z2 | partions partjO~z2 | ||||
rations ratjO~z2 $verb | rations ratjO~z2 $verb | ||||
tentions tA~tjO~z2 | tentions tA~tjO~z2 | ||||
votions votjO~z2 | |||||
votions vOotjO~z2 | |||||
étions etjO~z2 | étions etjO~z2 | ||||
évitions evitjO~z2 | évitions evitjO~z2 | ||||
bélarus belarys | bélarus belarys | ||||
belize beliz | belize beliz | ||||
bissau bisa'o | bissau bisa'o | ||||
brazzaville brazavil | |||||
(burkina faso) burkina||faso | (burkina faso) burkina||faso | ||||
burundi burundi | burundi burundi | ||||
calvados calvadoss $text | calvados calvadoss $text | ||||
hindi _|indi | hindi _|indi | ||||
honduras _|O~dyras | honduras _|O~dyras | ||||
kenya kenja | kenya kenja | ||||
laos laos | |||||
lesotho lezoto | |||||
laos laOs | |||||
lesotho lezOto | |||||
liechtenstein liStWnStajn | liechtenstein liStWnStajn | ||||
angeles A~nZelEs | angeles A~nZelEs | ||||
malawi malawi | malawi malawi | ||||
nevis nevis | nevis nevis | ||||
niger niZEr | niger niZEr | ||||
oman oman | oman oman | ||||
palaos palaos | |||||
palaos palaOs | |||||
samoa samoa | samoa samoa | ||||
swaziland swazilA~d | swaziland swazilA~d | ||||
leone leon | |||||
leone leOn | |||||
koweït kowEjt | koweït kowEjt | ||||
taïwan tajwan | taïwan tajwan | ||||
texas tE2ks'as | texas tE2ks'as | ||||
wallis walis | wallis walis | ||||
futuna futuna | futuna futuna | ||||
zimbabwe zimbabwe | zimbabwe zimbabwe | ||||
_60o hAtvAnAdik | _60o hAtvAnAdik | ||||
_80o n^oltsvAnAdik | _80o n^oltsvAnAdik | ||||
_0Co sa:zAdik | _0Co sa:zAdik | ||||
_2Co ke:tsa:zAdik | |||||
_2Co ke:t|sa:zAdik | |||||
_0M1o EzR2Edik | _0M1o EzR2Edik | ||||
_1M1o EzR2Edik | _1M1o EzR2Edik | ||||
_2M1o ke:tEzR2Edik | _2M1o ke:tEzR2Edik | ||||
_#-ik || //This is not a mistake. This is a special ordinal number suffix, with not need insert replace word suffix. For example: | _#-ik || //This is not a mistake. This is a special ordinal number suffix, with not need insert replace word suffix. For example: | ||||
//If a string containing the 17-ik string, need spokening tizenhetedik phoneme. If the suffix rule not containing the || rule but containing another | //If a string containing the 17-ik string, need spokening tizenhetedik phoneme. If the suffix rule not containing the || rule but containing another | ||||
//replace word, the spokened suffix is mistaked, for example tizenhetedikedik if this rule containing the Edik phoneme, not || phoneme. | //replace word, the spokened suffix is mistaked, for example tizenhetedikedik if this rule containing the Edik phoneme, not || phoneme. | ||||
_#-iki i | |||||
_#-ike E | |||||
_#-ikei Ei | |||||
_#-ika A | |||||
_#-ikai Ai | |||||
_#-éhez e:hEz | |||||
_#-ához a:hoz | |||||
(1-e) elseje $text $alt2 | (1-e) elseje $text $alt2 | ||||
(1-én) elsején $text $alt2 | (1-én) elsején $text $alt2 | ||||
(1-jén) elsején $text $alt2 | (1-jén) elsején $text $alt2 | ||||
(1-vel) elsejével $text $alt2 | (1-vel) elsejével $text $alt2 | ||||
(1-jénél) elsejénél $text $alt2 | (1-jénél) elsejénél $text $alt2 | ||||
(1-énél) elsejénél $text $alt2 | (1-énél) elsejénél $text $alt2 | ||||
(1-iki) elsejei $text $alt2 | |||||
(1-ike) elseje $text $alt2 | |||||
(1-ikei) elsejei $text $alt2 | |||||
(1-éhez) elsejéhez $text $alt2 | |||||
(2-i) másodikai $text $alt2 | (2-i) másodikai $text $alt2 | ||||
(2-ig) másodikáig $text $alt2 | (2-ig) másodikáig $text $alt2 | ||||
(3-i) hAR2_mAdikAi $alt2 | (3-i) hAR2_mAdikAi $alt2 | ||||
(0-áson) nul:a:Son | (0-áson) nul:a:Son | ||||
(0-tól) nul:a:to:l | (0-tól) nul:a:to:l | ||||
(00-tól) nul:Anul:a:to:l | (00-tól) nul:Anul:a:to:l | ||||
(0-n) nul:a:n | |||||
(00-n) nul:Anul:a:n | |||||
(1-gyet) EJ:Et | (1-gyet) EJ:Et | ||||
(1-gyes) EJ:ES | (1-gyes) EJ:ES | ||||
(2-őt) kEt:Y:t | (2-őt) kEt:Y:t | ||||
(3-adikon) hAR2mAdikon //special exception | (3-adikon) hAR2mAdikon //special exception | ||||
(3-adikkal) hAR2mAdik:Al //special exception | (3-adikkal) hAR2mAdik:Al //special exception | ||||
(3-t) ha:R2mAt | (3-t) ha:R2mAt | ||||
(3-mas) ha:R2mAS | |||||
//4 number suffixes | //4 number suffixes | ||||
(4-el) ne:J:El //Nneed J: phoneme, not J phoneme contains one suffix) | (4-el) ne:J:El //Nneed J: phoneme, not J phoneme contains one suffix) | ||||
(4-gyel) ne:J:El //Need J: phoneme, not J phoneme | (4-gyel) ne:J:El //Need J: phoneme, not J phoneme | ||||
(80-al) n^oltsvAn:Al | (80-al) n^oltsvAn:Al | ||||
(90-el) kilEntsvEn:El | (90-el) kilEntsvEn:El | ||||
// These words mean that a dot after number, immediately preceding, does not mean an ordinal number | // These words mean that a dot after number, immediately preceding, does not mean an ordinal number | ||||
január $alt | január $alt | ||||
február $alt | február $alt |
va) d (szeder d | va) d (szeder d | ||||
twee) d (sapk d | twee) d (sapk d | ||||
fe) dd (hetetlen d | fe) dd (hetetlen d | ||||
ezre) d (segé d | |||||
erő) d (szerű d | |||||
csalá) d (szociol d | |||||
száza) d (szemle d | |||||
zöl) d (szem d | |||||
.group dz | .group dz | ||||
fogó) dz (kod ts | fogó) dz (kod ts | ||||
ringató) dz z | ringató) dz z | ||||
mére) dz (k ts | mére) dz (k ts | ||||
pilóta) dzs (ek dZ | pilóta) dzs (ek dZ | ||||
ezre) dz (ene d|z | |||||
száza) dz (ene d|z | |||||
honvé) dz (ászló d|z | |||||
.group e | .group e | ||||
e E | e E | ||||
_) e) lj (ár lj | _) e) lj (ár lj | ||||
ha) ll (ga l | ha) ll (ga l | ||||
_ta) lj (án lj | _ta) lj (án lj | ||||
_fé) l (jobb l | |||||
ajá) nl l: | ajá) nl l: | ||||
_feddhetetle) n (jelle n | _feddhetetle) n (jelle n | ||||
állomá) ny (jel n^ | állomá) ny (jel n^ | ||||
ingatla) n (jog n | |||||
.group o | .group o | ||||
o o | o o | ||||
ki) s (zsidó S | ki) s (zsidó S | ||||
szennye) s (zsá S | szennye) s (zsá S | ||||
alvá) s (zavar S | alvá) s (zavar S | ||||
magatartá) s (zavar S | |||||
.group ss | .group ss | ||||
ssz ss2 | ssz ss2 | ||||
pán) t (szél t | pán) t (szél t | ||||
boo) t (sorrend t | boo) t (sorrend t | ||||
_á) t (jöj t | _á) t (jöj t | ||||
ú) tsz (oros t|s | |||||
.group ts | .group ts | ||||
ts (_S2 tS //general rule with word end of ts letters | ts (_S2 tS //general rule with word end of ts letters |
// If a letter has a "word" pronunciation which is different from its | // If a letter has a "word" pronunciation which is different from its | ||||
// "letter" name, then include the letter name here, with the letter | // "letter" name, then include the letter name here, with the letter | ||||
// prefixed by a _ character. | // prefixed by a _ character. | ||||
b be: | b be: | ||||
c se: | c se: | ||||
d de: | d de: | ||||
// Pronounce as English | // Pronounce as English | ||||
delete _^_EN | delete _^_EN | ||||
down _^_EN | |||||
//down _^_EN | |||||
escape _^_EN | escape _^_EN | ||||
home _^_EN | home _^_EN | ||||
game _^_EN | game _^_EN | ||||
homepage _^_EN | |||||
items _^_EN | items _^_EN | ||||
laptop _^_EN | laptop _^_EN | ||||
page _^_EN | |||||
(page down) _^_EN | |||||
(page up) _^_EN | |||||
player _^_EN | player _^_EN | ||||
slash _^_EN | |||||
speak _^_EN | speak _^_EN | ||||
the _^_EN | |||||
the D@ | |||||
up _^_EN | up _^_EN | ||||
// words where -eren is not a stressed verb ending | // words where -eren is not a stressed verb ending | ||||
achter $alt | |||||
achterkleinkinder $alt | |||||
ader $alt | |||||
ander $alt | ander $alt | ||||
anker $alt | |||||
badder $alt | |||||
bagger $alt | |||||
baker $alt | |||||
beender $alt | |||||
belemmer $alt | |||||
beter $alt | |||||
bibber $alt | |||||
bladder $alt | |||||
blader $alt | |||||
blaker $alt | |||||
blikker $alt | |||||
blubber $alt | |||||
blunder $alt | |||||
bolder $alt | |||||
bolster $alt | |||||
boter $alt | |||||
buffer $alt | |||||
bulder $alt | |||||
bulldozer $alt | |||||
bumper $alt | |||||
bunker $alt | |||||
cijfer $alt | |||||
donder $alt | |||||
dwater $alt | |||||
eier $alt | |||||
ender $alt | |||||
filter $alt | |||||
geester $alt | |||||
gemoeder $alt | |||||
hamer $alt | |||||
hoender $alt | |||||
jakker $alt | |||||
jammer $alt | |||||
kalver $alt | |||||
kanker $alt | |||||
kaver $alt | |||||
kinder $alt | kinder $alt | ||||
kladder $alt | |||||
klodder $alt | |||||
koekeloer $alt | |||||
kommer $alt | |||||
kuier $alt | |||||
lammer $alt | |||||
laster $alt | |||||
lazer $alt | |||||
lebber $alt | |||||
leder $alt // gelederen | |||||
leger $alt | |||||
ler $alt | |||||
letter $alt | |||||
lever $alt | |||||
lieder $alt | |||||
lubber $alt | |||||
luister $alt | |||||
modder $alt | |||||
moeder $alt | |||||
monster $alt | |||||
nader $alt | |||||
nummer $alt | |||||
ouder $alt | ouder $alt | ||||
pantser $alt | |||||
peiger $alt | |||||
peuter $alt | |||||
pleister $alt | |||||
poeder $alt | |||||
poeier $alt | |||||
polder $alt | |||||
rader $alt | |||||
raster $alt | |||||
redder $alt | |||||
ridder $alt | |||||
runder $alt | |||||
schilder $alt | |||||
slenter $alt | |||||
slinger $alt | |||||
snipper $alt | |||||
sodemieter $alt | |||||
splinter $alt | |||||
sputter $alt | sputter $alt | ||||
suiker $alt | |||||
timmer $alt | |||||
tover $alt | |||||
vinger $alt | |||||
volker $alt | |||||
vorder $alt | |||||
wakker $alt | |||||
water $alt | |||||
wegwijzer $alt | |||||
wonder $alt | |||||
zever $alt | |||||
zonder $alt | |||||
zuiver $alt | |||||
zwanger $alt | |||||
// words where -age is [a:Q@] not French ['a:Z@] | |||||
drage $alt | |||||
hedentendage $alt | |||||
gestage $alt $2 | |||||
grage $alt | |||||
inzage $alt | |||||
lage $alt | |||||
oplage $alt | |||||
sage $alt | |||||
lrage $alt | |||||
vrage $alt | |||||
// -age exceptions | |||||
amperage Amp@r'a:Z@ | |||||
camouflage ka:mufl'a:Z@ | |||||
courtage kurt'a:Z@ | |||||
curettage kyr@t'a:Z@ | |||||
drainage drEn'a:Z@ | |||||
equipage e:kwip'a:Z@ | |||||
jumelage Zym@l'a:Z@ | |||||
metrage me:tr'a:Z@ | |||||
outillage utij'a:Z@ | |||||
vrijage vre:j'a:Z@ | |||||
// pronunciation exceptions | // pronunciation exceptions | ||||
aangrijpend $2 | aangrijpend $2 | ||||
circuit sIrku'i | circuit sIrku'i | ||||
computer $2 | computer $2 | ||||
contour ko:nt'ur | contour ko:nt'ur | ||||
eren I:*@n | |||||
ingewikkeld $3 | ingewikkeld $3 | ||||
ingrijpend $2 | ingrijpend $2 | ||||
ingeval $3 | ingeval $3 | ||||
ingrediënt $4 | ingrediënt $4 | ||||
ingenieur Inzj@nj'Y:r | ingenieur Inzj@nj'Y:r | ||||
journaal Surn'a:l | journaal Surn'a:l | ||||
natuur na:t'yr | |||||
ongastvrij OnQAstv@-*'EI | ongastvrij OnQAstv@-*'EI | ||||
ongelooflijk $3 | ongelooflijk $3 | ||||
ongemakkelijk $3 | ongemakkelijk $3 |
.group a | .group a | ||||
a a: | a a: | ||||
a (CC A | |||||
a (C_ A | |||||
a (CK A | |||||
a (x A | |||||
aa a: | aa a: | ||||
aai a:j | aai a:j | ||||
ae E: | ae E: | ||||
_) aan (@P3 'a:n | _) aan (@P3 'a:n | ||||
aa (rd_ 'a: | aa (rd_ 'a: | ||||
aa (t_ 'a: | |||||
_) af (C@P2 'Af | |||||
age (_ 'a:Z@ | |||||
ages (_S1 s | |||||
age (_$w_alt a:Q@ | |||||
aire (_ 'E:r | aire (_ 'E:r | ||||
bb b | bb b | ||||
bs (_N ps | bs (_N ps | ||||
&) baar (_ =ba:r | |||||
_) be (@P2 b@ | _) be (@P2 b@ | ||||
_) b (ee+ b | _) b (ee+ b | ||||
_) be (ren bI: | _) be (ren bI: | ||||
_) be (ter be: | _) be (ter be: | ||||
_) be (ven_ be: | |||||
_) bever be:v@r | |||||
_) be (zem be: | |||||
_) beu bY: | _) beu bY: | ||||
&) baar (_ =ba:r | |||||
_) bij (C@P3 b'EI | |||||
.group c | .group c | ||||
c (y s | c (y s | ||||
c k | c k | ||||
ch x | ch x | ||||
_) ch S | |||||
_) ch (arit x | |||||
_) ch (arter tS | |||||
_) ch (emi x | |||||
_) ch (ip tS | |||||
_) ch (olest x | |||||
_) ch (r x | |||||
ck k | ck k | ||||
.group e | .group e | ||||
e e: | e e: | ||||
@C) e (_S1q @ | |||||
&C) e (_S1q @ | |||||
e (_ @ | e (_ @ | ||||
e (CC E | |||||
e (C_ E | |||||
e (CK E | |||||
e (x E | |||||
e (r I: | e (r I: | ||||
eï (+ @_I | eï (+ @_I | ||||
ei (+ EI | ei (+ EI | ||||
ee e: | ee e: | ||||
eeuw eU | eeuw eU | ||||
eu Y: | eu Y: | ||||
@) ee (rd_ 'I: | |||||
@) ee (l_ 'e: | @) ee (l_ 'e: | ||||
@) ee (m_ 'e: | @) ee (m_ 'e: | ||||
@) ee (rt_ 'e: | |||||
@) el (_ @l | |||||
@) eld (_ @ld | |||||
@) ele (_ @l@ | |||||
@) en (_S2d @n | |||||
@) ens (_S3 @ns | |||||
@) end (_ @nd | |||||
@) ende (_ @nd@ | |||||
@) er (_ @r | |||||
@) ere (_ @r@ | |||||
@) er (en_$p_alt @r // where 'eren' is not a verb ending | |||||
@) eren (_ 'e:r@n | |||||
@) es (_ @s | |||||
@) ee (r_ 'I: | |||||
@) ee (rt_ 'I: | |||||
@) ee (rd_ 'I: | |||||
@) ee (rde_ 'I: | |||||
@) ee (rden_ 'I: | |||||
it) eit (_ 'EIt | |||||
&) el (_ @l | |||||
&) eld (_ @ld | |||||
&) ele (_ @l@ | |||||
&) em (_ @m | |||||
&) en (_S2q @n | |||||
&) ens (_S3q @ns | |||||
&) end (_ @nd | |||||
&) ende (_ @nd@ | |||||
&) er (_ @r | |||||
&) ere (_ @r@ | |||||
&) er (en_$p_alt @r // where 'eren' is not a verb ending | |||||
eren (_ 'I:r@n | |||||
&) es (_ @s | |||||
eau o: //words with French origin | eau o: //words with French origin | ||||
@) e (raar_ @ | @) e (raar_ @ | ||||
&) e (nB@ @ | &) e (nB@ @ | ||||
id) e (nt E | |||||
&) e (rC@ @ | &) e (rC@ @ | ||||
.group i | .group i | ||||
i i | i i | ||||
ij (+ EI | ij (+ EI | ||||
i (CC I | |||||
i (C_ I | |||||
i (CK I | |||||
i (x I | |||||
ie i | ie i | ||||
ieuw iw | ieuw iw | ||||
m) ie (_ 'i | m) ie (_ 'i | ||||
p) ie (_ 'i | p) ie (_ 'i | ||||
ie (f_ 'i | |||||
ie (r_ 'i | ie (r_ 'i | ||||
ie (rd_ 'i | ie (rd_ 'i | ||||
@) ig (_ @x | |||||
@) ig (_S2d @x | |||||
@) ige (_ @Q@ | |||||
_) in (gP2 'In | _) in (gP2 'In | ||||
io (nage iO | |||||
@) isch (_ =is | @) isch (_ =is | ||||
@) ische (_ =is@ | @) ische (_ =is@ | ||||
k k | k k | ||||
kk k | kk k | ||||
_) koning k'o:nIN // in compounds | |||||
_) koningin ko:nIQ'In | |||||
.group l | .group l | ||||
l l | l l | ||||
ll l | ll l | ||||
@) lijk (_S4 l@k | |||||
&) lijk (_S4 l@k | |||||
&) lijke (_S5 l@k@ | |||||
&) laan (_S4 la:n | &) laan (_S4 la:n | ||||
@) loog (_ lo:x | @) loog (_ lo:x | ||||
.group o | .group o | ||||
o o: | o o: | ||||
o (CC O | |||||
o (C_ O | |||||
o (CK O | |||||
o (x O | |||||
o (r o: | o (r o: | ||||
oo (r O: // ?? or just for word-final "oor" ? | oo (r O: // ?? or just for word-final "oor" ? | ||||
ooi o:j | ooi o:j | ||||
oe u | oe u | ||||
oei uj | oei uj | ||||
ou VU | ou VU | ||||
ou (rage u | |||||
telef) oo (n 'o: | telef) oo (n 'o: | ||||
.group on | .group on | ||||
_) onaan (@P5 On'a:n | _) onaan (@P5 On'a:n | ||||
_) onder (@P5 'Ond@r | |||||
_) onge (@P4 ,OnQ@ | _) onge (@P4 ,OnQ@ | ||||
_) ont (@P3 Ont | _) ont (@P3 Ont | ||||
_) on (te@P2 On // ontegecht | _) on (te@P2 On // ontegecht | ||||
.group p | .group p | ||||
p p | p p | ||||
pp p | pp p | ||||
_) ph f | |||||
ph (K f | |||||
.group q | .group q | ||||
q k | q k | ||||
qu kv | qu kv | ||||
@) qu (eer k | |||||
@) qu (eren_ k | |||||
.group r | .group r | ||||
C) r (A @-* | C) r (A @-* | ||||
rr *r | rr *r | ||||
.group re | |||||
_) re (geren r@ | |||||
_) re (geer r@ | |||||
_) re (cent r@ | |||||
_) re (cept r@ | |||||
_) re (ceptief re: | |||||
_) re (serve_ r@ | |||||
.group s | .group s | ||||
s s | s s | ||||
sch sx | sch sx | ||||
sch (_ s | sch (_ s | ||||
sch (e_ s | sch (e_ s | ||||
_) sh S | |||||
sh (K S | |||||
sj S | sj S | ||||
@@) s (_S1 s | @@) s (_S1 s | ||||
th t | th t | ||||
t (haar t // th is not [t] | t (haar t // th is not [t] | ||||
t (hav t | t (hav t | ||||
_) toe (@P3 t'u | |||||
.group te | .group te | ||||
_) tegen (P5 t'e:Q@n | _) tegen (P5 t'e:Q@n | ||||
_) te (recht t@ | _) te (recht t@ | ||||
_) te (sam t@ // tesamen | _) te (sam t@ // tesamen | ||||
_) te (veel t@ | _) te (veel t@ | ||||
_) te (vergreefP2 t@ | |||||
_) te (vergeefP2 t@ | |||||
_) te (voorschijn t@ | _) te (voorschijn t@ | ||||
_) te (vor t@ // tevoren | _) te (vor t@ // tevoren | ||||
_) te (vred t@ // tevreden | _) te (vred t@ // tevreden | ||||
.group u | .group u | ||||
u y | u y | ||||
u (CC 8 | |||||
u (C_ 8 | |||||
u (CK 8 | |||||
u (x 8 | |||||
uu y | uu y | ||||
ui Wy | ui Wy | ||||
uw yU | uw yU | ||||
.group w | .group w | ||||
w v# | w v# | ||||
w (X w | |||||
w (CK w | |||||
.group x | .group x | ||||
.group | .group | ||||
é e: | |||||
éé e: | éé e: | ||||
$ d'OlAr | $ d'OlAr | ||||
, (D k'Oma: | , (D k'Oma: |
_) கி (ளாஸ g | _) கி (ளாஸ g | ||||
_வட) க (ிழ k | _வட) க (ிழ k | ||||
தென்) க (ிழ k | தென்) க (ிழ k | ||||
அப) க (ீர்த்தி k | |||||
_பால்) க (ுட k | _பால்) க (ுட k | ||||
_வளை) க (ுட k | _வளை) க (ுட k | ||||
மன்னார்) க (ுடி k | மன்னார்) க (ுடி k | ||||
_வர்) க்க ggV# | _வர்) க்க ggV# | ||||
_சொர்) க்க ggV# | _சொர்) க்க ggV# | ||||
நிர்) க்க (தி ggV | நிர்) க்க (தி ggV | ||||
தீர்) க்க (ாலோசநை gg | |||||
_வி) க்க (ினம்_ gg | _வி) க்க (ினம்_ gg | ||||
அ) க்க (ினி gg | அ) க்க (ினி gg | ||||
ஆரோ) க்க (ிய gg | ஆரோ) க்க (ிய gg | ||||
_வி) க்க (ிரக gg | _வி) க்க (ிரக gg | ||||
கு) க்கி (ராம gg | கு) க்கி (ராம gg | ||||
ஜன) க்க (ும்பல gg | ஜன) க்க (ும்பல gg | ||||
அ) க (்டோபர k | |||||
வி) க்ட (ோரியா kt. // victoria | வி) க்ட (ோரியா kt. // victoria | ||||
வி) க (்ரம k | வி) க (்ரம k | ||||
ஆ) க (்ரோஷ k | |||||
//endsort | //endsort | ||||
_) தி (யான dj | _) தி (யான dj | ||||
_) த (ிரவ d | _) த (ிரவ d | ||||
_) த (ிரவிய d | _) த (ிரவிய d | ||||
_) தி (ராவிட d | |||||
_) த (ிரௌபதி d | _) த (ிரௌபதி d | ||||
_) த (ில்லி d | _) த (ில்லி d | ||||
_) த (ிவச d | _) த (ிவச d | ||||
_) ப (ாரதி b | _) ப (ாரதி b | ||||
_) ப (ாரத்த b | _) ப (ாரத்த b | ||||
_) ப (ாரம b | _) ப (ாரம b | ||||
_) ப (ாரம்பரிய p | |||||
_) ப (ார்கவி b | _) ப (ார்கவி b | ||||
_) ப (ார்மசி f | _) ப (ார்மசி f | ||||
_) ப (ார்மஸி f | _) ப (ார்மஸி f | ||||
வட) ப (ழ pV | வட) ப (ழ pV | ||||
வீண்) ப (ழி pV | வீண்) ப (ழி pV | ||||
_தீ) ப (ா p | _தீ) ப (ா p | ||||
உ) ப (ாசனை p | |||||
சமன்) ப (ாட p | சமன்) ப (ாட p | ||||
முரன்) ப (ாட p | முரன்) ப (ாட p | ||||
ப (ாண்டி p | ப (ாண்டி p | ||||
_ர) ப்ப (ர bbV | _ர) ப்ப (ர bbV | ||||
துர்) ப்ப (ாக்கிய bb | துர்) ப்ப (ாக்கிய bb | ||||
ஆர்) ப்ப (ாட்ட bb | ஆர்) ப்ப (ாட்ட bb | ||||
_நில) ப்பி (ரபு pp | |||||
மன) ப்பி (ரமை bb | மன) ப்பி (ரமை bb | ||||
துர்) ப்ப (ோதனை bb | துர்) ப்ப (ோதனை bb | ||||
கம்) ப்யூட (ர pjU:t.V | கம்) ப்யூட (ர pjU:t.V | ||||
// and not preceded by ம், then ப should sound as 'pa'. | // and not preceded by ம், then ப should sound as 'pa'. | ||||
ப (ட pV | ப (ட pV | ||||
@) ப (Bட p | @) ப (Bட p | ||||
@) ப்ட pt.V# // செப்டம்பர+ | |||||
ம்) ப (ட bV | ம்) ப (ட bV | ||||
ம்) ப (Bட b | ம்) ப (Bட b | ||||
_) பி (ரஸ்தா p | _) பி (ரஸ்தா p | ||||
_) பி (ரஹலாத p | _) பி (ரஹலாத p | ||||
_) பி (ராகார p | _) பி (ராகார p | ||||
_) பி (ராக்கள b | |||||
_) பி (ராண_ p | _) பி (ராண_ p | ||||
_) பி (ராணன p | _) பி (ராணன p | ||||
_) பி (ராணி p | _) பி (ராணி p | ||||
_) பி (ரார்தன p | _) பி (ரார்தன p | ||||
_) பி (ரார்தி p | _) பி (ரார்தி p | ||||
_) பி (ரார்த்த p | _) பி (ரார்த்த p | ||||
_) பி (ராவின b | |||||
_) பி (ராவிற் b | |||||
_) பி (ராவில b | |||||
_) பி (ராவுக்கு b | |||||
_) பி (ராவை b | |||||
_) பி (ரிட b | _) பி (ரிட b | ||||
_) பி (ரித்தானி b | _) பி (ரித்தானி b | ||||
_) பி (ரியன p | _) பி (ரியன p | ||||
_) பி (ரோகிதர p | _) பி (ரோகிதர p | ||||
_) பி (ளாட்பார p | _) பி (ளாட்பார p | ||||
_) பி (ளாஸ்க் f // flask | _) பி (ளாஸ்க் f // flask | ||||
_) பிள (ைட் fl. | |||||
_) பீ (ராமண b | _) பீ (ராமண b | ||||
அதிக) ப்பி (ரசங்க pp | அதிக) ப்பி (ரசங்க pp | ||||
_பர) ப்பி (ரம்ம pb | _பர) ப்பி (ரம்ம pb |
jbo 2 114 | jbo 2 114 | ||||
nci 3 123 | nci 3 123 | ||||
fi 40 133 | fi 40 133 | ||||
fr 56 138 | |||||
fr-ca 11 138 | |||||
fr 55 137 | |||||
fr-ca 11 137 | |||||
hi 58 149 | hi 58 149 | ||||
ta 20 151 | ta 20 151 | ||||
hu 24 121 | hu 24 121 | ||||
sr 14 138 | sr 14 138 | ||||
it 18 126 | it 18 126 | ||||
la 21 124 | la 21 124 | ||||
es 8 123 | |||||
es 10 123 | |||||
es-la 1 123 | es-la 1 123 | ||||
ca 11 125 | ca 11 125 | ||||
pt 29 138 | pt 29 138 | ||||
ne 18 156 | ne 18 156 | ||||
pa 14 150 | pa 14 150 | ||||
prs 8 111 | prs 8 111 | ||||
sl 6 133 | |||||
sl 7 133 | |||||
gd 6 107 | gd 6 107 | ||||
bg 10 119 | bg 10 119 | ||||
nso 8 107 | nso 8 107 | ||||
ht 11 138 | |||||
ht 11 137 | |||||
Data file Used by | Data file Used by | ||||
b/b [b] base | b/b [b] base | ||||
[l/] fr | [l/] fr | ||||
l/l_@ [l/3] base | l/l_@ [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/l@ [á3m] base | |||||
[l#] base | |||||
l/l@ [l#] base | |||||
[€¦] base | |||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/L1_aL [l/] base | l/L1_aL [l/] base | ||||
l/L2_uL [l/2] base | l/L2_uL [l/2] base | ||||
l/l_3 [l/] de | l/l_3 [l/] de | ||||
l/l_4 [ll] sq | l/l_4 [ll] sq | ||||
l/la [á3m] base | |||||
[l#] base | |||||
l/la [l#] base | |||||
[€¦] base | |||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/l_a [l/3] base | l/l_a [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l/le [á3m] base | |||||
[l#] base | |||||
l/le [l#] base | |||||
[€¦] base | |||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/l_e [l/3] base | l/l_e [l/3] base | ||||
[&:] af | [&:] af | ||||
l/l_front [L] sq | l/l_front [L] sq | ||||
l/l_front_ [l/4] sq | l/l_front_ [l/4] sq | ||||
l/li [á3m] base | |||||
[l#] base | |||||
l/li [l#] base | |||||
[€¦] base | |||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
[l] zh | [l] zh | ||||
ll/_ll [L] bg | ll/_ll [L] bg | ||||
l/l_long [l] base | l/l_long [l] base | ||||
[l] fr | [l] fr | ||||
l/lo [á3m] base | |||||
[l#] base | |||||
l/lo [l#] base | |||||
[€¦] base | |||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/l_o [l/3] base | l/l_o [l/3] base | ||||
[l/] fr | [l/] fr | ||||
l^/l_rfx [l.] base | l^/l_rfx [l.] base | ||||
l/lu [á3m] base | |||||
[l#] base | |||||
l/lu [l#] base | |||||
[€¦] base | |||||
[l] fr | [l] fr | ||||
[l/2] fr | [l/2] fr | ||||
l/l_u [l/3] base | l/l_u [l/3] base | ||||
[oU] en-wi | [oU] en-wi | ||||
[o:] de | [o:] de | ||||
[o] fr | [o] fr | ||||
[o2] fr | |||||
[o] hi | [o] hi | ||||
[o] ta | [o] ta | ||||
[o:] ta | [o:] ta | ||||
vowel/o_6 [O:] nl | vowel/o_6 [O:] nl | ||||
vowel/o_7 [o] ku | vowel/o_7 [o] ku | ||||
vowel/o_8 [o] fr | vowel/o_8 [o] fr | ||||
[o2] fr | |||||
[o] ht | [o] ht | ||||
vowel/oe [W] af | vowel/oe [W] af | ||||
[W] de | [W] de | ||||
[o] ne | [o] ne | ||||
[o] bg | [o] bg | ||||
vowel/o_mid2 [O] fr | vowel/o_mid2 [O] fr | ||||
[o] fr | |||||
[O] ht | [O] ht | ||||
vowel/oo [o] base | vowel/oo [o] base | ||||
[O:] en-sc | [O:] en-sc | ||||
[u] bg | [u] bg | ||||
vowel/u_bck2 [u] fr | vowel/u_bck2 [u] fr | ||||
[u:] fr | [u:] fr | ||||
[u] ta | |||||
[u:] ta | |||||
[u:] la | [u:] la | ||||
[u] ht | [u] ht | ||||
vowel/uu [U] en | vowel/uu [U] en | ||||
vwl_en_us/or [o@] en-us | vwl_en_us/or [o@] en-us | ||||
[O:] en-sc | [O:] en-sc | ||||
vwl_en_us/ur [U@] en-us | vwl_en_us/ur [U@] en-us | ||||
vwl_fr/@2r [�æ] fr | |||||
vwl_fr/a2r [�æ] fr | |||||
vwl_fr/aa2r [�æ] fr | |||||
vwl_fr/@2r [] fr | |||||
vwl_fr/a2r [] fr | |||||
vwl_fr/aa2r [] fr | |||||
vwl_fr/br [r/2] fr | vwl_fr/br [r/2] fr | ||||
vwl_fr/e2r [�æ] fr | |||||
vwl_fr/e_2r [�æ] fr | |||||
vwl_fr/ee2r [�æ] fr | |||||
vwl_fr/i2r [�æ] fr | |||||
vwl_fr/e2r [] fr | |||||
vwl_fr/e_2r [] fr | |||||
vwl_fr/ee2r [] fr | |||||
vwl_fr/i2r [] fr | |||||
vwl_fr/j [j/] fr | vwl_fr/j [j/] fr | ||||
vwl_fr/o2r [�æ] fr | |||||
vwl_fr/oo2r [�æ] fr | |||||
vwl_fr/o2r [] fr | |||||
vwl_fr/oo2r [] fr | |||||
vwl_fr/r [r] fr | vwl_fr/r [r] fr | ||||
[r/2] fr | [r/2] fr | ||||
vwl_fr/r_ [r/] fr | vwl_fr/r_ [r/] fr | ||||
vwl_fr/r_@ [r/] fr | vwl_fr/r_@ [r/] fr | ||||
vwl_fr/r@ [�æ] fr | |||||
vwl_fr/r@ [] fr | |||||
vwl_fr/@R [x] pt-pt | vwl_fr/@R [x] pt-pt | ||||
vwl_fr/r@2 [�æ] fr | |||||
vwl_fr/r@2 [] fr | |||||
vwl_fr/@R2 [R] fr-ca | vwl_fr/@R2 [R] fr-ca | ||||
vwl_fr/ra [�æ] fr | |||||
vwl_fr/ra [] fr | |||||
vwl_fr/r_a [r/] fr | vwl_fr/r_a [r/] fr | ||||
vwl_fr/raa [�æ] fr | |||||
vwl_fr/re [�æ] fr | |||||
vwl_fr/raa [] fr | |||||
vwl_fr/re [] fr | |||||
vwl_fr/r_e [r/] fr | vwl_fr/r_e [r/] fr | ||||
vwl_fr/re2 [�æ] fr | |||||
vwl_fr/ree [�æ] fr | |||||
vwl_fr/ri [�æ] fr | |||||
vwl_fr/re2 [] fr | |||||
vwl_fr/ree [] fr | |||||
vwl_fr/ri [] fr | |||||
vwl_fr/r_i [r/] fr | vwl_fr/r_i [r/] fr | ||||
vwl_fr/rj [�æ] fr | |||||
vwl_fr/rj [] fr | |||||
vwl_fr/r_n [r/] fr | vwl_fr/r_n [r/] fr | ||||
vwl_fr/ro [�æ] fr | |||||
vwl_fr/ro [] fr | |||||
vwl_fr/r_o [r/] fr | vwl_fr/r_o [r/] fr | ||||
vwl_fr/roo [�æ] fr | |||||
vwl_fr/roo [] fr | |||||
vwl_fr/rr [r/] fr | vwl_fr/rr [r/] fr | ||||
vwl_fr/ru [�æ] fr | |||||
vwl_fr/ru [] fr | |||||
vwl_fr/r_u [r/] fr | vwl_fr/r_u [r/] fr | ||||
vwl_fr/rw [�æ] fr | |||||
vwl_fr/ry [�æ] fr | |||||
vwl_fr/rw [] fr | |||||
vwl_fr/ry [] fr | |||||
vwl_fr/r_y [r/] fr | vwl_fr/r_y [r/] fr | ||||
vwl_fr/tr [r/2] fr | vwl_fr/tr [r/2] fr | ||||
vwl_fr/trr [r/] fr | vwl_fr/trr [r/] fr | ||||
vwl_fr/u2r [�æ] fr | |||||
vwl_fr/u2r [] fr | |||||
vwl_fr/wa [w] fr | vwl_fr/wa [w] fr | ||||
[w/] fr | [w/] fr | ||||
vwl_fr/y2r [�æ] fr | |||||
vwl_fr/y2r [] fr | |||||
vwl_hi/l-voc [l-] base | vwl_hi/l-voc [l-] base | ||||
[l-] sk | [l-] sk | ||||
[l:] sk | [l:] sk |
unstressed | unstressed | ||||
length 140 | length 140 | ||||
IF nextPh(r/) THEN | IF nextPh(r/) THEN | ||||
FMT(vwl_af/r@, 50) | |||||
Length 190 | |||||
FMT(vwl_af/r@) | |||||
ENDIF | ENDIF | ||||
FMT(vwl_af/@) | FMT(vwl_af/@) | ||||
endphoneme | endphoneme | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 140 | length 140 | ||||
IF nextPh(r/) THEN | IF nextPh(r/) THEN | ||||
FMT(vwl_af/r@, 50) | |||||
Length 190 | |||||
FMT(vwl_af/r@) | |||||
ENDIF | ENDIF | ||||
FMT(vwl_af/I) | FMT(vwl_af/I) | ||||
endphoneme | endphoneme |
phoneme dZ; | phoneme dZ; | ||||
vcd pla afr sibilant palatal | vcd pla afr sibilant palatal | ||||
voicingswitch tS; | voicingswitch tS; | ||||
ipa dʑ | |||||
lengthmod 5 | lengthmod 5 | ||||
Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | ||||
phoneme tS; // this is letter ć | phoneme tS; // this is letter ć | ||||
vls pal afr sibilant palatal | vls pal afr sibilant palatal | ||||
ipa tɕ | |||||
lengthmod 2 | lengthmod 2 | ||||
voicingswitch dZ; | voicingswitch dZ; | ||||
Vowelin f1=0 f2=2500 300 500 f3=300 80 rate len=70 | Vowelin f1=0 f2=2500 300 500 f3=300 80 rate len=70 | ||||
phoneme dZ; // letter đ | phoneme dZ; // letter đ | ||||
vcd pla afr sibilant palatal | vcd pla afr sibilant palatal | ||||
lengthmod 5 | lengthmod 5 | ||||
ipa dʑ | |||||
voicingswitch tS; | voicingswitch tS; | ||||
Vowelin f1=2 f2=2500 300 500 f3=300 80 rate len=70 | Vowelin f1=2 f2=2500 300 500 f3=300 80 rate len=70 | ||||
phoneme 3 // Schwa, used for rhotic schwa in American | phoneme 3 // Schwa, used for rhotic schwa in American | ||||
vowel starttype #@ endtype #@ | |||||
unstressed | |||||
length 140 | |||||
ipa ə | |||||
CALL @ | CALL @ | ||||
ipa ə | |||||
endphoneme | endphoneme | ||||
phoneme 3 // Schwa, used for rhotic schwa in American | phoneme 3 // Schwa, used for rhotic schwa in American | ||||
vowel starttype #@ endtype #@ | |||||
unstressed | |||||
length 140 | |||||
ipa ə | |||||
CALL @ | CALL @ | ||||
ipa ə | |||||
endphoneme | endphoneme | ||||
phoneme a# | phoneme a# | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
ipa ɐ | |||||
unstressed | unstressed | ||||
length 140 | length 140 | ||||
IfNextVowelAppend(r-) | IfNextVowelAppend(r-) | ||||
ipa a: | ipa a: | ||||
IfNextVowelAppend(r-) | IfNextVowelAppend(r-) | ||||
IF nextPh(r) THEN | IF nextPh(r) THEN | ||||
FMT(vowelr/aa_r, 30) | |||||
Length 250 | |||||
FMT(vowelr/aa_r) | |||||
ENDIF | ENDIF | ||||
FMT(vowel/a_3) | FMT(vowel/a_3) | ||||
endphoneme | endphoneme | ||||
Length 200 | Length 200 | ||||
ENDIF | ENDIF | ||||
IF nextPh(isPause) THEN | IF nextPh(isPause) THEN | ||||
FMT(vowel/u#_4, 40) | |||||
Length 200 | |||||
FMT(vowel/u#_4) | |||||
ENDIF | ENDIF | ||||
FMT(vowel/u#) | FMT(vowel/u#) | ||||
endphoneme | endphoneme |
//==================================================== | //==================================================== | ||||
// French | // French | ||||
//==================================================== | //==================================================== | ||||
// Updated 2010-06-22 Michel Such <[email protected]> | |||||
// Updated 2010-07-16 Michel Such <[email protected]> | |||||
phoneme #l virtual | phoneme #l virtual | ||||
// Used for l and l/ | // Used for l and l/ | ||||
vcd uvl frc | vcd uvl frc | ||||
rhotic | rhotic | ||||
starttype #r endtype #r | starttype #r endtype #r | ||||
Vowelout f1=1 f2=1200 -400 800 f3=200 100 len=30 | |||||
lengthmod 7 | lengthmod 7 | ||||
ipa U+0281 | ipa U+0281 | ||||
length 170 | length 170 | ||||
ENDIF | ENDIF | ||||
FMT(vowel/a_7) | |||||
FMT(vowel/a_7, 85) | |||||
endphoneme | endphoneme | ||||
phoneme e | phoneme e | ||||
vowel starttype #e endtype #e | vowel starttype #e endtype #e | ||||
palatal | |||||
IF nextPh(l/) THEN | IF nextPh(l/) THEN | ||||
VowelEnding(l/xl, -20) | VowelEnding(l/xl, -20) | ||||
phoneme j/ // Short "i" between "r" and a vowel | phoneme j/ // Short "i" between "r" and a vowel | ||||
vowel starttype #i endtype #i | vowel starttype #i endtype #i | ||||
length 100 | length 100 | ||||
unstressed | |||||
// unstressed | |||||
NextVowelStarts | NextVowelStarts | ||||
VowelStart(j/j@) | VowelStart(j/j@) | ||||
length 170 | length 170 | ||||
ENDIF | ENDIF | ||||
IF thisPh(isFinalVowel) THEN | |||||
IF thisPh(isWordEnd) THEN | |||||
FMT(vowel/o_8) | |||||
ELIF nextPh(p2) OR nextPh(t2) OR nextPh(z2) THEN | |||||
FMT(vowel/o_8) | |||||
ELIF nextPh(z) THEN | |||||
FMT(vowel/o) | |||||
ELSE | |||||
FMT(vowel/o_mid2) | |||||
ENDIF | |||||
ELSE | |||||
IF nextPhW(#r) AND next2Ph(isNotVowel) THEN | |||||
ChangePhoneme(O) | |||||
ELIF nextPhW(isLiquid) AND next2Ph(isNotVowel) THEN | |||||
ChangePhoneme(O) | |||||
ELIF nextPhW(n) AND next2Ph(j) THEN | |||||
FMT(vowel/o) | |||||
ELIF nextPhW(isNasal) AND next2Ph(isLiquid) THEN | |||||
ChangePhoneme(O) | |||||
ELIF nextPhW(isNotVowel) AND next2Ph(isNasal) THEN | |||||
ChangePhoneme(O) | |||||
ELIF nextPhW(d) AND next2Ph(isNotVowel) THEN | |||||
ChangePhoneme(O) | |||||
ELIF nextPhW(t) AND next2Ph(isLiquid) AND nextVowel(isFinalVowel) THEN | |||||
ChangePhoneme(O) | |||||
ELSE | |||||
FMT(vowel/o) | |||||
ENDIF | |||||
FMT(vowel/o) | |||||
ENDIF | |||||
endphoneme | |||||
phoneme o2 | |||||
vowel starttype #o endtype #o | |||||
IF nextPh(isVowel) THEN | |||||
length 220 | |||||
ELSE | |||||
length 170 | |||||
ENDIF | |||||
IF thisPh(isFinalVowel) THEN | IF thisPh(isFinalVowel) THEN | ||||
FMT(vowel/o_8) | FMT(vowel/o_8) | ||||
ELSE | ELSE | ||||
phoneme O | phoneme O | ||||
vowel starttype #o endtype #o | vowel starttype #o endtype #o | ||||
IF nextPhW(#r) THEN | |||||
length 200 | |||||
ELSE | |||||
length 170 | |||||
length 170 | |||||
IF nextPhW(z) OR nextPhW(z2) OR nextPhW(z3) THEN | |||||
ChangePhoneme(o) | |||||
ENDIF | ENDIF | ||||
FMT(vowel/o_mid2) | FMT(vowel/o_mid2) | ||||
vowel starttype #@ endtype #@ | vowel starttype #@ endtype #@ | ||||
length 170 | length 170 | ||||
IF thisPh(isFinalVowel) THEN | |||||
IF thisPh(isWordEnd) THEN | |||||
FMT(vowel/y#) | |||||
ELIF nextPh(z2) OR nextPh(t2) THEN | |||||
FMT(vowel/y#) | |||||
ELSE | |||||
ChangePhoneme(W) | |||||
ENDIF | |||||
ELSE | |||||
IF nextPhW(isNotVowel) AND next2Ph(isLiquid) THEN | |||||
FMT(vowel/y#) | |||||
ELIF nextPhW(isNotVowel) AND next2Ph(isNotVowel) THEN | |||||
ChangePhoneme(W) | |||||
ELSE | |||||
FMT(vowel/y#) | |||||
ENDIF | |||||
ENDIF | |||||
FMT(vowel/y#) | |||||
endphoneme | endphoneme | ||||
phoneme z2 // silent unless followed by vowel | phoneme z2 // silent unless followed by vowel | ||||
vcd alv frc sibilant | vcd alv frc sibilant | ||||
IF nextPh(isVowel) OR nextPh(w/) OR nextPh(j) THEN | IF nextPh(isVowel) OR nextPh(w/) OR nextPh(j) THEN | ||||
FMT(voc/z, -20) addWav(ufric/s, 40) | |||||
Length 70 | |||||
FMT(voc/z) addWav(ufric/s, 40) | |||||
ELSE | ELSE | ||||
ChangePhoneme(NULL) | ChangePhoneme(NULL) | ||||
ENDIF | ENDIF | ||||
endphoneme | endphoneme | ||||
phoneme ch | phoneme ch | ||||
import_phoneme base/tS; | |||||
CALL base/tS; | |||||
ipa ch | |||||
endphoneme | endphoneme | ||||
phoneme dZ; | phoneme dZ; | ||||
vcd pal afr sibilant palatal | vcd pal afr sibilant palatal | ||||
lengthmod 5 | lengthmod 5 | ||||
ipa dʑ | |||||
voicingswitch tS; | voicingswitch tS; | ||||
Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | ||||
phoneme s# // This is [s] for Brazil, [S] for Portugal | phoneme s# // This is [s] for Brazil, [S] for Portugal | ||||
vls pla frc sibilant | |||||
lengthmod 3 | |||||
ipa ʃ | |||||
CALL base/S | CALL base/S | ||||
// import_phoneme base/S | |||||
ipa ʃ | |||||
endphoneme | endphoneme | ||||
phoneme s# // This is [s] for Brazi;, [S] for Portugal | phoneme s# // This is [s] for Brazi;, [S] for Portugal | ||||
vls alv frc sibilant | |||||
lengthmod 3 | |||||
ipa s | |||||
CALL base/s | CALL base/s | ||||
ipa s | |||||
endphoneme | endphoneme | ||||
ChangePhoneme(;) | ChangePhoneme(;) | ||||
ENDIF | ENDIF | ||||
IF prevPh(l;) THEN | IF prevPh(l;) THEN | ||||
FMT(vwl_ro/li, -10) | |||||
Length 60 | |||||
FMT(vwl_ro/li) | |||||
ENDIF | ENDIF | ||||
IF prevPh(m;) THEN | IF prevPh(m;) THEN | ||||
FMT(vwl_ro/mi) | FMT(vwl_ro/mi) |
phoneme dZ; | phoneme dZ; | ||||
vcd pla afr sibilant palatal | vcd pla afr sibilant palatal | ||||
lengthmod 5 | lengthmod 5 | ||||
ipa dʑ | |||||
voicingswitch tS; | voicingswitch tS; | ||||
Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | ||||
phoneme tS; | phoneme tS; | ||||
vls pal afr sibilant palatal | vls pal afr sibilant palatal | ||||
lengthmod 2 | lengthmod 2 | ||||
ipa tɕ | |||||
voicingswitch dZ; | voicingswitch dZ; | ||||
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 | Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 | ||||
WAV(ustop/ts_sr) | WAV(ustop/ts_sr) |
Vowelin f1=2 f2=2300 200 300 f3=-300 80 | Vowelin f1=2 f2=2300 200 300 f3=-300 80 | ||||
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | ||||
IF thisPh(isWordStart) AND nextPh(isVowel) THEN | |||||
IF prevPh(isPause) OR prevPh(isNasal) THEN | |||||
ELSE | |||||
ChangePhoneme(Q) | |||||
ENDIF | |||||
ENDIF | |||||
IF PreVoicing THEN | IF PreVoicing THEN | ||||
FMT(g/xg) | FMT(g/xg) | ||||
ENDIF | ENDIF | ||||
FMT(g/g) addWav(x/g2) // weaker [g] | FMT(g/g) addWav(x/g2) // weaker [g] | ||||
endphoneme | endphoneme | ||||
phoneme d | |||||
vcd dnt stop | |||||
IF thisPh(isWordStart) AND nextPh(isVowel) THEN | |||||
IF prevPh(isPause) OR prevPh(isNasal) OR prevPh(l) THEN | |||||
ELSE | |||||
ChangePhoneme(D) | |||||
ENDIF | |||||
ENDIF | |||||
CALL base2/d | |||||
endphoneme | |||||
phoneme b | |||||
vcd blb stop | |||||
IF thisPh(isWordStart) AND nextPh(isVowel) THEN | |||||
IF prevPh(isPause) OR prevPh(isNasal) THEN | |||||
ELSE | |||||
ChangePhoneme(B) | |||||
ENDIF | |||||
ENDIF | |||||
CALL base/b | |||||
endphoneme | |||||
phoneme D | phoneme D | ||||
vcd dnt frc | vcd dnt frc | ||||
phoneme v# // a shorter [v], a little towards [b] | phoneme v# // a shorter [v], a little towards [b] | ||||
vcd lbd frc | vcd lbd frc | ||||
ipa v | |||||
ipa ʋ | |||||
lengthmod 6 | lengthmod 6 | ||||
voicingswitch f | voicingswitch f | ||||
Vowelin f1=1 f2=1000 -300 -200 f3=-300 100 | Vowelin f1=1 f2=1000 -300 -200 f3=-300 100 |
phoneme u | phoneme u | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 110 | length 110 | ||||
IF prevPhW(isVel) THEN | |||||
FMT(vowel/u_bck2) | |||||
ELSE | |||||
ChangeIfNotStressed(U) | |||||
ENDIF | |||||
ChangeIfNotStressed(U) | |||||
FMT(vowel/u_6) | FMT(vowel/u_6) | ||||
endphoneme | endphoneme | ||||
phoneme U | phoneme U | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 110 | length 110 | ||||
ipa ʉ | |||||
FMT(vowel/u#_3) | FMT(vowel/u#_3) | ||||
endphoneme | endphoneme | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
length 260 | length 260 | ||||
IF prevPhW(isVel) THEN | IF prevPhW(isVel) THEN | ||||
FMT(vowel/u_bck2) | |||||
ELSE | ELSE | ||||
ChangeIfNotStressed(U:) | ChangeIfNotStressed(U:) | ||||
ENDIF | ENDIF | ||||
phoneme U: | phoneme U: | ||||
vowel starttype #u endtype #u | vowel starttype #u endtype #u | ||||
ipa ʉː | |||||
length 240 | length 240 | ||||
FMT(vowel/u#_3) | FMT(vowel/u#_3) | ||||
endphoneme | endphoneme |
phoneme tS; | phoneme tS; | ||||
vls pal afr sibilant palatal | vls pal afr sibilant palatal | ||||
ipa tɕ | |||||
lengthmod 2 | lengthmod 2 | ||||
Vowelin f1=0 f2=2700 400 600 f3=300 80 | Vowelin f1=0 f2=2700 400 600 f3=300 80 | ||||
WAV(ustop/tsh_pzd_unasp) | WAV(ustop/tsh_pzd_unasp) | ||||
phoneme tS;h | phoneme tS;h | ||||
vls pal afr sibilant palatal | vls pal afr sibilant palatal | ||||
ipa tɕh | |||||
lengthmod 2 | lengthmod 2 | ||||
Vowelin f1=0 f2=2700 400 600 f3=300 80 | Vowelin f1=0 f2=2700 400 600 f3=300 80 | ||||
WAV(ustop/tsh_pzd, 80) | WAV(ustop/tsh_pzd, 80) | ||||
phoneme S; | phoneme S; | ||||
vls pla frc sibilant | vls pla frc sibilant | ||||
lengthmod 2 | lengthmod 2 | ||||
ipa ɕ | |||||
Vowelin f1=0 f2=2700 400 600 f3=300 80 | Vowelin f1=0 f2=2700 400 600 f3=300 80 | ||||
WAV(ufric/sh_pzd2, 20) | WAV(ufric/sh_pzd2, 20) | ||||
endphoneme | endphoneme |
//******************************************************************* | //******************************************************************* | ||||
phoneme b | |||||
phoneme b | |||||
vcd blb stop | vcd blb stop | ||||
voicingswitch p | voicingswitch p | ||||
Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk | Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk | ||||
phoneme dZ; | phoneme dZ; | ||||
vcd pla afr sibilant palatal | vcd pla afr sibilant palatal | ||||
voicingswitch tS; | voicingswitch tS; | ||||
ipa dʑ | |||||
lengthmod 5 | lengthmod 5 | ||||
Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | ||||
Vowelout f1=2 f2=2700 400 600 f3=300 80 | Vowelout f1=2 f2=2700 400 600 f3=300 80 | ||||
phoneme Z; | phoneme Z; | ||||
vcd pal frc sibilant palatal | vcd pal frc sibilant palatal | ||||
voicingswitch S; | voicingswitch S; | ||||
ipa ʑ | |||||
lengthmod 6 | lengthmod 6 | ||||
Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 | ||||
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk | ||||
phoneme tS; | phoneme tS; | ||||
vls pal afr sibilant palatal | vls pal afr sibilant palatal | ||||
voicingswitch dZ; | voicingswitch dZ; | ||||
ipa tɕ | |||||
lengthmod 2 | lengthmod 2 | ||||
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 | Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 | ||||
phoneme S; | phoneme S; | ||||
vls pal frc sibilant palatal | vls pal frc sibilant palatal | ||||
voicingswitch Z; | voicingswitch Z; | ||||
ipa ɕ | |||||
lengthmod 3 | lengthmod 3 | ||||
Vowelin f1=1 f2=2700 400 600 f3=200 70 rate len=70 | Vowelin f1=1 f2=2700 400 600 f3=200 70 rate len=70 | ||||
Vowelout f1=1 f2=2700 400 600 f3=200 70 rate | Vowelout f1=1 f2=2700 400 600 f3=200 70 rate |
#include <string.h> | #include <string.h> | ||||
#include <ctype.h> | #include <ctype.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <time.h> | |||||
#include "wx/wx.h" | #include "wx/wx.h" | ||||
#include "wx/wfstream.h" | #include "wx/wfstream.h" | ||||
static int n_phcodes_list[N_PHONEME_TABS]; | static int n_phcodes_list[N_PHONEME_TABS]; | ||||
static PHONEME_TAB_LIST phoneme_tab_list2[N_PHONEME_TABS]; | static PHONEME_TAB_LIST phoneme_tab_list2[N_PHONEME_TABS]; | ||||
static PHONEME_TAB *phoneme_tab2; | static PHONEME_TAB *phoneme_tab2; | ||||
static int phoneme_flags; | |||||
static int place_articulation; | |||||
#define N_PROCS 50 | #define N_PROCS 50 | ||||
int n_procs; | int n_procs; | ||||
static void PrintPhonemesUsed(FILE *f, const char *dictname) | |||||
{//========================================================= | |||||
static void PrintPhonemesUsed(FILE *f, const char *dsource, const char *dictname) | |||||
{//============================================================================== | |||||
int ix; | int ix; | ||||
PHONEME_TAB *ph; | PHONEME_TAB *ph; | ||||
PHONEME_TAB *ph_tab[N_PHONEME_TAB]; | PHONEME_TAB *ph_tab[N_PHONEME_TAB]; | ||||
int count = 0; | int count = 0; | ||||
int n_ph = 0; | int n_ph = 0; | ||||
int section = 0; | int section = 0; | ||||
time_t mod_time; | |||||
char fname[sizeof(path_home)+45]; | |||||
struct stat statbuf; | |||||
char time_string[20]; | |||||
const char *files[] = {"rules","list","listx"}; | |||||
fprintf(f,"\n\nDictionary %s_dict\n",dictname); | |||||
// find the date-stamp of the dictionary source files | |||||
mod_time = 0; | |||||
for(ix=0; ix<3; ix++) | |||||
{ | |||||
sprintf(fname,"%s%s_%s",dsource, dictname, files[ix]); | |||||
if(stat(fname,&statbuf) == 0) | |||||
{ | |||||
if(statbuf.st_mtime > mod_time) | |||||
mod_time = statbuf.st_mtime; | |||||
} | |||||
} | |||||
if(mod_time > 0) | |||||
{ | |||||
strftime(time_string, sizeof(time_string), "%F", localtime(&mod_time)); | |||||
fprintf(f,"\n\nDictionary %s_dict %s\n",dictname, time_string); | |||||
} | |||||
else | |||||
{ | |||||
fprintf(f,"\n\nDictionary %s_dict\n",dictname); | |||||
} | |||||
fflush(f); | fflush(f); | ||||
for(ix=0; (ix<N_PHONEME_TAB) && (phoneme_tab[ix] != NULL); ix++) | for(ix=0; (ix<N_PHONEME_TAB) && (phoneme_tab[ix] != NULL); ix++) | ||||
{ | { | ||||
memset(phoneme_tab_flags,0,sizeof(phoneme_tab_flags)); | memset(phoneme_tab_flags,0,sizeof(phoneme_tab_flags)); | ||||
FindPhonemesUsed(); | FindPhonemesUsed(); | ||||
PrintPhonemesUsed(f_phused,dictname); | |||||
PrintPhonemesUsed(f_phused, path_dsource, dictname); | |||||
} | } | ||||
cont = dir.GetNext(&filename); | cont = dir.GetNext(&filename); | ||||
strcpy(path, item_string); | strcpy(path, item_string); | ||||
if(item_terminator == ',') | if(item_terminator == ',') | ||||
{ | { | ||||
value = NextItemBrackets(tSIGNEDNUMBER,1); | |||||
if((keyword == kVOWELSTART) || (keyword == kVOWELENDING)) | |||||
{ | |||||
value = NextItemBrackets(tSIGNEDNUMBER,1); | |||||
if(value > 127) | |||||
{ | |||||
value = 127; | |||||
error("Parameter > 127",NULL); | |||||
} | |||||
if(value < -128) | |||||
{ | |||||
value = -128; | |||||
error("Parameter < -128",NULL); | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
value = NextItemBrackets(tNUMBER,1); | |||||
if(value > 255) | |||||
{ | |||||
value = 255; | |||||
error("Parameter > 255",NULL); | |||||
} | |||||
} | |||||
} | } | ||||
addr = LoadDataFile(path, isvowel); | addr = LoadDataFile(path, isvowel); | ||||
addr = addr / 4; // addr is words not bytes | addr = addr / 4; // addr is words not bytes | ||||
if((ph = FindPhoneme(item_string)) == NULL) | if((ph = FindPhoneme(item_string)) == NULL) | ||||
return; | return; | ||||
addr = ph->program; | addr = ph->program; | ||||
if(phoneme_out->type == phINVALID) | |||||
{ | |||||
// Phoneme type has not been set. Copy it from the called phoneme | |||||
phoneme_out->type = ph->type; | |||||
phoneme_flags = ph->phflags & ~phARTICULATION; | |||||
place_articulation = (ph->phflags & phARTICULATION) >> 16; | |||||
phoneme_out->start_type = ph->start_type; | |||||
phoneme_out->end_type = ph->end_type; | |||||
phoneme_out->std_length = ph->std_length; | |||||
phoneme_out->length_mod = ph->length_mod; | |||||
} | |||||
} | } | ||||
*prog_out++ = i_CALLPH + (addr >> 16); | *prog_out++ = i_CALLPH + (addr >> 16); | ||||
int CompilePhoneme(int compile_phoneme) | int CompilePhoneme(int compile_phoneme) | ||||
{//==================================== | {//==================================== | ||||
int endphoneme = 0; | int endphoneme = 0; | ||||
int phoneme_flags = 0; | |||||
int place_articulation = 0; | |||||
int keyword; | int keyword; | ||||
int value; | int value; | ||||
int phcode = 0; | int phcode = 0; | ||||
if_level = 0; | if_level = 0; | ||||
if_stack[0].returned = 0; | if_stack[0].returned = 0; | ||||
after_if = 0; | after_if = 0; | ||||
phoneme_flags = 0; | |||||
place_articulation = 0; | |||||
NextItem(tSTRING); | NextItem(tSTRING); | ||||
if(compile_phoneme) | if(compile_phoneme) |
case 'b': | case 'b': | ||||
sxflags |= SUFX_B; | sxflags |= SUFX_B; | ||||
break; | break; | ||||
case 'a': | |||||
sxflags |= SUFX_A; | |||||
break; | |||||
default: | default: | ||||
if(isdigit(c)) | if(isdigit(c)) | ||||
value = (value*10) + (c - '0'); | value = (value*10) + (c - '0'); |
char fname[sizeof(path_home)+20]; | char fname[sizeof(path_home)+20]; | ||||
strcpy(dictionary_name,name); // currently loaded dictionary name | strcpy(dictionary_name,name); // currently loaded dictionary name | ||||
strcpy(tr->dictionary_name, name); | |||||
// Load a pronunciation data file into memory | // Load a pronunciation data file into memory | ||||
// bytes 0-3: offset to rules data | // bytes 0-3: offset to rules data | ||||
} | } | ||||
} | } | ||||
} | } | ||||
WritePhMnemonic(phon_out, &phon_out_ix, plist->ph, plist); | |||||
if(plist->synthflags & SFLAG_LENGTHEN) | |||||
{ | |||||
WritePhMnemonic(phon_out, &phon_out_ix, phoneme_tab[phonLENGTHEN], NULL); | |||||
} | |||||
if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL)) | |||||
{ | |||||
// syllablic consonant | |||||
WritePhMnemonic(phon_out, &phon_out_ix, phoneme_tab[phonSYLLABIC], NULL); | |||||
} | |||||
if(plist->ph->code == phonSWITCH) | if(plist->ph->code == phonSWITCH) | ||||
{ | { | ||||
// the tone_ph field contains a phoneme table number | // the tone_ph field contains a phoneme table number | ||||
p = phoneme_tab_list[plist->tone_ph].name; | p = phoneme_tab_list[plist->tone_ph].name; | ||||
while((c = *p++) != 0) | |||||
{ | |||||
if(option_phonemes != 3) | |||||
phon_out[phon_out_ix++] = c; | |||||
} | |||||
phon_out[phon_out_ix++] = ' '; | |||||
sprintf(&phon_out[phon_out_ix], "(%s)", p); | |||||
phon_out_ix += (strlen(p) + 2); | |||||
} | } | ||||
else | else | ||||
if(plist->tone_ph > 0) | |||||
{ | { | ||||
WritePhMnemonic(phon_out, &phon_out_ix, phoneme_tab[plist->tone_ph], NULL); | |||||
WritePhMnemonic(phon_out, &phon_out_ix, plist->ph, plist); | |||||
if(plist->synthflags & SFLAG_LENGTHEN) | |||||
{ | |||||
WritePhMnemonic(phon_out, &phon_out_ix, phoneme_tab[phonLENGTHEN], NULL); | |||||
} | |||||
if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL)) | |||||
{ | |||||
// syllablic consonant | |||||
WritePhMnemonic(phon_out, &phon_out_ix, phoneme_tab[phonSYLLABIC], NULL); | |||||
} | |||||
if(plist->tone_ph > 0) | |||||
{ | |||||
WritePhMnemonic(phon_out, &phon_out_ix, phoneme_tab[plist->tone_ph], NULL); | |||||
} | |||||
} | } | ||||
} | } | ||||
index += utf8_in(&c,&word[index]); | index += utf8_in(&c,&word[index]); | ||||
count++; | count++; | ||||
if((c==0) || (c==' ')) | |||||
if((c==0) || (c==' ') || (c == '\'')) | |||||
break; | break; | ||||
if(IsVowel(tr, c) || (c == 'y')) | if(IsVowel(tr, c) || (c == 'y')) | ||||
if(tr->langopts.param[LOPT_UNPRONOUNCABLE] == 1) | if(tr->langopts.param[LOPT_UNPRONOUNCABLE] == 1) | ||||
return(0); | return(0); | ||||
if((*word == ' ') || (*word == 0)) | |||||
if(((c = *word) == ' ') || (c == 0) || (c == '\'')) | |||||
return(0); | return(0); | ||||
index = 0; | index = 0; | ||||
for(;;) | for(;;) | ||||
{ | { | ||||
index += utf8_in(&c,&word[index]); | index += utf8_in(&c,&word[index]); | ||||
if((c==0) || (c==' ')) | |||||
if((c==0) || (c==' ') || (c == '\'')) | |||||
break; | break; | ||||
if(count==0) | if(count==0) | ||||
vowel_posn--; // disregard this as the initial letter when counting | vowel_posn--; // disregard this as the initial letter when counting | ||||
if(vowel_posn > (tr->langopts.max_initial_consonants+1)) | if(vowel_posn > (tr->langopts.max_initial_consonants+1)) | ||||
return(1); // no vowel, or no vowel in first four letters | |||||
return(1); // no vowel, or no vowel in first few letters | |||||
return(0); | return(0); | ||||
int opt_length; | int opt_length; | ||||
int done; | int done; | ||||
int stressflags; | int stressflags; | ||||
int dflags = 0; | |||||
signed char vowel_stress[N_WORD_PHONEMES/2]; | signed char vowel_stress[N_WORD_PHONEMES/2]; | ||||
char syllable_weight[N_WORD_PHONEMES/2]; | char syllable_weight[N_WORD_PHONEMES/2]; | ||||
stressflags = tr->langopts.stress_flags; | stressflags = tr->langopts.stress_flags; | ||||
if(dictionary_flags != NULL) | |||||
dflags = dictionary_flags[0]; | |||||
/* copy input string into internal buffer */ | /* copy input string into internal buffer */ | ||||
for(ix=0; ix<N_WORD_PHONEMES; ix++) | for(ix=0; ix<N_WORD_PHONEMES; ix++) | ||||
{ | { | ||||
max_output = output + (N_WORD_PHONEMES-3); /* check for overrun */ | max_output = output + (N_WORD_PHONEMES-3); /* check for overrun */ | ||||
// any stress position marked in the xx_list dictionary ? | // any stress position marked in the xx_list dictionary ? | ||||
stressed_syllable = dictionary_flags[0] & 0x7; | |||||
if(dictionary_flags[0] & 0x8) | |||||
stressed_syllable = dflags & 0x7; | |||||
if(dflags & 0x8) | |||||
{ | { | ||||
// this indicates a word without a primary stress | // this indicates a word without a primary stress | ||||
stressed_syllable = dictionary_flags[0] & 0x3; | |||||
stressed_syllable = dflags & 0x3; | |||||
unstressed_word = 1; | unstressed_word = 1; | ||||
} | } | ||||
max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1); | max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1); | ||||
if(max_stress < 0) | |||||
if((max_stress < 0) && dictionary_flags) | |||||
{ | { | ||||
if((tr->langopts.stress_flags & 1) && (vowel_count == 2)) | if((tr->langopts.stress_flags & 1) && (vowel_count == 2)) | ||||
{ | { | ||||
break; | break; | ||||
case RULE_NOTVOWEL: | case RULE_NOTVOWEL: | ||||
if(!IsLetter(tr, letter_w,0)) | |||||
if(IsLetter(tr, letter_w, 0) || ((letter_w == ' ') && (word_flags & FLAG_SUFFIX_VOWEL))) | |||||
{ | |||||
failed = 1; | |||||
} | |||||
else | |||||
{ | { | ||||
add_points = (20-distance_right); | add_points = (20-distance_right); | ||||
post_ptr += letter_xbytes; | post_ptr += letter_xbytes; | ||||
} | } | ||||
else | |||||
failed = 1; | |||||
break; | break; | ||||
case RULE_DIGIT: | case RULE_DIGIT: |
// Make a menubar | // Make a menubar | ||||
myframe->SetMenuBar(MakeMenu(0)); | |||||
myframe->SetMenuBar(MakeMenu(0, voice_name2)); | |||||
myframe->CreateStatusBar(); | myframe->CreateStatusBar(); | ||||
myframe->SetVoiceTitle(voice_name2); | myframe->SetVoiceTitle(voice_name2); | ||||
EVT_TIMER(1, MyFrame::OnTimer) | EVT_TIMER(1, MyFrame::OnTimer) | ||||
EVT_SIZE(MyFrame::OnSize) | EVT_SIZE(MyFrame::OnSize) | ||||
EVT_SASH_DRAGGED_RANGE(ID_WINDOW_TOP, ID_WINDOW_BOTTOM, MyFrame::OnSashDrag) | |||||
EVT_SASH_DRAGGED(ID_WINDOW_LEFT, MyFrame::OnSashDrag) | |||||
END_EVENT_TABLE() | END_EVENT_TABLE() | ||||
int result; | int result; | ||||
int param; | int param; | ||||
// Create some dummy layout windows | |||||
wxSashLayoutWindow *win; | |||||
// Another window to the left of the client window | // Another window to the left of the client window | ||||
win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT2, | |||||
m_leftWindow = new wxSashLayoutWindow(this, ID_WINDOW_LEFT, | |||||
wxDefaultPosition, wxSize(298, 30), | wxDefaultPosition, wxSize(298, 30), | ||||
wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN); | wxNO_BORDER | wxSW_3D | wxCLIP_CHILDREN); | ||||
win->SetDefaultSize(wxSize(310, 1000)); | |||||
win->SetOrientation(wxLAYOUT_VERTICAL); | |||||
win->SetAlignment(wxLAYOUT_LEFT); | |||||
// win->SetBackgroundColour(wxColour(0, 255, 255)); | |||||
win->SetSashVisible(wxSASH_RIGHT, TRUE); | |||||
m_leftWindow2 = win; | |||||
m_leftWindow->SetDefaultSize(wxSize(310, 1000)); | |||||
m_leftWindow->SetOrientation(wxLAYOUT_VERTICAL); | |||||
m_leftWindow->SetAlignment(wxLAYOUT_LEFT); | |||||
m_leftWindow->SetSashVisible(wxSASH_RIGHT, TRUE); | |||||
notebook = new wxNotebook(m_leftWindow2,-1); | |||||
notebook = new wxNotebook(m_leftWindow,-1); | |||||
// notebook->AddPage(voicedlg,_T("Voice"),FALSE); | // notebook->AddPage(voicedlg,_T("Voice"),FALSE); | ||||
formantdlg = new FormantDlg(notebook); | formantdlg = new FormantDlg(notebook); | ||||
notebook->AddPage(formantdlg,_T(" Spect"),FALSE); | notebook->AddPage(formantdlg,_T(" Spect"),FALSE); | ||||
{//========================================== | {//========================================== | ||||
char buf[100]; | char buf[100]; | ||||
SetTitle(AppName + _T(" - ") + wxString(voice_name,wxConvLocal) + _T(" voice")); | SetTitle(AppName + _T(" - ") + wxString(voice_name,wxConvLocal) + _T(" voice")); | ||||
if(data_menu != NULL) | |||||
if((data_menu != NULL) && (translator != NULL)) | |||||
{ | { | ||||
sprintf(buf,"Compile &dictionary '%s'",dictionary_name); | |||||
sprintf(buf,"Compile &dictionary '%s'",translator->dictionary_name); | |||||
data_menu->SetLabel(MENU_COMPILE_DICT, wxString(buf,wxConvLocal)); | data_menu->SetLabel(MENU_COMPILE_DICT, wxString(buf,wxConvLocal)); | ||||
sprintf(buf,"&Layout '%s_rules' file",dictionary_name); | |||||
sprintf(buf,"&Layout '%s_rules' file",translator->dictionary_name); | |||||
data_menu->SetLabel(MENU_FORMAT_DICTIONARY, wxString(buf,wxConvLocal)); | data_menu->SetLabel(MENU_FORMAT_DICTIONARY, wxString(buf,wxConvLocal)); | ||||
sprintf(buf,"&Sort '%s_rules' file",translator->dictionary_name); | |||||
data_menu->SetLabel(MENU_SORT_DICTIONARY, wxString(buf,wxConvLocal)); | |||||
} | } | ||||
} | } | ||||
len = GetFileLength(fname); | len = GetFileLength(fname); | ||||
if(len > 0) | if(len > 0) | ||||
{ | { | ||||
if(len > 2000) | |||||
len = 2000; // restrict length to pppppevent crash in wxLogMessage() | |||||
if(len > 1500) | |||||
len = 1500; // restrict length to pppppevent crash in wxLogMessage() | |||||
msg = (char *)malloc(len+1); | msg = (char *)malloc(len+1); | ||||
if(msg != NULL) | if(msg != NULL) | ||||
{ | { | ||||
sprintf(fname_log,"%s%s",path_dsource,"dict_log"); | sprintf(fname_log,"%s%s",path_dsource,"dict_log"); | ||||
log = fopen(fname_log,"w"); | log = fopen(fname_log,"w"); | ||||
LoadDictionary(translator, dictionary_name, 0); | |||||
if((err = CompileDictionary(path_dsource,dictionary_name,log,err_fname,debug_flag)) < 0) | |||||
LoadDictionary(translator, translator->dictionary_name, 0); | |||||
if((err = CompileDictionary(path_dsource,translator->dictionary_name,log,err_fname,debug_flag)) < 0) | |||||
{ | { | ||||
wxLogError(_T("Can't access file:\n")+wxString(err_fname,wxConvLocal)); | wxLogError(_T("Can't access file:\n")+wxString(err_fname,wxConvLocal)); | ||||
void MyFrame::OnSashDrag(wxSashEvent& event) | void MyFrame::OnSashDrag(wxSashEvent& event) | ||||
{ | { | ||||
if (event.GetDragStatus() == wxSASH_STATUS_OUT_OF_RANGE) | |||||
return; | |||||
switch (event.GetId()) | |||||
{ | |||||
case ID_WINDOW_TOP: | |||||
{ | |||||
m_topWindow->SetDefaultSize(wxSize(1000, event.GetDragRect().height)); | |||||
break; | |||||
} | |||||
case ID_WINDOW_LEFT1: | |||||
{ | |||||
m_leftWindow1->SetDefaultSize(wxSize(event.GetDragRect().width, 1000)); | |||||
break; | |||||
} | |||||
case ID_WINDOW_LEFT2: | |||||
{ | |||||
m_leftWindow2->SetDefaultSize(wxSize(event.GetDragRect().width, 1000)); | |||||
break; | |||||
} | |||||
case ID_WINDOW_BOTTOM: | |||||
{ | |||||
m_bottomWindow->SetDefaultSize(wxSize(1000, event.GetDragRect().height)); | |||||
break; | |||||
} | |||||
} | |||||
wxLayoutAlgorithm layout; | |||||
layout.LayoutMDIFrame(this); | |||||
int w, h; | |||||
if (event.GetDragStatus() == wxSASH_STATUS_OUT_OF_RANGE) | |||||
return; | |||||
GetClientSize(&w, &h); | |||||
switch (event.GetId()) | |||||
{ | |||||
case ID_WINDOW_LEFT: | |||||
{ | |||||
m_leftWindow->SetDefaultSize(wxSize(event.GetDragRect().width, h)); | |||||
break; | |||||
} | |||||
} | |||||
wxLayoutAlgorithm layout; | |||||
layout.LayoutMDIFrame(this); | |||||
// Leaves bits of itself behind sometimes | |||||
GetClientWindow()->Refresh(); | |||||
// Leaves bits of itself behind sometimes | |||||
GetClientWindow()->Refresh(); | |||||
} | } | ||||
#endif | #endif | ||||
out = resonator(&(kt_globals.rsn[Rout]),out); | out = resonator(&(kt_globals.rsn[Rout]),out); | ||||
temp = (out * wdata.amplitude * kt_globals.amp_gain0) ; /* Convert back to integer */ | |||||
temp = (int)(out * wdata.amplitude * kt_globals.amp_gain0) ; /* Convert back to integer */ | |||||
// mix with a recorded WAV if required for this phoneme | // mix with a recorded WAV if required for this phoneme |
extern wxMenuBar *MakeMenu(int type); | |||||
extern wxMenuBar *MakeMenu(int type, const char *dict_name); | |||||
extern wxString path_phsource; | extern wxString path_phsource; | ||||
extern wxString path_speaktext; | extern wxString path_speaktext; | ||||
protected: | protected: | ||||
wxSashLayoutWindow* m_topWindow; | |||||
wxSashLayoutWindow* m_leftWindow1; | |||||
wxSashLayoutWindow* m_leftWindow2; | |||||
wxSashLayoutWindow* m_bottomWindow; | |||||
wxSashLayoutWindow* m_leftWindow; | |||||
wxTimer m_timer; | wxTimer m_timer; | ||||
DECLARE_EVENT_TABLE() | DECLARE_EVENT_TABLE() | ||||
SPECTSEQ_VOICEDLG | SPECTSEQ_VOICEDLG | ||||
}; | }; | ||||
#define ID_WINDOW_TOP 100 | |||||
#define ID_WINDOW_LEFT1 101 | |||||
#define ID_WINDOW_LEFT2 102 | |||||
#define ID_WINDOW_BOTTOM 103 | |||||
#define ID_WINDOW_LEFT 101 | |||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <unistd.h> | #include <unistd.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include <malloc.h> | |||||
#include <stdlib.h> | |||||
#include <signal.h> | #include <signal.h> | ||||
#include <fcntl.h> | #include <fcntl.h> | ||||
#include <poll.h> | #include <poll.h> |
#include "main.h" | #include "main.h" | ||||
wxMenu *speak_menu; | wxMenu *speak_menu; | ||||
wxMenu *data_menu = NULL; | wxMenu *data_menu = NULL; | ||||
wxMenuBar *MakeMenu(int type) | |||||
{//========================== | |||||
wxMenuBar *MakeMenu(int type, const char *dict_name) | |||||
{//================================================= | |||||
char buf[100]; | |||||
wxMenu *file_menu; | wxMenu *file_menu; | ||||
wxMenu *help_menu; | wxMenu *help_menu; | ||||
wxMenu *option_menu = NULL; | wxMenu *option_menu = NULL; | ||||
data_menu->Append(MENU_FORMAT_DICTIONARY, _("&Layout *_rules file")); | data_menu->Append(MENU_FORMAT_DICTIONARY, _("&Layout *_rules file")); | ||||
data_menu->Append(MENU_SORT_DICTIONARY, _("&Sort *_rules file")); | data_menu->Append(MENU_SORT_DICTIONARY, _("&Sort *_rules file")); | ||||
sprintf(buf,"Compile &dictionary '%s'",dict_name); | |||||
data_menu->SetLabel(MENU_COMPILE_DICT, wxString(buf,wxConvLocal)); | |||||
sprintf(buf,"&Layout '%s_rules' file",dict_name); | |||||
data_menu->SetLabel(MENU_FORMAT_DICTIONARY, wxString(buf,wxConvLocal)); | |||||
sprintf(buf,"&Sort '%s_rules' file",dict_name); | |||||
data_menu->SetLabel(MENU_SORT_DICTIONARY, wxString(buf,wxConvLocal)); | |||||
// OPTIONS MENU | // OPTIONS MENU | ||||
paths_menu = new wxMenu; | paths_menu = new wxMenu; | ||||
paths_menu->Append(MENU_PATH0, _("Master phonemes file...")); | paths_menu->Append(MENU_PATH0, _("Master phonemes file...")); |
// phoneme properties | // phoneme properties | ||||
// bits 16-19 give place of articulation | // bits 16-19 give place of articulation | ||||
#define phARTICULATION 0xf0000 | |||||
#define phWAVE 0x01 | #define phWAVE 0x01 | ||||
#define phUNSTRESSED 0x02 | #define phUNSTRESSED 0x02 | ||||
#define phFORTIS 0x08 | #define phFORTIS 0x08 | ||||
#define phBRKAFTER 0x4000 // [*] add a post-pause | #define phBRKAFTER 0x4000 // [*] add a post-pause | ||||
#define phBEFOREPAUSE 0x8000 // replace with the link_out phoneme if the next phoneme is a pause | #define phBEFOREPAUSE 0x8000 // replace with the link_out phoneme if the next phoneme is a pause | ||||
#define phNONSYLLABIC 0x100000 // don't count this vowel as a syllable when finding the stress position | #define phNONSYLLABIC 0x100000 // don't count this vowel as a syllable when finding the stress position | ||||
#define phLONG 0x200000 | #define phLONG 0x200000 | ||||
#define phLENGTHENSTOP 0x400000 // make the pre-pause slightly longer | #define phLENGTHENSTOP 0x400000 // make the pre-pause slightly longer |
// Open the Prosody display window | // Open the Prosody display window | ||||
// Make another frame, containing a canvas | // Make another frame, containing a canvas | ||||
int h, w, w2; | |||||
if(prosodyframe != NULL) | if(prosodyframe != NULL) | ||||
{ | { | ||||
// The Prosody window is already open | // The Prosody window is already open | ||||
return; | return; | ||||
} | } | ||||
m_leftWindow->GetSize(&w2, &h); | |||||
GetClientSize(&w, &h); | |||||
prosodyframe = new ChildFrProsody(myframe, _T(""), | prosodyframe = new ChildFrProsody(myframe, _T(""), | ||||
wxPoint(10, 200), wxSize(1000, 300), | |||||
wxPoint(0, 100), wxSize(w-w2, 420), | |||||
wxDEFAULT_FRAME_STYLE | | wxDEFAULT_FRAME_STYLE | | ||||
wxNO_FULL_REPAINT_ON_RESIZE); | wxNO_FULL_REPAINT_ON_RESIZE); | ||||
prosodycanvas = canvas; | prosodycanvas = canvas; | ||||
// Associate the menu bar with the frame | // Associate the menu bar with the frame | ||||
prosodyframe->SetMenuBar(MakeMenu(2)); | |||||
prosodyframe->SetMenuBar(MakeMenu(2,translator->dictionary_name)); | |||||
prosodyframe->prosodycanvas = canvas; | prosodyframe->prosodycanvas = canvas; | ||||
prosodyframe->Show(TRUE); | prosodyframe->Show(TRUE); | ||||
#include "phoneme.h" | #include "phoneme.h" | ||||
#include "synthesize.h" | #include "synthesize.h" | ||||
#include "voice.h" | #include "voice.h" | ||||
#include "translate.h" | |||||
#include "spect.h" | #include "spect.h" | ||||
#include "options.h" | #include "options.h" | ||||
SpectSeq *spectseq; | SpectSeq *spectseq; | ||||
wxString leaf; | wxString leaf; | ||||
wxString pathload; | wxString pathload; | ||||
int width, height; | |||||
if(event.GetId() == MENU_SPECTRUM) | if(event.GetId() == MENU_SPECTRUM) | ||||
pathload = path_spectload; | pathload = path_spectload; | ||||
else | else | ||||
path_spectload2 = path.GetPath(); | path_spectload2 = path.GetPath(); | ||||
// Make another frame, containing a canvas | |||||
// Make another frame, containing a canvas | |||||
GetClientSize(&width, &height); | |||||
MyChild *subframe = new MyChild(myframe, _T("Spectrum"), | MyChild *subframe = new MyChild(myframe, _T("Spectrum"), | ||||
wxPoint(10, 10), wxSize(300, 300), | |||||
wxDEFAULT_FRAME_STYLE | wxMAXIMIZE | | |||||
wxPoint(10, 0), wxSize(500, height), | |||||
wxDEFAULT_FRAME_STYLE | | |||||
wxNO_FULL_REPAINT_ON_RESIZE); | wxNO_FULL_REPAINT_ON_RESIZE); | ||||
subframe->SetTitle(leaf); | subframe->SetTitle(leaf); | ||||
// Give it a status line | // Give it a status line | ||||
subframe->CreateStatusBar(); | subframe->CreateStatusBar(); | ||||
int width, height; | |||||
subframe->GetClientSize(&width, &height); | subframe->GetClientSize(&width, &height); | ||||
SpectDisplay *canvas = new SpectDisplay(subframe, wxPoint(0, 0), wxSize(width, height), spectseq); | SpectDisplay *canvas = new SpectDisplay(subframe, wxPoint(0, 0), wxSize(width, height), spectseq); | ||||
canvas->savepath = filename; | canvas->savepath = filename; | ||||
currentcanvas = canvas; | currentcanvas = canvas; | ||||
// Associate the menu bar with the frame | // Associate the menu bar with the frame | ||||
subframe->SetMenuBar(MakeMenu(1)); | |||||
subframe->SetMenuBar(MakeMenu(1,translator->dictionary_name)); | |||||
subframe->canvas = canvas; | subframe->canvas = canvas; | ||||
subframe->Show(TRUE); | subframe->Show(TRUE); | ||||
memset(&fmtp, 0, sizeof(fmtp)); | memset(&fmtp, 0, sizeof(fmtp)); | ||||
InterpretPhoneme(NULL, 0, p, &phdata); | InterpretPhoneme(NULL, 0, p, &phdata); | ||||
fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | ||||
fmtp.fmt_length = phdata.sound_param[pd_FMT]; | |||||
len = DoSpect2(p->ph, 0, &fmtp, p, -1); | len = DoSpect2(p->ph, 0, &fmtp, p, -1); | ||||
// len = DoSpect(p->ph,prev->ph,phoneme_tab[phonPAUSE],2,p,-1); | // len = DoSpect(p->ph,prev->ph,phoneme_tab[phonPAUSE],2,p,-1); | ||||
len = (len * 1000)/samplerate; | len = (len * 1000)/samplerate; |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
const char *version_string = "1.43.52 04.Jul.10"; | |||||
const int version_phdata = 0x014351; | |||||
const char *version_string = "1.43.57 18.Jul.10"; | |||||
const int version_phdata = 0x014354; | |||||
int option_device_number = -1; | int option_device_number = -1; | ||||
FILE *f_logespeak = NULL; | FILE *f_logespeak = NULL; | ||||
} | } | ||||
} | } | ||||
else | else | ||||
if(instn2 == 4) | |||||
if(instn2 ==pd_ADDWAV) | |||||
{ | { | ||||
// addWav(), return if previous instruction was FMT() or WAV() | // addWav(), return if previous instruction was FMT() or WAV() | ||||
end_flag--; | end_flag--; | ||||
} | } | ||||
if((instn2 != 1) && (instn2 != 4)) | |||||
if((instn2 == pd_VWLSTART) || (instn2 == pd_VWLEND)) | |||||
{ | { | ||||
// FMT, VowelStart or VowelEnding. | |||||
// VowelStart or VowelEnding. | |||||
phdata->sound_param[instn2] = param_sc; // sign extend | phdata->sound_param[instn2] = param_sc; // sign extend | ||||
} | } | ||||
} | } |
static int pitch_length; | static int pitch_length; | ||||
static int amp_length; | static int amp_length; | ||||
static int modn_flags; | static int modn_flags; | ||||
static int fmt_amplitude=0; | |||||
static int syllable_start; | static int syllable_start; | ||||
static int syllable_end; | static int syllable_end; | ||||
wcmdq[wcmdq_tail][1] = len; | wcmdq[wcmdq_tail][1] = len; | ||||
WcmdqInc(); | WcmdqInc(); | ||||
last_frame = NULL; | last_frame = NULL; | ||||
if(fmt_amplitude != 0) | |||||
{ | |||||
wcmdq[wcmdq_tail][0] = WCMD_FMT_AMPLITUDE; | |||||
wcmdq[wcmdq_tail][1] = fmt_amplitude = 0; | |||||
WcmdqInc(); | |||||
} | |||||
} // end of DoPause | } // end of DoPause | ||||
int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, PHONEME_LIST *plist, int modulation) | int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, PHONEME_LIST *plist, int modulation) | ||||
{//======================================================================================================== | {//======================================================================================================== | ||||
// which 0 not a vowel, 1 start of vowel, 2 body and end of vowel | |||||
// which: 0 not a vowel, 1 start of vowel, 2 body and end of vowel | |||||
// length_mod: 256 = 100% | // length_mod: 256 = 100% | ||||
// modulation: -1 = don't write to wcmdq | // modulation: -1 = don't write to wcmdq | ||||
if(frames == NULL) | if(frames == NULL) | ||||
return(0); // not found | return(0); // not found | ||||
if(fmt_params->fmt_amp != fmt_amplitude) | |||||
{ | |||||
// an amplitude adjustment is specified for this sequence | |||||
q = wcmdq[wcmdq_tail]; | |||||
q[0] = WCMD_FMT_AMPLITUDE; | |||||
q[1] = fmt_amplitude = fmt_params->fmt_amp; | |||||
WcmdqInc(); | |||||
} | |||||
frame1 = frames[0].frame; | frame1 = frames[0].frame; | ||||
if(voice->klattv[0]) | if(voice->klattv[0]) | ||||
wcmd_spect = WCMD_KLATT; | wcmd_spect = WCMD_KLATT; | ||||
total_len += len; | total_len += len; | ||||
} | } | ||||
} | } | ||||
if((which != 1) && (fmt_amplitude != 0)) | |||||
{ | |||||
q = wcmdq[wcmdq_tail]; | |||||
q[0] = WCMD_FMT_AMPLITUDE; | |||||
q[1] = fmt_amplitude = 0; | |||||
WcmdqInc(); | |||||
} | |||||
return(total_len); | return(total_len); | ||||
} // end of DoSpect | } // end of DoSpect | ||||
// a period of voicing before the release | // a period of voicing before the release | ||||
InterpretPhoneme(NULL, 0x01, p, &phdata); | InterpretPhoneme(NULL, 0x01, p, &phdata); | ||||
fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | ||||
fmtp.fmt_length = phdata.sound_param[pd_FMT]; | |||||
fmtp.fmt_amp = phdata.sound_param[pd_FMT]; | |||||
DoSpect2(ph, 0, &fmtp, p, 0); | DoSpect2(ph, 0, &fmtp, p, 0); | ||||
if(p->synthflags & SFLAG_LENGTHEN) | if(p->synthflags & SFLAG_LENGTHEN) | ||||
} | } | ||||
InterpretPhoneme(NULL,0, p, &phdata); | InterpretPhoneme(NULL,0, p, &phdata); | ||||
fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | ||||
fmtp.fmt_length = phdata.sound_param[pd_FMT]; | |||||
fmtp.fmt_amp = phdata.sound_param[pd_FMT]; | |||||
fmtp.wav_addr = phdata.sound_addr[pd_ADDWAV]; | fmtp.wav_addr = phdata.sound_addr[pd_ADDWAV]; | ||||
fmtp.wav_amp = phdata.sound_param[pd_ADDWAV]; | fmtp.wav_amp = phdata.sound_param[pd_ADDWAV]; | ||||
DoSpect2(ph, 0, &fmtp, p, 0); | DoSpect2(ph, 0, &fmtp, p, 0); | ||||
memset(&fmtp, 0, sizeof(fmtp)); | memset(&fmtp, 0, sizeof(fmtp)); | ||||
fmtp.std_length = phdata.pd_param[i_SET_LENGTH]*2; | fmtp.std_length = phdata.pd_param[i_SET_LENGTH]*2; | ||||
fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | ||||
fmtp.fmt_length = phdata.sound_param[pd_FMT]; | |||||
fmtp.fmt_amp = phdata.sound_param[pd_FMT]; | |||||
fmtp.wav_addr = phdata.sound_addr[pd_ADDWAV]; | fmtp.wav_addr = phdata.sound_addr[pd_ADDWAV]; | ||||
fmtp.wav_amp = phdata.sound_param[pd_ADDWAV]; | fmtp.wav_amp = phdata.sound_param[pd_ADDWAV]; | ||||
InterpretPhoneme(NULL,0, p, &phdata); | InterpretPhoneme(NULL,0, p, &phdata); | ||||
fmtp.std_length = phdata.pd_param[i_SET_LENGTH]*2; | fmtp.std_length = phdata.pd_param[i_SET_LENGTH]*2; | ||||
fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | ||||
fmtp.fmt_length = phdata.sound_param[pd_FMT]; | |||||
fmtp.fmt_amp = phdata.sound_param[pd_FMT]; | |||||
if(next->type==phVOWEL) | if(next->type==phVOWEL) | ||||
{ | { | ||||
InterpretPhoneme(NULL, 0, p, &phdata); | InterpretPhoneme(NULL, 0, p, &phdata); | ||||
fmtp.std_length = phdata.pd_param[i_SET_LENGTH]*2; | fmtp.std_length = phdata.pd_param[i_SET_LENGTH]*2; | ||||
fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | ||||
fmtp.fmt_length = phdata.sound_param[pd_FMT]; | |||||
fmtp.fmt_amp = phdata.sound_param[pd_FMT]; | |||||
fmtp.wav_addr = phdata.sound_addr[pd_ADDWAV]; | fmtp.wav_addr = phdata.sound_addr[pd_ADDWAV]; | ||||
fmtp.wav_amp = phdata.sound_param[pd_ADDWAV]; | fmtp.wav_amp = phdata.sound_param[pd_ADDWAV]; | ||||
DoSpect2(p->ph, 0, &fmtp, p, modulation); | DoSpect2(p->ph, 0, &fmtp, p, modulation); | ||||
fmtp.use_vowelin = 1; | fmtp.use_vowelin = 1; | ||||
fmtp.fmt_control = 1; | fmtp.fmt_control = 1; | ||||
fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | ||||
// fmtp.fmt_length = phdata.sound_param[pd_FMT]; | |||||
} | } | ||||
fmtp.fmt_amp = phdata.sound_param[pd_FMT]; | |||||
pitch_env = envelope_data[p->env]; | pitch_env = envelope_data[p->env]; | ||||
amp_env = NULL; | amp_env = NULL; | ||||
if(p->tone_ph != 0) | if(p->tone_ph != 0) | ||||
} | } | ||||
fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; | ||||
fmtp.fmt_length = phdata.sound_param[pd_FMT]; | |||||
fmtp.fmt_amp = phdata.sound_param[pd_FMT]; | |||||
fmtp.transition0 = 0; | fmtp.transition0 = 0; | ||||
fmtp.transition1 = 0; | fmtp.transition1 = 0; | ||||
int amplitude; | int amplitude; | ||||
int amplitude_v; | int amplitude_v; | ||||
int amplitude_fmt; // percentage amplitude adjustment for formant synthesis | |||||
} WGEN_DATA; | } WGEN_DATA; | ||||
int use_vowelin; | int use_vowelin; | ||||
int fmt_addr; | int fmt_addr; | ||||
int fmt_length; | int fmt_length; | ||||
int fmt_amp; | |||||
int fmt2_addr; | int fmt2_addr; | ||||
int fmt2_lenadj; | int fmt2_lenadj; | ||||
int wav_addr; | int wav_addr; | ||||
#define WCMD_VOICE 11 | #define WCMD_VOICE 11 | ||||
#define WCMD_EMBEDDED 12 | #define WCMD_EMBEDDED 12 | ||||
#define WCMD_MBROLA_DATA 13 | #define WCMD_MBROLA_DATA 13 | ||||
#define WCMD_FMT_AMPLITUDE 14 | |||||
#define N_WCMDQ 160 | #define N_WCMDQ 160 |
static void SetLetterVowel(Translator *tr, int c) | static void SetLetterVowel(Translator *tr, int c) | ||||
{//============================================== | {//============================================== | ||||
tr->letter_bits[c] = (tr->letter_bits[c] & 0x40) | 0x81; // keep value for group 6 (front vowels e,i,y) | tr->letter_bits[c] = (tr->letter_bits[c] & 0x40) | 0x81; // keep value for group 6 (front vowels e,i,y) | ||||
tr->langopts.accents = 2; // Say "Capital" after the letter. | tr->langopts.accents = 2; // Say "Capital" after the letter. | ||||
tr->langopts.vowel_pause = 0; | tr->langopts.vowel_pause = 0; | ||||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL | NUM_DFRACTION_4; | |||||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_NOPAUSE | NUM_ROMAN | NUM_ROMAN_CAPITALS | NUM_ROMAN_AFTER | NUM_VIGESIMAL | NUM_DFRACTION_4; | |||||
SetLetterVowel(tr,'y'); | SetLetterVowel(tr,'y'); | ||||
} | } | ||||
break; | break; | ||||
tr->langopts.spelling_stress = 1; | tr->langopts.spelling_stress = 1; | ||||
tr->langopts.accents = 1; | tr->langopts.accents = 1; | ||||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_DECIMAL_COMMA | NUM_THOUS_SPACE | NUM_DFRACTION_2 | NUM_ROMAN_UC; | |||||
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_DECIMAL_COMMA | NUM_THOUS_SPACE | NUM_DFRACTION_2 | NUM_ROMAN_CAPITALS; | |||||
tr->langopts.numbers2 = 0x4a; // variant numbers before thousands,milliards | tr->langopts.numbers2 = 0x4a; // variant numbers before thousands,milliards | ||||
tr->langopts.replace_chars = replace_cyrillic_latin; | tr->langopts.replace_chars = replace_cyrillic_latin; | ||||
{ | { | ||||
// either all upper or all lower case | // either all upper or all lower case | ||||
if((tr->langopts.numbers & NUM_ROMAN) || ((tr->langopts.numbers & NUM_ROMAN_UC) && (wflags & FLAG_ALL_UPPER))) | |||||
if((tr->langopts.numbers & NUM_ROMAN) || ((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && (wflags & FLAG_ALL_UPPER))) | |||||
{ | { | ||||
if((found = TranslateRoman(tr, word1, phonemes, wtab)) != 0) | if((found = TranslateRoman(tr, word1, phonemes, wtab)) != 0) | ||||
dictionary_flags[0] |= FLAG_ABBREV; // prevent emphasis if capitals | dictionary_flags[0] |= FLAG_ABBREV; // prevent emphasis if capitals | ||||
// find a remainder that we can pronounce. | // find a remainder that we can pronounce. | ||||
emphasize_allcaps = 0; | emphasize_allcaps = 0; | ||||
if(wordx[0] == '\'') | |||||
break; | |||||
if(posn > 0) | if(posn > 0) | ||||
non_initial = 1; | non_initial = 1; | ||||
return(0); | return(0); | ||||
} | } | ||||
#ifdef deleted | |||||
p = &wordx[word_length-3]; // this looks wrong. Doesn't consider multi-byte chars. | p = &wordx[word_length-3]; // this looks wrong. Doesn't consider multi-byte chars. | ||||
if(memcmp(p,"'s ",3) == 0) | if(memcmp(p,"'s ",3) == 0) | ||||
{ | { | ||||
p[1] = ' '; | p[1] = ' '; | ||||
last_char = p[-1]; | last_char = p[-1]; | ||||
} | } | ||||
#endif | |||||
length=0; | length=0; | ||||
while(wordx[length] != ' ') length++; | while(wordx[length] != ' ') length++; | ||||
} | } | ||||
// anything left ? | // anything left ? | ||||
if(*wordx != ' ') | if(*wordx != ' ') | ||||
{ | { | ||||
if(unpron_phonemes[0] != 0) | |||||
if((unpron_phonemes[0] != 0) && (wordx[0] != '\'')) | |||||
{ | { | ||||
// letters which have been spoken individually from affecting the pronunciation of the pronuncable part | // letters which have been spoken individually from affecting the pronunciation of the pronuncable part | ||||
wordx[-1] = ' '; | wordx[-1] = ' '; | ||||
else | else | ||||
{ | { | ||||
if(end_flags & FLAG_SUFX) | if(end_flags & FLAG_SUFX) | ||||
TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, NULL,wflags | FLAG_SUFFIX_REMOVED, dictionary_flags); | |||||
else | |||||
TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, NULL,wflags,dictionary_flags); | |||||
wflags |= FLAG_SUFFIX_REMOVED; | |||||
if(end_type & SUFX_A) | |||||
wflags |= FLAG_SUFFIX_VOWEL; | |||||
TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, NULL, wflags, dictionary_flags); | |||||
if(phonemes[0] == phonSWITCH) | if(phonemes[0] == phonSWITCH) | ||||
{ | { |
#define FLAG_COMMA_AFTER 0x20000 // comma after this word | #define FLAG_COMMA_AFTER 0x20000 // comma after this word | ||||
#define FLAG_MULTIPLE_SPACES 0x40000 // word is preceded by multiple spaces, newline, or tab | #define FLAG_MULTIPLE_SPACES 0x40000 // word is preceded by multiple spaces, newline, or tab | ||||
#define FLAG_SUFFIX_VOWEL 0x08000000 // remember an initial vowel from the suffix | |||||
#define FLAG_NO_TRACE 0x10000000 // passed to TranslateRules() to suppress dictionary lookup printout | #define FLAG_NO_TRACE 0x10000000 // passed to TranslateRules() to suppress dictionary lookup printout | ||||
#define FLAG_NO_PREFIX 0x20000000 | #define FLAG_NO_PREFIX 0x20000000 | ||||
#define SUFX_Q 0x4000 // don't retranslate | #define SUFX_Q 0x4000 // don't retranslate | ||||
#define SUFX_T 0x10000 // don't affect the stress position in the stem | #define SUFX_T 0x10000 // don't affect the stress position in the stem | ||||
#define SUFX_B 0x20000 // break, this character breaks the word into stem and suffix (used with SUFX_P) | #define SUFX_B 0x20000 // break, this character breaks the word into stem and suffix (used with SUFX_P) | ||||
#define SUFX_A 0x40000 // remember that the suffix starts with a vowel | |||||
#define FLAG_ALLOW_TEXTMODE 0x02 // allow dictionary to translate to text rather than phonemes | #define FLAG_ALLOW_TEXTMODE 0x02 // allow dictionary to translate to text rather than phonemes | ||||
#define FLAG_SUFX 0x04 | #define FLAG_SUFX 0x04 | ||||
#define NUM_DFRACTION_3 0x6000 | #define NUM_DFRACTION_3 0x6000 | ||||
#define NUM_DFRACTION_4 0x8000 | #define NUM_DFRACTION_4 0x8000 | ||||
#define NUM_DFRACTION_5 0xa000 | #define NUM_DFRACTION_5 0xa000 | ||||
#define NUM_ORDINAL_DOT 0x10000 | |||||
#define NUM_ROMAN 0x20000 | |||||
#define NUM_ROMAN_UC 0x40000 | |||||
#define NUM_NOPAUSE 0x80000 | |||||
#define NUM_AND_HUNDRED 0x100000 | |||||
#define NUM_ROMAN_AFTER 0x200000 | |||||
#define NUM_VIGESIMAL 0x400000 | |||||
#define NUM_ROMAN_ORDINAL 0x800000 | |||||
#define NUM_ROMAN_CAPITALS 0x1000000 | |||||
#define NUM_THOUSAND_AND 0x2000000 | |||||
#define NUM_ORDINAL_DOT 0x10000 | |||||
#define NUM_NOPAUSE 0x20000 | |||||
#define NUM_AND_HUNDRED 0x40000 | |||||
#define NUM_THOUSAND_AND 0x80000 | |||||
#define NUM_VIGESIMAL 0x100000 | |||||
#define NUM_ROMAN 0x1000000 | |||||
#define NUM_ROMAN_CAPITALS 0x2000000 | |||||
#define NUM_ROMAN_AFTER 0x4000000 | |||||
#define NUM_ROMAN_ORDINAL 0x8000000 | |||||
// bits0-1=which numbers routine to use. | // bits0-1=which numbers routine to use. | ||||
// bit2= thousands separator must be space | // bit2= thousands separator must be space | ||||
// bit11=say 19** as nineteen hundred | // bit11=say 19** as nineteen hundred | ||||
// bit12=allow space as thousands separator (in addition to langopts.thousands_sep) | // bit12=allow space as thousands separator (in addition to langopts.thousands_sep) | ||||
// bits13-15 post-decimal-digits 0=single digits, 1=(LANG=it) 2=(LANG=pl) 3=(LANG=ro) | // bits13-15 post-decimal-digits 0=single digits, 1=(LANG=it) 2=(LANG=pl) 3=(LANG=ro) | ||||
// bit16=dot after number indicates ordinal | |||||
// bit17=recognize roman numbers | |||||
// bit18=Roman numbers only if upper case | |||||
// bit19=don't add pause after a number | |||||
// bit20='and' before hundreds | |||||
// bit21= say "roman" after the number, not before | |||||
// bit22= vigesimal number, if tens are not found | |||||
// bit23=Roman numbers are ordinal numbers | |||||
// bit24=Roman numbers must be capital letters | |||||
// bit25='and' after thousands if there are no hundreds | |||||
// bit16= dot after number indicates ordinal | |||||
// bit17= don't add pause after a number | |||||
// bit18= 'and' before hundreds | |||||
// bit19= 'and' after thousands if there are no hundreds | |||||
// bit20= vigesimal number, if tens are not found | |||||
// bit24= recognize roman numbers | |||||
// bit25= Roman numbers only if upper case | |||||
// bit26= say "roman" after the number, not before | |||||
// bit27= Roman numbers are ordinal numbers | |||||
int numbers; | int numbers; | ||||
// bits 1-4 use variant form of numbers before thousands,millions,etc. | // bits 1-4 use variant form of numbers before thousands,millions,etc. | ||||
int translator_name; | int translator_name; | ||||
int transpose_max; | int transpose_max; | ||||
int transpose_min; | int transpose_min; | ||||
char dictionary_name[40]; | |||||
char phon_out[300]; | char phon_out[300]; | ||||
char phonemes_repeat[20]; | char phonemes_repeat[20]; |
t_phonetic = new wxTextCtrl(this,T_PHONETIC,_T(""),wxPoint(0,262), | t_phonetic = new wxTextCtrl(this,T_PHONETIC,_T(""),wxPoint(0,262), | ||||
wxSize(298,height_ph),wxTE_MULTILINE | wxTE_READONLY,wxDefaultValidator,_T("Phoneme translation window")); | |||||
wxSize(298,height_ph),wxTE_MULTILINE | wxTE_READONLY, wxDefaultValidator,_T("Phoneme translation window")); | |||||
style_phonetic = t_phonetic->GetDefaultStyle(); | style_phonetic = t_phonetic->GetDefaultStyle(); | ||||
font_phonetic = style_phonetic.GetFont(); | font_phonetic = style_phonetic.GetFont(); | ||||
font_size = font_phonetic.GetPointSize(); | font_size = font_phonetic.GetPointSize(); | ||||
font_phonetic_large = font_phonetic; | font_phonetic_large = font_phonetic; | ||||
style_phonetic_large = style_phonetic; | style_phonetic_large = style_phonetic; | ||||
//font_phonetic_large.SetFamily(wxFONTFAMILY_SWISS); | |||||
font_phonetic_large.SetPointSize(font_size+1); | font_phonetic_large.SetPointSize(font_size+1); | ||||
style_phonetic_large.SetFont(font_phonetic_large); | style_phonetic_large.SetFont(font_phonetic_large); | ||||
max_hval = 0; | max_hval = 0; | ||||
wdata.amplitude = 32; | wdata.amplitude = 32; | ||||
wdata.amplitude_fmt = 100; | |||||
for(ix=0; ix<N_EMBEDDED_VALUES; ix++) | for(ix=0; ix<N_EMBEDDED_VALUES; ix++) | ||||
embedded_value[ix] = embedded_default[ix]; | embedded_value[ix] = embedded_default[ix]; | ||||
maxh2 = PeaksToHarmspect(peaks, wdata.pitch<<4, hspect[0], 0); | maxh2 = PeaksToHarmspect(peaks, wdata.pitch<<4, hspect[0], 0); | ||||
// adjust amplitude to compensate for fewer harmonics at higher pitch | // adjust amplitude to compensate for fewer harmonics at higher pitch | ||||
amplitude2 = (wdata.amplitude * wdata.pitch)/(100 << 11); | |||||
// amplitude2 = (wdata.amplitude * wdata.pitch)/(100 << 11); | |||||
amplitude2 = (wdata.amplitude * (wdata.pitch >> 8) * wdata.amplitude_fmt)/(10000 << 3); | |||||
// switch sign of harmonics above about 900Hz, to reduce max peak amplitude | // switch sign of harmonics above about 900Hz, to reduce max peak amplitude | ||||
h_switch_sign = 890 / (wdata.pitch >> 12); | h_switch_sign = 890 / (wdata.pitch >> 12); | ||||
} | } | ||||
// adjust amplitude to compensate for fewer harmonics at higher pitch | // adjust amplitude to compensate for fewer harmonics at higher pitch | ||||
amplitude2 = (wdata.amplitude * wdata.pitch)/(100 << 11); | |||||
// amplitude2 = (wdata.amplitude * wdata.pitch)/(100 << 11); | |||||
amplitude2 = (wdata.amplitude * (wdata.pitch >> 8) * wdata.amplitude_fmt)/(10000 << 3); | |||||
if(glottal_flag > 0) | if(glottal_flag > 0) | ||||
{ | { | ||||
general_amplitude = GetAmplitude(); | general_amplitude = GetAmplitude(); | ||||
break; | break; | ||||
case EMBED_F: // emphasiis | |||||
case EMBED_F: // emphasis | |||||
general_amplitude = GetAmplitude(); | general_amplitude = GetAmplitude(); | ||||
break; | break; | ||||
echo_complete -= length; | echo_complete -= length; | ||||
} | } | ||||
wdata.n_mix_wavefile = 0; | wdata.n_mix_wavefile = 0; | ||||
wdata.amplitude_fmt = 100; | |||||
KlattReset(1); | KlattReset(1); | ||||
result = PlaySilence(length,resume); | result = PlaySilence(length,resume); | ||||
break; | break; | ||||
case WCMD_MBROLA_DATA: | case WCMD_MBROLA_DATA: | ||||
result = MbrolaFill(length, resume); | result = MbrolaFill(length, resume); | ||||
break; | break; | ||||
case WCMD_FMT_AMPLITUDE: | |||||
if((wdata.amplitude_fmt = q[1]) == 0) | |||||
wdata.amplitude_fmt = 100; // percentage, but value=0 means 100% | |||||
break; | |||||
} | } | ||||
if(result==0) | if(result==0) |