lang=Turkish, fix pronunciation of suffixes, fix suffixes after names. Windows: command option --stdout caused spurious 0x0d bytes to be included in speech output (CR/LF problem). Fixed crash which could occur when a clause starts with a hyphen. espeakedit: New input format for Bulgarian lexicon. lang=de: Fix important pronunciation error (editing error) for "sage". git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@259 d46cf337-b52f-0410-862d-fd96e6ae7743master
| @@ -88,7 +88,7 @@ | |||
| a (C_ A: | |||
| @) a (bl_ 'A: | |||
| @) a (bel_ 'A: | |||
| s) a (g A:Spionage | |||
| s) a (g A: | |||
| @l) a (g A: | |||
| schl) ag (ge A:k | |||
| scl) a (g A: | |||
| @@ -66,7 +66,7 @@ s S t T tS v w x | |||
| z Z | |||
| Dictionary hu_dict 2011-03-10 | |||
| Dictionary hu_dict 2011-03-30 | |||
| a A a: E e: i i: o | |||
| o: u u: Y y y: Y: | |||
| @@ -77,12 +77,12 @@ n n^ p r R R2 s S | |||
| s2 t t2 tS ts v z Z | |||
| Dictionary de_dict 2011-03-14 | |||
| Dictionary de_dict 2011-03-31 | |||
| 3 3: @ @- a A A: aI | |||
| aU A~ e E E2 E: e: EI | |||
| i I i2 i: n- o O o: | |||
| OY U u: W y y: Y: | |||
| aU A~ E E2 E: e: EI i | |||
| I 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 | |||
| @@ -100,7 +100,7 @@ p Q r R s s; t T | |||
| ts v x z z; | |||
| Dictionary en_dict 2011-03-09 | |||
| Dictionary en_dict 2011-03-30 | |||
| 0 3 3: @ @- @2 @5 @L | |||
| a a# A: A@ aa aI aI@ aU | |||
| @@ -200,7 +200,7 @@ q r r. s S s. t T | |||
| t. th th. v w x z | |||
| Dictionary ta_dict 2011-03-13 | |||
| Dictionary ta_dict 2011-03-30 | |||
| a a: aI aU e E e: i | |||
| I i: o o: u U u2 u: | |||
| @@ -325,7 +325,7 @@ k l m n p R s S | |||
| t tS v w x | |||
| Dictionary nl_dict 2011-03-13 | |||
| Dictionary nl_dict 2011-03-30 | |||
| 8 @ @- a A a: A~ e | |||
| E E2 e: EI eU i I o | |||
| @@ -402,7 +402,7 @@ ts; v v; w w2 x z Z | |||
| z; Z; | |||
| Dictionary ru_dict 2011-03-14 | |||
| Dictionary ru_dict 2011-03-25 | |||
| 8 @- a A e E E# E% | |||
| E2 i I I# I3 I^ ja ju | |||
| @@ -474,7 +474,7 @@ p R R^ s S t tS ts | |||
| v w x z Z | |||
| Dictionary tr_dict 2011-01-28 | |||
| Dictionary tr_dict 2011-03-17 | |||
| @ a e E i I o O | |||
| u U W y Y | |||
| @@ -533,18 +533,18 @@ s S t tS ts v w x | |||
| z Z | |||
| Dictionary ml_dict 2011-03-09 | |||
| Dictionary ml_dict 2011-03-26 | |||
| @ a a: aI aU e E e: | |||
| i I i: o o: r- u u: | |||
| V y | |||
| : b bh c ch d d. dh | |||
| dh. dZ f g gh h j J | |||
| Jh k kh l l. m n N | |||
| n. n^ p ph r R r. R2 | |||
| s s. S; t t. th th. tS | |||
| v w z | |||
| #X1 #X2 : b bh c ch d | |||
| d. dh dh. dZ f g gh h | |||
| j J Jh k kh l l. m | |||
| n N n. n^ p ph r R | |||
| r. R2 s s. S; t t. th | |||
| th. tS v w z | |||
| Dictionary ne_dict 2008-12-16 | |||
| @@ -609,7 +609,7 @@ s. t T t. th th. v x | |||
| z Z z. | |||
| Dictionary bg_dict 2011-03-12 | |||
| Dictionary bg_dict 2011-03-25 | |||
| @ a e i o u | |||
| @@ -713,7 +713,7 @@ R R3 s S t T tS ts | |||
| v w x X z | |||
| Dictionary te_dict 2011-03-14 | |||
| Dictionary te_dict 2011-03-22 | |||
| a a: aI aU e E e: i | |||
| i: l- o o: r- u u: V | |||
| @@ -735,3 +735,14 @@ g h j k k# l m n | |||
| p p# Q q r s S t | |||
| t# tS ts ts# v w x z | |||
| Z | |||
| Dictionary si_dict 2011-03-16 | |||
| & &: @ a a: aI aU e | |||
| E e: i i: o o: u u: | |||
| b d d. dZ f g h j | |||
| k l l. m m# n N n# | |||
| N# n. n.# n^ n^# p r s | |||
| S t t. th tS v w z | |||
| @@ -1623,6 +1623,7 @@ opposer @poUz3 | |||
| orange 0rI2ndZ | |||
| orion 0r'aI@n | |||
| ordeal O@d'i@l | |||
| oregano 0rIg'A:noU | |||
| orphan O@f@n // orphaned | |||
| outage $1 | |||
| outback $1 | |||
| @@ -1888,6 +1889,7 @@ remedy rEm@dI | |||
| remit ri:mIt | |||
| remit ri:m'It $verb | |||
| remnant rEmn@nt | |||
| renal ri:n@L | |||
| rendevous r0ndI2vu: | |||
| rendezvous r0ndI2vu: | |||
| renegade rEn@geId | |||
| @@ -3558,6 +3558,7 @@ | |||
| _) o (Bal oU | |||
| XC) o (Bal oU | |||
| X) o (By oU | |||
| _) o (Cy+ 0 | |||
| o (Be# oU | |||
| o (BeCo_ 0 | |||
| o (BenC oU | |||
| @@ -1668,11 +1668,71 @@ nyilatkozatok $unstressend | |||
| zajlott $unstressend | |||
| fordultak $unstressend | |||
| vették $unstressend | |||
| fordult $unstressend | |||
| épül $unstressend | |||
| bizonyítékok $unstressend | |||
| nyilvánításra $unstressend | |||
| állók $unstressend | |||
| közöltek $unstressend | |||
| fájlba $unstressend | |||
| neve $unstressend | |||
| csinál $unstressend | |||
| különbséggel $unstressend | |||
| újítás $unstressend | |||
| példa $unstressend | |||
| veszik $unstressend | |||
| használni $unstressend | |||
| használó $unstressend | |||
| ötletek $unstressend | |||
| visz $unstressend | |||
| ugorni $unstressend | |||
| nekünk $unstressend | |||
| fejlődött $unstressend | |||
| részemről $unstressend | |||
| értettem $unstressend | |||
| hívott $unstressend | |||
| fellépések $unstressend | |||
| tavaly $unstressend | |||
| bizonyítani $unstressend | |||
| ricsaj $unstressend | |||
| tartani $unstressend | |||
| pontján $unstressend | |||
| létre $unstressend | |||
| szervezetként $unstressend | |||
| végez $unstressend | |||
| munkáját $unstressend | |||
| titkot $unstressend | |||
| remélik $unstressend | |||
| állítja $unstressend | |||
| maradni $unstressend | |||
| sorba $unstressend | |||
| köthető $unstressend | |||
| tekintik $unstressend | |||
| vezetője $unstressend | |||
| talált $unstressend | |||
| kerülni $unstressend | |||
| csomagokhoz $unstressend | |||
| lépésként $unstressend | |||
| vigyázni $unstressend | |||
| válhat $unstressend | |||
| fordulni $unstressend | |||
| hozniuk $unstressend | |||
| indítványt $unstressend | |||
| alkotmánynak $unstressend | |||
| csomagról $unstressend | |||
| okozott $unstressend | |||
| szerepelt $unstressend | |||
| testület $unstressend | |||
| kérhet $unstressend | |||
| vezethet $unstressend | |||
| tartaná $unstressend | |||
| hangzik $unstressend | |||
| kalkulál $unstressend | |||
| szolgál $unstressend | |||
| szánják $unstressend | |||
| gondoltam $unstressend | |||
| érzem $unstressend | |||
| érzed $unstressend | |||
| jellemző $unstressend | |||
| // word pairs | |||
| @@ -138,6 +138,8 @@ hierar) ch (i h | |||
| ma) ch (iná h | |||
| oligar) ch h | |||
| legpe) ch (es h: | |||
| mazo) ch (izm h | |||
| mazo) ch (is h | |||
| .group d | |||
| d d | |||
| @@ -279,6 +281,8 @@ standar) d (jegy d | |||
| mó) d (javaslat d | |||
| rekor) d (szint d | |||
| kambo) dzs dZ: | |||
| föl) d (szerke d //földszerkezet word for example need spokening single d before sz letter | |||
| harma) d (szint d | |||
| .group dz | |||
| fogó) dz (kod ts | |||
| @@ -1046,6 +1050,7 @@ rongyo) szs (ák SZ | |||
| rava) sz (ár s | |||
| _ka) sztsze st|sE | |||
| szemete) szs (ák SZ | |||
| dro) sztsze (rző st|sE //drosztszerződés word need spokening st and single sE phoneme | |||
| .group t | |||
| t t | |||
| @@ -1100,6 +1105,7 @@ használ) t (cikk t | |||
| ha) t (cell t //for example hatcellás, hatcella word need spokening t before c letter. | |||
| pár) t (székház t | |||
| .group tj | |||
| C) tj c | |||
| kür) tj c | |||
| @@ -1288,7 +1294,7 @@ felada) ts (or t|S | |||
| ada) ts t|S //for example adatsor, adatsebesség words | |||
| ada) tsz t|s //for example adatszolgáltatás word | |||
| gondola) ts (or t|S | |||
| művele) ts (or t|S | |||
| művele) ts (o t|S | |||
| tábláza) ts (or t|S | |||
| vizsgála) ts (or t|S | |||
| állapo) ts (or t|S | |||
| @@ -1363,6 +1369,7 @@ terüle) ts (áv t|S | |||
| gyakorla) ts (oroz t|S | |||
| támogato) ts (ág tS: | |||
| .group tt | |||
| tt t: | |||
| ttgy t:J | |||
| @@ -343,6 +343,23 @@ websites _^_EN | |||
| weekend _^_EN | |||
| // verbs where -ent is not a stressed ending | |||
| bakent $alt | |||
| effent $alt | |||
| jegent $alt | |||
| kerstent $alt | |||
| ketent $alt | |||
| loochent $alt | |||
| oefent $alt | |||
| opent $alt | |||
| regent $alt | |||
| rekent $alt | |||
| stevent $alt | |||
| tekent $alt | |||
| wapent $alt | |||
| zegent $alt | |||
| // words where -er is not a stressed verb ending | |||
| achter $alt | |||
| @@ -863,12 +880,13 @@ vermetel $alt | |||
| amandel $alt | |||
| appel $alt | |||
| artikel $alt | |||
| beginsel $alt | |||
| ginsel $alt // beginsel | |||
| discipel dIs'ip@l $alt | |||
| engel $alt | |||
| fabel $alt | |||
| gruwel $alt | |||
| heuvel $alt | |||
| hommel $alt | |||
| letsel $alt | |||
| mazel $alt | |||
| meubel $alt | |||
| @@ -1257,11 +1275,11 @@ accessoire aksEsv#'ar@ | |||
| accessoires aksEsv#'ar@s | |||
| actiepunt Aksip8nt | |||
| agenda $2 | |||
| alles Al@s | |||
| amino $1 | |||
| amnestie $3 | |||
| april a:pr'Il | |||
| armand _^_FR | |||
| artikel art,ik@l | |||
| augustus VUQ'8st8s | |||
| be $abbrev // used as domain abbrev for Belgium and in a lot of other names | |||
| beha be:_h'a: | |||
| @@ -1336,6 +1354,7 @@ renaissance rEne:s'A~s@ | |||
| reservoir re:zErvv#'a:r | |||
| revanche r@vA~nS | |||
| regime $2 | |||
| roman $2 | |||
| sacristie $3 | |||
| saint _^_FR | |||
| salomo $1 | |||
| @@ -17,6 +17,7 @@ | |||
| @) aard (_@S4 a:rt | |||
| aa (rd_ 'a: | |||
| aa (C_ 'a: | |||
| z) aa (m_ a: | |||
| @) abel (_ 'a:bE2l | |||
| @) abele (_ 'a:b@l@ | |||
| m) ach (in %a:S | |||
| @@ -125,6 +126,7 @@ | |||
| dt t | |||
| ds (_N ts | |||
| // _) de (CC@P2 d@ // Used a lot in family names | |||
| _) de (zelf d@ | |||
| .group e | |||
| @@ -166,6 +168,8 @@ | |||
| &) el (de_$p_alt =@l | |||
| &) el (den_$p_alt =@l | |||
| &) el (end_$p_alt =@l | |||
| &) el (ing_$p_alt =@l | |||
| &) el (ingen_$p_alt =@l | |||
| &) er (_$p_alt =@r | |||
| &) er (e_$p_alt =@r | |||
| &) er (en_$p_alt =@r | |||
| @@ -181,25 +185,31 @@ | |||
| &) elijks @l@ks | |||
| &) em (_ @m | |||
| &) e (ment @ | |||
| &) e (nissen_ @ | |||
| &) en (_S2qd @n | |||
| &) ens (_S3q @ns | |||
| &) end (_ @nd | |||
| &) ende (_ @nd@ | |||
| &) enden (_ @nd@n | |||
| eden e:d@n | |||
| &) ent (_$w_alt =@nt | |||
| @) ent (_ 'Ent | |||
| @) ent (e_ 'Ent | |||
| @) ent (en_ 'Ent | |||
| @) ent (er_ 'Ent | |||
| @) ent (ere_ 'Ent | |||
| @) ent (st_ 'Ent | |||
| @) ent (ste_ 'Ent | |||
| ag) ent 'Ent | |||
| &) er (_ @r | |||
| &) ere (_ @r@ | |||
| &) er (en_$p_alt @r // where 'eren' is not a verb ending | |||
| eren (_ 'I:r@n | |||
| @j) es (_ @s | |||
| @) es (_S2qd 'Es | |||
| @) essen (_S5qd'Es@n | |||
| @) eres (_S4qd @r'Es | |||
| @) eressen (_S7sq @r'Es@n | |||
| @) eressen (_S7sq @r'Es@n | |||
| @) etten (_S3 @n | |||
| @) es (_$p_alt @s // for wors which end on [@] with multiple on 's'. | |||
| euille @'y | |||
| @@ -210,6 +220,7 @@ | |||
| &) e (nB@ E2 | |||
| id) e (nt E | |||
| _) er (@P2 Er | |||
| _) erger ErQ@r // ergeren | |||
| &) era (_ @ra: | |||
| @) e (raar_ @ | |||
| &) e (rC@ E2 | |||
| @@ -235,6 +246,7 @@ | |||
| gg Q | |||
| _) ge (@P2 Q@ | |||
| ge (bied Q@ | |||
| _) gee Qe: | |||
| gener (aal Q,e:n@r | |||
| _) gelijk Q@lEIk | |||
| @@ -258,6 +270,8 @@ | |||
| _) her (@P3 hEr | |||
| _) her (en hI:r | |||
| _) herinn h%ErIn // herinneren | |||
| _) hersen h'Ers@n | |||
| &) heid (_S4 hEIt | |||
| @@ -290,7 +304,11 @@ | |||
| ie (rd_ 'i | |||
| @) ig (_S2dq @x | |||
| @) ige (_ @Q@ | |||
| @) igen (_ @Q@n | |||
| @) igen (_ @Q@n | |||
| @) iger (_ @Q@r | |||
| @) igere (_ @Q@r@ | |||
| @) igst (_ @Qst | |||
| @) igste (_ @Qst@ | |||
| ij (_ 'EI | |||
| ij (e_ 'EI | |||
| @) ij (n_ 'EI | |||
| @@ -325,6 +343,10 @@ | |||
| &) lijk (_S4 l@k | |||
| &) lijke (_S5 l@k@ | |||
| &) lijken (_S6 l@k@n | |||
| &) lijker (_S6 l@k@r | |||
| &) lijkere (_S7 l@k@r@ | |||
| &) lijkst (_S6 l@kst | |||
| &) lijkste (_S7 l@kst@ | |||
| &) laan (_S4 la:n | |||
| _) lange (@P5 laN@ | |||
| @) loog (_ lo:x | |||
| @@ -354,9 +376,11 @@ | |||
| _) na (C@@P2 n'a: | |||
| _) na (tion na: | |||
| _) na (der na: | |||
| _) natuur na:t'yr | |||
| _) noord (@P5 no:rd | |||
| _) nieuws (@P6 n'iws | |||
| @@) nis (_@S3 nIs | |||
| @@) nisen (_@S5 nIs@n | |||
| .group o | |||
| @@ -548,6 +572,7 @@ | |||
| _) uit (@P3 'Wyt | |||
| u (re_ 'y | |||
| @) ute (_ 'yt | |||
| uu (r_ 'y | |||
| .group v | |||
| @@ -559,6 +584,7 @@ | |||
| _) ver (@P3 v@r | |||
| _) ver (sie_ vEr | |||
| _) verder vErd@r | |||
| _) verge (le v@rQ'e: | |||
| _) voort (@P5 v'O:rt | |||
| @@ -597,5 +623,6 @@ | |||
| $ d'OlAr | |||
| , (D k'Oma: | |||
| __) - (_D m'In | |||
| @) 's (_S2 s | |||
| @@ -41,7 +41,7 @@ _5X p;Vd;d;Is;'jat | |||
| _6X SE2z;d;d;Is;'jat | |||
| _7X s;'emd;E2s;Vt | |||
| _8X v'os;E2md;E2s;Vt | |||
| _9X d;E2v;In'ostO | |||
| _9X d;evIn'ostO | |||
| _0C st'o | |||
| _2C dv;'es;t;I | |||
| _3C tr;'ista | |||
| @@ -50,7 +50,7 @@ _5C p;,It;s'ot | |||
| _6C S,E#s;t;s'ot | |||
| _7C s;,Ims'ot | |||
| _8C vOs;Ims'ot | |||
| _9C dev;Vn'ostO | |||
| _9C devits'ot | |||
| _1MA1 t'ys;ItS;V // no '1' before thousand | |||
| _0MA1 t'ys;ItS;i | |||
| _0M1 t'ys;VtS; | |||
| @@ -42,7 +42,6 @@ | |||
| ோ ோ | |||
| ௌ ௌ | |||
| // க is k when preceded by these | |||
| .L01 ஷ் ஸ் ட் | |||
| @@ -62,7 +61,10 @@ | |||
| .L06 க ஹ | |||
| // words before "bottle" | |||
| .L10 பீர் கலர் சாராய சோடா தண்ணி தண்ணீர் பிராந்தி வாட்டர் விஸ்கி | |||
| .L10 பீர் கலர் சாராய சோடா தண்ணி தண்ணீர் பிராந்தி வாட்டர் விஸ்கி பிளாஸ்டிக் ப்ளாஸ்டிக் | |||
| // words after "booga" | |||
| .L11 வாழ்க்கை பூமி விருந்த மனிதன | |||
| // consonants | |||
| @@ -117,6 +119,7 @@ | |||
| _) க (தியில் gV | |||
| _) க (தியை gV | |||
| _) க (ந்தர்வ gV | |||
| _) க (னக்க gV | |||
| _) க (னத் gV | |||
| _) க (னம gV | |||
| _) கப் (L04ா gVp | |||
| @@ -248,6 +251,7 @@ | |||
| _) க (ுருக்கள g | |||
| _) க (ுருக்குல g | |||
| _) க (ுருசாமி g | |||
| _) க (ுருஜி g | |||
| _) க (ுருதேவ g | |||
| _) க (ுருநா g | |||
| _) க (ுருபூஜை g | |||
| @@ -416,6 +420,7 @@ _சந்திரி) க (ா k | |||
| _மாளவி) க (ா k | |||
| _மோனி) க (ா k | |||
| _மௌனி) க (ா k | |||
| _ஸ்ரீலங்) க (ா k | |||
| _ஹன்L04ி) க (ா k | |||
| _ஹாங்) க (ாங் k | |||
| _தென்) க (ாசி k | |||
| @@ -534,6 +539,7 @@ _கவிதா) க்க (ினி gg | |||
| கு) க்கி (ராம gg | |||
| அ) க்கி (ராம gg | |||
| இ) க்கி (ராம gg | |||
| L03) க்க (ுகை gg | |||
| _மு) க்க (ுண gg | |||
| அணு) க்க (ுண்ட gg | |||
| _துப்பாக்கி) க்க (ுண்ட gg | |||
| @@ -558,6 +564,7 @@ _துப்பாக்கி) க்க (ுண்ட gg | |||
| _செ) க்யூரிட (ி kjU:rit. | |||
| _ச) க்ரப (ாணி krVp | |||
| வி) க (்ரம k | |||
| _ரெ) க்ரூட் krU:t. | |||
| ஆ) க (்ரோஷ k | |||
| _பை) க் (ல_ k | |||
| என்சை) க்லோப (ீடியா klo:p | |||
| @@ -628,7 +635,9 @@ _தணிகா) ச (ல tSV | |||
| _) சாக்லேட் tSa:kle:t. | |||
| _) ச (ாணக்கிய tS | |||
| ச (ாந்தி s. | |||
| _) ச (ாந்தின tS | |||
| _தே) ச (ாந்திர s | |||
| _) ச (ாந்தில tS | |||
| _) ச (ான்ஸ tS | |||
| _) சாப் (ளின tSa:p | |||
| _) ச (ாமுண்ட tS | |||
| @@ -704,6 +713,7 @@ _தணிகா) ச (ல tSV | |||
| இராவணே) சு (வர s | |||
| ராவணே) சு (வர s | |||
| _) சுவர்க்க svVrggV# | |||
| _) சுவர்க்க (ோழி suvVrgg | |||
| _) சு (வாச s | |||
| சு (வாதீன s | |||
| சு (வாமி s | |||
| @@ -726,10 +736,15 @@ _தணிகா) ச (ல tSV | |||
| _) செயின்ட sejint.V# | |||
| _) ச (ெய்ன tS | |||
| _) செய்ன்ட sejnt.V# | |||
| _) ச (ெர்னோபில tS | |||
| _) ச (ெல்லக்குட்டி tS | |||
| _) ச (ெல்லத்துக்கு tS | |||
| _) ச (ெல்லத்தை tS | |||
| _) ச (ெல்லப்ப tS | |||
| _) ச (ெல்லப்பன tS | |||
| _) ச (ெல்லப்பா tS | |||
| _) ச (ெல்லப்பிள்ளை tS | |||
| _) ச (ெல்லப்பெண் tS | |||
| _) ச (ெல்லப்பையன tS | |||
| _) ச (ெல்லமா tS | |||
| _) ச (ெஸ் tS | |||
| _) ச (ேஞ்ச tS | |||
| @@ -777,6 +792,7 @@ _ரிப்போர்) ட t.V# | |||
| அர்ஜண்) ட t.V# | |||
| அர்ஜெண்) ட t.V# | |||
| இண்டர்மீடியே) ட t.V# | |||
| _) ட (ஃப் t.V | |||
| _) ட (க்கர t.V | |||
| ங்) ட (ன t.V // -ington | |||
| _நியூ) ட (ன t.V | |||
| @@ -816,6 +832,8 @@ _ரிப்போர்) ட t.V# | |||
| _) டாட (ா t.a:t. | |||
| _) ட (ான்சானிய t. | |||
| _) ட (ான்ஜானிய t. | |||
| _) டாபிக் t.a:pik | |||
| _) ட (ாமி t. | |||
| அண்) டார்டிக t.a:rt.ikV# | |||
| _) ட (ாலமி t. | |||
| _) ட (ால்ஸ்டாய t. | |||
| @@ -847,6 +865,7 @@ _நாவல்) ட (ி t. | |||
| _) டிர (ஸ d.re | |||
| _) டிர (ஸ்ட t.rV | |||
| _) டிராஃபிக் t.ra:fik | |||
| _) டி (ராகுலா d. | |||
| _) டிராக் t.ra:k | |||
| _காண்) டி (ராக்டர t. | |||
| _) டி (ராஜ t. | |||
| @@ -865,8 +884,10 @@ _நாவல்) ட (ி t. | |||
| _) டி (ராவல t. | |||
| _) டி (ராவெல t. | |||
| _) டிரிக (ர t.riggV | |||
| _) டிரிக் t.rik | |||
| _) டிரிக்க (ர t.riggV | |||
| _) டி (ரிம் t. | |||
| _) டிரீட் t.ri:t. | |||
| _) டிரெயி(லர t.rej | |||
| _) டி (ரெயின t. | |||
| _) டி (ரெய்லர t. | |||
| @@ -921,6 +942,7 @@ _லான்_) ட (ென்னிஸ t. | |||
| _) ட (ோக்கியோ t. | |||
| _) டோரண்ட (ோ t.o:rVn.t. | |||
| _ப்ரி) ட (ோரிய t. | |||
| @மெண்) ட் t. // -ment | |||
| இண்டர்நெ) ட் t. | |||
| _ல) ட்ட d.d.V# | |||
| _ரெ) ட்ட (ியா d.d. | |||
| @@ -953,8 +975,10 @@ _லான்_) ட (ென்னிஸ t. | |||
| _) ட் (ராவல t. | |||
| _) ட் (ராவெல t. | |||
| _) ட்ரிக (ர t.riggV | |||
| _) ட்ரிக் t.rik | |||
| _) ட்ரிக்க (ர t.riggV | |||
| _) ட் (ரிம் t. | |||
| _) ட்ரீட் t.ri:t. | |||
| _வி) ட் (ரு t. | |||
| _கே) ட் (ரு t. | |||
| _போ) ட் (ரு t. | |||
| @@ -976,6 +1000,7 @@ _லான்_) ட (ென்னிஸ t. | |||
| _கூ) ட் (ல t. | |||
| _நா) ட் (ல t. | |||
| _பா) ட் (ல t. | |||
| _மே) ட் (ல t. | |||
| _ரூ) ட் (ல t. | |||
| _நோ) ட் (ல t. | |||
| _ரோ) ட் (ல t. | |||
| @@ -1084,6 +1109,7 @@ _நடுரோ) ட் (ல t. | |||
| _) த (ருமத் dV | |||
| _) த (ருமன dV | |||
| _) தருமப (ுரி dVrUmVp | |||
| _) த (ருமம dV | |||
| _) த (ருமர dV | |||
| _) த (ருமி dV | |||
| _) த (ர்க dV | |||
| @@ -1214,6 +1240,7 @@ _நடுரோ) ட் (ல t. | |||
| _) த (ுச்சாதனன d | |||
| _) த (ுட்ட d | |||
| _) த (ுபாய d | |||
| _) த (ுபாஷி d | |||
| _) த (ுப்பட்டா d | |||
| _) த (ுமளி d | |||
| _) த (ுரதிருஷ்ட d | |||
| @@ -1309,10 +1336,12 @@ _வசந்) த tV# | |||
| _சீ) த (ா t | |||
| _ல) த (ா t | |||
| _சபி) த (ா t | |||
| _சபீ) த (ா t | |||
| அனி) த (ா t | |||
| சுஜா) த (ா t | |||
| லலி) த (ா t | |||
| _சுனி) த (ா t | |||
| _ஹரி) த (ா t | |||
| _வனி) த (ா t | |||
| _வினி) த (ா t | |||
| _நிவேதி) த (ா t | |||
| @@ -1330,6 +1359,7 @@ _புஷ்பல) த (ா t | |||
| வாசந்) த (ி t | |||
| _கோம) த (ி t | |||
| ஜெயந்) த (ி t | |||
| _துஷ்யந்) த (ி t | |||
| _பார்வ) த (ி t | |||
| _பிரசார்_பார) த (ி t | |||
| பிரபாவ) த (ி t | |||
| @@ -1529,6 +1559,7 @@ _சொந்த_) ப (ந்த bV | |||
| _) ப (லப்பரீட்சை bV | |||
| _) ப (லம bV | |||
| _) ப (லமடங்க pV | |||
| _) ப (லமாடி pV | |||
| _) ப (லமுறை pV | |||
| _) ப (லமொழி pV | |||
| _) ப (லராம bV | |||
| @@ -1589,6 +1620,7 @@ _சொந்த_) ப (ந்த bV | |||
| _) ப (ாணமு b | |||
| _) ப (ாணி b | |||
| _) ப (ாதிக்க b | |||
| _) ப (ாதிக்கண் p | |||
| _) ப (ாதிக்கு_ p | |||
| _) ப (ாதிக்கும்_குறை p | |||
| _) ப (ாதிக்கும்_மேற் p | |||
| @@ -1632,6 +1664,7 @@ _சொந்த_) ப (ந்த bV | |||
| _) ப (ாலக்காட p | |||
| _) ப (ாலச b | |||
| _) ப (ாலதண் b | |||
| _) ப (ாலன b | |||
| _) பாலப (ாட ba:lVp | |||
| _) ப (ாலமுர b | |||
| _) ப (ாலய்யா b | |||
| @@ -1896,6 +1929,7 @@ _பெனசீர்_) ப (ுட்டோ b | |||
| _) புரப (L04ர profV | |||
| _) புரபொ (சர profV | |||
| _) பு (ரவுச b | |||
| _) ப (ுருடா b | |||
| _) புரொப (சர profV | |||
| _) புரொபொ (சர profV | |||
| _) ப (ுரோக்கர b | |||
| @@ -1968,7 +2002,9 @@ _பெனசீர்_) ப (ுட்டோ b | |||
| _) ப (ொம்மன b | |||
| _) ப (ொம்மல b | |||
| _) ப (ொம்மை b | |||
| _) ப (ோக_L11 b | |||
| _) ப (ோகங்க b | |||
| _) ப (ோகத்த b | |||
| _) ப (ோகத்திற்க b | |||
| _) ப (ோகத்தில b | |||
| _) ப (ோகத்துக்க b | |||
| @@ -2111,6 +2147,7 @@ _சொந்த) ப (ந்த bV | |||
| _ஒலி) ப (ரப் pV | |||
| _ஒளி) ப (ரப் pV | |||
| வீர) ப (ராக்கிரம pV | |||
| _மறு) ப (ரிசீலனை pV | |||
| ஆ) ப (ரேசன pV | |||
| ஆ) ப (ரேஷன pV | |||
| _கார்) ப (ரேஷன pV | |||
| @@ -2339,6 +2376,7 @@ _ஞானப்) பிரக (ா prVk | |||
| _லாக) ப் p | |||
| ஆ) ப் (கானிய f | |||
| ஆ) ப் (கானிஸ்தான f | |||
| _பா) ப்க (ார்ன pk | |||
| _லி) ப் (ட f | |||
| _மைக்ரோசா) ப் (ட f | |||
| கர்) ப்ப bbV# | |||
| @@ -118,6 +118,53 @@ _0M3 miljar | |||
| _dpt _viRg,Yl_| | |||
| // Abbreviations | |||
| ab $abbrev $only | |||
| abd $abbrev $only | |||
| abgs $abbrev | |||
| afp $abbrev | |||
| aihm $abbrev | |||
| akm $abbrev | |||
| akp $abbrev | |||
| aöf $abbrev | |||
| ap $abbrev $only | |||
| atm $abbrev | |||
| atv $abbrev | |||
| avm $abbrev | |||
| ekg $abbrev | |||
| epdk $abbrev | |||
| ftaa $abbrev | |||
| gsyih $abbrev | |||
| ihd $abbrev | |||
| ımkb $abbrev | |||
| imkb $abbrev | |||
| imf $abbrev | |||
| imkb $abbrev | |||
| oecd $abbrev | |||
| ogs $abbrev | |||
| osb $abbrev | |||
| ödp $abbrev | |||
| öfk $abbrev | |||
| öıb $abbrev | |||
| öib $abbrev | |||
| öiv $abbrev | |||
| öss $abbrev | |||
| ösym $abbrev | |||
| ötv $abbrev | |||
| öyk $abbrev | |||
| şti $abbrev | |||
| tihv $abbrev | |||
| tmmob $abbrev | |||
| tmo $abbrev | |||
| tpao $abbrev | |||
| tsi $abbrev | |||
| tsyd $abbrev | |||
| tse $abbrev | |||
| ubp $abbrev | |||
| usd $abbrev | |||
| ykm $abbrev | |||
| // function words | |||
| // conjunctions | |||
| @@ -127,39 +174,120 @@ veya $u $brk // or | |||
| ama $brk $1 // but | |||
| ki $u $brk // that | |||
| mı $u // question | |||
| mi $u | |||
| mu $u | |||
| mü $u | |||
| mı $u $only // question | |||
| mi $u $only | |||
| mu $u $only | |||
| mü $u $only | |||
| // pronouns | |||
| bu $u+ // this | |||
| şu $u+ // that | |||
| bu $u+ $only // this | |||
| şu $u+ $only // that | |||
| ben $u+ // I | |||
| sen $u+ // you | |||
| o $u+ // it | |||
| siz $u+ // we | |||
| biz $u+ // you | |||
| ben $u+ $only // I | |||
| sen $u+ $only // you | |||
| o $u+ $only // it | |||
| siz $u+ $only // we | |||
| biz $u+ $only // you | |||
| bir $u+ // a (or one) | |||
| bir $u+ $only // a (or one) | |||
| da $u // also | |||
| de $u | |||
| ta $u | |||
| te $u | |||
| da $u $only // also | |||
| de $u $only | |||
| ta $u $only | |||
| te $u $only | |||
| ile $u | |||
| ile $u $only | |||
| // EXCEPTIONS | |||
| merhaba $1 | |||
| // Person Names | |||
| // If the word has a prefix for strengthening the meaning of the word, stress | |||
| // is at the prefix: | |||
| banka $1 | |||
| bembeyaz $1 | |||
| dosdoğru $1 | |||
| dümdüz $1 | |||
| kıpkırmızı $1 | |||
| kıskıvrak $1 | |||
| masmavi $1 | |||
| mosmor $1 | |||
| pespembe $1 | |||
| posta $1 | |||
| radyo $1 | |||
| sapsarı $1 | |||
| sımsıcak $1 | |||
| simsiyah $1 | |||
| // Place Names | |||
| ankara $1 | |||
| istanbul $2 | |||
| // Names | |||
| Hitler $1 | |||
| // Place Names | |||
| // For place names with two syllables stress is at first syllable: | |||
| // For Place names that has three or more syllables, generally stress is at | |||
| // the syllable which has more letters or at the syllable which ends with a consonant: | |||
| Afyon $1 | |||
| Ağrı $1 | |||
| Almanya $2 | |||
| Amasya $2 | |||
| Ankara $1 | |||
| Antalya $2 | |||
| Artvin $1 | |||
| Avrupa $1 | |||
| Aydın $1 | |||
| Bartın $1 | |||
| Batman $1 | |||
| Bayburt $1 | |||
| Bingöl $1 | |||
| Bitlis $1 | |||
| Bodrum $1 | |||
| Bolu $1 | |||
| Burdur $1 | |||
| Bursa $1 | |||
| Çanakkale $2 | |||
| Çankırı $1 | |||
| Çorum $1 | |||
| Denizli $2 | |||
| Düzce $1 | |||
| Edirne $2 | |||
| Hakkari $1 | |||
| Hatay $1 | |||
| Iğdır $1 | |||
| İngiltere $3 | |||
| İskenderun $2 | |||
| Isparta $2 | |||
| İstanbul $2 | |||
| İsveç $1 | |||
| İzmir $1 | |||
| Kastamonu $1 | |||
| Kayseri $1 | |||
| Kilis $1 | |||
| Kırklareli $1 | |||
| Konya $1 | |||
| Kurtuluş $1 | |||
| Kütahya $2 | |||
| Malatya $2 | |||
| Mardin $1 | |||
| Mersin $1 | |||
| Mudanya $2 | |||
| Muğla $1 | |||
| Niğde $1 | |||
| Ordu $1 | |||
| Pütürge $2 | |||
| Rize $1 | |||
| Sakarya $2 | |||
| Samsun $1 | |||
| Siirt $1 | |||
| Sinop $1 | |||
| Şırnak $1 | |||
| Sivas $1 | |||
| Tekirdağ $2 | |||
| Tokat $1 | |||
| Tunceli $1 | |||
| Ukrayna $2 | |||
| Urfa $1 | |||
| Uşak $1 | |||
| Yozgat $1 | |||
| @@ -20,7 +20,7 @@ | |||
| @) a (_S1 a | |||
| @) acak (_S3 adZak | |||
| @) acak (_S4 adZak | |||
| @) acakmış (_S7 adZakm%@S | |||
| @) ayım (_S4 aj@m | |||
| @) alım (_S4 al@m | |||
| @@ -130,7 +130,7 @@ | |||
| @) ı (_S1 @ | |||
| @) ım (_S2 %@m | |||
| @) ınız (_S2 %@n@z | |||
| @) ınız (_S4 %@n@z | |||
| @) ız (_S2 %@z | |||
| @) ıyor (_S4 @j%oR | |||
| @) ın (_S2 @n | |||
| @@ -179,6 +179,11 @@ | |||
| .group n | |||
| n n | |||
| _) nda (_ nda // 'nda | |||
| _) nde (_ nde // 'nde | |||
| _) ndan (_ ndan // 'ndan | |||
| _) nden (_ nden // 'nden | |||
| nin (_S3 nin | |||
| nın (_S3 n@n | |||
| nun (_S3 nun | |||
| @@ -1,4 +1,4 @@ | |||
| 73 phoneme tables | |||
| 74 phoneme tables | |||
| new total | |||
| base 107 107 | |||
| consonants 10 116 | |||
| @@ -55,6 +55,7 @@ consonants 10 116 | |||
| sq 33 126 | |||
| hy 23 117 | |||
| da 27 120 | |||
| ka 19 112 | |||
| rw 15 130 | |||
| ml 18 151 | |||
| ne 18 157 | |||
| @@ -71,8 +72,8 @@ consonants 10 116 | |||
| wo 18 118 | |||
| dv 14 150 | |||
| te 16 150 | |||
| si 24 156 | |||
| tn 27 119 | |||
| ka 19 112 | |||
| Data file Used by | |||
| b/b [b] base | |||
| @@ -360,7 +361,7 @@ l/l_ [l] base | |||
| [l/] fr | |||
| l/l_@ [l/3] base | |||
| [l/] fr | |||
| l/l@ [h–x] base | |||
| l/l@ [hF|] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -394,7 +395,7 @@ 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–x] base | |||
| l/la [hF|] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -402,7 +403,7 @@ l/la [h | |||
| [K] tn | |||
| l/l_a [l/3] base | |||
| [l/] fr | |||
| l/le [h–x] base | |||
| l/le [hF|] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -414,7 +415,7 @@ l/L_eL_af [&] af | |||
| [&:] af | |||
| l/l_front [L] sq | |||
| l/l_front_ [l/4] sq | |||
| l/li [h–x] base | |||
| l/li [hF|] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -428,7 +429,7 @@ ll/ll [L] bg | |||
| ll/_ll [L] bg | |||
| l/l_long [l] base | |||
| [l] fr | |||
| l/lo [h–x] base | |||
| l/lo [hF|] base | |||
| [l#] base | |||
| [l/2] fr | |||
| [K] nso | |||
| @@ -438,7 +439,7 @@ l/l_o [l/3] base | |||
| l^/l_rfx [l.] base | |||
| [l] ru | |||
| [l^] ru | |||
| l/lu [h–x] base | |||
| l/lu [hF|] base | |||
| [l#] base | |||
| [l] fr | |||
| [l/2] fr | |||
| @@ -1041,6 +1042,7 @@ vdiph/ai_7 [aI] en-sc | |||
| [aI:] is | |||
| vdiph/ai_8 [aI] ta | |||
| [aI] dv | |||
| [aI] si | |||
| vdiph/aoo [aU] en-us | |||
| [aU] it | |||
| vdiph/au [aU] en | |||
| @@ -1048,6 +1050,7 @@ vdiph/au [aU] en | |||
| [aU] ta | |||
| [a:U] vi | |||
| [aU] prs | |||
| [aU] si | |||
| vdiph/au# [aU] en-sc | |||
| vdiph/au_2 [au] zhy | |||
| vdiph/au_3 [aU] en-rp | |||
| @@ -1295,11 +1298,11 @@ vowel/@ [@] base | |||
| [@4] hi | |||
| [@] kn | |||
| [@] hy | |||
| [@] ka | |||
| [@] sl | |||
| [@] wo | |||
| [@:] wo | |||
| [@] te | |||
| [@] ka | |||
| vowel/@- [@-] base | |||
| [r*] hr | |||
| vowel/& [a] en-rp | |||
| @@ -1410,10 +1413,11 @@ vowel/a#_2 [a] kn | |||
| [a] sv | |||
| [a] is | |||
| [a/] sw | |||
| [a] ka | |||
| [a] ml | |||
| [a] nso | |||
| [a] te | |||
| [a] ka | |||
| [a] si | |||
| vowel/a_3 [a] en-sc | |||
| [a/] en-sc | |||
| [A:] en-sc | |||
| @@ -1426,6 +1430,7 @@ vowel/a_3 [a] en-sc | |||
| [A] zh | |||
| [a] sq | |||
| [A] da | |||
| [a:] si | |||
| vowel/a#_3 [a#] en | |||
| [a#] en-n | |||
| [a#] en-us | |||
| @@ -1596,6 +1601,8 @@ vowel/ee_5 [E] en | |||
| vowel/ee_6 [&] sk | |||
| [E3] sv | |||
| [E] ku | |||
| [&] si | |||
| [&:] si | |||
| vowel/e_mid [E] en-rp | |||
| [E] fr | |||
| [E~] fr | |||
| @@ -1619,10 +1626,11 @@ vowel/e_mid [E] en-rp | |||
| [E] id | |||
| [E2] id | |||
| [e] hy | |||
| [e] ka | |||
| [E] prs | |||
| [e] bg | |||
| [E] ht | |||
| [e] ka | |||
| [e] si | |||
| vowel/e_mid2 [E] af | |||
| [E] de | |||
| [E2] de | |||
| @@ -1645,6 +1653,7 @@ vowel/e_mid2 [E] af | |||
| [e] az | |||
| [e] am | |||
| [e] te | |||
| [e:] si | |||
| vowel/@_fnt [@] en-wi | |||
| [@2] en-wi | |||
| [@2] hr | |||
| @@ -1671,6 +1680,7 @@ vowel/i [i] base | |||
| [i] zh | |||
| [i] sw | |||
| [i] hy | |||
| [i] ka | |||
| [i] rw | |||
| [i#] rw | |||
| [i:] ml | |||
| @@ -1682,7 +1692,7 @@ vowel/i [i] base | |||
| [i:] wo | |||
| [i:] dv | |||
| [i:] te | |||
| [i] ka | |||
| [i:] si | |||
| vowel/i# [y:] cy | |||
| vowel/i_2 [i2] de | |||
| [i:] de | |||
| @@ -1715,6 +1725,7 @@ vowel/i_6 [i] hi | |||
| [i] bg | |||
| [i] dv | |||
| [i] te | |||
| [i] si | |||
| vowel/i#_6 [i.] zh | |||
| vowel/i_7 [i] pl | |||
| [i] sq | |||
| @@ -1798,6 +1809,7 @@ vowel/@_low [@] en-rp | |||
| [@] pa | |||
| [V] pa | |||
| [@] am | |||
| [@] si | |||
| vowel/@_low2 [@/] en-us | |||
| [@2] en-us | |||
| vowel/o [o] base2 | |||
| @@ -1902,8 +1914,10 @@ vowel/oo_1 [O:] en-n | |||
| [o] hr | |||
| [o/] it | |||
| [O] sq | |||
| [O] tn | |||
| [o] ka | |||
| [o] si | |||
| [o:] si | |||
| [O] tn | |||
| vowel/oo_2 [0] en-sc | |||
| [O] cy | |||
| [o] cs | |||
| @@ -1987,6 +2001,8 @@ vowel/u_6 [u:] en-rp | |||
| [u:] dv | |||
| [u] te | |||
| [u:] te | |||
| [u] si | |||
| [u:] si | |||
| vowel/u_7 [u] vi | |||
| vowel/u#_7 [@] tr | |||
| [@] az | |||
| @@ -2012,12 +2028,12 @@ vowel/u_bck [u] base2 | |||
| [u] sq | |||
| [u] hy | |||
| [u] da | |||
| [u] ka | |||
| [u] rw | |||
| [u#] rw | |||
| [u] ne | |||
| [u] pa | |||
| [u] bg | |||
| [u] ka | |||
| vowel/u_bck2 [u] fr | |||
| [u:] fr | |||
| [u:] la | |||
| @@ -113,6 +113,7 @@ endphoneme | |||
| phoneme e: | |||
| vowel starttype #e endtype #i | |||
| length 190 | |||
| ChangeIfUnstressed(@) | |||
| FMT(vdiph/ei) | |||
| endphoneme | |||
| @@ -328,10 +328,11 @@ phoneme r | |||
| IF prevPhW(isVowel) THEN | |||
| ChangePhoneme(R) | |||
| ELSE | |||
| // IF thisPh(isWordStart) THEN | |||
| // ELSE | |||
| IF prevPhW(isUStop) THEN | |||
| ChangePhoneme(R) | |||
| ELSE | |||
| InsertPhoneme(@-) | |||
| // ENDIF | |||
| ENDIF | |||
| ENDIF | |||
| ENDIF | |||
| ENDIF | |||
| @@ -403,10 +404,8 @@ phoneme A~ | |||
| FMT(vnasal/aa_n4) | |||
| endphoneme | |||
| // translate from English to German phonemes | |||
| equivalents en | |||
| equivalents NULL // disable this table | |||
| 0 O | |||
| 3 3 | |||
| 3: W : | |||
| @@ -1800,6 +1800,8 @@ include ph_armenian | |||
| phonemetable da base | |||
| include ph_danish | |||
| phonemetable ka base | |||
| include ph_georgian | |||
| @@ -1867,8 +1869,8 @@ include ph_divehi | |||
| phonemetable te hi | |||
| include ph_telugu | |||
| phonemetable si hi | |||
| include ph_sinhala | |||
| phonemetable tn base | |||
| include ph_setswana | |||
| phonemetable ka base | |||
| include ph_georgian | |||
| @@ -75,7 +75,6 @@ CXXFLAGS=-O2 | |||
| all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME) | |||
| mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG) | |||
| .cpp.o: | |||
| $(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $< | |||
| @@ -95,6 +94,9 @@ x_%.o: %.cpp | |||
| $(LIB_NAME): $(OBJS2) | |||
| $(CXX) $(LDFLAGS) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ \ | |||
| $(OBJS2) $(LIBS2) | |||
| mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG) | |||
| $(LN_SF) $(LIB_NAME).$(LIBTAG) $(LIB_NAME).$(LIB_VERSION) | |||
| $(LN_SF) $(LIB_NAME).$(LIB_VERSION) $(LIB_NAME) | |||
| $(STATIC_LIB_NAME): $(OBJS2) | |||
| $(AR) cqs $(STATIC_LIB_NAME) $(OBJS2) | |||
| @@ -114,6 +114,7 @@ static keywtab_t k_properties[] = { | |||
| {"isVowel", 0, phVOWEL}, | |||
| {"isNasal", 0, phNASAL}, | |||
| {"isLiquid", 0, phLIQUID}, | |||
| {"isUStop", 0, phSTOP}, | |||
| {"isVFricative", 0, phVFRICATIVE}, | |||
| {"isPalatal", 0, i_isPalatal}, | |||
| @@ -3205,7 +3206,10 @@ static void CompileEquivalents() | |||
| if((foreign_table = SelectPhonemeTableName(foreign_table_name)) < 0) | |||
| { | |||
| error("Unknown phoneme table '%s'", foreign_table_name); | |||
| if(strcmp(foreign_table_name, "NULL") != 0) | |||
| { | |||
| error("Unknown phoneme table '%s'", foreign_table_name); | |||
| } | |||
| foreign_error = 1; | |||
| foreign_phoneme = 0; | |||
| } | |||
| @@ -3234,6 +3238,9 @@ static void CompileEquivalents() | |||
| if(strcmp(names[0],"endphoneme") == 0) | |||
| break; | |||
| if(foreign_error) | |||
| continue; | |||
| if(strcmp(names[0],"remove_stress") == 0) | |||
| { | |||
| remove_stress = 1; | |||
| @@ -1639,7 +1639,7 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp) | |||
| unsigned int char_code; | |||
| int compile_mode=0; | |||
| char *buf; | |||
| char buf1[200]; | |||
| char buf1[500]; | |||
| char *rules[N_RULES]; | |||
| int n_rgroups = 0; | |||
| @@ -781,8 +781,8 @@ static int Unpronouncable2(Translator *tr, char *word) | |||
| } | |||
| int Unpronouncable(Translator *tr, char *word) | |||
| {//=========================================== | |||
| int Unpronouncable(Translator *tr, char *word, int posn) | |||
| {//===================================================== | |||
| /* Determines whether a word in 'unpronouncable', i.e. whether it should | |||
| be spoken as individual letters. | |||
| @@ -817,7 +817,7 @@ int Unpronouncable(Translator *tr, char *word) | |||
| if((c==0) || (c==' ')) | |||
| break; | |||
| if((c=='\'') && (count > 1)) | |||
| if((c=='\'') && ((count > 1) || (posn > 0))) | |||
| break; // "tv'" but not "l'" | |||
| if(count==0) | |||
| @@ -913,6 +913,7 @@ void Lexicon_Bg() | |||
| char *pw; | |||
| char *pw1; | |||
| int cc; | |||
| int ix; | |||
| int vcount; | |||
| int lex_stress; | |||
| int input_length; | |||
| @@ -1006,22 +1007,27 @@ void Lexicon_Bg() | |||
| if(cc == 0xfeff) | |||
| continue; // ignore UTF-8 indication | |||
| pw1 += utf8_out(cc, pw1); // copy UTF-8 to 'word_in' | |||
| if(cc == '`') | |||
| cc = '\''; | |||
| pw1 += utf8_out(towlower(cc), pw1); // copy UTF-8 to 'word_in' | |||
| if(lookupwchar(bg_vowels, cc) != 0) | |||
| vcount++; | |||
| if((cc == 0x300) || (cc == 0x450) || (cc == 0x45d)) | |||
| if((cc == '\'') || (cc == 0x300) || (cc == 0x450) || (cc == 0x45d)) | |||
| { | |||
| // combining grave accent, of accented vowel character | |||
| lex_stress = vcount; | |||
| // backprime (before the vowel), combining grave accent, or accented vowel character | |||
| if(cc == '\'') | |||
| lex_stress = vcount+1; | |||
| else | |||
| lex_stress = vcount; | |||
| n_stress++; | |||
| if(vcount == 1) | |||
| stress_first = 1; | |||
| if(cc == 0x300) | |||
| continue; // discard combining accent | |||
| if((cc == '\'') || (cc == 0x300)) | |||
| continue; // discard backprime or combining accent | |||
| if(cc == 0x450) | |||
| cc = 0x435; // remove accent from vowel | |||
| if(cc == 0x45d) | |||
| @@ -1062,7 +1068,14 @@ void Lexicon_Bg() | |||
| } | |||
| } | |||
| if(n_stress > 1) n_stress = 1; | |||
| done = 0; | |||
| if(vcount < 2) | |||
| { | |||
| // don't list words with only one vowel | |||
| } | |||
| else | |||
| if((lex_stress != max_stress_posn) || (n_stress != 1)) | |||
| { | |||
| if((vcount > 0) && (lex_stress > 0) && (lex_stress <= 7)) | |||
| @@ -1082,7 +1095,7 @@ void Lexicon_Bg() | |||
| if(done == 0) | |||
| { | |||
| n_wrong++; | |||
| fprintf(f_out,"%s\t$text %s\n", &word[2], word_in); | |||
| fprintf(f_out,"// %s\t$text %s\n", &word[2], word_in); | |||
| } | |||
| if(done) | |||
| @@ -27,6 +27,8 @@ | |||
| #ifndef PLATFORM_DOS | |||
| #ifdef PLATFORM_WINDOWS | |||
| #include <fcntl.h> | |||
| #include <io.h> | |||
| #include <windows.h> | |||
| #include <winreg.h> | |||
| #else | |||
| @@ -234,7 +236,13 @@ static int OpenWaveFile(const char *path, int rate) | |||
| return(2); | |||
| if(strcmp(path,"stdout")==0) | |||
| { | |||
| #ifdef PLATFORM_WINDOWS | |||
| // prevent Windows adding 0x0d before 0x0a bytes | |||
| _setmode(_fileno(stdout), _O_BINARY); | |||
| #endif | |||
| f_wave = stdout; | |||
| } | |||
| else | |||
| f_wave = fopen(path,"wb"); | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.45.02 15.Mar.11"; | |||
| const char *version_string = "1.45.11 31.Mar.11"; | |||
| const int version_phdata = 0x014500; | |||
| int option_device_number = -1; | |||
| @@ -308,14 +308,17 @@ void SetIndicLetters(Translator *tr) | |||
| memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | |||
| SetLetterBitsRange(tr,LETTERGP_A,0x04,0x14); // vowel letters | |||
| SetLetterBitsRange(tr,LETTERGP_A,0x3e,0x4d); // + vowel signs, and virama | |||
| SetLetterBitsRange(tr,LETTERGP_A,0x55,0x57); // + vowel signs | |||
| SetLetterBitsRange(tr,LETTERGP_B,0x3e,0x4d); // vowel signs, and virama | |||
| SetLetterBitsRange(tr,LETTERGP_B,0x55,0x57); // + vowel signs | |||
| SetLetterBitsRange(tr,LETTERGP_C,0x15,0x39); // the main consonant range | |||
| SetLetterBits(tr,LETTERGP_C,dev_consonants2); // + additional consonants | |||
| SetLetterBitsRange(tr,LETTERGP_Y,0x04,0x14); // vowel letters | |||
| SetLetterBitsRange(tr,LETTERGP_Y,0x3e,0x4c); // + vowel signs | |||
| SetLetterBitsRange(tr,LETTERGP_Y,0x55,0x57); // + vowel signs | |||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
| tr->langopts.suffix_add_e = tr->letter_bits_offset + 0x4d; //virama | |||
| @@ -1090,6 +1093,30 @@ SetLengthMods(tr,3); // all equal | |||
| } | |||
| break; | |||
| case L('s','i'): // Sinhala | |||
| { | |||
| SetupTranslator(tr,stress_lengths_ta,stress_amps_ta); | |||
| tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable | |||
| tr->langopts.stress_rule = STRESSPOSN_1L; | |||
| tr->langopts.stress_flags = S_FINAL_DIM | S_NO_AUTO_DIM | S_FINAL_NO_2; | |||
| tr->langopts.spelling_stress = 1; | |||
| tr->letter_bits_offset = OFFSET_SINHALA; | |||
| memset(tr->letter_bits,0,sizeof(tr->letter_bits)); | |||
| SetLetterBitsRange(tr,LETTERGP_A,0x05,0x16); // vowel letters | |||
| SetLetterBitsRange(tr,LETTERGP_A,0x4a,0x73); // + vowel signs, and virama | |||
| SetLetterBitsRange(tr,LETTERGP_B,0x4a,0x73); // vowel signs, and virama | |||
| SetLetterBitsRange(tr,LETTERGP_C,0x1a,0x46); // the main consonant range | |||
| tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
| tr->langopts.suffix_add_e = tr->letter_bits_offset + 0x4a; //virama | |||
| tr->langopts.numbers = NUM_OMIT_1_THOUSAND ; | |||
| } | |||
| break; | |||
| case L('s','l'): // Slovenian | |||
| tr->charset_a0 = charsets[2]; // ISO-8859-2 | |||
| tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary | |||
| @@ -1223,7 +1250,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable | |||
| tr->langopts.stress_flags = 0x20; //no automatic secondary stress | |||
| tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2; | |||
| tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2; | |||
| tr->langopts.max_initial_consonants = 2; | |||
| } | |||
| break; | |||
| @@ -386,6 +386,9 @@ int IsAlpha(unsigned int c) | |||
| return(1); | |||
| if(lookupwchar(extra_indic_alphas, c) != 0) | |||
| return(1); | |||
| if((c >= 0xd7a) && (c <= 0xd7f)) | |||
| return(1); // malaytalam chillu characters | |||
| return(0); | |||
| } | |||
| @@ -577,6 +580,19 @@ char *strchr_w(const char *s, int c) | |||
| } | |||
| int IsAllUpper(const char *word) | |||
| {//============================= | |||
| int c; | |||
| while((*word != 0) && !isspace2(*word)) | |||
| { | |||
| word += utf8_in(&c, word); | |||
| if(!iswupper(c)) | |||
| return(0); | |||
| } | |||
| return(1); | |||
| } | |||
| static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes, int spell_word) | |||
| {//============================================================================================ | |||
| int posn = 0; | |||
| @@ -1022,7 +1038,7 @@ if((wmark > 0) && (wmark < 8)) | |||
| length = 999; | |||
| wordx = word1; | |||
| while(((length < 3) && (length > 0))|| (word_length > 1 && Unpronouncable(tr,wordx))) | |||
| while(((length < 3) && (length > 0))|| (word_length > 1 && Unpronouncable(tr, wordx, posn))) | |||
| { | |||
| // This word looks "unpronouncable", so speak letters individually until we | |||
| // find a remainder that we can pronounce. | |||
| @@ -1176,20 +1192,26 @@ if((wmark > 0) && (wmark < 8)) | |||
| if(prefix_type & SUFX_B) | |||
| { | |||
| // SUFX_B is used for Turkish, tr_rules contains "(PbÃÂã | |||
| // retranslate the prefix part | |||
| // SUFX_B is used for Turkish, tr_rules contains " ' (Pb" | |||
| // examine the prefix part | |||
| char *wordpf; | |||
| char prefix_phonemes2[12]; | |||
| strncpy0(prefix_phonemes2,end_phonemes,sizeof(prefix_phonemes2)); | |||
| wordpf = &prefix_chars[1]; | |||
| found = LookupDictList(tr, &wordpf, phonemes, dictionary_flags, SUFX_P, wtab); // without prefix | |||
| if(found == 0) | |||
| strcpy(prefix_phonemes, phonemes); | |||
| // look for stress marker or $abbrev | |||
| found = LookupDictList(tr, &wordpf, phonemes, dictionary_flags, 0, wtab); | |||
| if(found) | |||
| { | |||
| end_type = TranslateRules(tr, wordpf, phonemes, N_WORD_PHONEMES, end_phonemes, 0, dictionary_flags); | |||
| sprintf(prefix_phonemes,"%s%s%s",phonemes,end_phonemes,prefix_phonemes2); | |||
| strcpy(prefix_phonemes, phonemes); | |||
| } | |||
| if(dictionary_flags[0] & FLAG_ABBREV) | |||
| { | |||
| prefix_phonemes[0] = 0; | |||
| SpeakIndividualLetters(tr, wordpf, prefix_phonemes, 1); | |||
| } | |||
| prefix_flags = 1; | |||
| } | |||
| else | |||
| { | |||
| @@ -2772,7 +2794,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| { | |||
| // '-' between two letters is a hyphen, treat as a space | |||
| word_flags |= FLAG_HYPHEN; | |||
| words[word_count-1].flags |= FLAG_HYPHEN_AFTER; | |||
| if(word_count > 0) | |||
| words[word_count-1].flags |= FLAG_HYPHEN_AFTER; | |||
| c = ' '; | |||
| } | |||
| } | |||
| @@ -2809,7 +2832,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| space_inserted = 1; | |||
| } | |||
| else | |||
| if(!(words[word_count-1].flags & FLAG_NOSPACE) && IsAlpha(prev_in)) | |||
| if((word_count > 0) && !(words[word_count-1].flags & FLAG_NOSPACE) && IsAlpha(prev_in)) | |||
| { | |||
| // dot after a word, with space following, probably an abbreviation | |||
| words[word_count-1].flags |= FLAG_HAS_DOT; | |||
| @@ -2930,7 +2953,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| // end of 'word' | |||
| sbuf[ix++] = ' '; | |||
| if((ix > words[word_count].start) && (word_count < N_CLAUSE_WORDS-1)) | |||
| if((word_count < N_CLAUSE_WORDS-1) && (ix > words[word_count].start)) | |||
| { | |||
| if(embedded_count > 0) | |||
| { | |||
| @@ -3056,7 +3079,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre | |||
| *pn++ = *pw++; | |||
| } | |||
| else | |||
| if((*pw == tr->langopts.thousands_sep) && (pw[1] == ' ') && iswdigit(pw[2])) | |||
| if((*pw == tr->langopts.thousands_sep) && (pw[1] == ' ') | |||
| && iswdigit(pw[2]) && (pw[3] != ' ') && (pw[4] != ' ')) // don't allow only 1 or 2 digits in the final part | |||
| { | |||
| pw += 2; | |||
| ix++; // skip "word" | |||
| @@ -658,7 +658,7 @@ void CalcLengths(Translator *tr); | |||
| void CalcPitches(Translator *tr, int clause_tone); | |||
| int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy); | |||
| int Unpronouncable(Translator *tr, char *word); | |||
| int Unpronouncable(Translator *tr, char *word, int posn); | |||
| void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress); | |||
| int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags); | |||
| int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab); | |||
| @@ -80,9 +80,6 @@ static pa_context *context = NULL; | |||
| static pa_stream *stream = NULL; | |||
| static pa_threaded_mainloop *mainloop = NULL; | |||
| static pa_cvolume volume; | |||
| static int volume_valid = 0; | |||
| static int do_trigger = 0; | |||
| static uint64_t written = 0; | |||
| static int time_offset_msec = 0; | |||
| @@ -131,20 +128,7 @@ do { \ | |||
| // SHOW("ti> read_index=0x%lx\n",the_time->read_index); | |||
| // } | |||
| static void info_cb(struct pa_context *c, const struct pa_sink_input_info *i, int is_last, void *userdata) { | |||
| ENTER(__FUNCTION__); | |||
| assert(c); | |||
| if (!i) | |||
| return; | |||
| volume = i->volume; | |||
| volume_valid = 1; | |||
| } | |||
| static void subscribe_cb(struct pa_context *c, enum pa_subscription_event_type t, uint32_t index, void *userdata) { | |||
| pa_operation *o; | |||
| ENTER(__FUNCTION__); | |||
| assert(c); | |||
| @@ -154,13 +138,6 @@ static void subscribe_cb(struct pa_context *c, enum pa_subscription_event_type t | |||
| (t != (PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE) && | |||
| t != (PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_NEW))) | |||
| return; | |||
| if (!(o = pa_context_get_sink_input_info(c, index, info_cb, NULL))) { | |||
| SHOW("pa_context_get_sink_input_info() failed: %s\n", pa_strerror(pa_context_errno(c))); | |||
| return; | |||
| } | |||
| pa_operation_unref(o); | |||
| } | |||
| static void context_state_cb(pa_context *c, void *userdata) { | |||
| @@ -367,7 +344,7 @@ static void pulse_write(void* ptr, int length) { | |||
| SHOW("pulse_write > length=%d\n", length); | |||
| CHECK_CONNECTED(); | |||
| CHECK_CONNECTED_NO_RETVAL(); | |||
| pa_threaded_mainloop_lock(mainloop); | |||
| CHECK_DEAD_GOTO(fail, 1); | |||
| @@ -481,12 +458,6 @@ static int pulse_open() | |||
| if (!pa_sample_spec_valid(&ss)) | |||
| return false; | |||
| /* if (!volume_valid) { */ | |||
| pa_cvolume_reset(&volume, ss.channels); | |||
| volume_valid = 1; | |||
| /* } else if (volume.channels != ss.channels) */ | |||
| /* pa_cvolume_set(&volume, ss.channels, pa_cvolume_avg(&volume)); */ | |||
| SHOW_TIME("pa_threaded_mainloop_new (call)"); | |||
| if (!(mainloop = pa_threaded_mainloop_new())) { | |||
| SHOW("Failed to allocate main loop\n",""); | |||
| @@ -539,8 +510,6 @@ static int pulse_open() | |||
| pa_stream_set_write_callback(stream, stream_request_cb, NULL); | |||
| pa_stream_set_latency_update_callback(stream, stream_latency_update_cb, NULL); | |||
| pa_buffer_attr a_attr; | |||
| a_attr.maxlength = MAXLENGTH; | |||
| @@ -550,7 +519,7 @@ static int pulse_open() | |||
| a_attr.fragsize = 0; | |||
| SHOW_TIME("pa_connect_playback"); | |||
| if (pa_stream_connect_playback(stream, NULL, &a_attr, (pa_stream_flags_t)(PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE), &volume, NULL) < 0) { | |||
| if (pa_stream_connect_playback(stream, NULL, &a_attr, (pa_stream_flags_t)(PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE), NULL, NULL) < 0) { | |||
| SHOW("Failed to connect stream: %s", pa_strerror(pa_context_errno(context))); | |||
| goto unlock_and_fail; | |||
| } | |||
| @@ -578,44 +547,24 @@ static int pulse_open() | |||
| pa_threaded_mainloop_wait(mainloop); | |||
| } | |||
| pa_operation_unref(o); | |||
| if (!success) { | |||
| SHOW("pa_context_subscribe() failed: %s", pa_strerror(pa_context_errno(context))); | |||
| goto unlock_and_fail; | |||
| } | |||
| pa_operation_unref(o); | |||
| /* Now request the initial stream info */ | |||
| if (!(o = pa_context_get_sink_input_info(context, pa_stream_get_index(stream), info_cb, NULL))) { | |||
| SHOW("pa_context_get_sink_input_info() failed: %s", pa_strerror(pa_context_errno(context))); | |||
| goto unlock_and_fail; | |||
| } | |||
| SHOW_TIME("pa_threaded_mainloop_wait 2"); | |||
| while (pa_operation_get_state(o) != PA_OPERATION_DONE) { | |||
| CHECK_DEAD_GOTO(fail, 1); | |||
| pa_threaded_mainloop_wait(mainloop); | |||
| } | |||
| /* if (!volume_valid) { */ | |||
| /* SHOW("pa_context_get_sink_input_info() failed: %s", pa_strerror(pa_context_errno(context))); */ | |||
| /* goto unlock_and_fail; */ | |||
| /* } */ | |||
| do_trigger = 0; | |||
| written = 0; | |||
| time_offset_msec = 0; | |||
| just_flushed = 0; | |||
| connected = 1; | |||
| // volume_time_event = NULL; | |||
| pa_threaded_mainloop_unlock(mainloop); | |||
| SHOW_TIME("pulse_open (ret true)"); | |||
| // return true; | |||
| return PULSE_OK; | |||
| unlock_and_fail: | |||
| if (o) | |||
| @@ -1796,7 +1796,7 @@ if(option_log_frames) | |||
| next = (fr2->fheight[ix] * v->height[ix]) << 6; | |||
| peaks[ix].height_inc = ((next - peaks[ix].height1) * STEPSIZE) / length2; | |||
| if(ix <= wvoice->n_harmonic_peaks) | |||
| if((ix <= 5) && (ix <= wvoice->n_harmonic_peaks)) | |||
| { | |||
| peaks[ix].left1 = (fr1->fwidth[ix] * v->width[ix]) << 10; | |||
| peaks[ix].left = int(peaks[ix].left1); | |||