Provide Viseme events on the Windows SAPI5 interface. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@199 d46cf337-b52f-0410-862d-fd96e6ae7743master
// Place names | // Place names | ||||
afganistan afg'anistan | |||||
alaska al'aska | alaska al'aska | ||||
algerië alx2'e@re@:@- | algerië alx2'e@re@:@- | ||||
antwerpen antv&rp@n | antwerpen antv&rp@n | ||||
bethlehem bEt_liEm | bethlehem bEt_liEm | ||||
boedapest budapEst | boedapest budapEst | ||||
boekarest bukarEst | boekarest bukarEst | ||||
bolivië bul'Ivi:@ | |||||
bonnievale _^_EN | bonnievale _^_EN | ||||
brittanje $2 | brittanje $2 | ||||
brooklyn _^_EN | brooklyn _^_EN | ||||
hirosjima hiruS'ima | hirosjima hiruS'ima | ||||
israel IsraI:l | israel IsraI:l | ||||
italië it'A:li;@ | italië it'A:li;@ | ||||
kalafong kalaf'ON | |||||
kanada kanad%a | kanada kanad%a | ||||
kanaän kA:nA:an | kanaän kA:nA:an | ||||
kaïro ka_'iru | kaïro ka_'iru | ||||
derick dErik | derick dErik | ||||
deventer d'e@v@nt@r | deventer d'e@v@nt@r | ||||
diana dij'A:na | diana dij'A:na | ||||
donaldson _^_EN | |||||
du $u | du $u | ||||
(du pisanie) du||pis'A:ni | (du pisanie) du||pis'A:ni | ||||
(du plessis) du||pl@s'i | (du plessis) du||pl@s'i | ||||
aangaande $2 | aangaande $2 | ||||
aanstaande $2 | aanstaande $2 | ||||
adagio ad'A:dZi;%@U | adagio ad'A:dZi;%@U | ||||
afgaanse afg'A:ns@ | |||||
afgane afg'A:n@ | |||||
africana $3 | africana $3 | ||||
afkere afke@r@ | afkere afke@r@ | ||||
agamemnon ax2am'EmnOn | agamemnon ax2am'EmnOn | ||||
alge alx2@ | alge alx2@ | ||||
algehele alx2@h,e@l@ | algehele alx2@h,e@l@ | ||||
allegro al'Egru | allegro al'Egru | ||||
alles al@s | |||||
almiskie $3 | almiskie $3 | ||||
alom al_'Om | alom al_'Om | ||||
alreeds $2 | alreeds $2 | ||||
alternatiewe $4 | alternatiewe $4 | ||||
amen A:mEn | amen A:mEn | ||||
anale an'A:l@ | anale an'A:l@ | ||||
//###anatomie $4 $only | |||||
asof asOf | asof asOf | ||||
asook %as_o@k | asook %as_o@k | ||||
aspris $2 | aspris $2 | ||||
beswil bEsv@l | beswil bEsv@l | ||||
besnedene b@sne@d@n@ | besnedene b@sne@d@n@ | ||||
bestes bEst@s | bestes bEst@s | ||||
beta be@ta | |||||
beta be@ta $only | |||||
bewe be@v@ | bewe be@v@ | ||||
bewend be@v@nt | bewend be@v@nt | ||||
bewering b@ve@rIN | bewering b@ve@rIN | ||||
hoofsaaklik $2 | hoofsaaklik $2 | ||||
hoogedele ho@x2 _e@d@l@ | hoogedele ho@x2 _e@d@l@ | ||||
hosanna hus'ana | hosanna hus'ana | ||||
//###huigelary $4 | |||||
ibis $1 | ibis $1 | ||||
idee $2 | idee $2 | ||||
senatore s@nat'o@r@ | senatore s@nat'o@r@ | ||||
singenot sInx2@nOt | singenot sInx2@nOt | ||||
sir _^_EN | sir _^_EN | ||||
skares skA:r@s | |||||
skepsele skEps@l@ | skepsele skEps@l@ | ||||
skuldelas skWld@las | skuldelas skWld@las | ||||
s'n s@n $u | s'n s@n $u | ||||
vers f&:rs | vers f&:rs | ||||
verste f&rst@ | verste f&rst@ | ||||
verte f&rt@ | verte f&rt@ | ||||
vertes f&rt@s | |||||
verweg f&:rv&x2 | verweg f&:rv&x2 | ||||
via via | via via | ||||
volheid $1 | volheid $1 |
a (riA 'A: // akwarium/barium/estuarium/herbarium/seminaria | a (riA 'A: // akwarium/barium/estuarium/herbarium/seminaria | ||||
a (ristokr %a // shorten 1st a: aristokrasie/-kraat/-krate/-kraties | a (ristokr %a // shorten 1st a: aristokrasie/-kraat/-krate/-kraties | ||||
arm (last %ar@-m // move default stress: armlastig/-e | arm (last %ar@-m // move default stress: armlastig/-e | ||||
@C) as (_ as // shorten final a of words ending in -as: rigtingvas/jonkmanskas, etc. | |||||
C) asie 'A:si | C) asie 'A:si | ||||
@@@@) asie A:s%i | @@@@) asie A:s%i | ||||
oub) asie A:si // restore default stress: oubasie/-s | oub) asie A:si // restore default stress: oubasie/-s | ||||
ar (seen %ar | ar (seen %ar | ||||
ar (tikel %ar // stress: artikel and compounds | ar (tikel %ar // stress: artikel and compounds | ||||
artiku %art%ik%y // stress and vowel sounds: artikulasie/artikuleer | artiku %art%ik%y // stress and vowel sounds: artikulasie/artikuleer | ||||
@C) as (_ as // shorten final a of words ending in -as: rigtingvas/jonkmanskas, etc. | |||||
_) a (sië A: // fix stress and a sound: Asië/-r/-rs | _) a (sië A: // fix stress and a sound: Asië/-r/-rs | ||||
_) a (strA %a // astrant/astrale/astraal | _) a (strA %a // astrant/astrale/astraal | ||||
artille (rie %art@l@ // stress and vowel sounds: artillerie and compounds | artille (rie %art@l@ // stress and vowel sounds: artillerie and compounds | ||||
CAC) e (CC @ // fix e sound: nalatenskap/wapenstilstand | CAC) e (CC @ // fix e sound: nalatenskap/wapenstilstand | ||||
CAC) e (C% E // beesfilette/nougesette/onderbesette/voortgesette | CAC) e (C% E // beesfilette/nougesette/onderbesette/voortgesette | ||||
juwel) e (C @ // fix e sound: juwelekissie and similar compounds | juwel) e (C @ // fix e sound: juwelekissie and similar compounds | ||||
fontein) e (C @_ // fix e sound: Fonteinesirkel/-wisselaar, etc. | |||||
kening) e (@ @ // fix e sound: rekeningeklerk/-navraag and similar | kening) e (@ @ // fix e sound: rekeningeklerk/-navraag and similar | ||||
narkos) e (C @ // fix e sound: narkosedood/-gas/-masker/-middel/-rekords, etc. | narkos) e (C @ // fix e sound: narkosedood/-gas/-masker/-middel/-rekords, etc. | ||||
ooi) e (C @ // fix e sound: dooiepunt/ooievaar and similar | ooi) e (C @ // fix e sound: dooiepunt/ooievaar and similar | ||||
AAv) eer e@r // restore default stress: pouveer/makouveer/horlosieveer/kraaiveer/rooiveer | AAv) eer e@r // restore default stress: pouveer/makouveer/horlosieveer/kraaiveer/rooiveer | ||||
w) eer e@r // stress may vary in words containing weer: lugafweer/donderweer | w) eer e@r // stress may vary in words containing weer: lugafweer/donderweer | ||||
u) eer 'e@r // aktueer/konstrueer/salueer, etc. | u) eer 'e@r // aktueer/konstrueer/salueer, etc. | ||||
effek %e@fEk // move default stress and fix e sound: effek/-te/-tief | |||||
effek (K %ifEk // move default stress and fix e sound: effek/-te/-tief/rimpeleffek | |||||
eienaardig %eI@nA:rd@x2 // move default stress: eienaardig/-ste | eienaardig %eI@nA:rd@x2 // move default stress: eienaardig/-ste | ||||
@) ein (dig 'eIn // nimmereindige/nimmereindigend | @) ein (dig 'eIn // nimmereindige/nimmereindigend | ||||
eind (eks eInt_ // fix d sound and make short pause: eindeksamen/-s and compounds | eind (eks eInt_ // fix d sound and make short pause: eindeksamen/-s and compounds | ||||
j j | j j | ||||
j (j | j (j | ||||
ja (broer jA: // fix a sound: jabroer/-s | ja (broer jA: // fix a sound: jabroer/-s | ||||
_) jag (A j''ax2_ // fix stress and a sound: jagavontuur/-ekspedisie/-entoesias/-eskader/-instink... | |||||
jag (end jA:x2 // but long a in jagend/-e and compounds | |||||
jag (er jA:x2 // long a in jager and compounds | |||||
jag (ing jA:x2 // long a in (ver)jaging and similar | |||||
jaguar jagwar // fix a, g and u sounds: jaguar and compounds | |||||
_) ja (CobA j%a // fix stress and a sound: Jacoba/Jacobus/Jakobus | _) ja (CobA j%a // fix stress and a sound: Jacoba/Jacobus/Jakobus | ||||
jakaranda j%ak%ar'anda //jakaranda and compounds | jakaranda j%ak%ar'anda //jakaranda and compounds | ||||
jakopewer j%ak%Ope@v@r_ // fix stress and vowel sounds: jakopewer/-oë | jakopewer j%ak%Ope@v@r_ // fix stress and vowel sounds: jakopewer/-oë | ||||
profesie prOf@s'i // fix vowel sounds and move stress | profesie prOf@s'i // fix vowel sounds and move stress | ||||
profit (e pr%Of@t // fix stress and vowel sounds: profiteer/-tering | profit (e pr%Of@t // fix stress and vowel sounds: profiteer/-tering | ||||
pro (gram pr%u // fix stress and o sound: program/-e/ontwikkelingsprogram | pro (gram pr%u // fix stress and o sound: program/-e/ontwikkelingsprogram | ||||
programme (ring pr%ux2r%ame@ // fix e sound and stress: (rekenaar)programmering(staal), etc. | |||||
pro (gress pr%o@ // fix stress and o sound: progressie/-f/-we | pro (gress pr%o@ // fix stress and o sound: progressie/-f/-we | ||||
pro (CA pr%u // probeer/produk/proses/professie/provinsie | pro (CA pr%u // probeer/produk/proses/professie/provinsie | ||||
produk (A pr%udWk_ // fix u sound, pause: produkopsies/-uitstalling, etc. | produk (A pr%udWk_ // fix u sound, pause: produkopsies/-uitstalling, etc. | ||||
regime (_ r@Zi:m // regime/-s and compounds | regime (_ r@Zi:m // regime/-s and compounds | ||||
regi (ment r@x2@ // fix stress and e and i sounds: regement/-e and compounds | regi (ment r@x2@ // fix stress and e and i sounds: regement/-e and compounds | ||||
regimen (ta@ r%Ex2%im%En // fix stress: regimentaal/-tale | regimen (ta@ r%Ex2%im%En // fix stress: regimentaal/-tale | ||||
regi (sseuC r@x2@ // fix stress and e sound: (film-/kuns-/mede-/musiek-/oorklankings-)regisseur/-sseuse | |||||
reg (ist r@x2 // registrasie/-nommer/register/bevolkingsregister | reg (ist r@x2 // registrasie/-nommer/register/bevolkingsregister | ||||
regle (ment r@x2l@ // fix stress and e sounds: reglement/-e and compounds | regle (ment r@x2l@ // fix stress and e sounds: reglement/-e and compounds | ||||
regverdig r&x2f'&rd@x2 // regverdig/onregverdige/regverdigheid - verwyder uit af_list | regverdig r&x2f'&rd@x2 // regverdig/onregverdige/regverdigheid - verwyder uit af_list | ||||
.group s | .group s | ||||
s s | s s | ||||
s (s | s (s | ||||
@) s (_S1q s // to correctly handle plurals of propernames in af_list: Jouberts, etc. | |||||
@@@) s (_S1 s // to correctly handle plural s | @@@) s (_S1 s // to correctly handle plural s | ||||
i) s (_ s // exceptions to rule: @@@) s (_S1 s | i) s (_ s // exceptions to rule: @@@) s (_S1 s | ||||
se (_ s@ //the word se and some ending in se | se (_ s@ //the word se and some ending in se | ||||
seroto (ni s%Er@t%u // fix stress and vowel sounds: serotonien(vlakke, etc.) | seroto (ni s%Er@t%u // fix stress and vowel sounds: serotonien(vlakke, etc.) | ||||
sitrus s'itr%Ws_ //i sound and stress in compounds | sitrus s'itr%Ws_ //i sound and stress in compounds | ||||
saamge (P6 s'A:mx2@ // saamgepers/-de/saamgetel/saamgeêet | |||||
_) saam (P4 s'A:m // saamgepers/-de/saamgetel/saamgeêet/saampers | |||||
saamgee sA:mx2e@ // fix ee in saamgee; see rule: saamge (P6 | saamgee sA:mx2e@ // fix ee in saamgee; see rule: saamge (P6 | ||||
sabot (A s%ab%ut // sabotasie/saboteer | sabot (A s%ab%ut // sabotasie/saboteer | ||||
safari s%afA:r%i // fix 1st a: safari/safaripak, etc. | safari s%afA:r%i // fix 1st a: safari/safaripak, etc. | ||||
straa) t (j t // split tj sound: straat(jas/-joggie/-jonge/-joernaal) | straa) t (j t // split tj sound: straat(jas/-joggie/-jonge/-joernaal) | ||||
ui) tj tj // uitjaag/uitjou/uitjubel | ui) tj tj // uitjaag/uitjou/uitjubel | ||||
ui) tjie ci // beskuitjie/fluitjie/ruitjie/uitjie, etc. | ui) tjie ci // beskuitjie/fluitjie/ruitjie/uitjie, etc. | ||||
@) tjoernali tj%urn%al@ // fix stress, split t/j: front-/koerant-/sport-/vryskutjoernalis, etc. | |||||
_) th (@@ t | _) th (@@ t | ||||
@) th (C t // drop h: Bothma/Neethling and similar | @) th (C t // drop h: Bothma/Neethling and similar | ||||
_) theu t''Y@ // Theuns/Theunis | _) theu t''Y@ // Theuns/Theunis | ||||
_) th _^_EN // if only one vowel character | _) th _^_EN // if only one vowel character | ||||
@) thy (_ _^_EN // words and names ending in -thy are English: Cathy, etc. | |||||
@) th (_N _^_EN | @) th (_N _^_EN | ||||
@) tion (_ _^_EN //words ending in tion is English | @) tion (_ _^_EN //words ending in tion is English | ||||
@) tions (_ _^_EN //words ending in tions is English | @) tions (_ _^_EN //words ending in tions is English |
qu kv | qu kv | ||||
.group r | .group r | ||||
// r r | |||||
// A) r (A * | |||||
// C) r (A @-* | |||||
// rr *r | |||||
// right rajt | |||||
K) r (K r- | K) r (K r- | ||||
r R | r R |
&) ie (r_ 'i: | &) ie (r_ 'i: | ||||
u) ie (r_ _|'i: | u) ie (r_ _|'i: | ||||
&) ie (rlich 'i: | &) ie (rlich 'i: | ||||
bank) ie (r I'e: | |||||
barr) ie (r I'e: | |||||
financ) ie (r I'e: | |||||
hotel) ie (r I'e: | |||||
prem) ie (r I'e: | |||||
hyg) ie (n I'e: | |||||
ital) ie (n I'e: | |||||
d) ienst i:nst | d) ienst i:nst | ||||
r) ien (@ IEn | r) ien (@ IEn | ||||
&) ien (_ =I@n | &) ien (_ =I@n |
v w x2 z Z | v w x2 z Z | ||||
Dictionary bn_dict | |||||
& a a: a~ e E e~ i | |||||
I i: i:~ i~ l- o O o: | |||||
o~ O~ r- U u u: u:~ u~ | |||||
* b B c C ch d d. | |||||
g h j J k kh l m | |||||
n N n. n^ p ph Q r | |||||
r. s S s. t t. t.h th | |||||
tS x z | |||||
Dictionary cs_dict | Dictionary cs_dict | ||||
@- a a: aU e e: eI eU | @- a a: aU e e: eI eU | ||||
ts tS; v x z Z | ts tS; v x z Z | ||||
Dictionary ml_dict | |||||
a a: aI aU e E e: i | |||||
I i: o o: r- u u: V | |||||
y | |||||
: b c ch d d. dZ f | |||||
g h j J k kh l l. | |||||
m n N n. n^ p ph R | |||||
R2 s s. S; t t. t.h th | |||||
tS v w z z. | |||||
Dictionary ne_dict | |||||
@ @- @2 @3 a a: aI aU | |||||
a~ e E e: E: E~ e~ i | |||||
I i: i~ l- o O o: O: | |||||
o~ O~ r- U u u: u~ V | |||||
- : b c ch d d. f | |||||
g h H j J k kh l | |||||
l. m n N n. n^ p ph | |||||
Q q r r. s S s. t | |||||
T t. t.h th v w x z | |||||
z. | |||||
Dictionary nl_dict | Dictionary nl_dict | ||||
8 @ @- A a: E e: EI | 8 @ @- A a: E e: EI | ||||
tS v w z | tS v w z | ||||
Dictionary ml_dict | |||||
a a: aI aU e E e: i | |||||
I i: o o: r- u u: V | |||||
y | |||||
: b c ch d d. dZ f | |||||
g h j J k kh l l. | |||||
m n N n. n^ p ph R | |||||
R2 s s. S; t t. t.h th | |||||
tS v w z z. | |||||
Dictionary bn_dict | |||||
Dictionary lv_dict | |||||
& a a: a~ e E e~ i | |||||
I i: i:~ i~ l- o O o: | |||||
o~ O~ r- U u u: u:~ u~ | |||||
a a: ai au e e: ei i | |||||
i: ie iu o o: oi u u: | |||||
ui uo | |||||
* b B c C ch d d. | |||||
g h j J k kh l m | |||||
n N n. n^ p ph Q r | |||||
r. s S s. t t. t.h th | |||||
tS x z | |||||
Dictionary ne_dict | |||||
@ @- @2 @3 a a: aI aU | |||||
a~ e E e: E: E~ e~ i | |||||
I i: i~ l- o O o: O: | |||||
o~ O~ r- U u u: u~ V | |||||
- : b c ch d d. f | |||||
g h H j J k kh l | |||||
l. m n N n. n^ p ph | |||||
Q q r r. s S s. t | |||||
T t. t.h th v w x z | |||||
z. | |||||
b c d dZ f g h j | |||||
J k l l^ m n N n^ | |||||
p R R2 s S t tS ts | |||||
v z Z |
rev $dot | rev $dot | ||||
st $dot | st $dot | ||||
// not abbreviations when all-caps | |||||
all O:l $allcaps | |||||
no noU $allcaps | |||||
// MAIN WORD DICTIONARY | // MAIN WORD DICTIONARY | ||||
alias eIli@s | alias eIli@s | ||||
alibi al@baI | alibi al@baI | ||||
alkali alk@laI | alkali alk@laI | ||||
all O:l $allcaps // not abbrev. | |||||
allay a2leI | allay a2leI | ||||
allegiance a2li:dZ@ns | allegiance a2li:dZ@ns | ||||
allele a2li:l | allele a2li:l | ||||
barrage barA:Z | barrage barA:Z | ||||
basis beIsIs | basis beIsIs | ||||
bass beIs | bass beIs | ||||
baste beIst | |||||
bastion basti@n | bastion basti@n | ||||
batman batman | batman batman | ||||
bayou baIu: | bayou baIu: | ||||
edition I2dIS@n | edition I2dIS@n | ||||
edwardian Edw'O@di@n | edwardian Edw'O@di@n | ||||
efile i:faIl | efile i:faIl | ||||
egg Eg // egging | |||||
eh eI | eh eI | ||||
el ,El | el ,El | ||||
electricity I2lEktr'IsI2tI | electricity I2lEktr'IsI2tI | ||||
san ,san | san ,san | ||||
sardine $2 | sardine $2 | ||||
satan seIt@n | satan seIt@n | ||||
satanist seIt@nIst | |||||
saucepan sO:sp@n | saucepan sO:sp@n | ||||
saudi saUdI | saudi saUdI | ||||
says sEz | says sEz | ||||
signage saInI2dZ | signage saInI2dZ | ||||
sikh si:k | sikh si:k | ||||
silhouette sI2lUw'Et | silhouette sI2lUw'Et | ||||
silo saIloU | |||||
simon saIm@n | simon saIm@n | ||||
simultaneous $3 | simultaneous $3 | ||||
singly sINglI $verbf | singly sINglI $verbf | ||||
Derek dErIk | Derek dErIk | ||||
Dinah daIn@ | Dinah daIn@ | ||||
Dominic d0mI2nIk | Dominic d0mI2nIk | ||||
Donald d0n@Ld | |||||
Doris d0rIs | Doris d0rIs | ||||
Dougall du:g@L | Dougall du:g@L | ||||
Dylan dIl@n | Dylan dIl@n |
// ?7 Scottish | // ?7 Scottish | ||||
// ?8 Use full vowel, not schwa in some word endings | // ?8 Use full vowel, not schwa in some word endings | ||||
.L01 l r | |||||
.replace | .replace | ||||
ff ff // ligature | ff ff // ligature | ||||
fi fi | fi fi | ||||
_) exc (e %Eks | _) exc (e %Eks | ||||
exc (i %Eks | exc (i %Eks | ||||
exc (elle Eks | exc (elle Eks | ||||
ex (e+ Eks | |||||
C) ex (e Eks | |||||
exe (cutio EksI | exe (cutio EksI | ||||
ex (erc Eks | ex (erc Eks | ||||
_) ex (A %Egz | _) ex (A %Egz | ||||
@) i (butive 'I | @) i (butive 'I | ||||
@) i (butor 'I | @) i (butor 'I | ||||
&) i (c_ =I | &) i (c_ =I | ||||
&) i (ciCe_ =I | |||||
&) i (ca_ =I | &) i (ca_ =I | ||||
&) ico (_ =I2koU | &) ico (_ =I2koU | ||||
&) i (cal =I | &) i (cal =I | ||||
pers) on @n | pers) on @n | ||||
pers) on (i '0n | pers) on (i '0n | ||||
postp) on 'oUn | postp) on 'oUn | ||||
on (ald 0n | |||||
d) on (at %oUn | d) on (at %oUn | ||||
on (an_ oUn | on (an_ oUn | ||||
_) on (io Vn | _) on (io Vn | ||||
rhyth rID | rhyth rID | ||||
_) rm ,A@Em | _) rm ,A@Em | ||||
rrhoea r'i@ | rrhoea r'i@ | ||||
_) ru (bL01 ru: | |||||
_) run (a rVn | _) run (a rVn | ||||
_) run (o rVn | _) run (o rVn | ||||
_) rw r%U | _) rw r%U |
// 2006-11-18 Gilles Casse <[email protected]> | // 2006-11-18 Gilles Casse <[email protected]> | ||||
// | // | ||||
// Updated 2008-10-13 Michel Such <[email protected]> | |||||
// Updated 2008-10-24 Michel Such <[email protected]> | |||||
// | // | ||||
// * Numbers, a few abbreviations and exceptions. | // * Numbers, a few abbreviations and exceptions. | ||||
// | // | ||||
api $abbrev | api $abbrev | ||||
avh aveaS | avh aveaS | ||||
bd boulevard $text | bd boulevard $text | ||||
brltty $abbrev | |||||
cci $abbrev | cci $abbrev | ||||
cio $abbrev | cio $abbrev | ||||
ctrl control $text $pause | ctrl control $text $pause |
// 2006-11-18 Gilles Casse <[email protected]> | // 2006-11-18 Gilles Casse <[email protected]> | ||||
// | // | ||||
// Updated: 2008-10-16 Michel Such <[email protected]> | |||||
// Updated: 2008-11-01 Michel Such <[email protected]> | |||||
// | // | ||||
// Letter classes: | // Letter classes: | ||||
a (nnA a // manne | a (nnA a // manne | ||||
an (K A~ // ancien, élan | an (K A~ // ancien, élan | ||||
@@m) an (_ an // tennisman | |||||
lism) an (_ A~ // talisman | |||||
_C) aon (_ A~ // faon, paon, taon | _C) aon (_ A~ // faon, paon, taon | ||||
s) aoul (_ u // saoul | s) aoul (_ u // saoul | ||||
s) aou (le u // saoule | s) aou (le u // saoule | ||||
_) auto (@P4 oto | _) auto (@P4 oto | ||||
_) autom (n otO | _) autom (n otO | ||||
_) au (treX o2 | _) au (treX o2 | ||||
bb) aye (X ei // abbaye | |||||
p) a (ys E // pays paysage | p) a (ys E // pays paysage | ||||
ay (C E // aymé | ay (C E // aymé | ||||
ay Ej // paye | ay Ej // paye | ||||
cc (Y ks // accéder | cc (Y ks // accéder | ||||
cc k // occuper | cc k // occuper | ||||
_) ch (arism k // charisme, charismatique | _) ch (arism k // charisme, charismatique | ||||
_) ch (irop k // chiroptère | |||||
a) ch (_ k // almanach | a) ch (_ k // almanach | ||||
e) ch (_ k // varech | e) ch (_ k // varech | ||||
_A) ch (o_ k // écho | _A) ch (o_ k // écho | ||||
mani) ch (é k // manichéisme | |||||
_eu) ch (ari k // eucharistie | _eu) ch (ari k // eucharistie | ||||
or) ch (esC k // orchestre | or) ch (esC k // orchestre | ||||
or) ch (iC k // orchidée | or) ch (iC k // orchidée | ||||
CC) ein (_ E~n2 // plein emploi | CC) ein (_ E~n2 // plein emploi | ||||
e (il E // vieille | e (il E // vieille | ||||
ei E // neige | ei E // neige | ||||
eoi wA // asseoir | |||||
ell El // selle | ell El // selle | ||||
el (K El // celsius, caramel | el (K El // celsius, caramel | ||||
_f) em (me a // femme | _f) em (me a // femme | ||||
em (p A~ | em (p A~ | ||||
en (_ A~n2 // en | en (_ A~n2 // en | ||||
en (hA A~n // enharmonique | en (hA A~n // enharmonique | ||||
en (A A~n // enivrer | |||||
_) en (A A~n // enivrer | |||||
C) en (d_ A~ // comprend dépend | C) en (d_ A~ // comprend dépend | ||||
od) en (dr E~ // rhododendron | od) en (dr E~ // rhododendron | ||||
qu) en (d_ A~ | qu) en (d_ A~ | ||||
pati) en A~ // patient patience | pati) en A~ // patient patience | ||||
X) en (nu A~ // ennui | |||||
en (nu A~ // ennui | |||||
en (nA E // penne ennemi | |||||
C) en (A @n // menu | |||||
é) en (_ E~ // européen | |||||
en (nA E // penne ennemi | |||||
Ci) en (nA E // mienne | Ci) en (nA E // mienne | ||||
éC) en (t_ A~ // récent différent élément | éC) en (t_ A~ // récent différent élément | ||||
vin) gt (_sept t | vin) gt (_sept t | ||||
vin) gt (_huit t | vin) gt (_huit t | ||||
vin) gt (_neuf t | vin) gt (_neuf t | ||||
vin) gt (_neuvi t | |||||
gt (_ // vingt doigts | gt (_ // vingt doigts | ||||
_) n' (P2v n | _) n' (P2v n | ||||
A) ng (_ N // parking meeting | |||||
nn n // panne | nn n // panne | ||||
_) n (_° nymero | _) n (_° nymero | ||||
_) neuro (@@P5 nYro | _) neuro (@@P5 nYro | ||||
s s // verser sien | s s // verser sien | ||||
s (_S1 z2 | s (_S1 z2 | ||||
stein (_ Stajn | |||||
_) s' (P2v s // s'amène | _) s' (P2v s // s'amène | ||||
_) s' (esXP2v s // s'amène | _) s' (esXP2v s // s'amène | ||||
_) sky _^_en | _) sky _^_en | ||||
_) smil _^_en // smile, smiley | _) smil _^_en // smile, smiley | ||||
spy _^_en | spy _^_en | ||||
sy (_ _^_en | |||||
.group t | .group t | ||||
x ks | x ks | ||||
xs ks // lexique lexicaux vox | xs ks // lexique lexicaux vox | ||||
e) x (A gz // exagérer exemple | e) x (A gz // exagérer exemple | ||||
le) x (i ks | |||||
Ce) x (i ks | |||||
ine) x (i gz | |||||
_e) x (h gz // exhumer | _e) x (h gz // exhumer | ||||
ai) x (_ // voix paix prix | ai) x (_ // voix paix prix |
qu kv | qu kv | ||||
.group r | .group r | ||||
// r r | |||||
// A) r (A * | |||||
// C) r (A @-* | |||||
// rr *r | |||||
K) r (K r- | K) r (K r- | ||||
r R | r R | ||||
rr R | rr R |
54 phoneme tables | |||||
55 phoneme tables | |||||
new total | new total | ||||
base 100 100 | base 100 100 | ||||
base2 24 119 | base2 24 119 | ||||
ml 13 139 | ml 13 139 | ||||
bn 59 145 | bn 59 145 | ||||
ne 14 141 | ne 14 141 | ||||
lv 26 121 | |||||
Data file Used by | Data file Used by | ||||
b/b [b] base | b/b [b] base | ||||
[R] sk | [R] sk | ||||
[r*] sr | [r*] sr | ||||
[x] pt | [x] pt | ||||
[R] lv | |||||
r3/r_trill2 [R] base | r3/r_trill2 [R] base | ||||
[r] cy | [r] cy | ||||
[R] hr | [R] hr | ||||
[R] sk | [R] sk | ||||
[r*] sr | [r*] sr | ||||
[x] pt | [x] pt | ||||
[R] lv | |||||
r3/r_u [(u)] base | r3/r_u [(u)] base | ||||
r3/rx [*] base | r3/rx [*] base | ||||
[r/] base | [r/] base | ||||
[k] sw | [k] sw | ||||
[k] sq | [k] sq | ||||
[kh] bn | [kh] bn | ||||
[k] lv | |||||
ustop/ki [c] base | ustop/ki [c] base | ||||
[k] base | [k] base | ||||
[k] base2 | [k] base2 | ||||
[c] tr | [c] tr | ||||
[J] ku | [J] ku | ||||
[c] ku | [c] ku | ||||
[k] lv | |||||
ustop/kl [k] base | ustop/kl [k] base | ||||
[k] base2 | [k] base2 | ||||
[k] en | [k] en | ||||
[k] zhy | [k] zhy | ||||
[k] sw | [k] sw | ||||
[kh] bn | [kh] bn | ||||
[k] lv | |||||
ustop/kr [k] base | ustop/kr [k] base | ||||
[k] base2 | [k] base2 | ||||
[k] en | [k] en | ||||
[k] zhy | [k] zhy | ||||
[k] sw | [k] sw | ||||
[kh] bn | [kh] bn | ||||
[k] lv | |||||
ustop/k_unasp [k] base | ustop/k_unasp [k] base | ||||
[k] base2 | [k] base2 | ||||
[k] fi | [k] fi | ||||
[k`] ko | [k`] ko | ||||
[k] sq | [k] sq | ||||
[k] bn | [k] bn | ||||
[k] lv | |||||
ustop/k_unasp_ [k] zh | ustop/k_unasp_ [k] zh | ||||
ustop/null [?] base | ustop/null [?] base | ||||
ustop/p [p] base | ustop/p [p] base | ||||
[p] sq | [p] sq | ||||
[p] bn | [p] bn | ||||
[ph] bn | [ph] bn | ||||
[p] lv | |||||
ustop/pr [p] base | ustop/pr [p] base | ||||
[p] base2 | [p] base2 | ||||
[p] fi | [p] fi | ||||
[p`] ko | [p`] ko | ||||
[p] sq | [p] sq | ||||
[p] bn | [p] bn | ||||
[p] lv | |||||
ustop/p_unasp_ [p] base2 | ustop/p_unasp_ [p] base2 | ||||
[p] fi | [p] fi | ||||
[p] hi | [p] hi | ||||
[p;] ro | [p;] ro | ||||
[p] sq | [p] sq | ||||
[p] bn | [p] bn | ||||
[p] lv | |||||
ustop/q [q] base | ustop/q [q] base | ||||
ustop/q_u [q] base | ustop/q_u [q] base | ||||
ustop/t [t] base | ustop/t [t] base | ||||
[t] sq | [t] sq | ||||
[t.] bn | [t.] bn | ||||
[t.h] bn | [t.h] bn | ||||
[t] lv | |||||
ustop/t_dnt [t] base | ustop/t_dnt [t] base | ||||
[t[] base | [t[] base | ||||
[t] base2 | [t] base2 | ||||
[ts;] ro | [ts;] ro | ||||
[z] zhy | [z] zhy | ||||
[tsh] zh | [tsh] zh | ||||
[ts] lv | |||||
ustop/tsh [tS] base | ustop/tsh [tS] base | ||||
[c] zhy | [c] zhy | ||||
ustop/tsh_ [tS] base | ustop/tsh_ [tS] base | ||||
[t] el | [t] el | ||||
[t] sq | [t] sq | ||||
[t.] bn | [t.] bn | ||||
[t] lv | |||||
ustop/tsh_pzd [tS;] zh | ustop/tsh_pzd [tS;] zh | ||||
ustop/tsh_pzd_unasp [tS;] zh | ustop/tsh_pzd_unasp [tS;] zh | ||||
ustop/tsh_sr [tS] sr | ustop/tsh_sr [tS] sr | ||||
vdiph2/i@_2 [i@] en_wm | vdiph2/i@_2 [i@] en_wm | ||||
vdiph2/ie [i@] en_wi | vdiph2/ie [i@] en_wi | ||||
[ie] fi | [ie] fi | ||||
vdiph2/ie_2 [ie] lv | |||||
vdiph2/ii@ [i@] en | vdiph2/ii@ [i@] en | ||||
[i@3] en | [i@3] en | ||||
vdiph2/ii@_3 [i@] vi | vdiph2/ii@_3 [i@] vi | ||||
[iU] vi | [iU] vi | ||||
[iu] zhy | [iu] zhy | ||||
vdiph2/iu_2 [iu] fi | vdiph2/iu_2 [iu] fi | ||||
[iu] lv | |||||
vdiph2/iu_3 [iu] af | vdiph2/iu_3 [iu] af | ||||
vdiph2/iu_4 [Iu] cy | vdiph2/iu_4 [Iu] cy | ||||
[Yu] cy | [Yu] cy | ||||
[o] zh | [o] zh | ||||
vdiph2/u-@ [y@] vi | vdiph2/u-@ [y@] vi | ||||
vdiph2/u#@ [U@] en_sc | vdiph2/u#@ [U@] en_sc | ||||
vdiph2/uaa [uo] lv | |||||
vdiph2/uo [uo] fi | vdiph2/uo [uo] fi | ||||
vdiph2/uu@ [U@] en | vdiph2/uu@ [U@] en | ||||
[U@] en_n | [U@] en_n | ||||
[AY] cy | [AY] cy | ||||
vdiph/aai_3 [ai] fi | vdiph/aai_3 [ai] fi | ||||
vdiph/aau [au] fi | vdiph/aau [au] fi | ||||
[au] lv | |||||
vdiph/aau_2 [aU] en_wi | vdiph/aau_2 [aU] en_wi | ||||
[aU] de | [aU] de | ||||
[VU] nl | [VU] nl | ||||
[aI] pt | [aI] pt | ||||
[a:I] vi | [a:I] vi | ||||
[aI] id | [aI] id | ||||
[ai] lv | |||||
vdiph/ai_2 [aI] cy | vdiph/ai_2 [aI] cy | ||||
[aY] cy | [aY] cy | ||||
vdiph/ai_3 [aI] no | vdiph/ai_3 [aI] no | ||||
vdiph/eei_2 [eI] eo | vdiph/eei_2 [eI] eo | ||||
[ei] fi | [ei] fi | ||||
[eI] id | [eI] id | ||||
[ei] lv | |||||
vdiph/eei_3 [eI] sk | vdiph/eei_3 [eI] sk | ||||
[eI] ku | [eI] ku | ||||
vdiph/eeu [EU] pt | vdiph/eeu [EU] pt | ||||
[oi] fi | [oi] fi | ||||
[OI] no | [OI] no | ||||
[oi] zhy | [oi] zhy | ||||
[oi] lv | |||||
vdiph/ooi_2 [OI] af | vdiph/ooi_2 [OI] af | ||||
vdiph/ooi_3 [OI] en_rp | vdiph/ooi_3 [OI] en_rp | ||||
[aI] en_wm | [aI] en_wm | ||||
[ui] fi | [ui] fi | ||||
[uI] vi | [uI] vi | ||||
[ui] zhy | [ui] zhy | ||||
[ui] lv | |||||
vdiph/u-i [yI] vi | vdiph/u-i [yI] vi | ||||
vdiph/ui_2 [uI] af | vdiph/ui_2 [uI] af | ||||
vdiph/ui_3 [uI] cy | vdiph/ui_3 [uI] cy | ||||
[&] sv | [&] sv | ||||
[&] bn | [&] bn | ||||
[&:] bn | [&:] bn | ||||
[&:] lv | |||||
vowel/0 [0] en | vowel/0 [0] en | ||||
[O] hi | [O] hi | ||||
[O] pt | [O] pt | ||||
[&/] pt | [&/] pt | ||||
[a#] rw | [a#] rw | ||||
[a/] rw | [a/] rw | ||||
[&] lv | |||||
vowel/a_2 [a] base2 | vowel/a_2 [a] base2 | ||||
[a] en_wi | [a] en_wi | ||||
[A:] en_wi | [A:] en_wi | ||||
[a] tr | [a] tr | ||||
[a] sq | [a] sq | ||||
[a:] ml | [a:] ml | ||||
[a] lv | |||||
vowel/a_6 [a] fr | vowel/a_6 [a] fr | ||||
[a2] fr | [a2] fr | ||||
vowel/aa [a] fi | vowel/aa [a] fi | ||||
[A] zh | [A] zh | ||||
vowel/aa_3 [A:] af | vowel/aa_3 [A:] af | ||||
[A] sq | [A] sq | ||||
[a:] lv | |||||
vowel/aa_4 [O:] en_us | vowel/aa_4 [O:] en_us | ||||
[A:] sv | [A:] sv | ||||
[O] vi | [O] vi | ||||
[E2] id | [E2] id | ||||
[E] da | [E] da | ||||
[E] bn | [E] bn | ||||
[e] lv | |||||
vowel/e_mid2 [E] af | vowel/e_mid2 [E] af | ||||
[E] de | [E] de | ||||
[E2] de | [E2] de | ||||
[e] sw | [e] sw | ||||
[e] tr | [e] tr | ||||
[E] ko | [E] ko | ||||
[e:] lv | |||||
vowel/@_fnt [@] en_wi | vowel/@_fnt [@] en_wi | ||||
[@2] en_wi | [@2] en_wi | ||||
[@2] hr | [@2] hr | ||||
[i] fr | [i] fr | ||||
[i:] fr | [i:] fr | ||||
[i:] sk | [i:] sk | ||||
[i] lv | |||||
[i:] lv | |||||
vowel/i_4 [i] fi | vowel/i_4 [i] fi | ||||
[i] hu | [i] hu | ||||
[I] it | [I] it | ||||
[o] hr | [o] hr | ||||
[o] vi | [o] vi | ||||
[O/] sq | [O/] sq | ||||
[o] lv | |||||
[o:] lv | |||||
vowel/oo_2 [0] en_sc | vowel/oo_2 [0] en_sc | ||||
[O] cy | [O] cy | ||||
[o] cs | [o] cs | ||||
vowel/uu_2 [U] base2 | vowel/uu_2 [U] base2 | ||||
[U] de | [U] de | ||||
[U] tr | [U] tr | ||||
[u] lv | |||||
[u:] lv | |||||
vowel/uu_3 [u] af | vowel/uu_3 [u] af | ||||
[y] zh | [y] zh | ||||
vowel/uu_4 [U] fi | vowel/uu_4 [U] fi |
beforenotvowel r/2 | beforenotvowel r/2 | ||||
formants vwl_fr/@R3+r3/rx%30 | formants vwl_fr/@R3+r3/rx%30 | ||||
after @2 vwl_fr/@R5+r3/rx%40 | after @2 vwl_fr/@R5+r3/rx%40 | ||||
after (u) vwl_fr/@R5+r3/rx%30 | |||||
after (e) vwl_fr/@R4+r3/rx%20 | after (e) vwl_fr/@R4+r3/rx%20 | ||||
endphoneme | endphoneme | ||||
phonemetable ne hi | phonemetable ne hi | ||||
include ph_nepali | include ph_nepali | ||||
phonemetable lv base | |||||
include ph_latvian |
#include "src/speak_lib.h" | #include "src/speak_lib.h" | ||||
#include "stdio.h" | #include "stdio.h" | ||||
#define CTRL_EMBEDDED 1 | #define CTRL_EMBEDDED 1 | ||||
CTTSEngObj *m_EngObj; | CTTSEngObj *m_EngObj; | ||||
ISpTTSEngineSite* m_OutputSite; | ISpTTSEngineSite* m_OutputSite; | ||||
FILE *f_log2=NULL; | FILE *f_log2=NULL; | ||||
ULONGLONG event_interest; | |||||
extern int AddNameData(const char *name, int wide); | extern int AddNameData(const char *name, int wide); | ||||
extern void InitNamedata(void); | extern void InitNamedata(void); | ||||
unsigned long audio_offset = 0; | unsigned long audio_offset = 0; | ||||
unsigned long audio_latest = 0; | unsigned long audio_latest = 0; | ||||
int prev_phoneme = 0; | |||||
int prev_phoneme_position = 0; | |||||
unsigned long prev_phoneme_time = 0; | |||||
unsigned int gBufSize = 0; | unsigned int gBufSize = 0; | ||||
wchar_t *TextBuf=NULL; | wchar_t *TextBuf=NULL; | ||||
FRAG_OFFSET *frag_offsets = NULL; | FRAG_OFFSET *frag_offsets = NULL; | ||||
int VisemeCode(unsigned int phoneme_name) | |||||
{//====================================== | |||||
// Convert eSpeak phoneme name into a SAPI viseme code | |||||
int ix; | |||||
unsigned int ph; | |||||
unsigned int ph_name; | |||||
#define PH(c1,c2) (c2<<8)+c1 // combine two characters into an integer for phoneme name | |||||
const unsigned char initial_to_viseme[128] = { | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||||
0, 0, 0, 0, 0, 0, 1, 0, 0, 0,19, 0, 0, 0, 0, 0, | |||||
0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, | |||||
4, 2,18,16,17, 4,18,20,12, 6,16,20,14,21,20, 3, | |||||
21,20,13,16,17, 4, 1, 5,20, 7,16, 0, 0, 0, 0, 0, | |||||
0, 1,21,16,19, 4,18,20,12, 6, 6,20,14,21,19, 8, | |||||
21,20,13,15,19, 7,18, 7,20, 7,15, 0, 0, 0, 0, 0 }; | |||||
const unsigned int viseme_exceptions[] = { | |||||
PH('a','I'), 11, | |||||
PH('a','U'), 9, | |||||
PH('O','I'), 10, | |||||
PH('t','S'), 16, | |||||
PH('d','Z'), 16, | |||||
PH('_','|'), 255, | |||||
0 | |||||
}; | |||||
ph_name = phoneme_name & 0xffff; | |||||
for(ix=0; (ph = viseme_exceptions[ix]) != 0; ix+=2) | |||||
{ | |||||
if(ph == ph_name) | |||||
{ | |||||
return(viseme_exceptions[ix+1]); | |||||
} | |||||
} | |||||
return(initial_to_viseme[phoneme_name & 0x7f]); | |||||
} | |||||
int SynthCallback(short *wav, int numsamples, espeak_EVENT *events); | int SynthCallback(short *wav, int numsamples, espeak_EVENT *events); | ||||
int SynthCallback(short *wav, int numsamples, espeak_EVENT *events) | int SynthCallback(short *wav, int numsamples, espeak_EVENT *events) | ||||
wchar_t *tailptr; | wchar_t *tailptr; | ||||
unsigned int text_offset; | unsigned int text_offset; | ||||
int length; | int length; | ||||
int phoneme_duration; | |||||
int this_viseme; | |||||
espeak_EVENT *event; | espeak_EVENT *event; | ||||
#define N_EVENTS 100 | #define N_EVENTS 100 | ||||
m_EngObj->CheckActions(m_OutputSite); | m_EngObj->CheckActions(m_OutputSite); | ||||
// return the events | // return the events | ||||
for(event=events; event->type != 0; event++) | |||||
for(event=events; (event->type != 0) && (n_Events < N_EVENTS); event++) | |||||
{ | { | ||||
audio_latest = event->audio_position + audio_offset; | audio_latest = event->audio_position + audio_offset; | ||||
Event->lParam = (long)event->id.name; | Event->lParam = (long)event->id.name; | ||||
Event->wParam = wcstol((wchar_t *)event->id.name,&tailptr,10); | Event->wParam = wcstol((wchar_t *)event->id.name,&tailptr,10); | ||||
} | } | ||||
if(event->type == espeakEVENT_PHONEME) | |||||
{ | |||||
if(event_interest & SPEI_VISEME) | |||||
{ | |||||
phoneme_duration = audio_latest - prev_phoneme_time; | |||||
// ignore some phonemes (which translate to viseme=255) | |||||
if((this_viseme = VisemeCode(event->id.number)) != 255) | |||||
{ | |||||
Event = &Events[n_Events++]; | |||||
Event->eEventId = SPEI_VISEME; | |||||
Event->elParamType = SPET_LPARAM_IS_UNDEFINED; | |||||
Event->ullAudioStreamOffset = ((prev_phoneme_position + audio_offset) * srate)/10; // ms -> bytes | |||||
Event->lParam = phoneme_duration << 16 | this_viseme; | |||||
Event->wParam = VisemeCode(prev_phoneme); | |||||
prev_phoneme = event->id.number; | |||||
prev_phoneme_time = audio_latest; | |||||
prev_phoneme_position = event->audio_position; | |||||
} | |||||
} | |||||
} | |||||
#ifdef deleted | #ifdef deleted | ||||
if(event->type == espeakEVENT_SENTENCE) | if(event->type == espeakEVENT_SENTENCE) | ||||
{ | { | ||||
gEmphasis = 0; | gEmphasis = 0; | ||||
gSayas = 0; | gSayas = 0; | ||||
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,path_install,0); | |||||
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,path_install,1); | |||||
espeak_SetVoiceByName(voice); | espeak_SetVoiceByName(voice); | ||||
espeak_SetSynthCallback(SynthCallback); | espeak_SetSynthCallback(SynthCallback); | ||||
m_ullAudioOff = 0; | m_ullAudioOff = 0; | ||||
m_OutputSite = pOutputSite; | m_OutputSite = pOutputSite; | ||||
pOutputSite->GetEventInterest(&event_interest); | |||||
xVolume = gVolume; | xVolume = gVolume; | ||||
xSpeed = gSpeed; | xSpeed = gSpeed; | ||||
} | } | ||||
audio_latest = 0; | audio_latest = 0; | ||||
prev_phoneme = 0; | |||||
prev_phoneme_time = 0; | |||||
prev_phoneme_position = 0; | |||||
size = ProcessFragList(pTextFragList,TextBuf,pOutputSite,&n_text_frag); | size = ProcessFragList(pTextFragList,TextBuf,pOutputSite,&n_text_frag); | ||||
if(size > 0) | if(size > 0) |
Lookup("_0C",ph_100); | Lookup("_0C",ph_100); | ||||
if((hundreds >= 10) && (((langopts.numbers & 0x0800) == 0) || (hundreds != 19))) | |||||
if(((langopts.numbers & 0x0800) != 0) && (hundreds == 19)) | |||||
{ | |||||
// speak numbers such as 1984 as years: nineteen-eighty-four | |||||
// ph_100[0] = 0; // don't say "hundred", we also need to surpess "and" | |||||
} | |||||
else | |||||
if(hundreds >= 10) | |||||
{ | { | ||||
ph_digits[0] = 0; | ph_digits[0] = 0; | ||||
int *flag; | int *flag; | ||||
int val; | int val; | ||||
}; | }; | ||||
static int optind; | |||||
int optind; | |||||
static int optional_argument; | static int optional_argument; | ||||
static const char *arg_opts = "afklpsvw"; // which options have arguments | static const char *arg_opts = "afklpsvw"; // which options have arguments | ||||
static char *opt_string=""; | static char *opt_string=""; |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
const char *version_string = "1.39.12 24.Oct.08"; | |||||
const char *version_string = "1.39.14 02.Nov.08"; | |||||
const int version_phdata = 0x013900; | const int version_phdata = 0x013900; | ||||
int option_device_number = -1; | int option_device_number = -1; |
int name2 = 0; | int name2 = 0; | ||||
Translator *tr; | Translator *tr; | ||||
static const unsigned char stress_amps_sk[8] = {16,16, 20,20, 20,24, 24,22 }; | |||||
static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; | |||||
// convert name string into a word of up to 4 characters, for the switch() | // convert name string into a word of up to 4 characters, for the switch() | ||||
while(*name != 0) | while(*name != 0) | ||||
name2 = (name2 << 8) + *name++; | name2 = (name2 << 8) + *name++; | ||||
} | } | ||||
break; | break; | ||||
case L('l','v'): // latvian | |||||
{ | |||||
tr = new Translator(); | |||||
SetupTranslator(tr,stress_lengths_sk,stress_amps_sk); | |||||
tr->langopts.stress_rule = 0; | |||||
tr->langopts.spelling_stress = 1; | |||||
tr->charset_a0 = charsets[4]; // ISO-8859-4 | |||||
tr->langopts.numbers = 0x409; | |||||
tr->langopts.stress_flags = 0x16; | |||||
} | |||||
break; | |||||
case L('m','k'): // Macedonian | case L('m','k'): // Macedonian | ||||
{ | { | ||||
static wchar_t vowels_cyrillic[] = {0x440, // also include 'р' [R] | static wchar_t vowels_cyrillic[] = {0x440, // also include 'р' [R] | ||||
case L('s','k'): // Slovak | case L('s','k'): // Slovak | ||||
case L('c','s'): // Czech | case L('c','s'): // Czech | ||||
{ | { | ||||
static const unsigned char stress_amps_sk[8] = {16,16, 20,20, 20,24, 24,22 }; | |||||
static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; | |||||
static const char *sk_voiced = "bdgjlmnrvwzaeiouy"; | static const char *sk_voiced = "bdgjlmnrvwzaeiouy"; | ||||
tr = new Translator(); | tr = new Translator(); |