Amplitude changes now apply also to mbrola voices. "voicing" attribute is now used in mbrola voice files to set the voice loudness. SSML commands such as <mark> and <prosody> were ignored if they were inside a multiword group (defined in *_list). This is now fixed so that the command is processed at the end of the group. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@267 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @@ -49,6 +49,8 @@ _[ 'EkIg@kl'am3||_|'aUf | |||
| _] 'EkIg@kl'am3||ts'u: | |||
| _< klaIn3 | |||
| _> grY:s3 | |||
| _« 'anfy:RUNsts,aIC@n | |||
| _» 'anfy:RUNsts,aIC@n||ts'u: | |||
| _` grA:v | |||
| _^ tsIrkUmflEks | |||
| _— g@d'aNk@nStr,IC | |||
| @@ -188,7 +190,7 @@ oder o:d3 $u+ $pause | |||
| sondern $pause | |||
| denn dEn $u+ $pause | |||
| weil $pause | |||
| als $u+ $brk | |||
| als als $u+ $brk | |||
| bevor b@fo:r $2 $pause | |||
| also $pause | |||
| wenn ,vEn $pause $strend | |||
| @@ -362,7 +364,7 @@ hätten h,Et@n $only | |||
| war %vA:r $only | |||
| warst %vA:rst $only | |||
| wart %vA:rt $only | |||
| waren 'vA:r@n | |||
| waren %vA:r@n | |||
| will %vIl $only | |||
| willst %vIlst $only | |||
| @@ -536,6 +538,7 @@ bronchie $alt | |||
| changier SaNZ'i:r | |||
| ciao tSaU | |||
| clique kli:k@ | |||
| coup ku: | |||
| dahlie $alt | |||
| @@ -568,6 +571,7 @@ erde e:rd@ | |||
| erst e:rst | |||
| ersten e:rst@n | |||
| erstmal e:rstma:l | |||
| erzgebirg e:rtsg@bIrg | |||
| extravagant $1 | |||
| extrem Ekstr'e:m | |||
| @@ -21,6 +21,7 @@ | |||
| .L01 l r | |||
| .L02 c f h k p q s t z // unvoiced, except s+vowel | |||
| .L03 a ä | |||
| .L04 o ö | |||
| // This file is UTF-8 encoded | |||
| @@ -38,6 +39,7 @@ | |||
| a (CC a | |||
| a (sch a | |||
| a (x a | |||
| a (ph A: | |||
| &CC) a (_ =A: | |||
| ai aI | |||
| @@ -161,11 +163,11 @@ | |||
| .group b | |||
| _) b (_ be: | |||
| _) b (L01A b // allow bl br at start of word | |||
| _) b (jA b // allow bj | |||
| b b | |||
| b) b | |||
| b (_N p | |||
| b (L02 p | |||
| blich plIC | |||
| b (sA b | |||
| bt (_N pt | |||
| @@ -221,7 +223,7 @@ | |||
| c) c | |||
| ck k | |||
| _) c (el S | |||
| _) c (el ts | |||
| fa) c (et ts | |||
| _) cey tsaI | |||
| chef (_ SEf | |||
| @@ -280,7 +282,6 @@ | |||
| d) d | |||
| d (_N t | |||
| d (L02 t | |||
| dlich tlIC | |||
| d (sA d | |||
| ds (_ ts | |||
| dt t | |||
| @@ -345,6 +346,7 @@ | |||
| e (CC E | |||
| e (sch E | |||
| e (x E | |||
| e (ph e: | |||
| ei aI | |||
| eu OY | |||
| @@ -427,6 +429,7 @@ | |||
| h) ee (_ 'e: | |||
| _) e (ff %E | |||
| l) e (g_ 'e: | |||
| kr) e (ier e: | |||
| eih (_ aI | |||
| _) eil (aP3 'aIl | |||
| _) eil (fP3 'aIl | |||
| @@ -518,7 +521,6 @@ | |||
| g (g | |||
| g (_N k | |||
| g (L02 k | |||
| glich klIC | |||
| g (sA g | |||
| gd (_N kt | |||
| _) gh (A g | |||
| @@ -547,7 +549,7 @@ | |||
| ungs) ge (C@ g@ | |||
| _) ge (beX ge: | |||
| geben ge:b@n | |||
| ge(birg g@ | |||
| gebirge (_S7 g@bIrg@ | |||
| _) gegen (@P5 ge:g@n | |||
| gegen ge:g@n | |||
| gegn ge:gn | |||
| @@ -631,6 +633,7 @@ | |||
| i (CC I | |||
| i (sch I | |||
| i (x I | |||
| i (ph i: | |||
| @) i (ng I | |||
| &CC) i (_ =i: | |||
| @@ -786,24 +789,24 @@ formal) ie =I@ | |||
| _) leit (@P4 l'aIt | |||
| _) lern (@@P4 l'Ern | |||
| _) lexi (@ lEksi: | |||
| &) lich (_S4 lIC | |||
| &) liche (_S5 lIC@ | |||
| &) lichem (_S6 lIC@m | |||
| &) lichen (_S6 lIC@n | |||
| &) licher (_S6 lIC3 | |||
| &) liches (_S6 lIC@s | |||
| &) lichere (_S7 lIC@r@ | |||
| &) licherem (_S8 lIC@r@m | |||
| &) licheren (_S8 lIC@r@n | |||
| &) licherer (_S8 lIC@r@3 | |||
| &) licheres (_S8 lIC@r@s | |||
| &) lichste (_S7 lICst@ | |||
| &) lichstem (_S8 lICst@m | |||
| &) lichsten (_S8 lICst@n | |||
| &) lichster (_S8 lICst@r | |||
| &) lichstes (_S8 lICst@s | |||
| &) lichkeit (_S8 lICkaIt | |||
| &) lichung (_S7 lIC%UN | |||
| &) lich (_S4 l2IC // [l2] means devoice previous consonant | |||
| &) liche (_S5 l2IC@ | |||
| &) lichem (_S6 l2IC@m | |||
| &) lichen (_S6 l2IC@n | |||
| &) licher (_S6 l2IC3 | |||
| &) liches (_S6 l2IC@s | |||
| &) lichere (_S7 l2IC@r@ | |||
| &) licherem (_S8 l2IC@r@m | |||
| &) licheren (_S8 l2IC@r@n | |||
| &) licherer (_S8 l2IC@r@3 | |||
| &) licheres (_S8 l2IC@r@s | |||
| &) lichste (_S7 l2ICst@ | |||
| &) lichstem (_S8 l2ICst@m | |||
| &) lichsten (_S8 l2ICst@n | |||
| &) lichster (_S8 l2ICst@r | |||
| &) lichstes (_S8 l2ICst@s | |||
| &) lichkeit (_S8 l2ICkaIt | |||
| &) lichung (_S7 l2IC%UN | |||
| @) lo (gisch l'o: | |||
| _) luft (CP4 l'Uft | |||
| @@ -860,6 +863,8 @@ formal) ie =I@ | |||
| &) ness (_N _^_EN | |||
| news _^_EN | |||
| nieder ni:d3 | |||
| nord (L04st n%Ort | |||
| nord (west n%Ort | |||
| .group o | |||
| _) o (_ o: | |||
| @@ -874,6 +879,7 @@ formal) ie =I@ | |||
| o (CC O | |||
| o (sch O | |||
| o (x O | |||
| o (ph o: | |||
| &CC) o (_ =o: | |||
| o (Co_ 'o: | |||
| o (lo_ o: | |||
| @@ -934,7 +940,8 @@ formal) ie =I@ | |||
| _) peri p,e:ri: | |||
| _) perio p,e:rIo: | |||
| _) periphe p,e:ri:fe: | |||
| _) personen (@P8 pErs'o:n@n | |||
| _) personen (@P8 pErz'o:n@n | |||
| person p%Erzo:n | |||
| philie f'i:li: | |||
| _) photo f,o:to: | |||
| _) pro (@ %pro: | |||
| @@ -966,6 +973,7 @@ formal) ie =I@ | |||
| q k | |||
| qu kv | |||
| @) que (_ =k | |||
| @) quen (_ =k@n | |||
| .group r | |||
| @@ -1040,6 +1048,7 @@ formal) ie =I@ | |||
| &C) sten (_S4 st@n | |||
| &C) ster (_S4 st3 | |||
| &C) stes (_S4 st@s | |||
| &n) st (_ st // needs more work | |||
| _be) st St | |||
| _ge) st St | |||
| @@ -1081,8 +1090,11 @@ formal) ie =I@ | |||
| @) straße (_S6 str,A:s@ | |||
| _) street _^_EN | |||
| style _^_EN | |||
| süd (L04st z%y:t | |||
| süd (west z%y:t | |||
| synthesi _^_EN | |||
| system z%Iste:m | |||
| system z%yste:m | |||
| s (system s | |||
| .group t | |||
| @@ -1425,6 +1437,6 @@ formal) ie =I@ | |||
| $ dOl'A: | |||
| __) - (_D mi:nUs | |||
| D_) - (_D daS | |||
| D_) - (_D StrIC | |||
| _) - (_D _ | |||
| @@ -77,7 +77,7 @@ n n^ p r R R2 s S | |||
| s2 t t2 tS ts v z Z | |||
| Dictionary de_dict 2011-05-14 | |||
| Dictionary de_dict 2011-05-23 | |||
| 3 @ @- a A A: aI aU | |||
| A~ E E2 E: e: EI i I | |||
| @@ -85,9 +85,10 @@ i2 i: n- o O o: OY U | |||
| u: W y y: Y: | |||
| * : ; b C d D dZ | |||
| f g g# h j k l m | |||
| n N p pF r s S t | |||
| tS ts v w x z Z | |||
| f g g# h j k l l2 | |||
| m n N p pF r R s | |||
| S t tS ts v w x z | |||
| Z | |||
| Dictionary el_dict 2011-05-19 | |||
| @@ -100,7 +101,7 @@ p Q r R s s; t T | |||
| ts v x z | |||
| Dictionary en_dict 2011-05-18 | |||
| Dictionary en_dict 2011-05-24 | |||
| 0 3 3: @ @- @2 @5 @L | |||
| a a# A: A@ aa aI aI@ aU | |||
| @@ -150,7 +151,7 @@ l m n N p r s S | |||
| s2 t v w Z | |||
| Dictionary fr_dict 2011-04-15 | |||
| Dictionary fr_dict 2011-05-21 | |||
| @ @- a A~ e E E: E~ | |||
| i I o O O~ u u: w | |||
| @@ -200,7 +201,7 @@ q r r. s S s. t T | |||
| t. th th. v w x z | |||
| Dictionary ta_dict 2011-05-08 | |||
| Dictionary ta_dict 2011-05-23 | |||
| a a: aI aU e E e: i | |||
| I i: o o: u U u2 u: | |||
| @@ -1,4 +1,4 @@ | |||
| / | |||
| // *************************************************************************** | |||
| // * Copyright (C) 2005 to 2010 by Jonathan Duddington * | |||
| // * email: [email protected] * | |||
| @@ -1,7 +1,7 @@ | |||
| // French translation rules for Espeak | |||
| // *************************************************************************** | |||
| // * Copyright (C) 2005 to 2010 by Jonathan Duddington * | |||
| // * Copyright (C) 2005 to 2011 by Jonathan Duddington * | |||
| // * email: [email protected] * | |||
| // * * | |||
| // * This program is free software; you can redistribute it and/or modify * | |||
| @@ -27,7 +27,7 @@ | |||
| // http://www.fluxnic.net/cicero | |||
| // | |||
| // Rules are now maintained by Michel Such <[email protected]> | |||
| // Last update: 2011-04-15 Michel Such <[email protected]> | |||
| // Last update: 2011-05-20 Michel Such <[email protected]> | |||
| // | |||
| // Letter classes: | |||
| @@ -72,6 +72,12 @@ | |||
| .L14 be in up ut | |||
| .L15 c f g h | |||
| // Hours | |||
| .L16 0 1 2 3 4 5 6 7 8 9 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |||
| // Minutes | |||
| .L17 0 1 2 3 4 5 | |||
| .group a | |||
| @@ -1518,6 +1524,7 @@ nC) y (_ _^_en | |||
| // symbols that are normally spoken when reading text | |||
| // , (D pilk:u | |||
| _L16_) : (_L17D_ Wr // Say time | |||
| $ dOlar | |||
| ° d@gre | |||
| _n_) ° // n° | |||
| @@ -298,6 +298,9 @@ tamil தமிழ் $text | |||
| போரடிக்காம $alt | |||
| பரத் $alt | |||
| பாஷா $alt | |||
| பூட் $alt | |||
| படுக $alt | |||
| படுகா $alt | |||
| (பி . ஏ) bije: | |||
| @@ -128,6 +128,7 @@ | |||
| _) க (ந்தர்வ gV | |||
| _) க (னக்க gV | |||
| _) க (னத் gV | |||
| _) க (னபாடி gV | |||
| _) க (னம gV | |||
| _) கப் (L04ா gVp | |||
| _) கப்ச (ிப் gVptS | |||
| @@ -167,6 +168,7 @@ | |||
| _) க (ானா g | |||
| க (ாரன k | |||
| க (ாரர k | |||
| _) க (ார்டன g | |||
| _) க (ிடுகிடு g | |||
| _) க (ின்னஸ g | |||
| _) க (ின்னென்ற g | |||
| @@ -205,6 +207,7 @@ | |||
| _) கி (ளாL04ை k | |||
| _) கி (ளாஸ்_ g | |||
| _) கிளிட kl.it.V# | |||
| _) கிளிண்ட (ன klint.V | |||
| _) கி (ளினிக் k | |||
| _) கிளிப் (_ kl.ip | |||
| _) கி (ளிப்பில k | |||
| @@ -430,8 +433,10 @@ _சூரிய) க (லா kV | |||
| _தாலு) க (ா k | |||
| _ராதி) க (ா k | |||
| _லங்) க (ா k | |||
| ஆஷி) க (ா k | |||
| இலா) க (ா k | |||
| _கீர்த்தி) க (ா k | |||
| _கேஷி) க (ா k | |||
| _தாலூ) க (ா k | |||
| _தேவி) க (ா k | |||
| _யுரே) க (ா k | |||
| @@ -444,6 +449,7 @@ _மோனி) க (ா k | |||
| _மௌனி) க (ா k | |||
| _ஸ்ரீலங்) க (ா k | |||
| _ஹன்L04ி) க (ா k | |||
| அனாமி) க (ா k | |||
| _ஹாங்) க (ாங் k | |||
| _தென்) க (ாசி k | |||
| _நேர்) க (ாணல k | |||
| @@ -645,6 +651,7 @@ _துப்பாக்கி) க்க (ுண்ட gg | |||
| ச (ந்திர tSV | |||
| _ஹட்) ச (ன sV | |||
| _வாட்) ச (ன sV | |||
| _டேவிட்) ச (ன sV | |||
| _) ச (ப்பா tSV | |||
| _) ச (ப்பி tSV | |||
| _) ச (ப்பு tSV | |||
| @@ -786,6 +793,8 @@ _தணிகா) ச (ல tSV | |||
| _) ச (ேலஞ் tS | |||
| _) ச (ேஷ்டை tS | |||
| _) ச (ைத்திய tS | |||
| _) ச (ைனா tS | |||
| _) ச (ைனா_நேவால s | |||
| _) ச (ைனாவ tS | |||
| _) ச (ைனீஸ tS | |||
| _) ச (ௌதரி tS | |||
| @@ -819,6 +828,7 @@ _தணிகா) ச (ல tSV | |||
| //sort | |||
| _வால்) ட t.V# | |||
| _கமெண்) ட t.V# | |||
| _ரிப்போர்) ட t.V# | |||
| அL04ால்) ட t.V# | |||
| @@ -830,6 +840,7 @@ _ரிப்போர்) ட t.V# | |||
| ங்) ட (ன t.V // -ington | |||
| _நியூ) ட (ன t.V | |||
| _மில்) ட (ன t.V | |||
| _) ட (னல t.V | |||
| _) ட (ன் t.V | |||
| _) ட (ப்_ t.V | |||
| _) டப்ப (ில t.Vbb | |||
| @@ -840,6 +851,7 @@ _ரிப்போர்) ட t.V# | |||
| _) ட (யரு t.V | |||
| _) ட (யர் t.V | |||
| _ப்ரிண்) ட (ர t.V | |||
| _ஷெல்) ட (ர t.V | |||
| _ஸ்கூ) ட (ர t.V | |||
| என்கவுண்) ட (ர t.V | |||
| என்கௌண்) ட (ர t.V | |||
| @@ -878,6 +890,7 @@ _ரிப்போர்) ட t.V# | |||
| _டியூ) ட (ி t. | |||
| _ட்யூ) ட (ி t. | |||
| _சேஃப்) ட (ி t. | |||
| _பேண்) ட (ி t. | |||
| _ராயல்) ட (ி t. | |||
| _க்வாலி) ட (ி t. | |||
| _நாவல்) ட (ி t. | |||
| @@ -896,6 +909,7 @@ _நாவல்) ட (ி t. | |||
| _) டி (யூசன t. | |||
| _) டியூட (ி d.jU:t. | |||
| _) டி (யூன t. | |||
| _) டி (யூப t. | |||
| _) டி (யூஷன t. | |||
| _) டி (ரங் t. | |||
| _) டி (ரங்கு t. | |||
| @@ -931,6 +945,7 @@ _நாவல்) ட (ி t. | |||
| _) டி (ரெயின t. | |||
| _) டி (ரெய்லர t. | |||
| _) டி (ரெஸ d. | |||
| இண்) டி (ரெஸ்ட t. | |||
| _) டிரேயின (ை t.re:jn | |||
| _) டி (ரை_ d. | |||
| _) டி (ரை_செஞ்ச t. | |||
| @@ -986,6 +1001,7 @@ _லான்_) ட (ென்னிஸ t. | |||
| _) டோரண்ட (ோ t.o:rVn.t. | |||
| _ப்ரி) ட (ோரிய t. | |||
| @மெண்) ட் t. // -ment | |||
| _பேண்) ட் t. | |||
| இண்டர்நெ) ட் t. | |||
| _ல) ட்ட d.d.V# | |||
| _ரெ) ட்ட (ியா d.d. | |||
| @@ -993,6 +1009,7 @@ _லான்_) ட (ென்னிஸ t. | |||
| அப்பாயிண்) ட்மெண்ட t.men.t.V# | |||
| _) ட் (யூசன t. | |||
| _) ட் (யூன t. | |||
| _) ட் (யூப t. | |||
| ஸ்) ட் (ர _|t. // ?? make t. distinct | |||
| _) ட் (ரங் t. | |||
| _) ட் (ரங்கு t. | |||
| @@ -1018,6 +1035,7 @@ _லான்_) ட (ென்னிஸ t. | |||
| _) ட் (ராலி t. | |||
| _) ட் (ராவல t. | |||
| _) ட் (ராவெல t. | |||
| எண்) ட் (ரி t. | |||
| _) ட்ரிக (ர t.riggV | |||
| _) ட்ரிக் t.rik | |||
| _) ட்ரிக்க (ர t.riggV | |||
| @@ -1028,6 +1046,7 @@ _லான்_) ட (ென்னிஸ t. | |||
| _போ) ட் (ரு t. | |||
| _) ட்ரெயி (லர t.rej | |||
| _) ட் (ரெய்லர t. | |||
| இண்) ட் (ரேஸ்ட t. | |||
| _) ட் (ரை_செஞ்ச t. | |||
| _) ட் (ரை_செய் t. | |||
| _) ட் (ரை_பண் t. | |||
| @@ -1110,6 +1129,7 @@ _நடுரோ) ட் (ல t. | |||
| _) த (டிமாட dV | |||
| _) த (டியன dV | |||
| _) த (டியர dV | |||
| _) த (டியான dV | |||
| _) த (ட்சசீல dV | |||
| _) த (ட்சன dV | |||
| _) த (ட்சிண dV | |||
| @@ -1339,6 +1359,7 @@ _நடுரோ) ட் (ல t. | |||
| _) த (ேச d | |||
| _) த (ேவகான d | |||
| _) த (ேவகி d | |||
| _) த (ேவகுரு d | |||
| _) த (ேவகுல d | |||
| _) த (ேவக் d | |||
| _) த (ேவசேன d | |||
| @@ -1425,6 +1446,7 @@ _பிரசார்_பார) த (ி t | |||
| _பிர) த (ீ t | |||
| த (ுறை t | |||
| வீண்) த (ேவை t | |||
| _நிவேதி) த (ை t | |||
| வீண்) த (ொல்லை t | |||
| அம்பே) த்க tkV# | |||
| யு) த்த ddV# | |||
| @@ -1481,6 +1503,7 @@ _சிறை) த்த (ண்டனை ddV | |||
| வி) த்த (ையால்_ dd | |||
| வி) த்த (ையி dd | |||
| வி) த்த (ையை dd | |||
| _ஜெ) த் (மலானி t | |||
| ச) த (்ய t | |||
| நி) த (்ய t | |||
| இ) த் (யாதி t | |||
| @@ -1561,6 +1584,8 @@ _காமசூ) த் (ர t | |||
| _) ப (ச்சன bV | |||
| _) ப (ச்சான bV | |||
| _) ப (ஜ bV | |||
| _) ப (டுகாக்கள bV | |||
| _) ப (டுகாவ bV | |||
| _) ப (ட்சண bV | |||
| _) ப (ட்சிக்க bV | |||
| _) ப (ட்சிப்ப bV | |||
| @@ -1613,6 +1638,8 @@ _சொந்த_) ப (ந்த bV | |||
| _) ப (ர்கர bV | |||
| _) ப (ர்த் bV | |||
| _) ப (ர்னாலா bV | |||
| _) பர்னிச (ர fVrnitSV | |||
| _) ப (ர்னிச்சர fV | |||
| _) ப (ர்மா bV | |||
| _) ப (ர்லாங் fV | |||
| _) ப (லகீன bV | |||
| @@ -1724,11 +1751,14 @@ _சொந்த_) ப (ந்த bV | |||
| _) ப (ாமாவ b | |||
| _) ப (ாமினி b | |||
| _) ப (ாம்பே b | |||
| _ஆடு_) ப (ாம்பே p | |||
| _விளையாடு_) ப (ாம்பே p | |||
| _) ப (ாரத b | |||
| _) ப (ாரதி b | |||
| _) ப (ாரத்த b | |||
| _) ப (ாரம b | |||
| _) ப (ாரம்பரிய p | |||
| _) ப (ாரவி b | |||
| _) ப (ாராமுல்லா b | |||
| _) ப (ாரிஸ்டர b | |||
| _) ப (ார்L04லோனா b | |||
| @@ -1812,6 +1842,7 @@ _ராகத்தின்_) ப (ாவ b | |||
| _) ப (ிட்டடி b | |||
| _) ப (ினாமி b | |||
| _) ப (ினிஷ f | |||
| _) பின் (_லேடன b | |||
| _) ப (ின்லாந்த f | |||
| _) பிப (ி bip | |||
| _) ப (ிபிசி b // bbc | |||
| @@ -1892,6 +1923,7 @@ _ராகத்தின்_) ப (ாவ b | |||
| _) பி (ராண்ட p | |||
| _) பி (ராண்ட்_ b | |||
| _) பி (ராதித் p | |||
| _) பி (ராத்தல b | |||
| _) பி (ராந்தி_ b | |||
| _) பி (ராந்தியங் p | |||
| _) பி (ராந்தியத் p | |||
| @@ -1936,6 +1968,7 @@ _ராகத்தின்_) ப (ாவ b | |||
| _) பி (ரிஸ்டல b | |||
| _) பிரிஸ்ப (ேன brisb | |||
| _) பிரு (கன்நளை bri | |||
| _) பி (ருகு b | |||
| _) பிரு (ந்தா bri | |||
| _) பிரெஞ்ச fren^tSV# | |||
| _) பிரெட்ரிக் fred.rik | |||
| @@ -1948,6 +1981,8 @@ _ராகத்தின்_) ப (ாவ b | |||
| _) பி (ரைல b | |||
| _) பி (ரோகிதர p | |||
| _) பி (ரௌச b | |||
| _) பி (ரௌன b | |||
| _) ப (ில்டப் b | |||
| _) ப (ில்டிங் b | |||
| _) ப (ில்லியன b | |||
| _) பி (ளவுஸ b | |||
| @@ -2076,6 +2111,7 @@ _பெனசீர்_) ப (ுட்டோ b | |||
| _) ப (ேகத் b | |||
| _) ப (ேகம b | |||
| _) ப (ேக்கரி b | |||
| _) ப (ேங்க் b | |||
| _) ப (ேச்சலர b | |||
| _) ப (ேச்சிலர b | |||
| _) ப (ேச்சுலர b | |||
| @@ -2098,6 +2134,7 @@ _பெனசீர்_) ப (ுட்டோ b | |||
| _) ப (ொம்மன b | |||
| _) ப (ொம்மல b | |||
| _) ப (ொம்மை b | |||
| _) ப (ோஃபோர் b | |||
| _) ப (ோக_L11 b | |||
| _) ப (ோகங்க b | |||
| _) ப (ோகத்த b | |||
| @@ -2126,6 +2163,7 @@ _பெனசீர்_) ப (ுட்டோ b | |||
| _) ப (ோன்கள f | |||
| _) ப (ோன்ஸ்லே b | |||
| _) போப (ால bo:p | |||
| _) போப (ோர் bo:f | |||
| _) ப (ோரடிக்காமலா b | |||
| _) ப (ோரடிக்குத b | |||
| _) ப (ோரடிக்கும b | |||
| @@ -2146,6 +2184,7 @@ _சந்திர_) ப (ோஸ b | |||
| _) ப் (ரவுச b | |||
| _) ப் (ரஷ் b | |||
| _) ப் (ரஸல்ஸ b | |||
| _) ப் (ராத்தல b | |||
| _) ப் (ரான்சிஸ்க f | |||
| _) ப் (ரான்ஸ f | |||
| _) ப் (ராவ b | |||
| @@ -2162,6 +2201,7 @@ _சந்திர_) ப (ோஸ b | |||
| _) ப் (ரோக்கர b | |||
| _) ப்ரோட (ான pro:t | |||
| _) ப் (ரௌச b | |||
| _) ப் (ரௌன b | |||
| _) ப் (ளவுஸ b | |||
| _) ப் (ளோரிடா f | |||
| _) ப் (ளௌஸ b | |||
| @@ -2342,6 +2382,7 @@ _ப்ரின்சி) ப (ால p | |||
| கண்டு) ப (ிடி p | |||
| திமிர்) ப (ிடி p | |||
| ராவல்) ப (ிண்டி p | |||
| _டால்) ப (ின f | |||
| ஒ) ப (ினியன p | |||
| அன்) ப (ின் b | |||
| _பண்) ப (ின் b | |||
| @@ -2690,6 +2731,7 @@ _சந்தேக) ப்ப (ுத்தி bb | |||
| இ (ரசிக்க | |||
| இ (ரசித்த | |||
| இ (ரத்த | |||
| இரப்ப (ர irVbbV | |||
| இ (ரயில | |||
| இ (ராக | |||
| இ (ராச | |||
| @@ -1,8 +0,0 @@ | |||
| name greek-ancient | |||
| language grc | |||
| gender male | |||
| stressLength 170 170 190 190 0 0 230 240 | |||
| dictrules 1 | |||
| words 3 | |||
| @@ -1,3 +0,0 @@ | |||
| name lojban | |||
| language jbo | |||
| @@ -1,7 +1,9 @@ | |||
| language pt 7 | |||
| name brazil-mbrola-1 | |||
| gender male | |||
| pitch 82 117 | |||
| voicing 80 | |||
| dictrules 2 3 4 | |||
| @@ -1,9 +1,10 @@ | |||
| language pt 7 | |||
| name brazil-mbrola-3 | |||
| gender male | |||
| pitch 82 117 | |||
| pitch 80 120 | |||
| dictrules 2 3 4 | |||
| voicing 120 | |||
| mbrola br3 ptbr_phtrans | |||
| @@ -1,7 +1,9 @@ | |||
| language pt 7 | |||
| name brazil-mbrola-4 | |||
| gender female | |||
| pitch 140 220 | |||
| voicing 80 | |||
| dictrules 2 3 4 | |||
| @@ -5,5 +5,6 @@ gender male | |||
| dictionary hbs | |||
| dictrules 1 | |||
| voicing 150 | |||
| pitch 82 117 | |||
| mbrola cr1 cr1_phtrans | |||
| @@ -1,6 +1,7 @@ | |||
| name german-mbrola-2 | |||
| language de 6 | |||
| gender male | |||
| voicing 80 | |||
| mbrola de2 de2_phtrans | |||
| @@ -2,5 +2,7 @@ name german-mbrola-4 | |||
| language de 6 | |||
| gender male | |||
| voicing 130 | |||
| mbrola de4 de4_phtrans | |||
| @@ -2,5 +2,7 @@ name en-german | |||
| language en 9 | |||
| gender male | |||
| voicing 130 | |||
| mbrola de4 de4_phtrans | |||
| @@ -2,6 +2,7 @@ name german-mbrola-7 | |||
| language de 7 | |||
| gender female | |||
| voicing 150 | |||
| pitch 140 220 | |||
| mbrola de7 de6_phtrans 22050 | |||
| @@ -3,5 +3,6 @@ language en-uk 3 | |||
| language en 2 | |||
| gender male | |||
| voicing 150 | |||
| pitch 82 117 | |||
| mbrola en1 en1_phtrans | |||
| @@ -5,5 +5,7 @@ gender male | |||
| dictrules 1 | |||
| stressLength 180 180 180 180 0 0 220 220 | |||
| pitch 82 117 | |||
| voicing 70 | |||
| mbrola fr1 fr1_phtrans | |||
| @@ -4,5 +4,6 @@ gender male | |||
| dictrules 1 | |||
| pitch 82 117 | |||
| voicing 70 | |||
| mbrola fr1 fr1_phtrans | |||
| @@ -4,5 +4,6 @@ gender female | |||
| dictrules 1 | |||
| pitch 140 220 | |||
| voicing 90 | |||
| mbrola fr1 fr1_phtrans | |||
| @@ -4,5 +4,6 @@ gender female | |||
| dictrules 1 | |||
| pitch 140 220 | |||
| voicing 90 | |||
| mbrola fr1 fr1_phtrans | |||
| @@ -3,4 +3,5 @@ language el 7 | |||
| gender male | |||
| pitch 82 117 | |||
| voicing 65 | |||
| mbrola gr2 gr2_phtrans | |||
| @@ -3,4 +3,5 @@ language en 7 | |||
| gender male | |||
| pitch 82 117 | |||
| voicing 65 | |||
| mbrola gr2 gr2_phtrans | |||
| @@ -3,4 +3,5 @@ language hu 7 | |||
| gender female | |||
| pitch 140 220 | |||
| voicing 160 | |||
| mbrola hu1 hu1_phtrans | |||
| @@ -3,4 +3,5 @@ language en 10 | |||
| gender female | |||
| pitch 140 220 | |||
| voicing 160 | |||
| mbrola hu1 hu1_phtrans | |||
| @@ -2,5 +2,6 @@ name mbrola-icelandic | |||
| language is 6 | |||
| gender male | |||
| voicing 180 | |||
| mbrola ic1 ic1_phtrans | |||
| @@ -3,5 +3,6 @@ language id 7 | |||
| gender male | |||
| pitch 82 117 | |||
| voicing 120 | |||
| mbrola id1 id1_phtrans | |||
| @@ -3,6 +3,7 @@ language it 7 | |||
| gender male | |||
| pitch 82 117 | |||
| voicing 65 | |||
| mbrola it3 it3_phtrans | |||
| replace 03 i I // final unstressed "i" | |||
| @@ -3,6 +3,7 @@ language it 7 | |||
| gender female | |||
| pitch 140 220 | |||
| voicing 60 | |||
| mbrola it4 it3_phtrans | |||
| replace 03 i I // final unstressed "i" | |||
| @@ -3,5 +3,7 @@ name dutch-mbrola-2 | |||
| gender male | |||
| pitch 82 117 | |||
| voicing 130 | |||
| mbrola nl2 nl_phtrans | |||
| @@ -3,5 +3,7 @@ name en-dutch | |||
| gender male | |||
| pitch 82 117 | |||
| voicing 130 | |||
| mbrola nl2 nl_phtrans | |||
| @@ -3,4 +3,5 @@ language pl 7 | |||
| gender female | |||
| pitch 140 220 | |||
| voicing 120 | |||
| mbrola pl1 pl1_phtrans | |||
| @@ -1,9 +1,10 @@ | |||
| language pt 7 | |||
| name portugal-mbrola-1 | |||
| gender female | |||
| pitch 140 220 | |||
| pitch 145 240 | |||
| dictrules 1 | |||
| voicing 70 | |||
| mbrola pt1 pt1_phtrans | |||
| @@ -3,5 +3,7 @@ language sv 7 | |||
| gender male | |||
| pitch 82 117 | |||
| voicing 120 | |||
| mbrola sw1 sv_phtrans | |||
| @@ -3,5 +3,7 @@ language en 11 | |||
| gender male | |||
| pitch 82 117 | |||
| voicing 120 | |||
| mbrola sw1 sv_phtrans | |||
| @@ -3,5 +3,7 @@ language sv 8 | |||
| gender female | |||
| pitch 140 220 | |||
| voicing 130 | |||
| mbrola sw2 sv2_phtrans | |||
| @@ -3,5 +3,7 @@ language en | |||
| gender female | |||
| pitch 140 220 | |||
| voicing 130 | |||
| mbrola sw2 sv2_phtrans | |||
| @@ -3,6 +3,8 @@ language tr 7 | |||
| gender female | |||
| pitch 140 220 | |||
| voicing 170 | |||
| mbrola tr2 tr1_phtrans | |||
| dictrules 1 | |||
| @@ -9,4 +9,5 @@ dictrules 3 6 | |||
| stressLength 170 135 205 205 0 0 245 275 | |||
| pitch 82 117 | |||
| voicing 80 | |||
| mbrola us2 us_phtrans | |||
| @@ -8,5 +8,6 @@ dictrules 3 6 | |||
| stressLength 170 135 205 205 0 0 245 275 | |||
| voicing 150 | |||
| pitch 82 117 | |||
| mbrola us3 us3_phtrans | |||
| @@ -12,7 +12,7 @@ consonants 10 116 | |||
| en-wi 30 150 | |||
| af 39 136 | |||
| cy 29 132 | |||
| de 37 138 | |||
| de 41 139 | |||
| eo 13 114 | |||
| jbo 2 114 | |||
| nci 3 123 | |||
| @@ -368,8 +368,8 @@ l/l_ [l] base | |||
| [l/] fr | |||
| l/l_@ [l/3] base | |||
| [l/] fr | |||
| l/l@ [h†s] base | |||
| [l#] base | |||
| l/l@ [l#] base | |||
| [”¦] base | |||
| [l] fr | |||
| [l/2] fr | |||
| [K] nso | |||
| @@ -402,16 +402,16 @@ l/L2_oL [l/2] base | |||
| l/L2_uL [l/2] base | |||
| l/l_3 [l/] de | |||
| l/l_4 [ll] sq | |||
| l/la [h†s] base | |||
| [l#] base | |||
| l/la [l#] base | |||
| [”¦] base | |||
| [l] fr | |||
| [l/2] fr | |||
| [K] nso | |||
| [K] tn | |||
| l/l_a [l/3] base | |||
| [l/] fr | |||
| l/le [h†s] base | |||
| [l#] base | |||
| l/le [l#] base | |||
| [”¦] base | |||
| [l] fr | |||
| [l/2] fr | |||
| [K] nso | |||
| @@ -422,8 +422,8 @@ l/L_eL_af [&] af | |||
| [&:] af | |||
| l/l_front [L] sq | |||
| l/l_front_ [l/4] sq | |||
| l/li [h†s] base | |||
| [l#] base | |||
| l/li [l#] base | |||
| [”¦] base | |||
| [l] fr | |||
| [l/2] fr | |||
| [l] zh | |||
| @@ -436,8 +436,8 @@ ll/ll [L] bg | |||
| ll/_ll [L] bg | |||
| l/l_long [l] base | |||
| [l] fr | |||
| l/lo [h†s] base | |||
| [l#] base | |||
| l/lo [l#] base | |||
| [”¦] base | |||
| [l/2] fr | |||
| [K] nso | |||
| [K] tn | |||
| @@ -446,8 +446,8 @@ l/l_o [l/3] base | |||
| l^/l_rfx [l.] base | |||
| [l] ru | |||
| [l^] ru | |||
| l/lu [h†s] base | |||
| [l#] base | |||
| l/lu [l#] base | |||
| [”¦] base | |||
| [l] fr | |||
| [l/2] fr | |||
| [K] nso | |||
| @@ -1,3 +1,5 @@ | |||
| volume 16 | |||
| 0 l/2 NULL 0 l | |||
| 0 l/ NULL 0 l | |||
| 0 r/ NULL 0 r | |||
| @@ -1,4 +1,3 @@ | |||
| volume 16 | |||
| 0 l/2 NULL 0 l | |||
| 0 l/ NULL 0 l | |||
| @@ -51,7 +51,7 @@ | |||
| 0 O~ NULL 0 o~ | |||
| 16 _| VWL 0 ? | |||
| 16 _! VWL 0 ? | |||
| //16 _! VWL 0 ? | |||
| // phonemes for English words | |||
| 0 @L NULL 0 L | |||
| @@ -1,4 +1,4 @@ | |||
| //volume 29 | |||
| 0 oU NULL 0 @U | |||
| 0 a# NULL 0 @ | |||
| 0 @2 NULL 0 @ | |||
| @@ -1,4 +1,4 @@ | |||
| volume 15 | |||
| 0 l/2 NULL 0 l | |||
| 0 l/ NULL 0 l | |||
| 0 l2 NULL 0 l | |||
| @@ -1,4 +1,4 @@ | |||
| volume 16 | |||
| volume 15 | |||
| 0 l/2 NULL 0 l | |||
| 0 l/ NULL 0 l | |||
| @@ -1,4 +1,3 @@ | |||
| volume 32 | |||
| 0 l/2 NULL 0 l | |||
| 0 l/ NULL 0 l | |||
| @@ -1,4 +1,3 @@ | |||
| volume 32 | |||
| // CR1 doesn't like same phonemes twice | |||
| 0 e E 5 e _ | |||
| @@ -1,4 +1,5 @@ | |||
| // for voices "it3" "it4" | |||
| volume 15 | |||
| 0 r/ NULL 0 r | |||
| 0 w/ NULL 0 w | |||
| @@ -1,3 +1,5 @@ | |||
| volume 15 | |||
| 0 l/ NULL 0 w | |||
| 0 l/2 w 0 l | |||
| 0 l/2 j 0 l | |||
| @@ -1,3 +1,5 @@ | |||
| volume 15 | |||
| 0 l/ NULL 0 w | |||
| 0 l/2 w 0 l | |||
| 0 l/2 j 0 l | |||
| @@ -67,7 +67,7 @@ | |||
| 0 aU@ NULL 70 A: u0 | |||
| 0 T VWL 0 th | |||
| 0 T NULL 0 t | |||
| 0 D NULL 0 z | |||
| 0 D NULL 0 d | |||
| 0 w NULL 0 v | |||
| 0 z NULL 0 s | |||
| 0 tS NULL 50 t rs | |||
| @@ -63,7 +63,7 @@ | |||
| 0 aU@ NULL 70 A: u0 | |||
| 0 T VWL 0 th | |||
| 0 T NULL 0 t | |||
| 0 D NULL 0 z | |||
| 0 D NULL 0 d | |||
| 0 w NULL 0 v | |||
| 0 z NULL 0 s | |||
| 0 tS NULL 50 t s | |||
| @@ -400,6 +400,37 @@ phoneme A~ | |||
| FMT(vnasal/aa_n4) | |||
| endphoneme | |||
| phoneme l2 // as [l] but devoice previous phoneme | |||
| liquid lengthmod 7 | |||
| ChangePhoneme (l) | |||
| endphoneme | |||
| phoneme b | |||
| vcd alv frc sibilant | |||
| IF nextPh(l2) THEN | |||
| ChangePhoneme(p) | |||
| ENDIF | |||
| CALL base/b | |||
| endphoneme | |||
| phoneme d | |||
| vcd alv stop | |||
| IF nextPh(l2) THEN | |||
| ChangePhoneme(t) | |||
| ENDIF | |||
| CALL base/d | |||
| endphoneme | |||
| phoneme g | |||
| vcd vel stop | |||
| IF nextPh(l2) THEN | |||
| ChangePhoneme(k) | |||
| ENDIF | |||
| CALL base/g | |||
| endphoneme | |||
| // translate from English to German phonemes | |||
| equivalents NULL // disable this table | |||
| 0 O | |||
| @@ -54,7 +54,7 @@ endphoneme | |||
| phoneme || // End Word | |||
| pause | |||
| lengthmod 1 | |||
| lengthmod 9 // no effect | |||
| endphoneme | |||
| phoneme _ // Short pause | |||
| @@ -536,6 +536,13 @@ static void WritePhMnemonic(char **buf, PHONEME_TAB *ph, PHONEME_LIST *plist) | |||
| phon_out = *buf; | |||
| if(ph->code == phonEND_WORD) | |||
| { | |||
| // ignore | |||
| phon_out[0] = 0; | |||
| return; | |||
| } | |||
| if(option_phonemes == 3) | |||
| { | |||
| // has an ipa name been defined for this phoneme ? | |||
| @@ -2920,6 +2927,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
| const char *word_end; | |||
| const char *word1; | |||
| int wflags = 0; | |||
| int wflags2; | |||
| char word_buf[N_WORD_BYTES+1]; | |||
| if(wtab != NULL) | |||
| @@ -3014,11 +3022,16 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor | |||
| skipwords = flag - 80; | |||
| // don't use the contraction if any of the words are emphasized | |||
| for(ix=0; ix <= skipwords; ix++) | |||
| // or has an embedded command, such as MARK | |||
| if(wtab != NULL) | |||
| { | |||
| if(wflags & FLAG_EMPHASIZED2) | |||
| for(ix=0; ix <= skipwords; ix++) | |||
| { | |||
| condition_failed = 1; | |||
| if(wtab[ix].flags & FLAG_EMPHASIZED2) | |||
| // if(((wflags2 = wtab[ix].flags) & FLAG_EMPHASIZED2) || ((ix > 0) && (wflags2 & FLAG_EMBEDDED))) | |||
| { | |||
| condition_failed = 1; | |||
| } | |||
| } | |||
| } | |||
| @@ -47,9 +47,7 @@ | |||
| #define phVOWEL2 0x100 // liquid that is considered a vowel | |||
| #define phPALATAL 0x200 | |||
| #define phSINGLE_INSTN 0x1000 // this phoneme has a single instruction program, with an implicit Return | |||
| #define phAPPENDPH 0x2000 // always insert another phoneme (link_out) after this one | |||
| #define phBRKAFTER 0x4000 // [*] add a post-pause | |||
| #define phBEFOREPAUSE 0x8000 // replace with the link_out phoneme if the next phoneme is a pause | |||
| #define phNONSYLLABIC 0x100000 // don't count this vowel as a syllable when finding the stress position | |||
| #define phLONG 0x200000 | |||
| @@ -106,14 +104,14 @@ extern const unsigned char pause_phonemes[8]; // 0, vshort, short, pause, long, | |||
| // main table of phonemes, index by phoneme number (1-254) | |||
| typedef struct { | |||
| unsigned int mnemonic; // 1st char is in the l.s.byte | |||
| unsigned int mnemonic; // Up to 4 characters. The first char is in the l.s.byte | |||
| unsigned int phflags; // bits 16-19 place of articulation | |||
| unsigned short program; | |||
| unsigned short program; // index into phondata file | |||
| unsigned char code; // the phoneme number | |||
| unsigned char type; // phVOWEL, phPAUSE, phSTOP etc | |||
| unsigned char start_type; | |||
| unsigned char end_type; | |||
| unsigned char std_length; // for vowels, in mS/2; for phSTRESS, the stress/tone type | |||
| unsigned char std_length; // for vowels, in mS/2; for phSTRESS phonemes, this is the stress/tone type | |||
| unsigned char length_mod; // a length_mod group number, used to access length_mod_tab | |||
| } PHONEME_TAB; | |||
| @@ -139,15 +139,18 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int | |||
| if(GetFileLength(path) <= 0) | |||
| { | |||
| sprintf(path,"/usr/share/mbrola/%s",mbrola_voice); | |||
| if(GetFileLength(path) <= 0) | |||
| { | |||
| sprintf(path,"/usr/share/mbrola/%s/%s",mbrola_voice,mbrola_voice); | |||
| if(GetFileLength(path) <= 0) | |||
| { | |||
| sprintf(path,"/usr/share/mbrola/voices/%s",mbrola_voice); | |||
| } | |||
| } | |||
| } | |||
| if(GetFileLength(path) <= 0) | |||
| { | |||
| sprintf(path,"/usr/share/mbrola/%s/%s",mbrola_voice,mbrola_voice); | |||
| } | |||
| if(GetFileLength(path) <= 0) | |||
| { | |||
| sprintf(path,"/usr/share/mbrola/voices/%s",mbrola_voice); | |||
| } | |||
| close_MBR(); | |||
| #endif | |||
| #ifdef PLATFORM_WINDOWS | |||
| if(load_MBR() == FALSE) // load mbrola.dll | |||
| @@ -478,7 +481,8 @@ int MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, int resume, FILE *f_mbr | |||
| else | |||
| len = (80 * speed.wav_factor)/256; | |||
| DoMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, ph->mnemonic); | |||
| if(ph->code != phonEND_WORD) | |||
| DoMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, ph->mnemonic); | |||
| ptr += sprintf(ptr,"%s\t",WordToString(name)); | |||
| @@ -645,12 +649,15 @@ int MbrolaGenerate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
| } | |||
| int MbrolaFill(int length, int resume) | |||
| {//=================================== | |||
| // Read audio data from Mbrola (length is in milisecs) | |||
| int MbrolaFill(int length, int resume, int amplitude) | |||
| {//================================================== | |||
| // Read audio data from Mbrola (length is in millisecs) | |||
| static int n_samples; | |||
| int req_samples, result; | |||
| int ix; | |||
| short value16; | |||
| int value; | |||
| if (!resume) | |||
| n_samples = samplerate * length / 1000; | |||
| @@ -661,7 +668,20 @@ int MbrolaFill(int length, int resume) | |||
| result = read_MBR((short *)out_ptr, req_samples); | |||
| if (result <= 0) | |||
| return 0; | |||
| out_ptr += result*2; | |||
| for(ix=0; ix < result; ix++) | |||
| { | |||
| value16 = out_ptr[0] + (out_ptr[1] << 8); | |||
| value = value16 * amplitude; | |||
| value = value / 40; // adjust this constant to give a suitable amplitude for mbrola voices | |||
| if(value > 0x7fff) | |||
| value = 0x7fff; | |||
| if(value < -0x8000) | |||
| value = 0x8000; | |||
| out_ptr[0] = value; | |||
| out_ptr[1] = value >> 8; | |||
| out_ptr += 2; | |||
| } | |||
| n_samples -= result; | |||
| return n_samples ? 1 : 0; | |||
| } | |||
| @@ -688,7 +708,7 @@ int MbrolaGenerate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
| return(0); | |||
| } | |||
| int MbrolaFill(int length, int resume) | |||
| int MbrolaFill(int length, int resume, int amplitude) | |||
| { | |||
| return(0); | |||
| } | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.45.27 19.May.11"; | |||
| const char *version_string = "1.45.28 24.May.11"; | |||
| const int version_phdata = 0x014500; | |||
| int option_device_number = -1; | |||
| @@ -1393,7 +1393,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
| // DoMarker(espeakEVENT_END, count_characters, 0, count_sentences); // end of clause | |||
| if(p->newword & 1) | |||
| DoMarker(espeakEVENT_WORD, sourceix, p->sourceix >> 11, clause_start_word + word_count++); | |||
| DoMarker(espeakEVENT_WORD, sourceix, p->sourceix >> 11, clause_start_word + word_count++); // NOTE, this count doesn't include multiple-word pronunciations in *_list. eg (of a) | |||
| } | |||
| EndAmplitude(); | |||
| @@ -1401,7 +1401,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume) | |||
| if(p->prepause > 0) | |||
| DoPause(p->prepause,1); | |||
| if(option_phoneme_events && (p->type != phVOWEL)) | |||
| if(option_phoneme_events && (p->type != phVOWEL) && (p->ph->code != phonEND_WORD)) | |||
| { | |||
| // Note, for vowels, do the phoneme event after the vowel-start | |||
| DoMarker(espeakEVENT_PHONEME, sourceix, 0, p->ph->mnemonic); | |||
| @@ -553,7 +553,7 @@ espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int | |||
| void SetParameter(int parameter, int value, int relative); | |||
| int MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, int resume, FILE *f_mbrola); | |||
| int MbrolaGenerate(PHONEME_LIST *phoneme_list, int *n_ph, int resume); | |||
| int MbrolaFill(int length, int resume); | |||
| int MbrolaFill(int length, int resume, int amplitude); | |||
| void MbrolaReset(void); | |||
| void DoEmbedded(int *embix, int sourceix); | |||
| void DoMarker(int type, int char_posn, int length, int value); | |||
| @@ -1672,9 +1672,20 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa | |||
| } while((embedded_cmd & 0x80) == 0); | |||
| } | |||
| if(word[0] == 0) | |||
| if((word[0] == 0) || (word_flags & FLAG_DELETE_WORD)) | |||
| { | |||
| // nothing to translate | |||
| // nothing to translate. Add a dummy phoneme to carry any embedded commands | |||
| if(embedded_flag) | |||
| { | |||
| ph_list2[n_ph_list2].phcode = phonEND_WORD; | |||
| ph_list2[n_ph_list2].stresslevel = 0; | |||
| ph_list2[n_ph_list2].wordstress = 0; | |||
| ph_list2[n_ph_list2].tone_ph = 0; | |||
| ph_list2[n_ph_list2].synthflags = embedded_flag; | |||
| ph_list2[n_ph_list2].sourceix = 0; | |||
| n_ph_list2++; | |||
| embedded_flag = 0; | |||
| } | |||
| word_phonemes[0] = 0; | |||
| return(0); | |||
| } | |||
| @@ -3175,6 +3186,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| else | |||
| { | |||
| pre_pause = 0; | |||
| dict_flags = TranslateWord2(tr, word, &words[ix], words[ix].pre_pause, words[ix+1].pre_pause); | |||
| if(pre_pause > words[ix+1].pre_pause) | |||
| @@ -3206,7 +3218,12 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| if(dict_flags & FLAG_SKIPWORDS) | |||
| { | |||
| ix += dictionary_skipwords; // dictionary indicates skip next word(s) | |||
| // dictionary indicates skip next word(s) | |||
| while(dictionary_skipwords > 0) | |||
| { | |||
| words[ix+dictionary_skipwords].flags |= FLAG_DELETE_WORD; | |||
| dictionary_skipwords--; | |||
| } | |||
| } | |||
| } | |||
| @@ -109,6 +109,7 @@ | |||
| #define FLAG_COMMA_AFTER 0x20000 // comma after this word | |||
| #define FLAG_MULTIPLE_SPACES 0x40000 // word is preceded by multiple spaces, newline, or tab | |||
| #define FLAG_INDIVIDUAL_DIGITS 0x80000 // speak number as individual digits | |||
| #define FLAG_DELETE_WORD 0x100000 // don't speak this word, it has been spoken as part of the previous word | |||
| #define FLAG_SUFFIX_VOWEL 0x08000000 // remember an initial vowel from the suffix | |||
| #define FLAG_NO_TRACE 0x10000000 // passed to TranslateRules() to suppress dictionary lookup printout | |||
| @@ -1966,7 +1966,7 @@ int WavegenFill2(int fill_zeros) | |||
| break; | |||
| case WCMD_MBROLA_DATA: | |||
| result = MbrolaFill(length, resume); | |||
| result = MbrolaFill(length, resume, (general_amplitude * wvoice->voicing)/64); | |||
| break; | |||
| case WCMD_FMT_AMPLITUDE: | |||