diff --git a/dictsource/de_rules b/dictsource/de_rules index 36a9b324..3f3fc7d7 100644 --- a/dictsource/de_rules +++ b/dictsource/de_rules @@ -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: diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 4322358f..f4679ae9 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -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 diff --git a/dictsource/en_list b/dictsource/en_list index 41139947..d4be232b 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -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 diff --git a/dictsource/en_rules b/dictsource/en_rules index 24e409db..9d35c90f 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -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 diff --git a/dictsource/hu_list b/dictsource/hu_list index 6cfb6d89..0b0b49f4 100755 --- a/dictsource/hu_list +++ b/dictsource/hu_list @@ -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 diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 6023dd05..7800571e 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -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 diff --git a/dictsource/nl_list b/dictsource/nl_list index c96aa3fd..1a912164 100644 --- a/dictsource/nl_list +++ b/dictsource/nl_list @@ -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 diff --git a/dictsource/nl_rules b/dictsource/nl_rules index 9516499c..11f4e4d3 100644 --- a/dictsource/nl_rules +++ b/dictsource/nl_rules @@ -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 diff --git a/dictsource/ru_list b/dictsource/ru_list index 4e65beae..867afaaa 100644 --- a/dictsource/ru_list +++ b/dictsource/ru_list @@ -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; diff --git a/dictsource/ta_rules b/dictsource/ta_rules index 9bd7f6e0..137ff2d0 100644 --- a/dictsource/ta_rules +++ b/dictsource/ta_rules @@ -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# diff --git a/dictsource/tr_list b/dictsource/tr_list index 26bce891..61602890 100644 --- a/dictsource/tr_list +++ b/dictsource/tr_list @@ -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 + +// Names +Hitler $1 // Place Names -ankara $1 -istanbul $2 - +// 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 diff --git a/dictsource/tr_rules b/dictsource/tr_rules index 99fdb7ce..aa03ae1b 100644 --- a/dictsource/tr_rules +++ b/dictsource/tr_rules @@ -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 diff --git a/phsource/compile_report b/phsource/compile_report index d740115a..e8314fc0 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -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 diff --git a/phsource/ph_dutch b/phsource/ph_dutch index 42c3beaf..48c3d408 100644 --- a/phsource/ph_dutch +++ b/phsource/ph_dutch @@ -113,6 +113,7 @@ endphoneme phoneme e: vowel starttype #e endtype #i length 190 + ChangeIfUnstressed(@) FMT(vdiph/ei) endphoneme diff --git a/phsource/ph_german b/phsource/ph_german index 95e6d106..21300a3f 100755 --- a/phsource/ph_german +++ b/phsource/ph_german @@ -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 : diff --git a/phsource/phonemes b/phsource/phonemes index 0d97de87..6cb63ac2 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -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 diff --git a/phsource/vowel/a#_4 b/phsource/vowel/a#_4 index a637d097..ac4e5799 100644 Binary files a/phsource/vowel/a#_4 and b/phsource/vowel/a#_4 differ diff --git a/src/Makefile b/src/Makefile index a184e85d..a884f6f1 100644 --- a/src/Makefile +++ b/src/Makefile @@ -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) diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 02e91976..a346da29 100644 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -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; diff --git a/src/compiledict.cpp b/src/compiledict.cpp index d6f6a950..15bb0c34 100644 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -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; diff --git a/src/dictionary.cpp b/src/dictionary.cpp index ab5b123d..e45dd4b2 100644 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -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) diff --git a/src/extras.cpp b/src/extras.cpp index c131b675..23fcba48 100644 --- a/src/extras.cpp +++ b/src/extras.cpp @@ -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) diff --git a/src/speak.cpp b/src/speak.cpp index 88bfe9a7..5c68a4c8 100644 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -27,6 +27,8 @@ #ifndef PLATFORM_DOS #ifdef PLATFORM_WINDOWS +#include +#include #include #include #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"); diff --git a/src/synthdata.cpp b/src/synthdata.cpp index df8ca526..9ad8182d 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -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; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 28b1a1f1..8c55cee3 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -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; diff --git a/src/translate.cpp b/src/translate.cpp index f3727ef4..5924e095 100644 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -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" diff --git a/src/translate.h b/src/translate.h index a40b116c..9979d3f6 100644 --- a/src/translate.h +++ b/src/translate.h @@ -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); diff --git a/src/wave_pulse.cpp b/src/wave_pulse.cpp index e9f97ee3..18a9f1bd 100644 --- a/src/wave_pulse.cpp +++ b/src/wave_pulse.cpp @@ -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) diff --git a/src/wavegen.cpp b/src/wavegen.cpp index 81ded63c..8ac20dee 100644 --- a/src/wavegen.cpp +++ b/src/wavegen.cpp @@ -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);