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