diff --git a/dictsource/dict_phonemes b/dictsource/dict_phonemes index 00660450..2d247c10 100644 --- a/dictsource/dict_phonemes +++ b/dictsource/dict_phonemes @@ -19,13 +19,13 @@ Dictionary bn_dict & a a: a~ e E e~ i I i: i:~ i~ l- o O o: -o~ O~ r- U u u: u:~ u~ +O~ o~ r- U u u: u:~ u~ -* b B c C ch d d. -g h j J k kh l m -n N n. n^ p ph Q r -r. s S s. t t. t.h th -tS x z +* b B bh c C ch d +d. dh g gh h j J k +kh l m n N n. n^ p +ph Q r r. s S s. t +t. t.h th tS x z Dictionary ca_dict @@ -152,16 +152,15 @@ S s2 t v Z Dictionary fr_dict -@ @- @2 a A a2 A~ e -E E2 E~ i i: o O o2 -O2 O~ u u: W W2 w^i wA -W~ y Y +@ @- @2 a a2 A~ e E +E2 E~ i i: o O o2 O2 +O~ u u: W W2 w^i wA W~ +y Y -: ; b d dZ f g h -j k l m n N n2 n^ -p p2 r R r2 s S t -t2 t3 tS v w z Z z2 -z3 +: b d dZ f g h j +k l m n N n2 n^ p +p2 r R r2 s S t t2 +t3 tS v w z Z z2 z3 Dictionary grc_dict @@ -191,14 +190,15 @@ Dictionary hi_dict @ @- @2 @3 a a: aI aU e E e: E: E~ i I i: -l- o O o: O: o~ O~ r- +l- o O o: O: O~ o~ r- U u: u~ V -- : b c ch d d. f -g h H j J k kh l -l. m n N n. n^ p ph -Q q r r. s S s. t -T t. t.h th v w x z +- : b bh c ch d d. +dh f g gh h H j J +k kh l l. m n N n. +n^ p ph Q q r r. s +S s. t T t. t.h th v +w x z Dictionary hu_dict @@ -274,11 +274,11 @@ a a: aI aU e E e: i I i: o o: r- u u: V y -: b c ch d d. dZ f -g h j J k kh l l. -m n N n. n^ p ph R -R2 s S s. S; t t. t.h -th tS v w z +: b bh c ch d d. dh +dZ f g gh h j J k +kh l l. m n N n. n^ +p ph R R2 s S s. S; +t t. t.h th tS v w z Dictionary ko_dict @@ -344,27 +344,27 @@ a a: aI aU e E e: i I i: o o: r- u u: V y -: b c ch d d. dZ f -g h j J k kh l l. -m n N n. n^ p ph R -R2 s s. S; t t. t.h th -tS v w z z. +: b bh c ch d d. dh +dZ f g gh h j J k +kh l l. m n N n. n^ +p ph R R2 s s. S; t +t. t.h th tS v w z z. Dictionary ne_dict @ @/ @2 @3 a aI aU a~ -e E eI eU E~ e~ i I -i~ l- o O o: oI oU o~ -O~ r- u uI u~ V VI VU +e E eI eU e~ E~ i I +i~ l- o O o: oI oU O~ +o~ r- u uI u~ V VI VU V~ -- : b c ch d d. f -g h H j J k kh l -l. m n N n. n^ p ph -Q q r r. s S s. t -T t. t.h th v w x z -z. +- : b bh c ch d d. +dh f g gh h H j J +k kh l l. m n N n. +n^ p ph Q q r r. s +S s. t T t. t.h th v +w x z z. Dictionary nl_dict @@ -393,23 +393,23 @@ s S s; t v w x z Dictionary om_dict -@# a a: E e I I# i: -O o: U u: +a A a# a: E e E# I +I# i: O O# o: U U# u: -** : a# b B c` d d` +** : b B c` d D d` dZ f g h j k k` l m n n^ p p` R s S -t t` tS v w z +s2 t t` tS v w z Dictionary pl_dict -@- a E E# E~ i O O~ -u y +a E E# E~ i O O~ u +y -* : ; b c C d d; -dZ dz; f g h j k l -m n N n^ p r s S +: ; b c C d d; dZ +dz; f g h j k l m +n N n^ p r R s S s; S; t t; tS ts ts; tS; v w x z Z Z; @@ -481,13 +481,14 @@ t t; tS ts v x z Z Dictionary sq_dict -@ a A aI e E i O -u V y yE +@ @- @/ a A aI E e +eI i I I# O OI u V +y yE -* ** b c d D dZ f -g h j J k l ll m -n n^ p r R R2 s S -t T tS ts v w z Z +** b c d D dZ f g +h j J k l ll m n +n^ p r R R2 s S t +T tS ts v w z Z Dictionary sv_dict @@ -508,7 +509,7 @@ o u * : b d D f g h j J k l m n N n^ -p Q r s S t T tS +p Q R s S t T tS v w x z @@ -542,9 +543,9 @@ i i@ iU O o OI oI u u@ uI y y@ yI b c d D f g h j -k kh l m n N n^ p -Q s t t[ ts; tS; v w -x z Z z; +J k kh l m n N n^ +p Q r s s. t t[ ts; +tS; v w x z Z z. Dictionary zh_dict @@ -555,9 +556,9 @@ o o- ou u u@ ua uai uei uo y y& y@ yE yi yu (u) ; C f h j k kh -l m n N p ph r s -s. S; t th ts ts. ts. tS; -tS; tsh v w x X z. +l m n N p ph q r +s s. S; t th ts ts. ts. +tS; tS; tsh v w x X z. Dictionary zhy_dict @@ -569,3 +570,11 @@ oi ong ou u ui yu b c d f g h j k l m n N p r s t tS v w z + + +Dictionary ga_dict + +a A: E e: I O + +b c C d k l r v +w x diff --git a/dictsource/en_list b/dictsource/en_list index 2d2eece8..91061044 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -19,7 +19,6 @@ // letter names, as they are spoken as a single character in text // precede by _ to distinguish from pronunciation as a language word -test h'EloU _a eI b bi: @@ -138,7 +137,7 @@ _¡ Inv,3:tI2dEkskl@m'eIS@n _¦ broUk@nb'A@ _¨ daIa2r'i:sIs _ª fEmI2nIn'O@dI2n@L -_« lEft'ang@LkwoUts +_« lEft'gIl@mEt _­ makr0n _² su:p@skrIptt'u: _³ su:p@skrIptT'ri: @@ -147,7 +146,7 @@ _· mId@Ld0t _¸ sEd'Il@ _¹ su:p@skrIptw'0n _º maskjUlIn'O@dI2n@L -_» raIt'ang@LkwoUts +_» raIt'gIl@mEt _¿ Inv,3:tI2dkw'EstS@n _‐ haIf@n @@ -179,6 +178,14 @@ _‴ trIp@LpraIm _‼ Ekskla2m'eIS@nz _₠ jU@roU +\ bakstroUk $max3 +/ stroUk $max3 +?3 \ bakslaS $max3 +?3 / slaS $max3 +* ast@rIsk $max3 +% p3sEnt $max3 += _:i:kw@Lz_: $max3 +?5 % pVRs'Ent $max3 ¢ sEnts £ paUnd ¥ jEn @@ -761,6 +768,8 @@ coauthor koU'O:T3 cobol koUb0l cocoa koUkoU cochlea k0kli:@ +cockeye k0kaI +cocksure ,k0kS'U@ coconut koUk@nVt codify koUdI2faI coeur k3: @@ -1014,6 +1023,7 @@ exalt Egz'0lt execute EksI2kju:t // not $2 exile $1 exodus Eks@d@s +expedite Eksp@daIt // expedited expert Eksp3:t expertise Eksp3t'i:z exploit $1 $onlys @@ -1024,6 +1034,7 @@ export $verb extract $1 $onlys extract $1 $only extract $2 $verb +extradite Ekstr@daIt // extradited extrem Ekstr'i:m // extremism extremist Ekstr'i:mIst eyrie i@rI @@ -1257,10 +1268,12 @@ internet Int3nEt interrupt $1 $onlys interrupt $3 $verb interval Int3v@L -interven Int3v'i:n // for intervening +interven Int3v'i:n // for intervening +intray IntreI intro $1 irate aIr'eIt iris aIrIs +iron aI@n irony aIr@nI isosceles aIs'0s@li:z itinerary aIt'In@r@rI @@ -1551,6 +1564,7 @@ papa pa2p'A: papal peIp@L pagan peIg@n pageant padZ@nt +paltry pO:ltrI panacea pana2s'i:@ panache $2 parabola p@rab@l@ @@ -2033,6 +2047,7 @@ truely tru:lI2 $verbf truest tru:@st tryst trIst tudor tju:d3 +turntable t3:nteIb@L tulip tju:lIp turnkey t3:nki: ?5 turnkey tVRnki: @@ -2438,6 +2453,7 @@ Cassandra k@sandr@ Cassey keIsI Catherine kaTrI2n Cecile sEsi:l +Chloe kloUI Chris krIs Connor k0n3 Daphne dafnI @@ -2564,7 +2580,7 @@ Buchanan bju:k'an@n Campbell kamb@l Chrysler kraIzl3 Disney dIznI -Patel p@t'El +Patel pa2tEl Primavera pri:m@v'e@r@ Prentice prEntIs Reuter rOIt3 diff --git a/dictsource/en_rules b/dictsource/en_rules index 2ecc9526..471bbdc3 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -538,8 +538,8 @@ @) ally (_S2 l%I @@ic) ally (_S4 l%I inst) al (_ O:l - &) al (d @L - b) al (d O:l + &) al (d_ @L + b) al (d+ O:l b) al (k O:l f) al (k 0l b) all (K O:l @@ -1061,7 +1061,6 @@ au O: g) au (s aU ?!3 s) au (s 0 - l) au (t_ aU ?!3 au (str 0 au (_ aU _) auch %O:x @@ -1079,7 +1078,7 @@ s) au (rus_ 'O: @) au (ri 'O: C) aus (_ aUs - au (t_ aU + @) au (t_ aU n) au (t_ O: authen %O:TEn _) auto (@P4 ,O:toU // prefix @@ -2384,6 +2383,7 @@ ey (an eI _) eye aI eye eI + eyed (_S2 d @m) eyer (_ aI3 eyor (_ 'eI3 @@ -2490,6 +2490,7 @@ b) i (_ aI c) i (_ aI c) is (_ Is + d) i (_ =I @@h) i (_ =I h) i (_ =aI &sk) i (_ =I @@ -2555,12 +2556,13 @@ @) i (cip 'I i (cus_ =I _) id (_ aIdi: - idea aId'i@ + _) idea aId'i@ acc) i (d I c) i (dal 'aI fr) i (day aI _) i (dle aI br) i (dl aI + _s) i (dl aI f) i (del I2 br) i (dA aI br) i (dg I @@ -3145,7 +3147,7 @@ l) iv (en aIv r) ival aIv@L ct) iv (al 'aIv - v) iv (al 'aIv + @v) iv (al 'aIv ive (ness Iv _al) iv (e aIv n) iv (e_ aIv @@ -3399,6 +3401,7 @@ cla) ng (er Ng ta) ngi ndZI i) ng (er Ng + bi) ng (er ndZ gi) ng (er ndZ o) ng (er Ng you) ng (er Ng @@ -4506,7 +4509,6 @@ &) sib s@b ea) s (ie z ea) s (il z - _) sid (e# saId C) sion S@n ?3 er) sion Z@n A) sion Z@n @@ -4669,6 +4671,7 @@ g) th (en_ T thai taI th (ead th + th (eart th theless D@l'Es theque tEk ther (_ D3 @@ -5320,10 +5323,6 @@ ñ n^ - \\ bakstroUk - / stroUk -?3 \\ bakslaS -?3 / slaS ' ! _:Ekskl@meIS@n_: ! (\! @@ -5332,8 +5331,6 @@ : koUl@n D_) : (_DD_ // omit colon in time, eg: 2:30 $ d0l3 - % p3sEnt -?5 % pVRs'Ent @ at_: & _!%and != n0ti:kw@Lz @@ -5359,16 +5356,3 @@ . (. _: \.) . - = __i:kw@Lz_ - = (== - =) = (= - ==) = (_ _:: - - * ast@rIsk - *) * (* - ** - **) * (_ _:: - % (%% - %) % (% - %%) % (_ _:: - diff --git a/dictsource/eo_list b/dictsource/eo_list index 390d397e..b4c683cd 100644 --- a/dictsource/eo_list +++ b/dictsource/eo_list @@ -27,7 +27,7 @@ _0M1 m,il_ _0M2 mili'ono _0M3 mili'ardo _0M4 duili'ono -_dpt komo_ +_dpt _komo_ // accent names _acu dekst@-*akoRno @@ -45,17 +45,30 @@ _: dupunkto _; punktokomo _, komo _? demandosigno +_! _k@-*isigno_ _- dividost@-*eko +__ subst@-*eko ~ tildo ° gradoI % p@-*otsento @ _tSe_ & kaI -= ,,egala, -\\ deklivo -/ oblik'vo += egala +\ deklivo +/ oblikvo +| duktosigno * asteRisko -© k'opiraIto +© kopiRaIto +_( Rondak@-*'ampo +_) feRm'itaRondak@-*'ampo +_[ Rektak@-*'ampo +_] f'eRmaRektak@-*'ampo +_{ k'u@-*bak@-*'ampo +_} f'eRmaku@-*bak@-*'ampo +_< angulk@-*'ampo +_> f'eRmaangulk@-*'ampo +_« du'oblaangulk@-*'ampo +_» f'eRmadu,oblaangulk@-*'ampo v vo // not Roman numbers @@ -76,7 +89,7 @@ k.c kaItset'eRe Kg k'ilog@-*'amoI Km k'ilom'et-*oI kp k,omp'aru $dot -k.s kaI,s'im'ile +k.s kaI,si'mile n.b n'otu||b'one nro numeRo pĝ padZo $dot @@ -151,10 +164,6 @@ tra $u $pause eĉ $brk pli pl,i plej pl,eI -//ĝojo dZoIo -//ĉashundo tSas,hundo -//ligno lig,no -//signo sig,no // pronouns mi $u diff --git a/dictsource/eo_rules b/dictsource/eo_rules index 3b730f1d..21cfba29 100644 --- a/dictsource/eo_rules +++ b/dictsource/eo_rules @@ -21,7 +21,7 @@ D_-_) an (_ %an //'an' after a number D_) a (_ %a //'a' after a number D_) an (_ %an //'an' after a number - -) ano (_ an%o // 'ano' = member + .group b _) b(_ bo @@ -39,10 +39,8 @@ _) d(_ do d d - _) d (-ro_ dokt'o - _) d (-rino_ d,okto - - -) do (_ d%o + _) d (-ro dokt'o + _) d (-rino d,okto .group e _) e(_ e @@ -54,8 +52,8 @@ _) f(_ fo f f - _) f (-ino_ fR%aUl - _) f (-lo_ fRaU + _) f (-ino fR%aUl + _) f (-lo fRaU .group g _) g(_ go @@ -82,9 +80,9 @@ _) k(_ ko k k - _) k (-do_ kamaR'a - _) k (-dino_ k'amaRa - _) k (-ino_ k'amaRad + _) k (-do kamaR'a + _) k (-dino k'amaRa + _) k (-ino k'amaRad .group l @@ -92,8 +90,6 @@ l l ll (_ l - -) lo (_ l%o - .group m _) m(_ mo @@ -104,15 +100,19 @@ n n n (_S1 n - _) n (-ro_ num'e + _) n (-ro num'e .group o _) o(_ o o o oj oI + -) o (_ %o -) oj (_ %oI -) on (_ %on + -X) o (_ %o // d-ro etc + -X) oj (_ %oI + -X) on (_ %on .group p _) p(_ po @@ -132,8 +132,6 @@ K) r (A @-* rr RR - -) ro (_ R%o // d-ro, n-ro - .group s _) s(_ so _) sh(_ So @@ -141,11 +139,11 @@ sh (K S // foreign words K) sh S // foreign words - _) s (-ino_ s,injoR - _) s (-ro_ sinj'o + _) s (-ino s,injoR + _) s (-ro sinj'o - _) s (-ano_ s'am,ide - _) s (-anino_ s'am,ide + _) s (-ano s'am,ide + _) s (-anino s'am,ide _) s (-ta_ s'ank @@ -220,7 +218,6 @@ £ pundo £ (_D _pundoI_: - _! _k@-*isig'no_ __) - (_D minus_ D_) - (_D st@-*ek'eto_ A_) - (_D _ diff --git a/dictsource/fr_list b/dictsource/fr_list index d11be215..bf32cc3a 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -24,7 +24,7 @@ // 2006-11-18 Gilles Casse // -// Updated 2008-11-06 Michel Such +// Updated 2008-12-03 Michel Such // // * Numbers, a few abbreviations and exceptions. // @@ -97,7 +97,6 @@ _rng rO~t2A~S'Ef _stk b'ar _tld t'ild - // character names _cap maZysk'yl @@ -116,13 +115,14 @@ _* asterisk: _, virgyl _- tirE _. _|pw%E~ -_/ slaS -_: d'Ypw'E~ -_; pwE~virg'yl +_/ bar||oblik +_: d'Y||pw'E~ +_; pwE~||virg'yl _< E~ferjWr _= egal _> syperjWr -_? pwE~dE~terogasj'O~ +_? pwE~||dE~terogasj'O~ +_! pwE~||dEksklamasj'O~ _[ uvr@-_kroSE _\ b'aksl'aS _] f'E2rm_kroS'E @@ -130,27 +130,33 @@ _^ sirkOnflEks __ sulin^e _` aks'A~_gr'av _{ uvr_akOlad -_| bar +_| bar_vErtik'al _} f'E2rm_akOl'ad ² pw^is'A~s||d'Y +_« uvre||gijm'E +_» fErme||gijm'E +_’ a2postr'Of +_‘ a2postr'Of +_µ mikR'o +_§ sEksj'O~ // symbols that are normally spoken when reading text -! Eksklamasj'O~ @ arobaz % pursA~ -& _e +& e $u $brk +_& _e_komErsj'al + plys ~ tilde € @ro ¢ sEnt -¥ i;En +¥ jEn £ livr ± pl'yz_'u_mw'E~ × myltipli:'e_p'ar ÷ diviz'e_p'ar ¼ W~_k'ar ½ W~_d@m'i -¾ trwAk'ar +¾ trwA_k'ar © _^_EN ® m'ark_depos'e @@ -709,7 +715,7 @@ bit bit bluetooth blut'us computer _^_en (cyber link) _^_en -debian dEbjAn +debian dEbjan edit _^_en emacs Emaks emacspeak Emakspi:k @@ -803,6 +809,7 @@ samoa samoa leone leO2n koweït kowEjt taïwan tajwAn +texas tEks'as venezuela venezyela (viêt nam) viEtnam wallis wAlis @@ -810,3 +817,4 @@ futuna futuna zimbabwe zimbabwe + diff --git a/dictsource/fr_rules b/dictsource/fr_rules index f529b1d8..4cc49119 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -23,7 +23,7 @@ // 2006-11-18 Gilles Casse // -// Updated: 2008-11-19 Michel Such +// Updated: 2008-11-28 Michel Such // // Letter classes: @@ -34,6 +34,7 @@ .L01 d e l n r t u .L02 b c d f g h k p t v +.L03 d l m n s t v .group a @@ -629,6 +630,7 @@ _) h (érit // hériter _) h (ésit // hésiter _) h (eure // heure _) h (iber // hibernation +_) hi (A j // hier _) h (ippo // hippodrome _) h (iro // hirondelle _) h (ist // histoire @@ -651,6 +653,7 @@ _) h (uma // humain _) h (umb // humble _) h (umi // humide _) h (umo // humour +_) hy (A j _) h (y // hypermarché _) hyper (@P5 ipEr _) hyper (_ ipEr @@ -1016,6 +1019,7 @@ mou) rr rr // mourrai ai) s (em s // vraisemblable aCè) s (_ s + kansa) s (_ s // Kansas, Arkansas ub) s (is z // subsister tran) s (A z // transition tran) s (e s // transe @@ -1286,10 +1290,9 @@ Vn) t (_ t2 .group x x ks - xs ks // lexique lexicaux vox e) x (A gz // exagérer exemple - Ce) x (i ks - ine) x (i gz + L03e) x (A ks // annexe, vexer + _ine) x (A gz _e) x (h gz // exhumer ai) x (_ // voix paix prix @@ -1314,7 +1317,7 @@ Vn) t (_ t2 .group y y i // cryogénique myope - _) y (A _!i // yak, yacht + _) y (A j // yak, yacht _) y (eu i // yeux _) yahoo (P5 ia'u diff --git a/dictsource/hi_rules b/dictsource/hi_rules index 5c090c4e..0e685e8c 100755 --- a/dictsource/hi_rules +++ b/dictsource/hi_rules @@ -38,6 +38,8 @@ .group इ इ I +// इँ i~ +// इं i~ .group ई ई i: @@ -99,6 +101,8 @@ .group ि ि I +// िँ i~ +// िं i~ .group ी ी i: @@ -399,7 +403,7 @@ ँ n // candrabindu .group ं - ं N // anusvara + ं n // anusvara ं (प m ं (फ m ं (ब m diff --git a/dictsource/it_list b/dictsource/it_list index 221267e5..74451317 100644 --- a/dictsource/it_list +++ b/dictsource/it_list @@ -411,6 +411,14 @@ i i: $atend o O: $atend +// foreign words +chat tSat +cliché kli:Se +internet 'internet +jeans dZi:nz +web wEb + + // exceptions aereo $2 difficile $2 @@ -424,6 +432,6 @@ celsius tsElsj'us conoscerla $2 no nO posta pOsta +principi $1 tesser tess'ER uomini $1 -internet 'internet \ No newline at end of file diff --git a/dictsource/it_rules b/dictsource/it_rules index ae0c80c3..62978055 100644 --- a/dictsource/it_rules +++ b/dictsource/it_rules @@ -1,6 +1,10 @@ // translation rules // This file is UTF-8 encoded +// letter groups +// A any vowel +// Y front vowels: e i (& accents) +.L01 a à o ò ó u ù .group a a a: @@ -31,30 +35,12 @@ c k cc k: c (' tS - c (e tS - c (é tS - c (è tS - c (i tS - c (ì tS - cc (e tS: - cc (é tS: - cc (è tS: - cc (i tS: - cc (ì tS: + c (Y tS + cc (Y tS: ch k cch k: - ci (a tS - ci (à tS - ci (o tS - ci (ò tS - ci (u tS - ci (ù tS - cci (a tS: - cci (à tS: - cci (o tS: - cci (ò tS: - cci (u tS: - cci (ù tS: + ci (L01 tS + cci (L01 tS: @) co (lA_ =ko .group d @@ -94,28 +80,10 @@ g g gg g: gh g - g (e dZ - g (é dZ - g (è dZ - g (i dZ - g (ì dZ - gi (a dZj - gi (à dZj - gi (o dZj - gi (ò dZj - gi (u dZj - gi (ù dZj - gg (e dZ: - gg (é dZ: - gg (è dZ: - gg (i dZ: - gg (ì dZ: - ggi (a dZ: - ggi (à dZ: - ggi (o dZ: - ggi (ò dZ: - ggi (u dZ: - ggi (ù dZ: + g (Y dZ + gi (L01 dZj + gg (Y dZ: + ggi (L01 dZ: @) gger (lo_ =dZ:eR gl (i l^ gl (ì l^ @@ -155,6 +123,11 @@ @) i (dere_ 'i @) i (le_ =i @) i (li_ =i + @) i (ma_ =i + r) i (ma_ i + laCr) i (ma_ =i + st) i (ma_ i + enz) i (ma_ i @) iera (_ i'E:Ra @) iere (_ i'E:Re @) i (ente_ i @@ -207,6 +180,8 @@ @) o (metro_ 'O @) o (logo_ 'O o (str 'O + @) o (di_ =o + @) o (do_ =o @) o (lo_ =o @@ -244,21 +219,8 @@ ss ss s (t s s (x s - sc (e S - sc (é S - sc (è S - sc (i S - sc (ì S -// A) sc (e SS -// A) sc (é SS -// A) sc (è SS -// A) sc (i SS -// A) sc (ì SS - sch (e sk - sch (é sk - sch (è sk - sch (i sk - sch (ì sk + sc (Y S + sch (Y sk sh (K S // foreign words K) sh S // foreign words @) sia s'ia diff --git a/dictsource/pl_list b/dictsource/pl_list index 225020cd..6e1444fa 100644 --- a/dictsource/pl_list +++ b/dictsource/pl_list @@ -7,11 +7,11 @@ // prefixed by a _ character. // Numbers -_0 z'E*O: +_0 z'ERO: _1 j'EdEn _2 dv'a _3 t|S'y -_4 tSt'E*y +_4 tSt'ERy _5 p;'En^ts; _6 S'ES;ts; _7 S;'EdEm @@ -21,7 +21,7 @@ _10 dz;'ES;En^ts; _11 jEdEn'aS;ts;E _12 dvan'aS;ts;E _13 t|Syn'aS;ts;E -_14 tStE*n'aS;ts;E +_14 tStERn'aS;ts;E _15 pjEtn'aS;ts;E _16 SEsn'aS;ts;E _17 S;EdEmn'aS;ts;E @@ -29,7 +29,7 @@ _18 OS;Emn'aS;ts;E _19 dz;Ev;Etn'aS;ts;E _2X dvadz;'ES;ts;a _3X t|Sydz;'ES;c;i -_4X tStE*dz;'ES;c;i +_4X tStERdz;'ES;c;i _5X p;En^dz;'ES;Ont _6X SEZ;dz;'ES;Ont _7X S;EdEmdz;'ES;Ont @@ -39,7 +39,7 @@ _9X dz;Ev;En^dz;'ES;Ont _1C st'O _2C dv;'ES;c;E _3C t|S'ysta -_4C tSt'E*ysta +_4C tSt'ERysta _5C p;'En^ts;sEt _6C S'ES;sEt _7C S;'EdEmsEt @@ -52,9 +52,9 @@ _0MA1 tyS;'OntsE // alternative form _0MA2 m;ilj'Ony _1M2 m;'iljOn _0M2 m;ilj'Onuf -_0MA3 m;ilj'a@-*dy -_1M3 m;'ilja@-*d -_0M3 m;ilj'a@-*duf +_0MA3 m;ilj'aRdy +_1M3 m;'iljaRd +_0M3 m;ilj'aRduf _0MA4 b;ilj'Ony _1M4 b;'iljOn _0M4 b;ilj'Onuf @@ -62,67 +62,67 @@ _0M4 b;ilj'Onuf _dpt _pSEts;'inEk_ _cap d'uZE_ -_?A litE*a +_?A litERa _?? symbOl _#9 tab _#32 spatsja // accent names -_lig ligat'u*a -_acu _'Ost@-*E -_ac2 x,uNga*'umlawt // pOdv'ujnE_'Ost@-*E -_brv b@-*'Evis +_lig ligat'uRa +_acu _'OstRE +_ac2 x,uNgaR'umlawt // pOdv'ujnE_'OstRE +_brv bR'Evis _ced z|tsEd;'ilO~ _cir z|d'aSc;Em //pSEts;'ONgwE _dia _'umlawt -_dot z|k@-*OpkO~ +_dot z|kROpkO~ _grv ts;'E~Sc;E _hac h'atSEk -_mcn nadk@-*ES;l'OnE //m'ak@-*On +_mcn nadkRES;l'OnE //m'akROn _ogo z|Og'Onc;Em _rng z|k'uwc;Em //k'OwO -_stk sk@-*ES;l'OnE // dz;ElOnE +_stk skRES;l'OnE // dz;ElOnE _tld z|t'yldO~ -w vy $u $atend -z zy $u $atend +w vy $u $atend +z zy $u $atend -_a a -ą O~ -b bE -c tsE -ć ts;i -d dE -e E -ę E~ -f Ef -g gjE -h xa -_i i -j jOt -k ka -l El -ł Ew -m Em -n En -ń n^i -_o O -_ó ,u_k@-*EskOv'anE -p pE -q ku -r E* -s Es -ś S;i -t tE -_u u -v faw -_w vu -x iks -y 'ig*Ek -_z zEt -ż ZEt|z|k@-*'OpkO~ -ź Z;i +_a a +ą O~ +b bE +c tsE +ć ts;i +d dE +e E +ę E~ +f Ef +g gjE +h xa +_i i +j jOt +k ka +l El +ł wy +m Em +n En +ń n^i +_o O +_ó ,u_kREskOv'anE +p pE +q ku +r ER +s Es +ś S;i +t tE +_u u +v faw +_w vu +x iks +y 'igREk +_z zEt +ż ZEt|z|kR'OpkO~ +ź Z;i ä $accent ö $accent @@ -138,41 +138,6 @@ _z zEt í $accent -// other characters - -˘ b@-*'Evis -¤ val'uta -§ pa*'ag@-*af -¨ 'umlawt -° st'Op;En^ -˛ Og'OnEk -´ ,Ost@-*y_'aktsEnt -ˇ k'a*On -¸ tsEd;'illa -˝ x,uNga*'umlawt -× @-*'azy -÷ dz;El'En^;E -˙ g'u*na_k@-*'Opka -¯ nadk@-*ES;l'En^E -² kv'ad@-*at -³ S'ES;tS;an -¼ jEdnatSf'a*ta -½ jEdnad@-*'uga -¾ t||SytSf'a*tE -¹ jEdEng'u*nE -™ t@-*'Ejdma*k -± plusm'inus -£ funt -® zastSEZ'Ony -¡ Odv@-*,Otny||vykS'ykn^ik -¢ tsEnt -¥ jEn -« f@-*ants,usci||tsudz'yswuf -¬ nEg'atsja -» p@-*'avy||f@-*ants,usci||tsudz'yswuf -¶ ak'apit -¿ Odv@-*,Otny||pytajn^ik - // redefine foreign letters from pl_rules as CHAR ß S,arfEs_'Es @@ -191,44 +156,80 @@ _z zEt // all my keyboard... -_! vykS'ykn^ik -_= *'uvna||S;E -_< mn^'EjSE -_> w;'ENkSE -_" tsudz'yswuf -_. k@-*'Opka -_, pSEts;'inEk -_- m'yS;lnik // or minus? -_? zn,ak||zapyt'an^a -_~ t'ylda -__ pOdk*ES;l'En^E -_: dvuk@-*'OpEk -_; S;@-*'Edn^ik -_( nav;as -_) pOnav;'aS;E -_[ n,av;as||kvad@-*at'Ovy -_] p@-*avy||n,av;as||kvad@-*at'Ovy -_{ n,av;as||klam@-*Ovy -_} p@-*avy||n,av;as||klam@-*'Ovy -_' ap'Ost@-*Of -_/ slES -_* gv;'astka -_\ b'EkslES -_| k@-*,Eska||p;On'Ova -_# haS -_$ d'Ola* -% p@-*'OtsEnt -_^ d'aSEk // what's be better? -_& and -_` 'aktsEnt -_@ m'awpa -+ plus +_! vykS'ykn^ik +_< mn^'EjSE +_> w;'ENkSE +_" tsudz'yswuf +_, pSEts;'inEk +_- m'yS;lnik // or minus? +_? zn,ak||zapyt'an^a +__ pOdkRES;l'En^E +_: dvukR'OpEk +_; S;R'Edn^ik +_( nav;as +_) pOnav;'aS;E +_[ n,av;as||kvadRat'Ovy +_] pRavy||n,av;as||kvadRat'Ovy +_{ n,av;as||klamROvy +_} pRavy||n,av;as||klamR'Ovy +_' ap'OstROf + +. kR'Opka +~ t'ylda += R'uvna||S;E +/ slES +* gv;'astka +\ b'EkslES +| kR,Eska||p;On'Ova +# haS +_$ d'OlaR +% pR'OtsEnt +^ d'aSEk // what's be better? +& and +` 'aktsEnt +@ m'awpa ++ plus + +// other characters + +˘ bR'Evis +¤ val'uta +§ paR'agRaf +¨ 'umlawt +° st'Op;En^ +˛ Og'OnEk +´ ,OstRy_'aktsEnt +ˇ k'aROn +¸ tsEd;'illa +˝ x,uNgaR'umlawt +× R'azy +÷ dz;El'En^;E +˙ g'uRna_kR'Opka +¯ nadkRES;l'En^E +² kv'adRat +³ S'ES;tS;an +¼ jEdnatSf'aRta +½ jEdnadR'uga +¾ t||SytSf'aRtE +¹ jEdEng'uRnE +™ tR'EjdmaRk +± plusm'inus +£ funt +® zastSEZ'Ony +¡ OdvR,Otny||vykS'ykn^ik +¢ tsEnt +¥ jEn +« fRants,usci||tsudz'yswuf +¬ nEg'atsja +» pR'avy||fRants,usci||tsudz'yswuf +¶ ak'apit +¿ OdvR,Otny||pytajn^ik // screenreadery nvda EnfawdE'a $abbrev -orca O*ka +orca ORka jaws dZ'Ews $abbrev // komputery, komputery @@ -247,8 +248,8 @@ load lOwd office Ofis play plEj scane skan -(screen reader) sk@-*in*'idEr -(sound juicer) sawnd||dZ'usE* +(screen reader) skRinR'idEr +(sound juicer) sawnd||dZ'usER thunderbird $1 view v;u (e mail) imEjl @@ -262,12 +263,12 @@ view v;u (e mailowe) imEjlOvE delete dil'Ejt eject iZ'Ekt -forward fO*wE*d -backward bEkwE*d +forward fORwERd +backward bEkwERd device div'ajs devices divajsis usb uEsb'E $abbrev -url uE*'El $abbrev +url uER'El $abbrev drive drajv scsi sk'azi $abbrev hda $abbrev @@ -275,8 +276,8 @@ sda $abbrev dvd divid'i $abbrev sh Es'xa $abbrev ascii 'askEj $abbrev -ctrl k'Ont@-*Ol $abbrev -right *ajt $abbrev +ctrl k'OntROl $abbrev +right Rajt $abbrev // nazwy własne akcentowanie - wymowa w regułkach // todo: more! @@ -305,29 +306,29 @@ microsoft $1 andrew Endrju // nieodmienne chihuahua tSiwawa -francisco f@-*ansiskO +francisco fRansiskO josé hOz'E jose hOz'E jake dZEjk -jersey dZE*zi +jersey dZERzi miami maj'ami janet dZanEt // żeńskie nie kończące się na a jane dZEjn alice Elis -circe ki*kE -maureen mO*'in +circe kiRkE +maureen mOR'in jackie dZEki jacqueline Zakl'in janice dZEn^is jeanette Zan'Et george dZOrdZ // i męskie zakończone samogłoską odmieniane przez apostrof -maurice mO*is +maurice mORis anthony EntOn anthony EntOny $1 $only -jerry dZE* -jerry dZE*y $only +jerry dZER +jerry dZERy $only // some exceptions - dawać więcej! @@ -508,26 +509,26 @@ proc pr'OtsEnt $dot //dr, mgr and so... -dr d'OktO* $dot -mgr mag'istE* $dot +dr d'OktOR $dot +mgr mag'istER $dot doc d'OtsEnt $dot -prof p*Of'EsO* $dot +prof pROf'EsOR $dot hab habilitOv'any $dot -inż inZ'yn^E* $dot +inż inZ'yn^ER $dot mec mEtsEnas $dot //ks kS;Onts $dot //bp biskup $dot //bpa biskupa -//hr h@-*ab;ja $dot +//hr hRab;ja $dot -//gen gEnE*aw $dot +//gen gEnERaw $dot płk puwk'Ovnik $dot // declinated forms in pl_rules ppłk pOtpuwk'Ovnik $dot -mjr m'ajO* $dot +mjr m'ajOR $dot kpt kap'itan $dot -//por pO*'utSn^ik $dot -ppor pOdpO*'utSn^ik $dot -kpr kap*al $dot +//por pOR'utSn^ik $dot +ppor pOdpOR'utSn^ik $dot +kpr kapRal $dot // abbr @@ -537,7 +538,7 @@ usg u_Esg;'E $abbrev tzn tO||znatSy $dot itd i||tak||dalEj $dot itp i||tEmu||pOdObnE $dot -etc Ets'EtE*a $dot +etc Ets'EtERa $dot św S;v;Enty $dot śp S;v;EntEj||pam;En^ts;i $dot @@ -547,7 +548,7 @@ ok Ok'Ej $allcaps np napS'ykwad $dot tys tyS;E~tsy $dot mln miljOnuf -mld milja*duf +mld miljaRduf //popularne zagraniczniaki nieodmienne (no, prawie) (ad hoc) adh'Ok @@ -555,24 +556,24 @@ adieu adj'E (ad oculos) ad'OkulOs angelica angElika $2 -(carte blanche) ka*tbl'anS +(carte blanche) kaRtbl'anS challenge tSElEndZ chanson SansO~ $2 -(chargé d'affaires) Sa*ZEdafE* $4 -(charge d'affaires) Sa*ZEdafE* $4 -charmant Sa*man $2 -charme Sa*m -charmeur Sa*mE* $2 -charmeuse Sa*mEz $2 +(chargé d'affaires) SaRZEdafER $4 +(charge d'affaires) SaRZEdafER $4 +charmant SaRman $2 +charme SaRm +charmeur SaRmER $2 +charmeuse SaRmEz $2 chippendale tSipEndEjl chippendale tSipEndEjl $1 $only (chow chow) tSawtSau $2 ciao tSjaw -(cicer cum caule) ts,itsE*kumk'awlE +(cicer cum caule) ts,itsERkumk'awlE (ci devant) sidEv'aN cinquecento tSinkwEtSEntO -circa tsi*ka -(cis dur) tsisd'u* +circa tsiRka +(cis dur) tsisd'uR (cis moll) tsism'Ol cito tsitO city tsity @@ -585,58 +586,58 @@ collège kOlEZ $2 //fr comte kO~t comtesse kO~t'Es con kOn -concierge kOnsj'E*Z +concierge kOnsj'ERZ cool kul -copyright k'Opy*ajt -(cosa nostra) k,Ozan'Ost@-*a +copyright k'OpyRajt +(cosa nostra) k,Ozan'OstRa cottage kOtydZ coupé kup'E coupe kup'E -country kant@-*y +country kantRy cubiculum kub'ikulum culpa kulpa -curriculum ku*'ikulum +curriculum kuR'ikulum -d'amour damu* $2 +d'amour damuR $2 (de facto) dEfaktO -(de iure) dEju*E +(de iure) dEjuRE (déjà vu) dEZav'i (déjà vue) dEZav'i (deja vu) dEZav'i (deja vue) dEZav'i -dell'arte dEl'a* -del'arte dEl'a* -(dies irae) d;'ijEs'i*E +dell'arte dEl'aR +del'arte dEl'aR +(dies irae) d;'ijEs'iRE dinghy d;iNgi faciendi fasjEndi foyer fuaj'E gentleman $1 -graecas g@-*Ekas +graecas gREkas monsieur mEsj'E madame mad'am mademoiselle madmuaz'El -(maitré d'hotel) mEt*EdOt'El -(maitre d'hotel) mEt*EdOt'El +(maitré d'hotel) mEtREdOt'El +(maitre d'hotel) mEtREdOt'El mlle madmuaz'El (mon ami) mOnami $3 -(mon cher) mO~SE* $2 +(mon cher) mO~SER $2 new n^;u out awt -poirot puwa*'O // odmieniony w regułkach +poirot puwaR'O // odmieniony w regułkach -(qui pro quo) kvip*OkvO $3 +(qui pro quo) kvipROkvO $3 rock rOk -sir sE* -sire si* -street st@-*it +sir sER +sire siR +street stRit (va banque) vab'aNk variétés varjEtE $3 @@ -652,12 +653,12 @@ von fOn voodoo vudu // kuchnia, kuchnia, jeść nam się chce! -//ragout *ag'u // przen. do rules +//ragout Rag'u // przen. do rules fondue fO~d'i beaujolais bOZOl'E boeuf bEf -cabernet kabE*n'E -camembert kamEmb'E* +cabernet kabERn'E +camembert kamEmb'ER café kafE $2 cafe kafE $2 chablis Sabli $2 @@ -670,12 +671,12 @@ chilli tSili coca kOka cola kOla coleslaw kOlEslOw -croissant k@-*uas'aN -cumberland k'ambE*lEnd -(cura çao) ki*asaO -curaçao ki*asaO -curacao ki*asaO -curry ka*y +croissant kRuas'aN +cumberland k'ambERlEnd +(cura çao) kiRasaO +curaçao kiRasaO +curacao kiRasaO +curry kaRy (de la maison) dElamEz'O~ (de volaille) dEvOl'aj (a la) al'a diff --git a/dictsource/pl_rules b/dictsource/pl_rules index 18ef1633..873545cb 100644 --- a/dictsource/pl_rules +++ b/dictsource/pl_rules @@ -35,10 +35,10 @@ C) ai (r E _alt) ai (r ai _k) ai (r ai - _) archie E*tSi - _) archie (C E*tS|;E + _) archie ERtSi + _) archie (C ERtS|;E acku (p Eka - _) arcy (@P4t a*tsy + _) arcy (@P4t aRtsy @ł) a (by_ =a @ł) a (bym_ =a @@ -74,7 +74,7 @@ b b ja) bł (kA p - b (_A p + b (_ p b (i b; bi (A b;j @@ -179,7 +179,7 @@ _) challeng (er tSElEndZ cha (mpi tZE chan (nel tSa - _) charle (s tSa*ls + _) charle (s tSaRls _) chie (f tSi _) ch (ip tS _) chippendal (A tSipEndEjl @@ -202,16 +202,16 @@ _) c (ominu ts _) conc (ert kOntS _) c (onC k - _) copywri (t kOpy*aj + _) copywri (t kOpyRaj _) c (orC k _) c (owbo k - crack k@-*ak - _) croiss k@-*ruas + crack kRak + _) croiss kRruas _) c (r k _) c (umul k - _) curie ki*i + _) curie kiRi _) cu (rli kE - cresc (end k@-*EStS + cresc (end kREStS _) c (aps_ k _) c (apslo k @@ -219,7 +219,7 @@ lo) ck (u_ k lo) ck (iem_ k lo) ck (a_ k - _s) creenrea (d k@-*in*i + _s) creenrea (d kRinRi .group ć ć ts; @@ -228,21 +228,21 @@ .group d d d - d (_A t + d (_ t d (i d; di (A dj dies (lA d;iz dies (el d;iz dz dz - dz (_A ts + dz (_ ts dz (i dz; dzi (A dz; _na) dzi (em d|Z; _po) dzi (em d|Z; dź dz; - dź (_A ts; + dź (_ ts; dż dZ - dż (_A tS + dż (_ tS _o) dż d|Z _po) dż d|Z @@ -312,17 +312,16 @@ g g g (i g; hi) gi (e gj - g (_A k - gł (_ g - gł (_A k + g (_ k + gł (_ gw gh g gate (s gEjt _) gentleman dZEntElmEn - _) georgi (o_ dZO*dZj - _) georgi (ą_ dZO*dZj - _) georgi (ę_ dZO*dZj - _) georgi (i_ dZO*dZj - _) georgi (a_ dZO*dZj + _) georgi (o_ dZORdZj + _) georgi (ą_ dZORdZj + _) georgi (ę_ dZORdZj + _) georgi (i_ dZORdZj + _) georgi (a_ dZORdZj .group h h x @@ -338,8 +337,8 @@ _kl) i (e ;ij żm) ii (_ iji rak) ii (_ iji - _f) ire (fox_ 'ajE* - _f) ire (fo ajE* + _f) ire (fox_ 'ajER + _f) ire (fo ajER _m) ic (ro ajk C) ie (_ ;E# @@ -460,6 +459,7 @@ .group j jazz dZEz + jazz (_ dZEs j j _) james dZEjms @@ -480,7 +480,7 @@ .group k k k // k (i c - kł (_ k + kł (_ kw // ki (A kj _) klow (n klaw @@ -570,32 +570,33 @@ qu (A kv .group r - r * - A_) r (A * - K) r (A @-* - ri (A *j - A) rr (A * + r R + A_) r (A R + K) r (A R + ri (A Rj + A) rr (A R rz Z - rz (and *ts - _mu) rz (asichl *z - _mu) rz (o_+++ *z - _mu) rz (owie_+++ *z - _mu) rz (ą_+++ *z - _mu) rz (y_+++ *z - _mu) rz (ę_+++ *z - _mu) rz (a_+++ *z - _mu) rz (ów_+++ *z - _mu) rz (ami_+++ *z - _mu) rz (ach_+++ *z - _mi) rz (o_+++ *z - _mi) rz (owie_+++ *z - _mi) rz (ą_+++ *z - _mi) rz (y_+++ *z - _mi) rz (ę_+++ *z - _mi) rz (a_+++ *z - _mi) rz (ów_+++ *z - _mi) rz (ami_+++ *z - _mi) rz (ach_+++ *z + rz (_ S + rz (and Rts + _mu) rz (asichl Rz + _mu) rz (o_+++ Rz + _mu) rz (owie_+++ Rz + _mu) rz (ą_+++ Rz + _mu) rz (y_+++ Rz + _mu) rz (ę_+++ Rz + _mu) rz (a_+++ Rz + _mu) rz (ów_+++ Rz + _mu) rz (ami_+++ Rz + _mu) rz (ach_+++ Rz + _mi) rz (o_+++ Rz + _mi) rz (owie_+++ Rz + _mi) rz (ą_+++ Rz + _mi) rz (y_+++ Rz + _mi) rz (ę_+++ Rz + _mi) rz (a_+++ Rz + _mi) rz (ów_+++ Rz + _mi) rz (ami_+++ Rz + _mi) rz (ach_+++ Rz c) rz (A S ć) rz (A S cz) rz (A S @@ -607,28 +608,28 @@ ś) rz (A S sz) rz (A S t) rz S - rz (ini_ *ts - rz (inim_ *ts - rz (inimi_ *ts - rz (inich_ *ts - rz (iniemu_ *ts - rz (iniego_ *ts - rz (oni_ *ts - rz (onim_ *ts - rz (onimi_ *ts - rz (onich_ *ts - rz (oniemu_ *ts - rz (oniego_ *ts - r (zi * - A) r (zł * - ma) r (zn * - ma) r (zlin * - _zama) r (za * - _zma) r (za * - odma) r (za * - _bo) r (zoj * + rz (ini_ Rts + rz (inim_ Rts + rz (inimi_ Rts + rz (inich_ Rts + rz (iniemu_ Rts + rz (iniego_ Rts + rz (oni_ Rts + rz (onim_ Rts + rz (onimi_ Rts + rz (onich_ Rts + rz (oniemu_ Rts + rz (oniego_ Rts + r (zi R + A) r (zł R + ma) r (zn R + ma) r (zlin R + _zama) r (za R + _zma) r (za R + odma) r (za R + _bo) r (zoj R - ry' (e * + ry' (e R .group s @) son (_S3t sOn @@ -694,7 +695,7 @@ skj (A S - scherz skE*ts + scherz skERts sch (ą sx sch (ę sx pa) sch (a sx @@ -776,7 +777,7 @@ _) sch (lebi sx _) sch (etyn sx - schwarz Sva*ts + schwarz SvaRts schoe SE sch S @@ -833,11 +834,21 @@ w v w (sk _v ier) wsz (A S - w (_A f + w (_ f c) w (A f ć) w (A f cz) w (A f + _) w (_c f + _) w (_f wE + _) w (_h f + _) w (_k f + _) w (_p f + _) w (_s f + _) w (_t f + _) w (_mn wE // 'w' should be written 'we' before 'mn', but not always + _) w (_ w + f) w (A f h) w (A f k) w (A f @@ -850,8 +861,8 @@ _) window wyndOw wee (k wi _) washi wOSi - wrigh *aj - C) wrigh @-*aj + wrigh Raj + C) wrigh Raj .group x x ks @@ -951,7 +962,7 @@ .group z z z - z (_A s + z (_ s z (i Z; zi (A Z; _) zi (p Z;i @@ -960,9 +971,20 @@ _nie) zi (C z_i zi (C zi + _) z (_c s + _) z (_f s + _) z (_h s + _) z (_k s + _) z (_p s + _) z (_s s + _) z (_t s + _) z (_mn zE // 'z' should be written 'ze' before 'mn', but not always + _) z (_ z + mo) zi (ll zi _ro) z (iC z - _) zuri (ch tsu*y + _) zuri (ch tsuRy + _) zz (a_ z_z zz (ini_ ts zz (inim_ ts zz (inimi_ ts @@ -999,22 +1021,22 @@ .group ź ź Z; - ź (_A S; + ź (_ S; .group ż ż Z - ż (_A S + ż (_ S .group th _e) th (anak t - _) the (_A zi - _) the (_ zE + _) the (_ dE th s th (ie_ s; _) th t - thew sju + _) thank fENk + thew fju - _) thunderbi (rd fEndE*bE + _) thunderbi (rd fEndERbE .group dg _na) dg dg @@ -1037,7 +1059,7 @@ _dy) sh sx _fi) sh (armon sx sh S - shire SajE* + shire SajER .group ph ph f @@ -1098,19 +1120,5 @@ 'ego (_S4 EgO 'emu (_S4 Emu - $ dOla* - @ mawpa - % p@-*OtsEnt - + plus - # haS - = *'uvna||S;E - / slES - \ bEkslES - * gv;astka - | k@-*Eska||p;OnOva - ^ d'aSEk - & and - ` aktsEnt - . k@-*Opka - , pSEts;inEk + $ dOlaR diff --git a/dictsource/sw_list b/dictsource/sw_list index 5f5ccb25..e4fa5e79 100644 --- a/dictsource/sw_list +++ b/dictsource/sw_list @@ -15,7 +15,7 @@ _m em n en p pi q kju -r ar +r aR s es t ti v vi @@ -28,7 +28,7 @@ z zedi // numbers -_0 sif'u*i +_0 sif'uRi _1 m'oJa _2 _|mb'ili _3 t'atu @@ -39,9 +39,9 @@ _7 s'aba _8 n'ane _9 t'isa _1X k'umi -_2X iSi*'ini +_2X iSiR'ini _3X TeleT'ini -_4X a*oba'ini +_4X aRoba'ini _5X hams'ini _6X sit'ini _7X sab'ini diff --git a/dictsource/sw_rules b/dictsource/sw_rules index 3d0ef017..c393caa2 100644 --- a/dictsource/sw_rules +++ b/dictsource/sw_rules @@ -84,10 +84,10 @@ q k .group r - r r - A) r (A * + r R + A) r (A R C) r (A @-* - rr *r + rr RR .group s s s diff --git a/dictsource/vi_list b/dictsource/vi_list index f7989e74..787634a4 100644 --- a/dictsource/vi_list +++ b/dictsource/vi_list @@ -22,18 +22,50 @@ x i3ts; z zE3t // numbers -_0 z'ez,o -_1 m'o6t[ -_2 h'a:I -_3 _b'a: -_4 _b'o3n -_5 n'am -_6 s'aU3 -_7 _b'aI4 -_8 t['a:3m -_9 ts;'i3n +_0 J'e1z.'o // dê-rô +_1 m'o6t[ // một +_2 h'a:I // hai +_3 _b'a: // ba +_4 _b'o3n // bốn +_5 n'am // năm +_6 s.'aU3 // sáu +_7 _b'aI4 // bảy +_8 t['a:3m // tám +_9 c'i3n // chín +_1X m'y@2j // mười +_2X h'a:I||m'y@2j // hai mười +_3X _b'a:||m'y@2j // ba mười +_4X _b'o3n||m'y@2j // bốn mười +_5X n'am||m'y@2j // năm mười +_6X s.'aU3||m'y@2j // sáu mười +_7X _b'aI4||m'y@2j // bảy mười +_8X t['a:3m||m'y@2j // tám mười +_9X c'i3n||m'y@2j // chín mười + +_21 h'a:I||m'y@2j||m'o3t[ +_31 _b'a:||m'y@2j||m'o3t[ +_41 _b'o3n||m'y@2j||m'o3t[ +_51 n'am||m'y@2j||m'o3t[ +_61 s.'aU3||m'y@2j||m'o3t[ +_71 _b'aI4||m'y@2j||m'o3t[ +_81 t['a:3m||m'y@2j||m'o3t[ +_91 c'i3n||m'y@2j||m'o3t[ + +_25 h'a:I||m'y@2j||l'a7m +_35 _b'a:||m'y@2j||l'a7m +_45 _b'o3n||m'y@2j||l'a7m +_55 n'am||m'y@2j||l'a7m +_65 s.'aU3||m'y@2j||l'a7m +_75 _b'aI4||m'y@2j||l'a7m +_85 t['a:3m||m'y@2j||l'a7m +_95 c'i3n||m'y@2j||l'a7m +_0C cr'am // trăm +_0M1 N'a:2n // ngàn +_0M2 cr'i@6w // triệu +_0M3 t['i4 // tỷ +_0and l,in^ // linh // symbols diff --git a/dictsource/vi_rules b/dictsource/vi_rules index 69250f2d..b11f3597 100644 --- a/dictsource/vi_rules +++ b/dictsource/vi_rules @@ -75,6 +75,101 @@ ỹ ỹ ỵ ỵ +//================================ +// Consonants +//================================ + +.group b + b b + _) b _b + +.group c + c k + c (_ kh + ch c // try [tS;] [tS] [c] + +.group d + d J // try [z] [J] [dZ] [dZ;] [J^] + +.group đ + đ d + _) đ _d + +.group f + f f + + +.group g + g Q // try [g] [Q] + gh Q // or [g] [Q] + gi D // try [D] [z] [j] [J^] [z;] [J] [dZ] + + +.group h + h h + + +.group j + j Z + + +.group k + k k + k (_ kh + kh x + +.group l + l l + +.group m + m m + +.group n + n n + ng N + ngh N + nh n^ + +.group ñ + ñ n^ + +.group p + p p + ph f + +.group q + q k + q (_ kh + qu kw + +.group r + r z. // try [z] [z.] [r] [z;] + +.group s + s s. // try [s.] [s] [S] + +.group t + t t[ + th t + tr cr // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;] + +.group v + v v + +.group w + w w + +.group x + x s + +.group z + z z + + +//================================ +// Vowels +//================================ + .group a a a: ai a:I @@ -187,24 +282,6 @@ ỵ ỵ ậy @I6 ậu @U6 -//================================ -.group b - b b - _) b _b - -.group c - c k - c (_ kh - ch c // try [ts;] [tS] [c] [dZ] [dz;] - -.group d - d z - -.group đ - đ d - _) đ _d - - //=========================== .group e e E @@ -261,20 +338,6 @@ ỵ ỵ ệ e6 ệu eU6 -//============================ -.group f - f f - - -.group g - g Q // try [g] [Q] - gh Q // or [g] [Q] - gi D // ??? [dZ] - - -.group h - h h - //============================ .group i @@ -331,30 +394,6 @@ ỵ ỵ ịu iU6 -//============================= -.group j - j Z - - -.group k - k k - k (_ kh - kh x - -.group l - l l - -.group m - m m - -.group n - n n - ng N - ngh N - nh n^ - -.group ñ - ñ n^ //========================= .group o @@ -452,31 +491,12 @@ ỵ ỵ ợu @:U6 -//============================ -.group p - p p - ph f - -.group q - q k - q (_ kh - qu kw - -.group r - r z; - -.group s - s s - -.group t - t t[ - th t - tr c // try [ts;] [tS] [c] [dZ] [dz;] //============================= .group u u u u (A w + A) u w ui uI uì uI2 uí uI3 @@ -588,15 +608,6 @@ ỵ ỵ ựu yw6 -//============================= -.group v - v v - -.group w - w w - -.group x - x s .group y y i @@ -641,9 +652,6 @@ ỵ ỵ ỵa i@6 -.group z - z z - .group $ d'o||l'a % f'@2n||tS;'am diff --git a/phsource/b/xb b/phsource/b/xb index e859cb8e..636cbbbf 100644 Binary files a/phsource/b/xb and b/phsource/b/xb differ diff --git a/phsource/compile_report b/phsource/compile_report index 754a2cfd..1768ed6f 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -1,65 +1,66 @@ -60 phoneme tables +61 phoneme tables new total - base 101 101 - base2 24 120 - en 51 147 - en_n 31 147 - en_us 36 148 - en_sc 39 149 - en_rp 34 147 - en_wm 30 147 - en_wi 30 147 - af 39 133 - cy 29 127 - de 33 128 - eo 13 113 - jbo 4 114 - fi 40 132 - fr 54 138 - fr_ca 11 138 - hi 52 139 - ta 17 142 - hu 23 117 - lv 28 123 - nl 28 124 - pl 18 114 - sk 29 132 - cs 6 132 - hr 26 137 - mk 3 138 - sr 14 137 - ru 39 132 - it 17 123 - la 21 119 - es 9 121 - es_la 1 121 - ca 9 122 - pt 28 137 - pt_pt 20 137 - ro 36 144 - el 8 120 - grc 12 125 - sv 25 123 - no 28 127 - is 33 127 - vi 42 139 - zhy 40 134 - zh 65 151 - sw 14 110 - tr 18 125 - ku 18 125 - id 15 122 - rw 15 127 - ko 18 149 - da 15 131 - sq 24 129 - ml 13 141 - kn 15 141 - bn 59 147 - ne 23 151 - hy 17 115 - om 21 121 -en_klatt 77 147 + base 103 103 + base2 24 122 + en 51 149 + en_n 31 149 + en_us 36 150 + en_sc 39 151 + en_rp 34 149 + en_wm 30 149 + en_wi 30 149 + af 39 135 + cy 29 129 + de 33 130 + eo 13 115 + jbo 4 116 + fi 40 134 + fr 54 140 + fr_ca 11 140 + hi 59 148 + ta 17 151 + hu 23 119 + lv 28 125 + nl 28 126 + pl 19 116 + sk 28 134 + cs 6 134 + hr 26 139 + mk 3 140 + sr 14 139 + ru 39 134 + it 17 125 + la 21 121 + es 9 123 + es_la 1 123 + ca 9 124 + pt 28 139 + pt_pt 20 139 + ro 36 146 + el 8 122 + grc 12 127 + sv 25 125 + no 28 129 + is 33 129 + vi 42 140 + zhy 40 136 + zh 65 153 + sw 14 112 + tr 18 127 + ku 18 127 + id 15 124 + rw 15 129 + ko 18 158 + da 15 133 + sq 31 127 + ml 13 150 + kn 15 150 + bn 59 153 + ne 18 156 + hy 16 116 + om 25 125 +en_klatt 77 149 + ga 18 117 Data file Used by b/b [b] base @@ -96,6 +97,7 @@ b/bu [b] base b/xb [b] base [b] fr [b] hi + [bh] hi [b] bn d/d [d] base [d[] base @@ -116,6 +118,8 @@ d/d [d] base [d] id [d] bn [d.] bn + [d`] om + [d[] ga d/d_ [d] base [d[] base [d] base2 @@ -135,6 +139,8 @@ d/d_ [d] base [d] id [d] bn [d.] bn + [d`] om + [d[] ga d/d_dnt [d] sr d/dr [*] base [d] base @@ -156,6 +162,7 @@ d/dr [*] base [d] id [d] bn [d.] bn + [d[] ga d/tap [*;] ro d/tap1 [*] base d/tap2 [t#] en_us @@ -169,6 +176,7 @@ d/xd [d] base [d] fr [d] hi [d.] hi + [dh] hi [d] hu [d] pl [d] hr @@ -179,6 +187,9 @@ d/xd [d] base [d] id [d] bn [d.] bn + [d[] ga +d/xd2 [d`] om +d/xd3 [dh] hi d/xd_pzd [d;] pl [d;] ru d/x_tap [t#] en_us @@ -224,8 +235,9 @@ dzh/xdz_pzd [J] base [J2] bn envelope/i_risefall [11] zh envelope/i_risefall2 [+2] rw -envelope/p_214 [214] zh -envelope/p_512 [8] vi +envelope/p_214 [5] vi + [214] zh +envelope/p_512 [6] vi envelope/p_fall [2] vi [7] vi [1] zhy @@ -246,14 +258,13 @@ envelope/p_rise [3] vi [5] zhy [44] zh [35] zh -envelope/vi_5 [5] vi envelope/vi_5amp [5] vi -envelope/vi_6 [6] vi envelope/vi_6amp [6] vi g2/g [g-] base g2/g_ [g-] base g2/xg [g-] base [g] hi + [gh] hi [g] bn g/g [g] base [g] cy @@ -294,7 +305,6 @@ h/ha [h] base [] la [H] bn [h] bn - [a#] om h/he [h] base [h] fi [H] hi @@ -662,6 +672,7 @@ l/l_u [(u)] base [u] fr [u:] fr [(u)] en_klatt +l/l_vi [l] vi l/l_y [y] fr l/tl [l] base [l] en @@ -796,7 +807,7 @@ r3/r_trill [R2] base [r] af [R2] lv [r] nl - [R] sk + [R] pl [r*] sr [x] pt r3/r_trill2 [R] base @@ -810,13 +821,13 @@ r3/r_trill3.wav [R3] base [r] nl r3/r_trill.wav [R2] base [R2] lv - [R] sk + [R] pl [r*] sr [x] pt r3/r_u [(u)] base [(u)] en_klatt -r3/r_ulv [r"] hy -r3/r_uvl [r"] hy +r3/r_ulv [r"] base +r3/r_uvl [r"] base r3/rx [*] base [r/] base [r/] af @@ -941,6 +952,7 @@ ufric/s_ [s] base [s#] pt [z;] ro [s2] is + [s2] om [s] en_klatt [z] en_klatt ufric/s! [s] base @@ -951,11 +963,13 @@ ufric/s! [s] base [s] es [s#] pt [s2] is + [s2] om [s] en_klatt ufric/s_continue [s2] fi [s2] hu [s2] lv [s2] is + [s2] om ufric/sh [S] base [S] fr [s#] pt_pt @@ -999,13 +1013,13 @@ ufric/x_hr [x] base ufric/x_sr [h] sr [x] sr ufric/xx3 [X] base + [Q"] base [Q] hy ustop/c [c] base ustop/c_ejc [c`] om ustop/k [k] base [k] en [k] fr - [kh] hi [k] zhy [k] sw [kh] bn @@ -1014,7 +1028,6 @@ ustop/k_ [k] base [k] en [k] fi [k] fr - [kh] hi [k] hu [k] lv [k] sk @@ -1023,6 +1036,8 @@ ustop/k_ [k] base [k] sw [k] sq [kh] bn +ustop/k_asp [gh] hi + [kh] hi ustop/k_ejc [k`] om ustop/ki [c] base [k] base @@ -1083,7 +1098,6 @@ ustop/k_unasp [k] base [k] bn ustop/k_unasp_ [k] zh ustop/null [?] base - [dh] om ustop/p [p] base [p] fr [p2] fr @@ -1096,7 +1110,8 @@ ustop/p_ [p] base [ph] zh [ph] bn [ph] hy -ustop/p_asp [ph] hi +ustop/p_asp [bh] hi + [ph] hi [ph] hy ustop/p_ejc [p`] om ustop/percus10 [(X1] base @@ -1169,7 +1184,7 @@ ustop/t_ [t] base [t] sk [t] el [th] zh - [t] sq + [t2] sq [t.] bn [t.h] bn ustop/t_dnt [t] base @@ -1178,6 +1193,7 @@ ustop/t_dnt [t] base [t2] en [t] fi [t] hi + [dh] hi [th] hi [t] hu [t] pl @@ -1188,6 +1204,7 @@ ustop/t_dnt [t] base [t] sw [t`] ko [t] bn + [t[] ga ustop/t_dnt2 [t[] vi ustop/t_ejc [t`] om ustop/t_hi [t] hi @@ -1210,6 +1227,7 @@ ustop/ts [ts] base2 [ts;] ro [z] zhy [tsh] zh + [ts] sq [ts] hy ustop/ts_ [ts] base2 [ts] de @@ -1219,6 +1237,7 @@ ustop/ts_ [ts] base2 [ts] pl [ts] ru [ts;] ro + [ts] sq [ts] hy ustop/ts2 [ts] lv ustop/tsh [tS] base @@ -1234,7 +1253,7 @@ ustop/t_short [t] fr [t] lv [t] sk [t] el - [t] sq + [t2] sq [t.] bn ustop/tsh_pzd [tS;] zh ustop/tsh_pzd_unasp [tS;] zh @@ -1282,6 +1301,7 @@ vdiph2/eo [eo] ro vdiph2/e[u [e[u] ro vdiph2/i@ [i@] en_n [i@] hy + [i@] ga vdiph2/i@_2 [i@] en_wm vdiph2/ie [i@] en_wi [ie] fi @@ -1306,7 +1326,7 @@ vdiph2/oa [Oa] ro vdiph2/o_oo [o@] en_wi [o] is [o] zh -vdiph2/u-@ [y@] vi +vdiph2/u@ [u@] ga vdiph2/u#@ [U@] en_sc vdiph2/uaa [uo] lv vdiph2/uo [uo] fi @@ -1325,6 +1345,7 @@ vdiph2/ye [yE] sq vdiph2/yu [yU] nl [yu] zh vdiph2/y-y# [yY] fi + [y@] vi vdiph/8u [oU] en_us [ou] zh vdiph/aae [aI] en_us @@ -1418,6 +1439,7 @@ vdiph/ei [eI] base2 [eI] is [eI] vi [ei] zhy + [eI] sq vdiph/eu [eU] base2 [eU] en [eU] cy @@ -1428,6 +1450,9 @@ vdiph/eu [eU] base2 [eU] vi [eU] ne vdiph/eu_2 [eu] fi +vdiph/@i [@I] vi + [@:I] vi + [@I] ga vdiph/&i [&i] fi [aI] hi [aI] bn @@ -1439,7 +1464,6 @@ vdiph/@i_3 [eI] en_wm [@I] ro [ai] zhy vdiph/&i_3 [aI] vi -vdiph/@i_4 [@I] vi vdiph/ii [iI] ro vdiph/i#i [yI] ro vdiph/oi [oI] base2 @@ -1463,6 +1487,7 @@ vdiph/ooi_2 [OI] af vdiph/ooi_3 [OI] en_rp [aI] en_wm vdiph/ooi_4 [OI] en_us + [OI] sq vdiph/oou [oU] cs [OU] grc vdiph/ou [ou] fi @@ -1473,8 +1498,11 @@ vdiph/ou_2 [oU] sk vdiph/ou_3 [oU] is [oU2] is vdiph/@u [u:] en_wm + [@U] vi + [@:U] vi vdiph/@u_2 [oU] en_rp vdiph/@u_3 [@U] ro + [@U] ga vdiph/@u_en [oU] en [@U] id vdiph/ui [uI] base2 @@ -1488,14 +1516,11 @@ vdiph/u-i [yI] vi vdiph/ui_2 [uI] af vdiph/ui_3 [uI] cy [uY] cy -vdiph/Vi [@:I] vi - [VI] ne +vdiph/Vi [VI] ne vdiph/Vu [@U] af [VU] ne vdiph/Vu_2 [oU] en_wm vdiph/Vu_3 [o:] nl -vdiph/Vu_4 [@U] vi - [@:U] vi vdiph/&y [&y] fi [Wy] nl vdiph/yi [yi] fi @@ -1510,8 +1535,8 @@ vdiph/y#y [Yy] fi vdiph/y#y_2 [Yy] af [eoi] zhy vdiph/y#y_3 [Y:] nl -vnasal/aa_n [a~] bn - [a~] ne +vnasal/aa_n [a~] hi + [a~] bn vnasal/aa_n2 [A~] en [A~] fr vnasal/aa_n3 [A~] af @@ -1526,13 +1551,13 @@ vnasal/ee_n2 [a] en_us [E~] bn vnasal/ee_u_n [E~] pl vnasal/e_n [e~] af + [e~] hi [e~] pt [e~] bn - [e~] ne vnasal/i_n [i~] pt [i~] bn [i:~] bn - [i~] ne +vnasal/i_n2 [i~] hi vnasal/m- [m-] sw vnasal/n- [n-] sw vnasal/nn- [N-] sw @@ -1552,8 +1577,7 @@ vnasal/u_n [u~] hi [u] zh [u~] bn [u:~] bn - [u~] ne -vnasal/V_n [V~] ne +vnasal/V_n [V~] hi vnasal/W_n [E~] fr [W~] fr voc/bh [B] base @@ -1561,7 +1585,8 @@ voc/dh [D] base [D] es voc/dh_ [D] base [D] es -voc/dh_om [d`] om + [D] om +voc/dh_om [D] om voc/j [J^] base voc/Q [Q] base [Q^] base @@ -1571,7 +1596,8 @@ voc/Q_ [Q] base [x2] pt voc/Q_less [Q] nl [x2] pt -voc/Q_ulv [Q] hy +voc/Q_ulv [Q"] base + [Q] hy voc/v [v] base [v] fi [v] fr @@ -1597,6 +1623,8 @@ voc/vj [v] base [v] fr vocw/dh [D] base [D] es + [D] om + [d`] om [D] en_klatt vocw/Q [Q] base [Q^] base @@ -1653,6 +1681,7 @@ vowel/@ [@] base [@] kn [@4] bn [@] hy + [@] ga vowel/@- [@-] base [r*] hr vowel/& [a] en_rp @@ -1673,6 +1702,11 @@ vowel/0_2 [0] en_n vowel/0_3 [O] en_sc [0] en_rp [A] hu +vowel/@_2 [@] vi + [@:] vi + [@] sq + [V] sq + [@/] sq vowel/@_3 [@] en_sc [I] en_sc [@2] en_sc @@ -1721,6 +1755,7 @@ vowel/a [a] en [a] zh [a] id [a] ko + [a] ga vowel/a# [a/] base2 [a2] en_sc [a2] en_wi @@ -1729,6 +1764,8 @@ vowel/a# [a/] base2 [&/] pt [a#] rw [a/] rw + [a] om + [a:] om vowel/a_2 [a] base2 [a] en_wi [A:] en_wi @@ -1739,7 +1776,6 @@ vowel/a_2 [a] base2 [A] pt [a] pt_pt [a] ro - [a:] vi [a] rw [a] da vowel/a#_2 [a#] pl @@ -1747,9 +1783,7 @@ vowel/a#_2 [a#] pl [a2] sv [&] is [a/] sw - [a/] sq [a] kn - [a] om vowel/a_3 [a] en_sc [a/] en_sc [A:] en_sc @@ -1759,6 +1793,7 @@ vowel/a_3 [a] en_sc [a] is [A] zh [A] da + [a] sq vowel/a#_3 [a2] en [a2] en_n [a2] en_us @@ -1770,10 +1805,11 @@ vowel/a#_3 [a2] en [a#] ca [&] pt_pt [&/] pt_pt - [@] vi [a] zhy + [a/] sq [a] ml [a] bn + [a#] om vowel/a_4 [a/] el [a] vi [a:] om @@ -1783,12 +1819,12 @@ vowel/a_5 [a:] ta [a] sv [a] sw [a] tr - [a] sq [a:] ml [a:] kn - [A:] om + [A] om vowel/a_6 [a] fr [a2] fr + [a:] vi vowel/aa [a] fi [A] fr_ca [a] lv @@ -1797,6 +1833,7 @@ vowel/aa [a] fi [A:] no [aa] zhy [a] hy + [A:] ga vowel/aa# [O] en_us [0] en_wi [a2] fi @@ -1854,10 +1891,12 @@ vowel/e [e] base2 [e#] rw [e] ko [e] da + [e] sq [e] ml [e:] ml [e:] kn [e] ne + [e:] ga vowel/e# [I] en_sc [I2] en_sc vowel/e_2 [eI] en_sc @@ -1874,7 +1913,6 @@ vowel/e_3 [i] en_n [e] ku vowel/e_5 [i] en_sc vowel/e_6 [e] om -vowel/e_7 [e] sq vowel/ee [E] en_n [E] sv vowel/e_e [E] en_sc @@ -1895,11 +1933,11 @@ vowel/ee_2 [E] en [E#] ku [&] da vowel/ee#_2 [E-] sv - [E] sq vowel/ee_3 [&] af [&:] af [E] pt [E] vi +vowel/ee_4 [E] sq vowel/ee_6 [&] sk [E3] sv [E] ku @@ -1941,8 +1979,11 @@ vowel/e_mid2 [E] af [e] sw [e] tr [E] ko + [e#] sq [e] kn [E] om + [E#] om + [E] ga vowel/@_fnt [@] en_wi [@2] en_wi [@2] hr @@ -1976,6 +2017,7 @@ vowel/i [i] base2 [i] ne [i] hy [i:] om + [i:] ga vowel/i# [y:] cy vowel/i_2 [i2] de [i:] de @@ -1990,12 +2032,14 @@ vowel/i_4 [i] fi [i] hu [I] it [i] is + [i] vi [i] da vowel/i_5 [i:] en_sc vowel/i#_5 [y] pt_pt [i/] pt_pt [y] ro -vowel/i_6 [i] ta +vowel/i_6 [i] hi + [i] ta [i] lv [i:] lv [i] hr @@ -2006,12 +2050,11 @@ vowel/i_6 [i] ta [i] kn vowel/i#_6 [i.] zh vowel/i_7 [i] pl + [i] sq vowel/i#_7 [i[] zh vowel/i_en [i:] en [i:] en_us - [i] vi vowel/i_fnt [i:] en_wi - [i] hi [i:] hi [i] bn [i:] bn @@ -2028,12 +2071,14 @@ vowel/ii [I] en_n [I] is [i] zhy [I] ku + [I#] sq [I] om + [I#] om + [I] ga vowel/ii# [Y] cy [Y] ru [I] ku [i] sq - [e#] sq [y] ml [y] kn vowel/ii_2 [i] zh @@ -2061,7 +2106,7 @@ vowel/ii_6 [I] en_wm [I] pt [y] pt [i/] pt - [i] sq + [I] sq vowel/ii_en [i] en [i] sq vowel/ii_final [i] en_us @@ -2106,12 +2151,14 @@ vowel/o [o] base2 [o:] kn [o] bn [o] hy + [o:] ga vowel/o_2 [o:] cy [o2] fr [o:] hi [o:] hu [o:] la [o:] no + [o] vi [o] ko [o] da [o:] bn @@ -2154,6 +2201,7 @@ vowel/oo [O:] en_sc [o] zhy [O] tr [O] id + [O] ga vowel/oo_1 [O:] en_n [O:] en_rp [O@] en_rp @@ -2167,7 +2215,6 @@ vowel/oo_1 [O:] en_n [o] sk [o:] sk [o] hr - [o] vi [O/] sq vowel/oo_2 [0] en_sc [O] cy @@ -2182,6 +2229,7 @@ vowel/oo_4 [O] base2 [O] it [O] bn [O] om + [O#] om vowel/oo_5 [O] pl [O] is [O] sq @@ -2240,6 +2288,7 @@ vowel/u#_4 [U] en_sc vowel/u_5 [u] lv [u:] lv [u] sw +vowel/u#_5 [y] vi vowel/u_6 [U] pt_pt [u] pt_pt [u] ku @@ -2266,11 +2315,12 @@ vowel/u_bck [u] base2 [u] rw [u#] rw [u] ko - [u] sq [u:] bn [u] ne [u] hy + [u:] ga vowel/u_bck2 [u:] la + [u] sq vowel/u_fnt [u:] en_rp vowel/uu [U] en [U] en_n @@ -2293,6 +2343,8 @@ vowel/uu_bck [U] en_wi [u] zhy [U] bn [U] om + [U#] om + [U] ga vowel/u_unr [u-] ko vowel/V [3] en_sc vowel/V_2 [V] en @@ -2305,11 +2357,8 @@ vowel/V_3 [V] en_rp [V] ta [V] bn vowel/V_4 [V] en_sc - [@:] vi [V] da vowel/V_6 [V] en_us - [@] sq - [V] sq vowel/y [y:] en [y:] de [y] fi @@ -2326,7 +2375,6 @@ vowel/y# [Y:] en [Y:] hu [8] nl [Y] ro - [y] vi [oe] zhy [Y] ko vowel/y## [y#] is @@ -2351,7 +2399,6 @@ vowel/yy_4 [y] de [y] grc [y] is [y] hy -vweak/@ [@#] om vwl_af/@ [@] af vwl_af/I [I] af vwl_af/r@ [@] af @@ -2435,7 +2482,6 @@ vwl_no/u#2 [u-:] no vwl_no/y# [Y:] no vwl_no/y#y [Yy] no vwl_ro/ii- [I^] ro - [I#] om vwl_ro/li [I^] ro vwl_ro/mi [I^] ru [I^] ro @@ -2493,6 +2539,7 @@ w/w2 [w2] base2 [w] pl [w] sk [w] pt_pt + [w] sq w/wa [(a)] base w/we [(e)] base w/wi [(i)] base @@ -2555,7 +2602,9 @@ x/d_ [d] base [d] id [d] bn [d.] bn + [d`] om [d] en_klatt + [d[] ga x/d_dnt [d[] base [d] base2 [d] fi @@ -2566,6 +2615,7 @@ x/d_dnt [d[] base [d;] ro [d] sw [d] bn + [d[] ga x/d_pzd [d;] pl [d;] ru x/dzh [J] base diff --git a/phsource/d/xd b/phsource/d/xd index 36eca48d..6d9f36f5 100644 Binary files a/phsource/d/xd and b/phsource/d/xd differ diff --git a/phsource/dzh/dz_pzd b/phsource/dzh/dz_pzd index 55addc86..aaa7cec0 100644 Binary files a/phsource/dzh/dz_pzd and b/phsource/dzh/dz_pzd differ diff --git a/phsource/dzh/dzh b/phsource/dzh/dzh index 8a104dc8..9ca3eb3b 100644 Binary files a/phsource/dzh/dzh and b/phsource/dzh/dzh differ diff --git a/phsource/dzh/xdz_pzd b/phsource/dzh/xdz_pzd index 822b733f..fd8ee187 100644 Binary files a/phsource/dzh/xdz_pzd and b/phsource/dzh/xdz_pzd differ diff --git a/phsource/dzh/xdzh b/phsource/dzh/xdzh index d512d780..c85efd1f 100644 Binary files a/phsource/dzh/xdzh and b/phsource/dzh/xdzh differ diff --git a/phsource/envelope/vi_5amp b/phsource/envelope/vi_5amp index d56faddd..5bdb193e 100644 --- a/phsource/envelope/vi_5amp +++ b/phsource/envelope/vi_5amp @@ -1,6 +1,6 @@ ENVELOPE -0 100 -34 100 -50 63 -66 100 -100 100 +0 95 +33 95 +49 55 +65 95 +100 95 diff --git a/phsource/envelope/vi_6amp b/phsource/envelope/vi_6amp index 85eae685..4a80950e 100644 --- a/phsource/envelope/vi_6amp +++ b/phsource/envelope/vi_6amp @@ -1,8 +1,15 @@ ENVELOPE 0 100 34 100 -50 100 -63 100 -100 20 +47 66 +64 100 +73 100 +74 0 +85 95 +86 95 +92 95 +94 0 +100 0 + diff --git a/phsource/g/xg b/phsource/g/xg index a25ec336..c26e508d 100644 Binary files a/phsource/g/xg and b/phsource/g/xg differ diff --git a/phsource/g2/xg b/phsource/g2/xg index a25ec336..c26e508d 100644 Binary files a/phsource/g2/xg and b/phsource/g2/xg differ diff --git a/phsource/mbrola/in1 b/phsource/mbrola/in1 index d7568aef..d2caa089 100644 --- a/phsource/mbrola/in1 +++ b/phsource/mbrola/in1 @@ -16,8 +16,9 @@ 0 @2 NULL 0 a 0 @3 NULL 0 a 0 @4 NULL 0 a +0 i NULL 0 ii 0 i: NULL 0 ii -0 I NULL 0 i +0 I NULL 0 ii 0 e: NULL 0 e 0 e NULL 0 e 0 E: NULL 0 ai @@ -27,14 +28,17 @@ 0 a: NULL 0 aa 0 o: NULL 0 o 0 o NULL 0 o +0 O NULL 0 o 0 O: NULL 0 au -0 o~ NULL 0 o -0 O~ NULL 0 au 0 U NULL 0 uu 0 u: NULL 0 uu 0 aI NULL 0 ai 0 aU NULL 0 au +0 o~ NULL 60 o n +0 O~ NULL 60 au n +0 u~ NULL 60 uu n + 0 H NULL 0 h 0 t. NULL 0 T 0 t.h NULL 0 Th @@ -47,5 +51,5 @@ 0 j NULL 0 y 0 S NULL 0 sh 0 s. NULL 0 sh - +0 l. NULL 0 l diff --git a/phsource/ph_english_us b/phsource/ph_english_us index 5e826206..03c65130 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -263,7 +263,7 @@ endphoneme phoneme aI@ vowel starttype (a) endtype (@) - length 260 + length 300 formants vwl_en_us/ai@ linkout r- endphoneme @@ -271,7 +271,7 @@ endphoneme phoneme aU@ vowel starttype (a) endtype (@) - length 260 + length 270 formants vwl_en/aU@ linkout r- endphoneme diff --git a/phsource/ph_hindi b/phsource/ph_hindi index b8807be3..bed4155e 100644 --- a/phsource/ph_hindi +++ b/phsource/ph_hindi @@ -62,7 +62,7 @@ endphoneme phoneme i // as [i:] but not marked as 'long' vowel starttype (i) endtype (i) length 230 - formants vowel/i_fnt + formants vowel/i_6 linkout ; endphoneme @@ -97,13 +97,6 @@ phoneme E formants vowel/e_mid endphoneme -phoneme E~ - vowel starttype (e) endtype (e) - length 230 - formants vnasal/ee_n2 -endphoneme - - phoneme &: vowel long starttype (a) endtype (a) length 220 @@ -142,18 +135,6 @@ phoneme O: formants vowel/oo_4 endphoneme -phoneme o~ - vowel long starttype (o) endtype (o) - length 220 - formants vnasal/o_n -endphoneme - -phoneme O~ - vowel long starttype (o) endtype (o) - length 230 - formants vnasal/oo_n2 -endphoneme - phoneme O vowel starttype (o) endtype (o) @@ -176,6 +157,51 @@ phoneme u: endphoneme +// Nasal vowels +//============= + +phoneme i~ + vowel long starttype (i) endtype (i) + length 220 + formants vnasal/i_n2 +endphoneme + +phoneme e~ + vowel long starttype (e) endtype (e) + length 220 + formants vnasal/e_n +endphoneme + +phoneme E~ + vowel starttype (e) endtype (e) + length 230 + formants vnasal/ee_n2 +endphoneme + +phoneme a~ + vowel long starttype (a) endtype (a) + length 250 + formants vnasal/aa_n +endphoneme + +phoneme V~ + vowel long starttype (@) endtype (@) + length 250 + formants vnasal/V_n +endphoneme + +phoneme O~ + vowel long starttype (o) endtype (o) + length 230 + formants vnasal/oo_n2 +endphoneme + +phoneme o~ + vowel long starttype (o) endtype (o) + length 220 + formants vnasal/o_n +endphoneme + phoneme u~ vowel long starttype (u) endtype (u) length 230 @@ -318,23 +344,16 @@ phoneme b // this is [b] endphoneme -//phoneme bh // use [b]+[h] -// vcd blb stop -// vowelout f1=1 f2=1000 -500 -300 f3=-300 80 brk -// formants b/b+x/b -// before _ b/b_+x/b_ -// before (a) b/ba+x/b -// before (@) b/b@+x/b -// before (e) b/be+x/b -// before (i) b/bi+x/b -// before (o) b/bo+x/b -// before (u) b/bu+x/b -// before @- b/b@2+x/b -// after _ NULL -// after @ b/xb -// lengthmod 5 -// switchvoicing p -//endphoneme +phoneme bh + vcd blb stop + vowelin f1=0 f2=1000 -50 -100 f3=-200 80 + vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 + lengthmod 5 + formants b/xb+ustop/p_asp%70 + after @ b/xb + switchvoicing ph +endphoneme + @@ -355,7 +374,7 @@ endphoneme phoneme th // dental variant of /t/ vls dnt stop - vowelin f1=0 f2=1500 -300 300 f3=-100 80 + vowelin f1=0 f2=1500 -300 300 f3=-100 80 amp=16 vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 lengthmod 2 wave ustop/t_dnt%50 @@ -380,19 +399,17 @@ phoneme d // dental variant of /d/ endphoneme +phoneme dh + vcd dnt stop + vowelin f1=0 f2=1500 -300 300 f3=-100 80 + vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 + lengthmod 5 + formants d/xd3+ustop/t_dnt%40 + before _ ustop/t_dnt%35 + after @ d/xd + switchvoicing th +endphoneme -//phoneme dh // use [d]+[h] -// vcd dnt stop -// vowelin f1=1 f2=1700 -200 200 f3=100 80 -// vowelout f1=1 f2=1700 -200 200 f3=100 80 rms=20 len=1 -// formants d/d+x/d_dnt%60 -// before _ d/d_+x/d_ -// before r d/dr+x/d_dnt%60 -// after _ NULL -// after @ d/xd -// lengthmod 5 -// switchvoicing t -//endphoneme @@ -458,7 +475,7 @@ phoneme c // this is [ts;] vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 vowelout f1=0 f2=2700 400 600 f3=300 80 colr=1 lengthmod 2 - wave ustop/ts_pzd2%80 + wave ustop/ts_pzd2%90 before _ ustop/ts_pzd_ switchvoicing J endphoneme @@ -526,20 +543,20 @@ phoneme k switchvoicing g endphoneme -phoneme kh // this is english [k] +phoneme kh vls vel stop vowelin f1=0 f2=2300 200 300 f3=-150 80 vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 lengthmod 2 - wave ustop/k - before _ ustop/k_ + wave ustop/k_asp%90 + before _ ustop/k_asp%50 before r ustop/kr before l ustop/kl switchvoicing g endphoneme -phoneme g // +phoneme g vcd vel stop vowelin f1=1 f2=2300 200 300 f3=-300 80 vowelout f1=1 f2=2300 250 300 f3=-300 80 brk @@ -550,16 +567,16 @@ phoneme g // lengthmod 5 endphoneme -//phoneme gh // this is English [g] // use [g]+[h] -// vcd vel stop -// vowelin f1=1 f2=2300 200 400 f3=-100 80 -// vowelout f1=1 f2=2300 250 300 f3=-300 80 brk -// formants g/g+x/g -// before _ g/g_+x/g_ -// after _ NULL -// after @ g/xg -// lengthmod 5 -// switchvoicing k -//endphoneme + +phoneme gh + vcd dnt stop + vowelin f1=1 f2=2300 200 300 f3=-150 80 rms=20 + vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 + lengthmod 5 + formants g2/xg+ustop/k_asp%70 + after @ g2/xg + switchvoicing kh +endphoneme + diff --git a/phsource/ph_italian b/phsource/ph_italian index 863ff9ec..63abbb45 100644 --- a/phsource/ph_italian +++ b/phsource/ph_italian @@ -5,7 +5,7 @@ phoneme : // Lengthen previous vowel by "length" virtual - length 40 + length 50 endphoneme diff --git a/phsource/ph_polish b/phsource/ph_polish index 075356e7..fe8fbce3 100644 --- a/phsource/ph_polish +++ b/phsource/ph_polish @@ -80,6 +80,16 @@ endphoneme // CONSONANTS //=========== +phoneme R + liquid + vowelin f1=0 f2=1700 -300 300 f3=-300 80 + vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk + formants r3/r_trill+r3/r_trill.wav%50 + trill + lengthmod 6 +endphoneme + + phoneme t vls dnt stop vowelin f1=0 f2=1600 -300 300 f3=-100 80 diff --git a/phsource/ph_slovak b/phsource/ph_slovak index 3f432f99..07108eaa 100644 --- a/phsource/ph_slovak +++ b/phsource/ph_slovak @@ -115,15 +115,6 @@ phoneme r: endphoneme -phoneme R - liquid - vowelin f1=0 f2=1700 -300 300 f3=-300 80 - vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk - formants r3/r_trill+r3/r_trill.wav%50 - trill - lengthmod 6 -endphoneme - phoneme R^ // Czech r-caron vcd pla frc sibilant diff --git a/phsource/ph_vi b/phsource/ph_vi index 1a7b88a4..7a83d9ce 100644 --- a/phsource/ph_vi +++ b/phsource/ph_vi @@ -4,60 +4,55 @@ //==================================================== -phoneme 1 // tone: level +phoneme 1 // ngang tone: level stress length 11 tone 28 32 envelope/p_level NULL endphoneme -phoneme 2 // tone: low falling +phoneme 2 // huyền tone: low falling stress length 12 tone 20 8 envelope/p_fall NULL endphoneme -phoneme 3 // tone rising +phoneme 3 // sắc tone rising stress length 13 - tone 28 43 envelope/p_rise NULL + tone 25 50 envelope/p_rise NULL endphoneme -phoneme 4 // tone curve (dipping rising) +phoneme 4 // hỏi tone curve (dipping rising) stress length 14 - tone 28 5 envelope/p_fallrise NULL + tone 30 5 envelope/p_fallrise NULL endphoneme -phoneme 5 // tone: broken (creaking rising) +phoneme 5 // ngã tone: broken (creaking rising) stress length 15 - tone 28 45 envelope/vi_5 envelope/vi_5amp + tone 30 55 envelope/p_214 envelope/vi_5amp endphoneme -phoneme 6 // tone drop (constricted) +phoneme 6 // nặng tone drop (constricted) stress length 16 - tone 30 5 envelope/vi_6 envelope/vi_6amp + tone 40 20 envelope/p_512 envelope/vi_6amp endphoneme -phoneme 7 // tone 1 at end of clause +phoneme 7 // tone 1 (ngang) at end of clause stress length 17 - tone 30 20 envelope/p_fall NULL + tone 40 20 envelope/p_fall NULL endphoneme -phoneme 8 // TEST - stress - length 18 - tone 30 6 envelope/p_512 NULL -endphoneme // Vowels //======= @@ -72,7 +67,7 @@ endphoneme phoneme a: vowel starttype (a) endtype (a) length 280 - formants vowel/a_2 + formants vowel/a_6 endphoneme @@ -92,7 +87,7 @@ endphoneme phoneme i vowel starttype (i) endtype (i) length 190 - formants vowel/i_en + formants vowel/i_4 after w w/wi linkout ; endphoneme @@ -107,7 +102,7 @@ endphoneme phoneme o vowel starttype (o) endtype (o) length 200 - formants vowel/oo_1 + formants vowel/o_2 endphoneme @@ -120,7 +115,7 @@ endphoneme phoneme y vowel starttype (u) endtype (u) length 200 - formants vowel/y# + formants vowel/u#_5 endphoneme @@ -128,14 +123,14 @@ endphoneme phoneme @ vowel starttype (@) endtype (a) length 130 - formants vowel/a#_3 + formants vowel/@_2 endphoneme phoneme @: vowel starttype (@) endtype (@) length 280 - formants vowel/V_4 + formants vowel/@_2 endphoneme @@ -160,14 +155,14 @@ endphoneme phoneme @I vowel starttype (@) endtype (i) length 250 - formants vdiph/@i_4 + formants vdiph/@i endphoneme phoneme @:I vowel starttype (@) endtype (i) length 250 - formants vdiph/Vi + formants vdiph/@i endphoneme @@ -216,14 +211,14 @@ endphoneme phoneme aU vowel starttype (a) endtype (u) - length 230 + length 210 formants vdiph/aau_4 endphoneme phoneme a:U vowel starttype (a) endtype (u) - length 260 + length 270 formants vdiph/au endphoneme @@ -250,13 +245,13 @@ endphoneme phoneme @U vowel starttype (@) endtype (u) length 200 - formants vdiph/Vu_4 + formants vdiph/@u endphoneme phoneme @:U vowel starttype (@) endtype (u) - length 260 - formants vdiph/Vu_4 + length 270 + formants vdiph/@u endphoneme @@ -270,7 +265,7 @@ endphoneme phoneme y@ vowel starttype (i) endtype (@) length 200 - formants vdiph2/u-@ + formants vdiph2/y-y# endphoneme phoneme u@ @@ -302,3 +297,11 @@ phoneme kh switchvoicing Q endphoneme +phoneme l + liquid + length 100 + lengthmod 7 + beforenotvowel l/ + formants l/l_vi +endphoneme + diff --git a/phsource/phonemes b/phsource/phonemes index 1daf588e..f15d8e28 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -435,6 +435,13 @@ phoneme R3 // Afrikaans endphoneme +phoneme r" // uvular trill + vcd uvl frc + formants r3/r_ulv+r3/r_uvl%75 + before _ r3/r_ulv+r3/r_uvl%50 + lengthmod 6 +endphoneme + phoneme l liquid @@ -740,7 +747,7 @@ phoneme J vcd pla afr sibilant vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 vowelout f1=2 f2=2700 400 600 f3=300 80 colr=1 - formants dzh/dz_pzd+x/dzh%40 + formants dzh/dz_pzd+x/dzh%45 before _ dzh/dz_pzd_+x/dzh%35 after _ NULL after @ dzh/xdz_pzd @@ -829,7 +836,7 @@ phoneme Z vcd pla frc sibilant vowelin f1=0 f2=2000 0 300 f3=-200 80 vowelout f1=2 f2=2000 0 300 f3=-200 80 brk - formants voc/zh+vocw/zh + formants voc/zh+vocw/zh%130 before _ voc/zh_+vocw/zh lengthmod 6 switchvoicing S @@ -900,6 +907,13 @@ phoneme Q^ switchvoicing x endphoneme +phoneme Q" // voiced velar fricative + vcd uvl frc + formants voc/Q_ulv+ufric/xx3%80 + before _ voc/Q_ulv+ufric/xx3%60 + lengthmod 6 +endphoneme + //******************************************************************* @@ -1326,7 +1340,7 @@ include ph_korean phonemetable da is include ph_danish -phonemetable sq base2 +phonemetable sq base include ph_albanian phonemetable ml hi @@ -1349,4 +1363,6 @@ include ph_oromo phonemetable en_klatt en include ph_english_klatt -] \ No newline at end of file + +phonemetable ga base +include ph_irish diff --git a/phsource/vdiph/aai b/phsource/vdiph/aai index 0ab784f4..569d48f6 100644 Binary files a/phsource/vdiph/aai and b/phsource/vdiph/aai differ diff --git a/phsource/vdiph/ai_4 b/phsource/vdiph/ai_4 index a75cadb4..de9f5587 100644 Binary files a/phsource/vdiph/ai_4 and b/phsource/vdiph/ai_4 differ diff --git a/phsource/vdiph/vowelchart.png b/phsource/vdiph/vowelchart.png index 3dfc396d..e0518a2b 100644 Binary files a/phsource/vdiph/vowelchart.png and b/phsource/vdiph/vowelchart.png differ diff --git a/phsource/voc/Q_ulv b/phsource/voc/Q_ulv new file mode 100644 index 00000000..fba31859 Binary files /dev/null and b/phsource/voc/Q_ulv differ diff --git a/phsource/voc/zh b/phsource/voc/zh index f0eadd57..1908960a 100644 Binary files a/phsource/voc/zh and b/phsource/voc/zh differ diff --git a/phsource/voc/zh_ b/phsource/voc/zh_ index 22cf876b..61973b0f 100644 Binary files a/phsource/voc/zh_ and b/phsource/voc/zh_ differ diff --git a/phsource/vowel/@_2 b/phsource/vowel/@_2 index 3c067fb0..00e54206 100644 Binary files a/phsource/vowel/@_2 and b/phsource/vowel/@_2 differ diff --git a/phsource/vowel/V_7 b/phsource/vowel/V_7 new file mode 100644 index 00000000..baa24913 Binary files /dev/null and b/phsource/vowel/V_7 differ diff --git a/phsource/vowel/a b/phsource/vowel/a index e405232e..912230ac 100644 Binary files a/phsource/vowel/a and b/phsource/vowel/a differ diff --git a/phsource/vowel/a_5 b/phsource/vowel/a_5 index d3a65d3e..a1c049e7 100644 Binary files a/phsource/vowel/a_5 and b/phsource/vowel/a_5 differ diff --git a/phsource/vowel/e b/phsource/vowel/e index 146af7a9..eaba176a 100644 Binary files a/phsource/vowel/e and b/phsource/vowel/e differ diff --git a/phsource/vowel/i_4 b/phsource/vowel/i_4 index e72d4f7c..e9c90b09 100644 Binary files a/phsource/vowel/i_4 and b/phsource/vowel/i_4 differ diff --git a/phsource/vowel/o_2 b/phsource/vowel/o_2 index b2da51c2..00982b23 100644 Binary files a/phsource/vowel/o_2 and b/phsource/vowel/o_2 differ diff --git a/phsource/vowel/u#_5 b/phsource/vowel/u#_5 new file mode 100644 index 00000000..d0b86ae1 Binary files /dev/null and b/phsource/vowel/u#_5 differ diff --git a/phsource/vowel/uu_4 b/phsource/vowel/uu_4 index 2bf77cae..bda5e24b 100644 Binary files a/phsource/vowel/uu_4 and b/phsource/vowel/uu_4 differ diff --git a/phsource/vowel/vowelchart.png b/phsource/vowel/vowelchart.png index 1953fc8f..f2a75c49 100644 Binary files a/phsource/vowel/vowelchart.png and b/phsource/vowel/vowelchart.png differ diff --git a/platforms/windows/windows_cmd/src/speech.h b/platforms/windows/windows_cmd/src/speech.h index f0cc4624..8af6f3a1 100755 --- a/platforms/windows/windows_cmd/src/speech.h +++ b/platforms/windows/windows_cmd/src/speech.h @@ -1,60 +1,61 @@ -/*************************************************************************** - * Copyright (C) 2005,2006 by Jonathan Duddington * - * jsd@clara.co.uk * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -// Windows command-line version of eSpeak - - -// conditional compilation options - -#define PLATFORM_WINDOWS -#define __WIN32__ -#define NEED_WCSTOF -#define NEED_GETOPT - -#define PATHSEP '\\' -#define USE_PORTAUDIO -#define ESPEAK_API - -// will look for espeak_data directory here, and also in user's home directory -#define PATH_ESPEAK_DATA "/usr/share/espeak-data" - -typedef unsigned short USHORT; -typedef unsigned char UCHAR; -typedef double DOUBLEX; - - - - -typedef struct { - const char *mnem; - int value; -} MNEM_TAB; -int LookupMnem(MNEM_TAB *table, char *string); - - - -#define N_PATH_HOME 120 -extern char path_home[N_PATH_HOME]; // this is the espeak-data directory - -extern void strncpy0(char *to,const char *from, int size); -int GetFileLength(const char *filename); -char *Alloc(int size); -void Free(void *ptr); - +/*************************************************************************** + * Copyright (C) 2005,2006 by Jonathan Duddington * + * jsd@clara.co.uk * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +// Windows command-line version of eSpeak + + +// conditional compilation options + +#define PLATFORM_WINDOWS +#define __WIN32__ +#define NEED_WCSTOF +#define NEED_GETOPT + +#define PATHSEP '\\' +#define USE_PORTAUDIO +#define ESPEAK_API +#define INCLUDE_KLATT + +// will look for espeak_data directory here, and also in user's home directory +#define PATH_ESPEAK_DATA "/usr/share/espeak-data" + +typedef unsigned short USHORT; +typedef unsigned char UCHAR; +typedef double DOUBLEX; + + + + +typedef struct { + const char *mnem; + int value; +} MNEM_TAB; +int LookupMnem(MNEM_TAB *table, char *string); + + + +#define N_PATH_HOME 220 +extern char path_home[N_PATH_HOME]; // this is the espeak-data directory + +extern void strncpy0(char *to,const char *from, int size); +int GetFileLength(const char *filename); +char *Alloc(int size); +void Free(void *ptr); + diff --git a/platforms/windows/windows_sapi/src/speech.h b/platforms/windows/windows_sapi/src/speech.h index 6d9e344b..77386794 100755 --- a/platforms/windows/windows_sapi/src/speech.h +++ b/platforms/windows/windows_sapi/src/speech.h @@ -35,7 +35,7 @@ //#define __cdecl // define as null, needed for Borland compiler ? //#define USE_PORTAUDIO //#define USE_NANOSLEEP - +#define INCLUDE_KLATT // will look for espeak_data directory here, and also in user's home directory #define PATH_ESPEAK_DATA "/usr/share/espeak-data" @@ -55,7 +55,7 @@ int LookupMnem(MNEM_TAB *table, char *string); -#define N_PATH_HOME 120 +#define N_PATH_HOME 220 extern char path_home[N_PATH_HOME]; // this is the espeak-data directory extern void strncpy0(char *to,const char *from, int size); diff --git a/src/compiledata.cpp b/src/compiledata.cpp index 61ce3b10..b56e5243 100755 --- a/src/compiledata.cpp +++ b/src/compiledata.cpp @@ -297,7 +297,8 @@ static keywtab_t keywords[] = { {"f4", 0x300000a}, {"paus", 0x300000b}, {"colr=",0x300000c}, - {"amp=", 0x300000d}, + {"amp=", 0x300000d}, // set rms of 1st frame as fraction of rms of 2nd frame (1/30ths) + {"", -1} }; @@ -1286,6 +1287,7 @@ void Compile::VowelTransition(int which, unsigned int *trans) vcolour = NextItem(tNUMBER); break; case 13: + // set rms of 1st frame as fraction of rms of 2nd frame (1/30ths) rms = (Range(NextItem(tNUMBER), 1, 0, 31) & 0x1f) | 0x20; flags |= 1; break; diff --git a/src/compiledict.cpp b/src/compiledict.cpp index bae8cd97..345aa331 100755 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -90,6 +90,7 @@ MNEM_TAB mnem_flags[] = { {"$alt2", 21}, + {"$max3", 27}, // limit to 3 repetitions {"$brk", 28}, // a shorter $pause {"$text", 29}, // word translates to replcement text, not phonemes diff --git a/src/dictionary.cpp b/src/dictionary.cpp index e701bb0e..c6318e15 100755 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -684,6 +684,7 @@ int Translator::IsLetterGroup(char *word, int group, int pre) // match the word against a list of utf-8 strings char *p; char *w; + int len; p = letterGroups[group]; if(p == NULL) @@ -691,14 +692,26 @@ int Translator::IsLetterGroup(char *word, int group, int pre) while(*p != RULE_GROUP_END) { - w = word; + if(pre) + { + len = strlen(p); + w = word - len + 1; + } + else + { + w = word; + } while(*p == *w) { w++; p++; } if(*p == 0) + { + if(pre) + return(len); return(w-word); // matched a complete string + } while(*p++ != 0); // skip to end of string } @@ -1023,6 +1036,7 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int unsigned char vowel_stress[N_WORD_PHONEMES/2]; char syllable_weight[N_WORD_PHONEMES/2]; + char vowel_length[N_WORD_PHONEMES/2]; unsigned char phonetic[N_WORD_PHONEMES]; static char consonant_types[16] = {0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0}; @@ -1079,6 +1093,7 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int // long vowel, increase syllable weight weight++; } + vowel_length[ix] = weight; if(lengthened) p++; // advance over phonLENGTHEN @@ -1150,6 +1165,14 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int } } } + if(langopts.stress_flags & 0x80000) + { + // stress on last syllable if it has a long vowel, but previous syllable has a short vowel + if(vowel_length[vowel_count - 1] > vowel_length[vowel_count - 2]) + { + stressed_syllable = vowel_count - 1; + } + } if(vowel_stress[stressed_syllable] == 1) { @@ -2547,6 +2570,10 @@ int Translator::TranslateRules(char *p_start, char *phonemes, int ph_size, char } p += (wc_bytes-1); } + else + { + phonemes_repeat_count = 0; + } } } @@ -2590,6 +2617,7 @@ int Translator::TranslateRules(char *p_start, char *phonemes, int ph_size, char // any language specific changes ? ApplySpecialAttribute(phonemes,dict_flags0); memcpy(p_start,word_copy,strlen(word_copy)); + return(0); } /* end of TranslateRules */ @@ -3127,6 +3155,28 @@ int Translator::LookupDictList(char **wordptr, char *ph_out, unsigned int *flags found = LookupDict2(word, word1, ph_out, flags, end_flags, wtab); + if(flags[0] & FLAG_MAX3) + { + if(strcmp(ph_out, phonemes_repeat) == 0) + { + phonemes_repeat_count++; + if(phonemes_repeat_count > 3) + { + ph_out[0] = 0; + } + } + else + { + strncpy0(phonemes_repeat, ph_out, sizeof(phonemes_repeat)); + phonemes_repeat_count = 1; + } + } + else + { + phonemes_repeat_count = 0; + } + + if((found == 0) && (flags[1] & FLAG_ACCENT)) { int letter; diff --git a/src/espeak.cpp b/src/espeak.cpp index 0f9ced97..8031b07e 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -324,7 +324,7 @@ int main (int argc, char **argv) FILE *f_text=NULL; char *p_text=NULL; - FILE *f_phonemes_out = stderr; + FILE *f_phonemes_out = stdout; char *data_path = NULL; // use default path for espeak-data int option_index = 0; @@ -345,7 +345,8 @@ int main (int argc, char **argv) int option_linelength = 0; int option_waveout = 0; - char filename[120]; + espeak_VOICE voice_select; + char filename[200]; char voicename[40]; char voice_mbrola[20]; char dictname[40]; @@ -529,8 +530,13 @@ int main (int argc, char **argv) if(espeak_SetVoiceByName(voicename) != EE_OK) { - fprintf(stderr,"%svoice '%s'\n",err_load,voicename); - exit(2); + memset(&voice_select,0,sizeof(voice_select)); + voice_select.languages = voicename; + if(espeak_SetVoiceByProperties(&voice_select) != EE_OK) + { + fprintf(stderr,"%svoice '%s'\n",err_load,voicename); + exit(2); + } } if(flag_compile) diff --git a/src/readclause.cpp b/src/readclause.cpp index f1987882..9372c352 100644 --- a/src/readclause.cpp +++ b/src/readclause.cpp @@ -79,8 +79,6 @@ const unsigned short punct_chars[] = {',','.','?','!',':',';', 0x037e, // Greek question mark (looks like semicolon) 0x0387, // Greek semicolon, ano teleia 0x0964, // Devanagari Danda (fullstop) - 0x3001, // ideograph comma - 0x3002, // ideograph period 0x0589, // Armenian period 0x055d, // Armenian comma @@ -88,6 +86,17 @@ const unsigned short punct_chars[] = {',','.','?','!',':',';', 0x055e, // Armenian question 0x055b, // Armenian emphasis mark + 0x1362, // Ethiopic period + 0x1363, + 0x1364, + 0x1365, + 0x1366, + 0x1367, + 0x1368, + + 0x3001, // ideograph comma + 0x3002, // ideograph period + 0xff01, // fullwidth exclamation 0xff0c, // fullwidth comma 0xff0e, // fullwidth period @@ -109,8 +118,6 @@ static const unsigned int punct_attributes [] = { 0, CLAUSE_QUESTION, // Greek question mark CLAUSE_SEMICOLON, // Greek semicolon CLAUSE_PERIOD+0x8000, // Devanagari Danda (fullstop) - CLAUSE_COMMA+0x8000, // ideograph comma - CLAUSE_PERIOD+0x8000, // ideograph period CLAUSE_PERIOD+0x8000, // Armenian period CLAUSE_COMMA, // Armenian comma @@ -118,6 +125,17 @@ static const unsigned int punct_attributes [] = { 0, CLAUSE_QUESTION + PUNCT_IN_WORD, // Armenian question CLAUSE_PERIOD + PUNCT_IN_WORD, // Armenian emphasis mark + CLAUSE_PERIOD, // Ethiopic period + CLAUSE_COMMA, // Ethiopic comma + CLAUSE_SEMICOLON, // Ethiopic semicolon + CLAUSE_COLON, // Ethiopic colon + CLAUSE_COLON, // Ethiopic preface colon + CLAUSE_QUESTION, // Ethiopic question mark + CLAUSE_PERIOD, // Ethiopic paragraph + + CLAUSE_COMMA+0x8000, // ideograph comma + CLAUSE_PERIOD+0x8000, // ideograph period + CLAUSE_EXCLAMATION+0x8000, // fullwidth CLAUSE_COMMA+0x8000, CLAUSE_PERIOD+0x8000, @@ -865,7 +883,7 @@ int Translator::AnnouncePunctuation(int c1, int c2, char *buf, int bufix) #define SSML_AUDIO 11 #define SSML_EMPHASIS 12 #define SSML_BREAK 13 -#define SSML_METADATA 14 +#define SSML_IGNORE_TEXT 14 #define HTML_BREAK 15 #define SSML_CLOSE 0x10 // for a closing tag, OR this with the tag type @@ -887,7 +905,7 @@ MNEM_TAB ssmltags[] = { {"audio", SSML_AUDIO}, {"emphasis", SSML_EMPHASIS}, {"break", SSML_BREAK}, - {"metadata", SSML_METADATA}, + {"metadata", SSML_IGNORE_TEXT}, {"br", HTML_BREAK}, {"li", HTML_BREAK}, @@ -898,6 +916,8 @@ MNEM_TAB ssmltags[] = { {"h3", SSML_PARAGRAPH}, {"h4", SSML_PARAGRAPH}, {"hr", SSML_PARAGRAPH}, + {"script", SSML_IGNORE_TEXT}, + {"style", SSML_IGNORE_TEXT}, {NULL,0}}; @@ -911,6 +931,7 @@ static const char *VoiceFromStack() SSML_STACK *sp; const char *v_id; int voice_name_specified; + int voice_found; espeak_VOICE voice_select; char voice_name[40]; char language[40]; @@ -952,7 +973,7 @@ static const char *VoiceFromStack() voice_select.name = voice_name; voice_select.languages = language; - v_id = SelectVoice(&voice_select); + v_id = SelectVoice(&voice_select, &voice_found); if(v_id == NULL) return("default"); return(v_id); @@ -1625,12 +1646,12 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb } break; - case SSML_METADATA: + case SSML_IGNORE_TEXT: ignore_text = 1; break; case SSML_SUB + SSML_CLOSE: - case SSML_METADATA + SSML_CLOSE: + case SSML_IGNORE_TEXT + SSML_CLOSE: ignore_text = 0; break; diff --git a/src/speak.cpp b/src/speak.cpp index df107121..a4726264 100755 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -447,7 +447,7 @@ static void StopSpeak(int unused) static int optional_argument; static const char *arg_opts = "afklpsvw"; // which options have arguments static char *opt_string=""; -#define no_argument 0 +#define no_argument 0 #define required_argument 1 #define optional_argument 2 #endif @@ -494,7 +494,8 @@ int main (int argc, char **argv) int flag_stdin = 0; int flag_compile = 0; int pitch_adjustment = 50; - char filename[120]; + espeak_VOICE voice_select; + char filename[200]; char voicename[40]; char dictname[40]; @@ -510,10 +511,11 @@ int main (int argc, char **argv) option_endpause = 1; option_phoneme_input = 1; option_multibyte = espeakCHARS_AUTO; // auto - f_trans = stderr; + f_trans = stdout; #ifdef NEED_GETOPT optind = 1; + opt_string = ""; while(optind < argc) { int len; @@ -735,8 +737,13 @@ int main (int argc, char **argv) if(SetVoiceByName(voicename) != EE_OK) { - fprintf(stderr,"%svoice '%s'\n",err_load,voicename); - exit(2); + memset(&voice_select,0,sizeof(voice_select)); + voice_select.languages = voicename; + if(SetVoiceByProperties(&voice_select) != EE_OK) + { + fprintf(stderr,"%svoice '%s'\n",err_load,voicename); + exit(2); + } } SetParameter(espeakRATE,speed,0); diff --git a/src/speak_lib.cpp b/src/speak_lib.cpp index a27cef86..f48096e9 100644 --- a/src/speak_lib.cpp +++ b/src/speak_lib.cpp @@ -911,10 +911,12 @@ ESPEAK_API espeak_ERROR espeak_Char(wchar_t character) ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name) -{//=================================================== +{//============================================================ ENTER("espeak_SetVoiceByName"); -#ifdef USE_ASYNC +//#ifdef USE_ASYNC +// I don't think there's a need to queue change voice requests +#ifdef deleted espeak_ERROR a_error; if(synchronous_mode) @@ -937,10 +939,11 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name) ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_selector) -{//===================================================================== +{//============================================================================== ENTER("espeak_SetVoiceByProperties"); -#ifdef USE_ASYNC +//#ifdef USE_ASYNC +#ifdef deleted espeak_ERROR a_error; if(synchronous_mode) diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 02e90399..35f2bcbe 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.39.29 23.Nov.08"; +const char *version_string = "1.39.36 03.Dec.08"; const int version_phdata = 0x013900; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 843aeb6b..4c0f50d2 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -123,7 +123,7 @@ Translator *SelectTranslator(const char *name) int name2 = 0; Translator *tr; - static const unsigned char stress_amps_sk[8] = {16,16, 20,20, 20,24, 24,22 }; + static const unsigned char stress_amps_sk[8] = {17,17, 20,20, 20,24, 24,22 }; static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210}; // convert name string into a word of up to 4 characters, for the switch() @@ -198,10 +198,9 @@ Translator *SelectTranslator(const char *name) case L('d','a'): // Danish { - static const unsigned char stress_amps_da[] = {16,16, 20,20, 20,24, 24,22 }; static const short stress_lengths_da[8] = {160,140, 200,200, 0,0, 220,210}; tr = new Translator(); - SetupTranslator(tr,stress_lengths_da,stress_amps_da); + SetupTranslator(tr,stress_lengths_da,NULL); tr->langopts.stress_rule = 0; SetLetterVowel(tr,'y'); @@ -365,6 +364,16 @@ Translator *SelectTranslator(const char *name) } break; +#ifdef deleted + case L('g','a'): // Irish Gaelic + { + tr = new Translator(); + + tr->langopts.stress_rule = 1; + } + break; +#endif + case L('h','i'): // Hindi case L('n','e'): // Nepali { @@ -390,7 +399,7 @@ Translator *SelectTranslator(const char *name) case L('b','s'): // Bosnian case L('s','r'): // Serbian { - static const unsigned char stress_amps_hr[8] = {16,16, 20,20, 20,24, 24,22 }; + static const unsigned char stress_amps_hr[8] = {17,17, 20,20, 20,24, 24,22 }; static const short stress_lengths_hr[8] = {180,160, 200,200, 0,0, 220,230}; static const short stress_lengths_sr[8] = {160,150, 200,200, 0,0, 250,260}; @@ -476,12 +485,11 @@ SetLengthMods(tr,3); // all equal case L('i','s'): // Icelandic { - static const unsigned char stress_amps_is[] = {16,16, 20,20, 20,24, 24,22 }; static const short stress_lengths_is[8] = {180,160, 200,200, 0,0, 240,250}; static const wchar_t is_lettergroup_B[] = {'c','f','h','k','p','t','x',0xfe,0}; // voiceless conants, including 'þ' ?? 's' tr = new Translator(); - SetupTranslator(tr,stress_lengths_is,stress_amps_is); + SetupTranslator(tr,stress_lengths_is,NULL); tr->langopts.stress_rule = 0; tr->langopts.stress_flags = 0x10; tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11; // remove lengthen indicator from unstressed vowels @@ -499,8 +507,8 @@ SetLengthMods(tr,3); // all equal case L('i','t'): // Italian { - static const short stress_lengths_it[8] = {150, 140, 180, 180, 0, 0, 270, 320}; - static const unsigned char stress_amps_it[8] = {15,14, 19,19, 20,24, 24,22 }; + static const short stress_lengths_it[8] = {150, 140, 170, 170, 0, 0, 300, 330}; + static const unsigned char stress_amps_it[8] = {15,14, 19,19, 20,22, 22,20 }; tr = new Translator(); SetupTranslator(tr,stress_lengths_it,stress_amps_it); @@ -606,7 +614,7 @@ SetLengthMods(tr,3); // all equal { static wchar_t vowels_cyrillic[] = {0x440, // also include 'р' [R] 0x430,0x435,0x438,0x439,0x43e,0x443,0x44b,0x44d,0x44e,0x44f,0x450,0x451,0x456,0x457,0x45d,0x45e,0}; - static const unsigned char stress_amps_mk[8] = {16,16, 20,20, 20,24, 24,22 }; + static const unsigned char stress_amps_mk[8] = {17,17, 20,20, 20,24, 24,22 }; static const short stress_lengths_mk[8] = {180,160, 200,200, 0,0, 220,230}; tr = new Translator(); @@ -639,10 +647,9 @@ SetLengthMods(tr,3); // all equal case L('n','o'): // Norwegian { - static const unsigned char stress_amps_no[] = {16,16, 20,20, 20,24, 24,22 }; static const short stress_lengths_no[8] = {160,140, 200,200, 0,0, 220,210}; tr = new Translator(); - SetupTranslator(tr,stress_lengths_no,stress_amps_no); + SetupTranslator(tr,stress_lengths_no,NULL); tr->langopts.stress_rule = 0; SetLetterVowel(tr,'y'); @@ -652,12 +659,13 @@ SetLengthMods(tr,3); // all equal case L('o','m'): { - static const unsigned char stress_amps_om[] = {16,16, 20,20, 20,24, 24,22 }; + static const unsigned char stress_amps_om[] = {18,15, 20,20, 20,22, 22,22 }; static const short stress_lengths_om[8] = {200,200, 200,200, 0,0, 200,200}; tr = new Translator(); SetupTranslator(tr,stress_lengths_om,stress_amps_om); - tr->langopts.stress_rule = 3; + tr->langopts.stress_rule = 2; + tr->langopts.stress_flags = 0x16 + 0x80000; } break; @@ -766,11 +774,13 @@ SetLengthMods(tr,3); // all equal case L('s','q'): // Albanian { - static const short stress_lengths_sq[8] = {170, 170, 170, 170, 0, 0, 250, 270}; - static const unsigned char stress_amps_sq[8] = {17,12, 17,17, 20,20, 24,22 }; + static const short stress_lengths_sq[8] = {150, 150, 180, 180, 0, 0, 300, 300}; + static const unsigned char stress_amps_sq[8] = {16,12, 16,16, 20,20, 21,19 }; tr = new Translator(); SetupTranslator(tr,stress_lengths_sq,stress_amps_sq); - tr->langopts.stress_flags = 0x4 + 0x10; + + tr->langopts.stress_rule = 2; + tr->langopts.stress_flags = 0x16 + 0x100; SetLetterVowel(tr,'y'); tr->langopts.numbers = 0x69 + 0x8000; } @@ -879,8 +889,8 @@ SetLengthMods(tr,3); // all equal case L('v','i'): // Vietnamese { - static const short stress_lengths_vi[8] = {150, 150, 180, 180, 210, 220, 220, 280}; - static const unsigned char stress_amps_vi[] = {16,16, 16,16, 24,24, 24,22 }; + static const short stress_lengths_vi[8] = {150, 150, 180, 180, 210, 230, 230, 240}; + static const unsigned char stress_amps_vi[] = {16,16, 16,16, 22,22, 22,22 }; static wchar_t vowels_vi[] = { 0x61, 0xe0, 0xe1, 0x1ea3, 0xe3, 0x1ea1, // a 0x103, 0x1eb1, 0x1eaf, 0x1eb3, 0x1eb5, 0x1eb7, // ă @@ -900,12 +910,12 @@ SetLengthMods(tr,3); // all equal tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable tr->langopts.stress_rule = 0; - tr->langopts.word_gap = 0x20; // length of a final vowel is less dependent on the next consonant - tr->langopts.vowel_pause = 4; + tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word +// tr->langopts.vowel_pause = 4; tr->letter_groups[0] = vowels_vi; -// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches() tr->langopts.unstressed_wd1 = 2; + tr->langopts.numbers = 0x0049; } break; diff --git a/src/translate.cpp b/src/translate.cpp index 0c22c008..422a9880 100755 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -412,7 +412,7 @@ int IsSpace(unsigned int c) Translator::Translator() {//===================== int ix; - static const unsigned char stress_amps2[] = {16,16, 20,20, 20,24, 24,21 }; + static const unsigned char stress_amps2[] = {17,17, 20,20, 20,24, 24,21 }; static const short stress_lengths2[8] = {182,140, 220,220, 220,240, 260,280}; static const wchar_t empty_wstring[1] = {0}; static const wchar_t punct_in_word[2] = {'\'', 0}; // allow hyphen within words @@ -2111,6 +2111,7 @@ void *Translator::TranslateClause(FILE *f_text, const void *vp_input, int *tone_ expect_verb_s=0; end_stressed_vowel=0; prev_dict_flags = 0; + phonemes_repeat_count = 0; sbuf[0] = 0; sbuf[1] = ' '; diff --git a/src/translate.h b/src/translate.h index 8a8f79a9..103a4695 100755 --- a/src/translate.h +++ b/src/translate.h @@ -56,7 +56,7 @@ #define FLAG_ALT_TRANS 0x100000 // language specific #define FLAG_ALT2_TRANS 0x200000 // language specific - +#define FLAG_MAX3 0x08000000 // limit to 3 repeats #define FLAG_PAUSE1 0x10000000 // shorter prepause #define FLAG_TEXTMODE 0x20000000 // word translates to replacement text, not phonemes #define BITNUM_FLAG_TEXTMODE 29 @@ -314,6 +314,7 @@ typedef struct { // bit16= Don't diminish consecutive syllables within a word. // bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary" // bit18= don't lengthen short vowels more than long vowels at end-of-clause +// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel int stress_flags; int unstressed_wd1; // stress for $u word of 1 syllable @@ -416,6 +417,8 @@ public: char phon_out[300]; char word_phonemes[N_WORD_PHONEMES]; // a word translated into phoneme codes + char phonemes_repeat[20]; + int phonemes_repeat_count; unsigned char stress_amps[8]; unsigned char stress_amps_r[8]; diff --git a/src/voice.h b/src/voice.h index be0c82eb..2f647c6b 100644 --- a/src/voice.h +++ b/src/voice.h @@ -71,7 +71,7 @@ extern USHORT voice_pcnt[N_PEAKS+1][3]; extern voice_t *voice; extern int tone_points[12]; -const char *SelectVoice(espeak_VOICE *voice_select); +const char *SelectVoice(espeak_VOICE *voice_select, int *found); espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name); voice_t *LoadVoice(const char *voice_name, int control); voice_t *LoadVoiceVariant(const char *voice_name, int variant); diff --git a/src/voices.cpp b/src/voices.cpp index 8ef7d5af..6b6c5a4d 100755 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -365,8 +365,11 @@ void VoiceReset(int tone_only) static int breath_widths[N_PEAKS] = {0,200,200,400,400,400,600,600,600}; // default is: pitch 82,118 - voice->pitch_base = 0x49000; // default, 73 << 12; - voice->pitch_range = 0x0f30; // default = 0x1000 +// voice->pitch_base = 0x49000; // default, 73 << 12; +// voice->pitch_range = 0x0f30; // default = 0x1000 + voice->pitch_base = 0x47000; + voice->pitch_range = 3996; + voice->formant_factor = 256; voice->echo_delay = 0; @@ -1122,7 +1125,7 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s matching_parts += matching; // number of parts which match if(matching_parts == 0) - break; // no matching parts for this language + continue; // no matching parts for this language x = 5; // reduce the score if not all parts of the required language match @@ -1301,8 +1304,8 @@ espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name) -char const *SelectVoice(espeak_VOICE *voice_select) -{//================================================ +char const *SelectVoice(espeak_VOICE *voice_select, int *found) +{//============================================================ // Returns a path within espeak-voices, with a possible +variant suffix // variant is an output-only parameter int nv; // number of candidates @@ -1323,6 +1326,7 @@ char const *SelectVoice(espeak_VOICE *voice_select) static espeak_VOICE voice_variants[N_VOICE_VARIANTS]; static char voice_id[50]; + *found = 1; memcpy(&voice_select2,voice_select,sizeof(voice_select2)); if(n_voices_list == 0) @@ -1366,6 +1370,7 @@ char const *SelectVoice(espeak_VOICE *voice_select) if(nv == 0) { // no matching voice, choose the default + *found = 0; if((voices[0] = SelectVoiceByName(voices_list,"default")) != NULL) nv = 1; } @@ -1639,8 +1644,12 @@ espeak_ERROR SetVoiceByName(const char *name) espeak_ERROR SetVoiceByProperties(espeak_VOICE *voice_selector) {//============================================================ const char *voice_id; + int voice_found; - voice_id = SelectVoice(voice_selector); + voice_id = SelectVoice(voice_selector, &voice_found); + + if(voice_found == 0) + return(EE_NOT_FOUND); LoadVoiceVariant(voice_id,0); DoVoiceChange(voice); diff --git a/src/wavegen.cpp b/src/wavegen.cpp index 9fd7e9e6..7fa22d96 100755 --- a/src/wavegen.cpp +++ b/src/wavegen.cpp @@ -59,7 +59,7 @@ voice_t *wvoice; FILE *f_log = NULL; int option_waveout = 0; -int option_harmonic1 = 11; // 10 +int option_harmonic1 = 10; // 10 int option_log_frames = 0; static int flutter_amp = 64; @@ -252,7 +252,7 @@ static const unsigned char Flutter_tab[N_FLUTTER] = { }; // waveform shape table for HF peaks, formants 6,7,8 -#define N_WAVEMULT 512 +#define N_WAVEMULT 128 static int wavemult_offset=0; static int wavemult_max=0; @@ -266,32 +266,8 @@ static unsigned char wavemult[N_WAVEMULT] = { 218,213,207,201,194,188,181,174,166,159,152,144,136,128,121,113, 105, 98, 90, 83, 76, 69, 62, 55, 49, 43, 37, 32, 27, 22, 18, 14, 11, 8, 5, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - + // set from y = pow(2,x) * 128, x=-1 to 1 unsigned char pitch_adjust_tab[MAX_PITCH_VALUE+1] = { @@ -662,24 +638,31 @@ int WavegenOpenSound() } + int WavegenCloseSound() {//==================== PaError active; // check whether speaking has finished, and close the stream -// if(pa_stream != NULL) - if((pa_stream != NULL) && (WcmdqUsed() == 0)) // TEST, also check that queue is empty + if(pa_stream != NULL) { #if USE_PORTAUDIO == 18 active = Pa_StreamActive(pa_stream); #else active = Pa_IsStreamActive(pa_stream); #endif - if(active == 0) + if(WcmdqUsed() == 0) // also check that the queue is empty { - Pa_CloseStream(pa_stream); - pa_stream = NULL; - return(1); + if(active == 0) + { + Pa_CloseStream(pa_stream); + pa_stream = NULL; + return(1); + } + } + else + { + WavegenOpenSound(); // still items in the queue, shouldn't be closed } } return(0); @@ -901,13 +884,20 @@ int PeaksToHarmspect(wavegen_peaks_t *peaks, int pitch, int *htab, int control) } } - // increase bass, up to the F1 peak - h=1; - x = peaks[1].height * 24; - for(f=pitch; f 0) { - htab[h++] += x; + htab[h++] += y; + y -= x; } +} // find the nearest harmonic for HF peaks where we don't use shape for(; pk>8) > 127) ix = 127; amp = amplitude_env[ix]; amplitude2 = (amplitude2 * amp)/255; - if(amp < 255) - modulation_type = 7; +// if(amp < 255) +// modulation_type = 7; } // introduce roughness into the sound by reducing the amplitude of