More fixes for &--; sequences. lang=es: use phoneme [O] for letter 'o' except at end of word. leng=es: attempt to improve single 'r' between two vowels. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@139 d46cf337-b52f-0410-862d-fd96e6ae7743master
Dictionary es_dict | Dictionary es_dict | ||||
@- a aI e E eI eU i | @- a aI e E eI eU i | ||||
o oI u | |||||
o O oI u | |||||
* ** b B d D f g | |||||
j J J^ k l l^ m n | |||||
n^ p Q r R s t T | |||||
tS v w x | |||||
* ** : b B d D f | |||||
g j J J^ k l l^ m | |||||
n n^ p Q r R s t | |||||
T tS v w x | |||||
Dictionary fi_dict | Dictionary fi_dict | ||||
uai y | uai y | ||||
(u) : f h j k kh l | (u) : f h j k kh l | ||||
m n N p ph r s S# | |||||
s. S; t th ts ts. ts. tS; | |||||
tS; tsh v w x z z. | |||||
m n N p ph r s s. | |||||
S; t th ts ts. ts. tS; tS; | |||||
tsh v w x z z. | |||||
Dictionary jbo_dict | Dictionary jbo_dict |
// letters | // letters | ||||
_cap m'aJ^us | _cap m'aJ^us | ||||
_?? s'imbolo | |||||
_?? s'imbOlo | |||||
_#32 Esp'aTjo | _#32 Esp'aTjo | ||||
// names of symbols | // names of symbols | ||||
_. punto | _. punto | ||||
_, koma | |||||
_; p,untoik'oma | |||||
_: d,osp'untos | |||||
_! TE*R'aRaDmi**aTj'on | |||||
_? TE*R'aRintE*R,oQaTj'on | |||||
_¡ aB@-*'iRaDmi**aTj'on | |||||
_¿ aB@-*'iRintE*R,oQaTj'on | |||||
_, kOma | |||||
_; p,untOik'Oma | |||||
_: d,Osp'untOs | |||||
_! TE*R'aRaDmi**aTj'On | |||||
_? TE*R'aRintE*R,OQaTj'On | |||||
_¡ aB@-*'iRaDmi**aTj'On | |||||
_¿ aB@-*'iRintE*R,OQaTj'On | |||||
_= iQw'al | _= iQw'al | ||||
_< mEn'oRke | |||||
_> maJ^'oRke | |||||
_' apost@-*'ofo | |||||
_" kom'iJ^as | |||||
_+ s'iQnodesum'aR | |||||
_$ dolar | |||||
_# almoaD'il^a | |||||
_< mEn'ORke | |||||
_> maJ^'ORke | |||||
_' apOst@-*'Ofo | |||||
_" kOm'iJ^as | |||||
_+ s'iQnOdesum'aR | |||||
_$ dOlar | |||||
_# almOaD'il^a | |||||
_* astE*'isko | _* astE*'isko | ||||
_- gJ^on | |||||
_- gJ^On | |||||
__ suB@-*aJ^'aDo | __ suB@-*aJ^'aDo | ||||
_/ ba*Ra | _/ ba*Ra | ||||
_\ b'a*RaimbERt'iDa | _\ b'a*RaimbERt'iDa | ||||
_` aT'Entog@-*'aBe | |||||
_` aT'EntOg@-*'aBe | |||||
_( ,aB@-*epa**'EntEsis | _( ,aB@-*epa**'EntEsis | ||||
_) Tj,E*Rapa**'EntEsis | _) Tj,E*Rapa**'EntEsis | ||||
_[ ,aB@-*ekoRtS'Ete | |||||
_] Tj,E*RakoRtS'Ete | |||||
_[ ,aB@-*ekORtS'Ete | |||||
_] Tj,E*RakORtS'Ete | |||||
_{ ,aB@-*eJ^'aBe | _{ ,aB@-*eJ^'aBe | ||||
_} Tj,E*RaJ^'aBe | _} Tj,E*RaJ^'aBe | ||||
_« kom'iJ^as||iTkJ^'ERDas | |||||
_» kom'iJ^as||dE**'EtSas | |||||
_« kOm'iJ^as||iTkJ^'ERDas | |||||
_» kOm'iJ^as||dE**'EtSas | |||||
^ TiRkumfl'Exo | ^ TiRkumfl'Exo | ||||
€ eU*o | € eU*o | ||||
% porTj'Ento | |||||
% pOrTj'Ento | |||||
& ampERs'ant | & ampERs'ant | ||||
@ a*R'oBa | |||||
@ a*R'OBa | |||||
/ ba*Ra | / ba*Ra | ||||
© kopi*R'aIt | |||||
© kOpi*R'aIt | |||||
£ liB@-*as | £ liB@-*as | ||||
¶ p'a*Rafo | ¶ p'a*Rafo | ||||
§ sEkTj'on | |||||
§ sEkTj'On | |||||
// numbers | // numbers | ||||
_0 TE*o | _0 TE*o | ||||
_1 'uno | _1 'uno | ||||
_2 d'os | |||||
_2 d'Os | |||||
_3 t@-*'es | _3 t@-*'es | ||||
_4 kw'at@-*o | _4 kw'at@-*o | ||||
_5 T'inko | _5 T'inko | ||||
_6 s'eIs | _6 s'eIs | ||||
_7 sj'Ete | _7 sj'Ete | ||||
_8 'otSo | |||||
_8 'OtSo | |||||
_9 nw'Eve | _9 nw'Eve | ||||
_1X dj'ET | _1X dj'ET | ||||
_11 'onTe | |||||
_12 d'oTe | |||||
_11 'OnTe | |||||
_12 d'OTe | |||||
_13 t@-*'ETe | _13 t@-*'ETe | ||||
_14 kat'oRTe | |||||
_14 kat'ORTe | |||||
_15 k'inTe | _15 k'inTe | ||||
_20 v'eInte | _20 v'eInte | ||||
_2X v'eInt | _2X v'eInt | ||||
_5X Tinkw'Enta | _5X Tinkw'Enta | ||||
_6X sEs'Enta | _6X sEs'Enta | ||||
_7X sEt'Enta | _7X sEt'Enta | ||||
_8X otS'Enta | |||||
_9X nov'Enta | |||||
_0C T'ientos | |||||
_8X OtS'Enta | |||||
_9X nOv'Enta | |||||
_0C T'ientOs | |||||
_1C0 T'ien // exactly one hundred | _1C0 T'ien // exactly one hundred | ||||
_1C T'iento | _1C T'iento | ||||
_5C kinj'Entos | |||||
_7C s,EtETj'Entos | |||||
_9C n,ovETj'Entos | |||||
_5C kinj'EntOs | |||||
_7C s,EtETj'EntOs | |||||
_9C n,OvETj'EntOs | |||||
_0M1 m'il | _0M1 m'il | ||||
_1M1 m'il // no '1' before thousand | _1M1 m'il // no '1' before thousand | ||||
_0M2 mil^'ones | |||||
_1M2 'unmil^'on | |||||
_0M4 _bil^'ones | |||||
_1M4 'unbil^'on | |||||
_0M2 mil^'Ones | |||||
_1M2 'unmil^'On | |||||
_0M4 _bil^'Ones | |||||
_1M4 'unbil^'On | |||||
_0and i | _0and i | ||||
_dpt koma | |||||
//_roman Rom'ano | |||||
_dpt kOma | |||||
//_roman ROm'ano | |||||
vi vi // not a Roman number | vi vi // not a Roman number | ||||
.group j | .group j | ||||
_) j (_ x'ota | |||||
_) j (_ x'Ota | |||||
j x | j x | ||||
.group o | .group o | ||||
_) o (_ o | _) o (_ o | ||||
o o | |||||
o O | |||||
o (_ o | |||||
oy (K oI | oy (K oI | ||||
oy (_ 'oI | oy (_ 'oI | ||||
.group p | .group p | ||||
_) p (_ pe | _) p (_ pe | ||||
p p | p p | ||||
p (t p: | |||||
.group q | .group q | ||||
.group w | .group w | ||||
_) w (_ ,uBe||d'oBle | |||||
_) w (_ ,uBe||d'OBle | |||||
w w | w w | ||||
.group x | .group x | ||||
_) x (_ Ekis | _) x (_ Ekis | ||||
x ks | x ks | ||||
A) x (A Qs | |||||
// A) x (A Qs // ?? | |||||
x (_ =Qs | x (_ =Qs | ||||
á ''a | á ''a | ||||
é ''E | é ''E | ||||
í ''i | í ''i | ||||
ó ''o | |||||
ó ''O | |||||
ú ''u | ú ''u | ||||
ü u | ü u | ||||
ñ n^ | ñ n^ | ||||
_)ñ (_ En^e | _)ñ (_ En^e | ||||
$ d'olar | |||||
$ d'Olar | |||||
+ m'as | + m'as | ||||
_) ++ (_ masm'as | _) ++ (_ masm'as | ||||
\+\+\+) + // ignore + after the first 3 | \+\+\+) + // ignore + after the first 3 | ||||
# almoaD'il^a | |||||
# almOaD'il^a | |||||
\#) # | \#) # | ||||
__) - (_D m'Enos | |||||
__) - (_D m'EnOs | |||||
A_) - (_D _ | A_) - (_D _ | ||||
C_) - (_D _ | C_) - (_D _ | ||||
--) - | --) - | ||||
. (. _: | . (. _: | ||||
\.) . | \.) . | ||||
, (D koma | |||||
, (D kOma |
// 2006-11-18 Gilles Casse <[email protected]> | // 2006-11-18 Gilles Casse <[email protected]> | ||||
// | // | ||||
// Updated 2008-02-08 Michel Such <[email protected]> | |||||
// Updated 2008-02-10 Michel Such <[email protected]> | |||||
// | // | ||||
// * Numbers, a few abbreviations and exceptions. | // * Numbers, a few abbreviations and exceptions. | ||||
// | // | ||||
adsl $abbrev | adsl $abbrev | ||||
alt $pause | alt $pause | ||||
amd $abbrev | amd $abbrev | ||||
anpe $abbrev | |||||
api $abbrev | api $abbrev | ||||
avh $abbrev | avh $abbrev | ||||
cci $abbrev | cci $abbrev | ||||
mr m@sjY | mr m@sjY | ||||
nti $abbrev | nti $abbrev | ||||
nvda $abbrev | nvda $abbrev | ||||
ong $abbrev | |||||
pci $abbrev | pci $abbrev | ||||
pda $abbrev | pda $abbrev | ||||
p.s postskRiptOm | p.s postskRiptOm | ||||
accident aksidA~ | accident aksidA~ | ||||
adéquat adekuat2 | adéquat adekuat2 | ||||
adéquate adekuat | adéquate adekuat | ||||
airbus Erbys | |||||
anus anys | |||||
any Eni | |||||
ardent aRdA~ | ardent aRdA~ | ||||
bissus bisys | |||||
bonus bonys | |||||
bus bys | bus bys | ||||
bus by $verb | |||||
campus kA~pys | |||||
casus kazys | |||||
choeur k@r | choeur k@r | ||||
cocus coky | |||||
discident disidA~ | discident disidA~ | ||||
eye aj | |||||
eyes ajz | |||||
fils fis | fils fis | ||||
imprudent E~pRydA~ | imprudent E~pRydA~ | ||||
juin ZyE~ | juin ZyE~ | ||||
malus malys | |||||
many mEni | |||||
mars maRs | mars maRs | ||||
minus minys | |||||
occident OksidA~ | occident OksidA~ | ||||
orient ORjA~ | orient ORjA~ | ||||
pays pEi | pays pEi | ||||
phallus falys | |||||
prudent pRydA~ | prudent pRydA~ | ||||
secret sYkRE | secret sYkRE | ||||
souris suri | souris suri | ||||
sus sys | |||||
sus sy $verb | |||||
to tu | |||||
vénus venys | |||||
mens mA~z2 | mens mA~z2 | ||||
// words from other languages | // words from other languages | ||||
about @bawt | about @bawt | ||||
acer asEr | |||||
amazon amaz'On | amazon amaz'On | ||||
(audible manager) od'ibl||manadZ'@r | (audible manager) od'ibl||manadZ'@r | ||||
be bi | be bi | ||||
klaxon klaksOn | klaxon klaksOn | ||||
leader li:d@R | leader li:d@R | ||||
let lEt | let lEt | ||||
link link | |||||
liszt list | liszt list | ||||
lite lajt | lite lajt | ||||
(mac os x) makoEsiks | (mac os x) makoEsiks | ||||
schubert SubER | schubert SubER | ||||
screamer skri:m@r | screamer skri:m@r | ||||
(search & destroy) s@:rS_||end_||dEsstrOj | (search & destroy) s@:rS_||end_||dEsstrOj | ||||
shrink Sr'ink | |||||
skype sk'ajp@- | skype sk'ajp@- | ||||
spybot spajbOt | spybot spajbOt | ||||
sun s@n | sun s@n |
// 2006-11-18 Gilles Casse <[email protected]> | // 2006-11-18 Gilles Casse <[email protected]> | ||||
// | // | ||||
// Updated: 2008-02-08 Michel Such <[email protected]> | |||||
// Updated: 2008-02-10 Michel Such <[email protected]> | |||||
// | // | ||||
// * The rules are based on Cicero TTS. | // * The rules are based on Cicero TTS. | ||||
// | // | ||||
em (me a // femme patiemment | em (me a // femme patiemment | ||||
em (b A~ // décembre | em (b A~ // décembre | ||||
em (m A~ // emmancher | em (m A~ // emmancher | ||||
em (manu e // emmanuel | |||||
em (p A~ | em (p A~ | ||||
en (_ A~n2 // en | en (_ A~n2 // en | ||||
en (hA A~n // enharmonique | en (hA A~n // enharmonique | ||||
_) h (arf _! // harfang | _) h (arf _! // harfang | ||||
_) h (argn _! // hargne | _) h (argn _! // hargne | ||||
_) h (ari _! // haricot haridelle | _) h (ari _! // haricot haridelle | ||||
_) h (ark _! // harka | |||||
_) h (arn _! // harnais | _) h (arn _! // harnais | ||||
_) h (arp _! // harpe | _) h (arp _! // harpe | ||||
_) h (as _! // hasard, hase | _) h (as _! // hasard, hase | ||||
_) h (âs _! // hâte | _) h (âs _! // hâte | ||||
_) h (au _! // haut | _) h (au _! // haut | ||||
_) h (av _! // havre | _) h (av _! // havre | ||||
_) h (eau _! // heaume | _) h (eau _! // heaume | ||||
_) h (él _! // hélas, héler | _) h (él _! // hélas, héler | ||||
_) h (èl _! // hèlement | _) h (èl _! // hèlement | ||||
_) h (êtr _! // hêtre, hêtraie | _) h (êtr _! // hêtre, hêtraie | ||||
_) h (eula _! // heulandite | _) h (eula _! // heulandite | ||||
_) h (eurt _! // heurter | _) h (eurt _! // heurter | ||||
_) h (iat _! // hiatal, hiatus | _) h (iat _! // hiatal, hiatus | ||||
_) h (ibo _! // hibou | _) h (ibo _! // hibou | ||||
_) h (ic _! // hic | _) h (ic _! // hic | ||||
_) h (i-han _! // hi-han | _) h (i-han _! // hi-han | ||||
_) h (iss _! // hisser | _) h (iss _! // hisser | ||||
_) h (it _! // hit, hit-parad | _) h (it _! // hit, hit-parad | ||||
_) h (ob _! // hobby, hobereau | _) h (ob _! // hobby, hobereau | ||||
_) h (och _! // hocher | _) h (och _! // hocher | ||||
_) h (ock _! // hockey | _) h (ock _! // hockey | ||||
_) h (ou _! // houle, housse | _) h (ou _! // houle, housse | ||||
_) h (u _! | _) h (u _! | ||||
_) h (uil // huile | |||||
_) h (uiss // huissier | _) h (uiss // huissier | ||||
_) h (uî // huître | _) h (uî // huître | ||||
_) h (umain // humain | _) h (umain // humain | ||||
ing (_ iN // parking | ing (_ iN // parking | ||||
in (h in // inhumain | in (h in // inhumain | ||||
inct (_ E~ // distinct | inct (_ E~ // distinct | ||||
ink (_ ink // link, pink | |||||
in (n i // innombrable | in (n i // innombrable | ||||
in (C E~ // vingt | in (C E~ // vingt | ||||
// in (_ E~ // vin | // in (_ E~ // vin | ||||
o (che_ O // poche, cloche | o (che_ O // poche, cloche | ||||
oe (ll wa // moelleux | oe (ll wa // moelleux | ||||
_) oe (C Y // oesophage | _) oe (C Y // oesophage | ||||
_ph) oe (t Y // phoetus | |||||
oeu @ // soeur coeur | oeu @ // soeur coeur | ||||
oeufs @ // oeufs boeufs | oeufs @ // oeufs boeufs | ||||
o (eC o // coefficient | o (eC o // coefficient | ||||
xpan) s (A s // expansion | xpan) s (A s // expansion | ||||
ibu) s (_ s | |||||
_u) s (_ s | |||||
Cu) s (_ | |||||
Abu) s (_ s | |||||
_Abu) s (_ | |||||
mbu) s (_ s | mbu) s (_ s | ||||
cu) s (_ s // focus phallus cumulus minus | |||||
iu) s (_ s | |||||
Acu) s (_ s | |||||
écu) s (_ | |||||
odu) s (_ s | |||||
gu) s (_ s | |||||
igu) s (_ // aigus | |||||
iu) s (_ s // radius | |||||
ïu) s (_ s // laïus | |||||
Culu) s (_ s // cumulus | |||||
plu) s (_ z2 // plus, surplus | |||||
mu) s (_ s | mu) s (_ s | ||||
nu) s (_ s | |||||
pu) s (_ s | |||||
llu) s (_ s | |||||
ulu) s (_ s | |||||
_mu) s (_ | |||||
ému) s (_ | |||||
opu) s (_ s // opus, octopus | |||||
Aru) s (_ s // virus | |||||
aru) s (_ // disparus | |||||
psu) s (_ s // lapsus | |||||
atu) s (_ s // stratus cactus motus | atu) s (_ s // stratus cactus motus | ||||
ctu) s (_ s | |||||
ctu) s (_ s // cactus | |||||
etu) s (_ s | |||||
aitu) s (_ | |||||
itu) s (_ s | itu) s (_ s | ||||
otu) s (_ s | |||||
ltu) s (_ s // altus | |||||
otu) s (_ s // motus | |||||
_tou) s (_C | _tou) s (_C | ||||
_tou) s (_ s | _tou) s (_ s | ||||
u y // cruel nuage brut | u y // cruel nuage brut | ||||
ui w^i | ui w^i | ||||
_b) usi iz // business, businessman | |||||
c) ueill Wj // cueillir | c) ueill Wj // cueillir | ||||
c) ueil (_ Wj // recueil | c) ueil (_ Wj // recueil | ||||
_c) ul (_ y | |||||
g) ueill Wj // orgueilleux | g) ueill Wj // orgueilleux | ||||
g) ueil (_ Wj // orgueil | g) ueil (_ Wj // orgueil | ||||
ym (p E~ // tympan | ym (p E~ // tympan | ||||
y (nn i | y (nn i | ||||
y (nA i | y (nA i | ||||
ys (_ is | |||||
yx (_ iks | yx (_ iks | ||||
yn E~ // laryngite | yn E~ // laryngite |
.group y | .group y | ||||
y j //before a o e i | y j //before a o e i | ||||
y (u //NULL before u | y (u //NULL before u | ||||
y (uDn j | |||||
yo (DngK yu | yo (DngK yu | ||||
y (K i // foreign words | y (K i // foreign words | ||||
is 32 124 | is 32 124 | ||||
vi 42 137 | vi 42 137 | ||||
zhy 40 132 | zhy 40 132 | ||||
zh 64 148 | |||||
zh 63 147 | |||||
sw 14 108 | sw 14 108 | ||||
th 50 142 | th 50 142 | ||||
id 14 120 | id 14 120 | ||||
[s#] pt_pt | [s#] pt_pt | ||||
ufric/sh_pzd [S;] base | ufric/sh_pzd [S;] base | ||||
[S;] ro | [S;] ro | ||||
[S;] zh | |||||
ufric/sh_pzd_ [S;] base | ufric/sh_pzd_ [S;] base | ||||
[Z;] base | [Z;] base | ||||
ufric/sh_rfx [s.] base | |||||
[s.] zh | |||||
ufric/sh_sr [S#] zh | |||||
ufric/sh_sr.wav [S] sr | |||||
ufric/sh_pzd2 [S] sr | |||||
[Z] sr | [Z] sr | ||||
[dZ] sr | [dZ] sr | ||||
[S;] zh | |||||
ufric/sh_rfx [s.] base | |||||
[s.] zh | |||||
ufric/s_pzd [s;] base | ufric/s_pzd [s;] base | ||||
[z;] base | [z;] base | ||||
[s;] ro | [s;] ro | ||||
[ch] th | [ch] th | ||||
ustop/tsh_pzd_unasp [tS;] zh | ustop/tsh_pzd_unasp [tS;] zh | ||||
[c] th | [c] th | ||||
ustop/tsh_sr.wav [tS] sr | |||||
ustop/tsh_sr [tS] sr | |||||
ustop/ts_pzd [tS;] base | ustop/ts_pzd [tS;] base | ||||
[ts;] base | [ts;] base | ||||
[ch] hi | [ch] hi | ||||
[t] zh | [t] zh | ||||
ustop/ts_rfx [ts.] zh | ustop/ts_rfx [ts.] zh | ||||
ustop/ts_rfx_unasp [ts.] zh | ustop/ts_rfx_unasp [ts.] zh | ||||
ustop/ts_sr.wav [tS;] sr | |||||
ustop/ts_sr [tS;] sr | |||||
[dZ;] sr | [dZ;] sr | ||||
ustop/ts_unasp [ts] zh | ustop/ts_unasp [ts] zh | ||||
ustop/t_unasp [t] th | ustop/t_unasp [t] th | ||||
[u@] vi | [u@] vi | ||||
[ua] th | [ua] th | ||||
[u:a] th | [u:a] th | ||||
vdiph2/y@ [y@] zh | |||||
vdiph2/y#@ [Y@] af | vdiph2/y#@ [Y@] af | ||||
[y@] zh | |||||
vdiph2/yu [yU] nl | vdiph2/yu [yU] nl | ||||
[yu] zh | [yu] zh | ||||
vdiph2/y-y# [yY] fi | vdiph2/y-y# [yY] fi | ||||
[O@] en_wi | [O@] en_wi | ||||
[O] de | [O] de | ||||
[o] eo | [o] eo | ||||
[o] es | |||||
[O] es | |||||
[o] el | [o] el | ||||
[O] sv | [O] sv | ||||
[O] no | [O] no |
// ufric/x_sr | |||||
// ufric/ch_sr | |||||
// ufric/sh_sr | |||||
// ustop/t_sr | |||||
// ustop/ts_sr | |||||
// ustop/tsh_sr | |||||
// r3/r_sr | |||||
// m/m_sr | |||||
// n/n_sr | |||||
// n^/nj_sr | |||||
// This file inherits phonemes from ph_croatian | // This file inherits phonemes from ph_croatian | ||||
// Only phonemes which differ from the inherited phonemes need | // Only phonemes which differ from the inherited phonemes need | ||||
vcd pla afr sibilant | vcd pla afr sibilant | ||||
vowelin f1=2 f2=2300 200 400 f3=100 80 | vowelin f1=2 f2=2300 200 400 f3=100 80 | ||||
vowelout f1=2 f2=2300 250 300 f3=100 80 brk | vowelout f1=2 f2=2300 250 300 f3=100 80 brk | ||||
formants dzh/dzh+ufric/sh_sr.wav | |||||
before _ dzh/dzh+ufric/sh_sr.wav | |||||
formants dzh/dzh+ufric/sh_pzd2 | |||||
before _ dzh/dzh+ufric/sh_pzd2 | |||||
after _ NULL | after _ NULL | ||||
after @ dzh/dzh+ufric/sh_sr.wav | |||||
after @ dzh/dzh+ufric/sh_pzd2 | |||||
lengthmod 5 | lengthmod 5 | ||||
switchvoicing tS | switchvoicing tS | ||||
endphoneme | endphoneme | ||||
phoneme dZ; | phoneme dZ; | ||||
vcd pla afr sibilant palatal | vcd pla afr sibilant palatal | ||||
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 | ||||
formants dzh/dzh+ustop/ts_sr.wav | |||||
before _ dzh/dzh+ustop/ts_sr.wav | |||||
formants dzh/dzh+ustop/ts_sr | |||||
before _ dzh/dzh+ustop/ts_sr | |||||
after _ NULL | after _ NULL | ||||
after @ dzh/dzh+ustop/ts_sr.wav | |||||
after @ dzh/dzh+ustop/ts_sr | |||||
lengthmod 5 | lengthmod 5 | ||||
switchvoicing tS; | switchvoicing tS; | ||||
endphoneme | endphoneme | ||||
vls pla afr sibilant | vls pla afr sibilant | ||||
vowelin f1=0 f2=2300 200 400 f3=-100 80 | vowelin f1=0 f2=2300 200 400 f3=-100 80 | ||||
lengthmod 2 | lengthmod 2 | ||||
wave ustop/tsh_sr.wav%50 | |||||
before _ ustop/tsh_sr.wav%50 | |||||
wave ustop/tsh_sr%50 | |||||
before _ ustop/tsh_sr%50 | |||||
switchvoicing dZ | switchvoicing dZ | ||||
endphoneme | endphoneme | ||||
vls pal afr sibilant palatal | vls pal afr sibilant palatal | ||||
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 | ||||
lengthmod 2 | lengthmod 2 | ||||
wave ustop/ts_sr.wav | |||||
before _ ustop/ts_sr.wav | |||||
wave ustop/ts_sr | |||||
before _ ustop/ts_sr | |||||
switchvoicing dZ; | switchvoicing dZ; | ||||
endphoneme | endphoneme | ||||
vcd pla frc sibilant | vcd pla frc sibilant | ||||
vowelin f1=0 f2=2000 0 300 f3=-200 80 | vowelin f1=0 f2=2000 0 300 f3=-200 80 | ||||
vowelout f1=2 f2=2000 0 300 f3=-200 80 brk | vowelout f1=2 f2=2000 0 300 f3=-200 80 brk | ||||
formants voc/zh+ufric/sh_sr.wav%60 | |||||
before _ voc/zh+ufric/sh_sr.wav%50 | |||||
formants voc/zh+ufric/sh_pzd2%60 | |||||
before _ voc/zh+ufric/sh_pzd2%50 | |||||
lengthmod 6 | lengthmod 6 | ||||
switchvoicing S | switchvoicing S | ||||
endphoneme | endphoneme | ||||
vowelout f1=0 f2=2100 100 300 f3=-100 80 | vowelout f1=0 f2=2100 100 300 f3=-100 80 | ||||
length 100 | length 100 | ||||
lengthmod 3 | lengthmod 3 | ||||
wave ufric/sh_sr.wav%70 | |||||
before _ ufric/sh_sr.wav%60 | |||||
wave ufric/sh_pzd2%70 | |||||
before _ ufric/sh_pzd2%60 | |||||
switchvoicing Z | switchvoicing Z | ||||
endphoneme | endphoneme | ||||
formants vowel/e_mid | formants vowel/e_mid | ||||
endphoneme | endphoneme | ||||
phoneme o | |||||
phoneme O | |||||
vowel starttype (o) endtype (o) | vowel starttype (o) endtype (o) | ||||
length 170 | length 170 | ||||
formants vowel/oo | formants vowel/oo |
vls pal afr sibilant palatal | vls pal afr sibilant palatal | ||||
vowelin f1=0 f2=2700 400 600 f3=300 80 | vowelin f1=0 f2=2700 400 600 f3=300 80 | ||||
lengthmod 2 | lengthmod 2 | ||||
wave ustop/tsh_pzd | |||||
wave ustop/tsh_pzd%80 | |||||
endphoneme | endphoneme | ||||
phoneme S; | phoneme S; | ||||
vls pla frc sibilant | vls pla frc sibilant | ||||
vowelin f1=0 f2=2700 400 600 f3=300 80 | vowelin f1=0 f2=2700 400 600 f3=300 80 | ||||
lengthmod 2 | lengthmod 2 | ||||
wave ufric/sh_pzd | |||||
endphoneme | |||||
phoneme S# | |||||
vls pla frc sibilant | |||||
vowelin f1=0 f2=2700 400 600 f3=300 80 | |||||
lengthmod 2 | |||||
wave ufric/sh_sr%20 | |||||
wave ufric/sh_pzd2%20 | |||||
endphoneme | endphoneme | ||||
phoneme s. | phoneme s. | ||||
vowelout f1=0 f2=1800 -100 300 f3=-300 80 | vowelout f1=0 f2=1800 -100 300 f3=-300 80 | ||||
length 100 | length 100 | ||||
lengthmod 3 | lengthmod 3 | ||||
wave ufric/sh_rfx%60 // quieter | |||||
wave ufric/sh_rfx%50 // quieter | |||||
before _ ufric/sh_rfx%50 | before _ ufric/sh_rfx%50 | ||||
endphoneme | endphoneme | ||||
phoneme y@ | phoneme y@ | ||||
vowel starttype (i) endtype (@) | vowel starttype (i) endtype (@) | ||||
length 250 | length 250 | ||||
formants vdiph2/y#@ | |||||
formants vdiph2/y@ | |||||
endphoneme | endphoneme |
phoneme ** // TEST flap | phoneme ** // TEST flap | ||||
liquid alv | liquid alv | ||||
vowelout f1=3 f2=1600 -300 300 f3=-300 80 rms=35 len=15 | vowelout f1=3 f2=1600 -300 300 f3=-300 80 rms=35 len=15 | ||||
vowelin f1=2 f2=1600 -300 300 f3=-300 80 | |||||
formants r3/@tap+r3/rx%50 | |||||
vowelin f1=2 f2=1600 -300 300 f3=-100 80 len=20 | |||||
formants r3/@tap | |||||
vowelin f1=3 f2=1600 -300 300 f3=-300 80 | vowelin f1=3 f2=1600 -300 300 f3=-300 80 | ||||
before (i) r3/@tap_i+r3/rx | before (i) r3/@tap_i+r3/rx | ||||
before (e) r3/@tap_i+r3/rx | before (e) r3/@tap_i+r3/rx |
}; | }; | ||||
static TONE_NUCLEUS tone_nucleus_table[N_TONE_NUCLEUS_TABLE] = { | static TONE_NUCLEUS tone_nucleus_table[N_TONE_NUCLEUS_TABLE] = { | ||||
{PITCHfall, 30, 5, PITCHfall, 30, 8, NULL, 12, 7, 0}, // 0 statement | |||||
{PITCHfall, 30, 5, PITCHfall, 32, 9, NULL, 12, 7, 0}, // 0 statement | |||||
{PITCHfrise, 35, 8, PITCHfrise2, 35,10, NULL, 15, 23, 0}, // 1 comma | {PITCHfrise, 35, 8, PITCHfrise2, 35,10, NULL, 15, 23, 0}, // 1 comma | ||||
{PITCHfrise, 39,10, PITCHfrise2, 36,10, NULL, 15, 28, 0}, // 2 question | {PITCHfrise, 39,10, PITCHfrise2, 36,10, NULL, 15, 28, 0}, // 2 question | ||||
// {PITCHfall, 41, 4, PITCHfall, 41,27, NULL, 16, 4, T_EMPH}, // 3 exclamation | // {PITCHfall, 41, 4, PITCHfall, 41,27, NULL, 16, 4, T_EMPH}, // 3 exclamation | ||||
{PITCHfall, 43, 3, PITCHfall, 43,35, NULL, 35, 4, T_EMPH}, // 3 exclamation | |||||
// {PITCHrisefall,47, 8, PITCHrise, 48,30, NULL, 48, 5, T_EMPH}, // 3 exclamation | |||||
{PITCHfall, 41, 4, PITCHfall, 41,35, NULL, 35, 4, T_EMPH}, // 3 exclamation | |||||
{PITCHfall, 38, 2, PITCHfall, 42,30, NULL, 15, 5, 0}, // 4 statement, emphatic | {PITCHfall, 38, 2, PITCHfall, 42,30, NULL, 15, 5, 0}, // 4 statement, emphatic | ||||
{PITCHfall, 28, 5, PITCHfall, 28, 9, NULL, 12, 7, 0}, // 5 statement, less intonation | {PITCHfall, 28, 5, PITCHfall, 28, 9, NULL, 12, 7, 0}, // 5 statement, less intonation | ||||
{PITCHfrise, 30, 8, PITCHfrise2, 30,10, NULL, 13, 20, 0}, // 6 comma, less intonation | {PITCHfrise, 30, 8, PITCHfrise2, 30,10, NULL, 13, 20, 0}, // 6 comma, less intonation | ||||
if((p->type == phPAUSE) && (p->ph->std_length > 50)) | if((p->type == phPAUSE) && (p->ph->std_length > 50)) | ||||
{ | { | ||||
pause = 1; // there is a pause since the previous vowel | pause = 1; // there is a pause since the previous vowel | ||||
prevw_tph = phoneme_tab[phonPAUSE]; // forget previous tone | |||||
} | } | ||||
if(p->newword) | if(p->newword) | ||||
} | } | ||||
} | } | ||||
if(prev_tph->mnemonic == 0x343132) // [214] | |||||
if(prevw_tph->mnemonic == 0x343132) // [214] | |||||
{ | { | ||||
if(tph->mnemonic == 0x343132) // [214] | if(tph->mnemonic == 0x343132) // [214] | ||||
prev_p->tone_ph = LookupPh("35"); | prev_p->tone_ph = LookupPh("35"); |
{"amp", '&'}, | {"amp", '&'}, | ||||
{"quot", '"'}, | {"quot", '"'}, | ||||
{"nbsp", ' '}, | {"nbsp", ' '}, | ||||
{"apos", '\''}, | |||||
{NULL,-1}}; | {NULL,-1}}; | ||||
int n_xml_buf; | int n_xml_buf; | ||||
int terminator; | int terminator; | ||||
int punct; | int punct; | ||||
int found; | |||||
int any_alnum = 0; | int any_alnum = 0; | ||||
int self_closing; | int self_closing; | ||||
int punct_data; | int punct_data; | ||||
const char *p; | const char *p; | ||||
char buf2[40]; | |||||
wchar_t xml_buf[N_XML_BUF+1]; | wchar_t xml_buf[N_XML_BUF+1]; | ||||
#define N_XML_BUF2 12 | |||||
char buf2[N_XML_BUF2+2]; | |||||
static char ungot_string[N_XML_BUF2+4]; | |||||
static int ungot_string_ix = -1; | |||||
if(clear_skipping_text) | if(clear_skipping_text) | ||||
{ | { | ||||
skipping_text = 0; | skipping_text = 0; | ||||
if(ungot_char2 != 0) | if(ungot_char2 != 0) | ||||
{ | { | ||||
c2 = ungot_char2; | c2 = ungot_char2; | ||||
ungot_char2 = 0; | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
c2 = GetC(); | c2 = GetC(); | ||||
} | } | ||||
while(!Eof() || (ungot_char != 0)) | |||||
while(!Eof() || (ungot_char != 0) || (ungot_char2 != 0) || (ungot_string_ix >= 0)) | |||||
{ | { | ||||
if(!iswalnum(c1)) | if(!iswalnum(c1)) | ||||
{ | { | ||||
cprev = c1; | cprev = c1; | ||||
c1 = c2; | c1 = c2; | ||||
c2 = GetC(); | |||||
if(Eof()) | |||||
if(ungot_string_ix >= 0) | |||||
{ | { | ||||
c2 = ' '; | |||||
if(ungot_string[ungot_string_ix] == 0) | |||||
ungot_string_ix = -1; | |||||
} | } | ||||
if((ungot_string_ix == 0) && (ungot_char2 == 0)) | |||||
{ | |||||
c1 = ungot_string[ungot_string_ix++]; | |||||
} | |||||
if(ungot_string_ix >= 0) | |||||
{ | |||||
c2 = ungot_string[ungot_string_ix++]; | |||||
} | |||||
else | |||||
{ | |||||
c2 = GetC(); | |||||
if(Eof()) | |||||
{ | |||||
c2 = ' '; | |||||
} | |||||
} | |||||
ungot_char2 = 0; | |||||
if((option_ssml) && (phoneme_mode==0)) | if((option_ssml) && (phoneme_mode==0)) | ||||
{ | { | ||||
if((ssml_ignore_l_angle != '&') && (c1 == '&') && ((c2=='#') || ((c2 >= 'a') && (c2 <= 'z')))) | if((ssml_ignore_l_angle != '&') && (c1 == '&') && ((c2=='#') || ((c2 >= 'a') && (c2 <= 'z')))) | ||||
{ | { | ||||
n_xml_buf = 0; | n_xml_buf = 0; | ||||
c1 = c2; | c1 = c2; | ||||
while(!Eof() && (iswalnum(c1) || (c1=='#')) && (n_xml_buf < 12)) | |||||
while(!Eof() && (iswalnum(c1) || (c1=='#')) && (n_xml_buf < N_XML_BUF2)) | |||||
{ | { | ||||
buf2[n_xml_buf++] = c1; | buf2[n_xml_buf++] = c1; | ||||
c1 = GetC(); | c1 = GetC(); | ||||
} | } | ||||
buf2[n_xml_buf] = 0; | buf2[n_xml_buf] = 0; | ||||
c2 = GetC(); | c2 = GetC(); | ||||
sprintf(ungot_string,"%s%c%c",&buf2[0],c1,c2); | |||||
if(buf2[0] == '#') | |||||
if(c1 == ';') | |||||
{ | { | ||||
// character code number | |||||
c1 = '#'; // in case there isn't a number | |||||
if(buf2[1] == 'x') | |||||
sscanf(&buf2[2],"%x",(unsigned int *)(&c1)); | |||||
else | |||||
sscanf(&buf2[1],"%d",&c1); | |||||
} | |||||
else | |||||
{ | |||||
if((j = LookupMnem(xml_char_mnemonics,buf2)) != -1) | |||||
if(buf2[0] == '#') | |||||
{ | { | ||||
c1 = j; | |||||
// character code number | |||||
if(buf2[1] == 'x') | |||||
found = sscanf(&buf2[2],"%x",(unsigned int *)(&c1)); | |||||
else | |||||
found = sscanf(&buf2[1],"%d",&c1); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
c1 = '&'; | |||||
if((found = LookupMnem(xml_char_mnemonics,buf2)) != -1) | |||||
{ | |||||
c1 = found; | |||||
if(c2 == 0) | |||||
c2 = ' '; | |||||
} | |||||
} | } | ||||
} | } | ||||
else | |||||
{ | |||||
found = -1; | |||||
} | |||||
if(found <= 0) | |||||
{ | |||||
ungot_string_ix = 0; | |||||
c1 = '&'; | |||||
c2 = ' '; | |||||
} | |||||
if((sayas_mode == 0x14) && (c1 <= 0x20)) | if((sayas_mode == 0x14) && (c1 <= 0x20)) | ||||
{ | { | ||||
c1 += 0xe000; // move into unicode private usage area | c1 += 0xe000; // move into unicode private usage area |
else | else | ||||
p->prepause = 60; | p->prepause = 60; | ||||
if(prev->type == phSTOP) | |||||
p->prepause = 60; | |||||
if((langopts.word_gap & 0x10) && (p->newword)) | if((langopts.word_gap & 0x10) && (p->newword)) | ||||
p->prepause = 60; | p->prepause = 60; | ||||
#include "translate.h" | #include "translate.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
const char *version_string = "1.31.08 08.Feb.08"; | |||||
const char *version_string = "1.31.09 11.Feb.08"; | |||||
const int version_phdata = 0x013105; | const int version_phdata = 0x013105; | ||||
int option_device_number = -1; | int option_device_number = -1; |