lang=hu, shorten "ll". Test: remove differences in vowel lengths depending on the following phoneme. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@64 d46cf337-b52f-0410-862d-fd96e6ae7743master
| // This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
| // Letters | // Letters | ||||
| _a a: | |||||
| á dl'oUhe:,a: | |||||
| b be: | |||||
| c tse: | |||||
| č tSe: | |||||
| ch xa: | |||||
| d de: | |||||
| ď Je: | |||||
| e e: | |||||
| é dl'oUhe:,e: | |||||
| ě ije | |||||
| f ef | |||||
| g ge: | |||||
| h ha: | |||||
| _i i: | |||||
| í dl'oUhe:,i: | |||||
| j je: | |||||
| _k ka: | |||||
| l el | |||||
| ľ el^ | |||||
| ĺ dl'oUhe:,el | |||||
| m em | |||||
| n en | |||||
| ň en^ | |||||
| _o o: | |||||
| ó dl'oUhe:,o: | |||||
| ô uo: | |||||
| p pe: | |||||
| q kve: | |||||
| r eR | |||||
| ř eR^ | |||||
| _s es | |||||
| š eS | |||||
| t te: | |||||
| ť ce: | |||||
| u u: | |||||
| ú dl'oUhe:,u: | |||||
| ů 'u:s_kR'oUZkem | |||||
| _v ve: | |||||
| w dv'ojve: | |||||
| x iks | |||||
| y ipsilon | |||||
| ý dl'oUe:,ipsilon | |||||
| _z zet | |||||
| ž Zet | |||||
| : dv'ojtetSka | |||||
| % pRotsento | |||||
| + plus | |||||
| € eURo | |||||
| @ zavina:tS | |||||
| & ampr-sent | |||||
| # gR^i:Zek | |||||
| / lomeno | |||||
| \\ beksleS | |||||
| ! vigR^itSn^i:k | |||||
| ° stupen^ | |||||
| × kRa:t | |||||
| ÷ Jeleno | |||||
| § paRagRaf | |||||
| ~ tilda | |||||
| ^ zdR^i:Ska | |||||
| © k'opiRajt | |||||
| _$ dola:R | |||||
| _' apostRof | |||||
| _" uvozovki | |||||
| _, tSa:Rka | |||||
| _- mi:nus | |||||
| _; zdR^edn^i:k | |||||
| _= Rovno | |||||
| _* hvjezJitSka | |||||
| _? otazn^i:k | |||||
| __ pottr-Zen^i: | |||||
| _` 'obRa:ts,ena:||tS'a:Rka | |||||
| _( za:voRka | |||||
| _) za:vorkazavR^i:t | |||||
| _[ hR'anata:||z'a:voRka | |||||
| _] hR'anata:||z'avR^i:t | |||||
| _{ sl'oZena:||z'a:voRka | |||||
| _} sl'oZena:||z'avR^i:t | |||||
| _< menSi: | |||||
| _> vjetSi: | |||||
| _| sv'isla:||tS'a:Ra | |||||
| _?? simbol | |||||
| _?A znak | |||||
| _a a: | |||||
| á dl'oUhe:,a: | |||||
| b be: | |||||
| c tse: | |||||
| č tSe: | |||||
| ch xa: | |||||
| d de: | |||||
| ď Je: | |||||
| e e: | |||||
| é dl'oUhe:,e: | |||||
| ě ije | |||||
| f ef | |||||
| g ge: | |||||
| h ha: | |||||
| _i i: | |||||
| í dl'oUhe:,i: | |||||
| j je: | |||||
| _k ka: | |||||
| l el | |||||
| ľ el^ | |||||
| ĺ dl'oUhe:,el | |||||
| m em | |||||
| n en | |||||
| ň en^ | |||||
| _o o: | |||||
| ó dl'oUhe:,o: | |||||
| ô uo: | |||||
| p pe: | |||||
| q kve: | |||||
| r eR | |||||
| ř eR^ | |||||
| _s es | |||||
| š eS | |||||
| t te: | |||||
| ť ce: | |||||
| u u: | |||||
| ú dl'oUhe:,u: | |||||
| ů 'u:s_kR'oUZkem | |||||
| _v ve: | |||||
| w dv'ojve: | |||||
| x iks | |||||
| y ipsilon | |||||
| ý dl'oUe:,ipsilon | |||||
| _z zet | |||||
| ž Zet | |||||
| : dv'ojtetSka | |||||
| % pRotsento | |||||
| + plus | |||||
| € eURo | |||||
| @ zavina:tS | |||||
| & ampr-sent | |||||
| # gR^i:Zek | |||||
| / lomeno | |||||
| \\ beksleS | |||||
| ! vigR^itSn^i:k | |||||
| ° stupen^ | |||||
| × kRa:t | |||||
| ÷ Jeleno | |||||
| § paRagRaf | |||||
| ~ tilda | |||||
| ^ zdR^i:Ska | |||||
| © k'opiRajt | |||||
| _#9 t'ap | |||||
| _#32 m'ezeRa // space | |||||
| _$ dola:R | |||||
| _' apostRof | |||||
| _" uvozovki | |||||
| _, tSa:Rka | |||||
| _- mi:nus | |||||
| _; zdR^edn^i:k | |||||
| _= Rovno | |||||
| _* hvjezJitSka | |||||
| _? otazn^i:k | |||||
| __ pottr-Zen^i: | |||||
| _` 'obRa:ts,ena:||tS'a:Rka | |||||
| _( za:voRka | |||||
| _) za:vorkazavR^i:t | |||||
| _[ hR'anata:||z'a:voRka | |||||
| _] hR'anata:||z'avR^i:t | |||||
| _{ sl'oZena:||z'a:voRka | |||||
| _} sl'oZena:||z'avR^i:t | |||||
| _< menSi: | |||||
| _> vjetSi: | |||||
| _| sv'isla:||tS'a:Ra | |||||
| _?? simbol | |||||
| _?A znak | |||||
| // Numbers | // Numbers | ||||
| _0 n'ula | |||||
| _1 j'eden | |||||
| _2 dv'a | |||||
| _2f dvj'e | |||||
| _3 tR^/i | |||||
| _4 tSt'iR^i | |||||
| _5 p'jet | |||||
| _6 S'est | |||||
| _7 s'edum | |||||
| _8 'osum | |||||
| _9 d'evjet | |||||
| _10 d'eset | |||||
| _11 j'edena:tst | |||||
| _12 dv'ana:tst | |||||
| _13 tR^/'ina:tst | |||||
| _14 tSt'r-na:tst | |||||
| _15 p'atna:tst | |||||
| _16 S'estna:tst | |||||
| _17 s'edumna:tst | |||||
| _18 'osumna:tst | |||||
| _19 d'evatena:tst | |||||
| _2X dv'atset | |||||
| _3X tR^/'itset | |||||
| _4X tSt'iR^itset | |||||
| _5X p'adesa:t | |||||
| _6X S'edesa:t | |||||
| _7X s'edumdesa:t | |||||
| _8X 'osumdesa:t | |||||
| _9X d'evadesa:t | |||||
| _0C s'et | |||||
| _1C st'o | |||||
| _2C dvj'esc'e | |||||
| _3C tR^/'ist'a | |||||
| _4C tStiR^ist'a | |||||
| _1M1 c'isi:ts | |||||
| _0MA1 c'isi:tse | |||||
| _0M1 c'isi:ts | |||||
| _1M2 m'ilio:n | |||||
| _0MA2 m'ilio:ni | |||||
| _0M2 m'ilio:nu: | |||||
| _1M3 m'iliaRda | |||||
| _0MA3 m'iliaRdi | |||||
| _0M3 m'iliaRd | |||||
| _1M4 b'ilio:n | |||||
| _0MA4 b'ilio:ni | |||||
| _0M4 b'ilio:nu: | |||||
| _dpt _:tSa:Rka_ | |||||
| _. tetSka | |||||
| _0 n'ula | |||||
| _1 j'eden | |||||
| _2 dv'a | |||||
| _2f dvj'e | |||||
| _3 tR^/i | |||||
| _4 tSt'iR^i | |||||
| _5 p'jet | |||||
| _6 S'est | |||||
| _7 s'edum | |||||
| _8 'osum | |||||
| _9 d'evjet | |||||
| _10 d'eset | |||||
| _11 j'edena:tst | |||||
| _12 dv'ana:tst | |||||
| _13 tR^/'ina:tst | |||||
| _14 tSt'r-na:tst | |||||
| _15 p'atna:tst | |||||
| _16 S'estna:tst | |||||
| _17 s'edumna:tst | |||||
| _18 'osumna:tst | |||||
| _19 d'evatena:tst | |||||
| _2X dv'atset | |||||
| _3X tR^/'itset | |||||
| _4X tSt'iR^itset | |||||
| _5X p'adesa:t | |||||
| _6X S'edesa:t | |||||
| _7X s'edumdesa:t | |||||
| _8X 'osumdesa:t | |||||
| _9X d'evadesa:t | |||||
| _0C s'et | |||||
| _1C st'o | |||||
| _2C dvj'esc'e | |||||
| _3C tR^/'ist'a | |||||
| _4C tStiR^ist'a | |||||
| _1M1 c'isi:ts | |||||
| _0MA1 c'isi:tse | |||||
| _0M1 c'isi:ts | |||||
| _1M2 m'ilio:n | |||||
| _0MA2 m'ilio:ni | |||||
| _0M2 m'ilio:nu: | |||||
| _1M3 m'iliaRda | |||||
| _0MA3 m'iliaRdi | |||||
| _0M3 m'iliaRd | |||||
| _1M4 b'ilio:n | |||||
| _0MA4 b'ilio:ni | |||||
| _0M4 b'ilio:nu: | |||||
| _dpt _:tSa:Rka_ | |||||
| _. tetSka | |||||
| // Pronouns | // Pronouns |
| _^ sI*kUmflEks | _^ sI*kUmflEks | ||||
| _— g@d'ank@nSt@-*,IC | _— g@d'ank@nSt@-*,IC | ||||
| _#9 t,abu:l'Ato:* | |||||
| _#32 l'e:*ts'aIC@n | |||||
| // Numbers | // Numbers | ||||
| //======== | //======== |
| : ; b c d dZ f g | : ; b c d dZ f g | ||||
| h j k l L m n N | h j k l L m n N | ||||
| n^ p R s S t t2 tS | |||||
| v w z Z z2 | |||||
| n^ p r R s S t t2 | |||||
| tS v w z Z z2 | |||||
| Dictionary hi_dict | Dictionary hi_dict | ||||
| Dictionary ru_dict | Dictionary ru_dict | ||||
| 8 @- A a E e E# E2 | 8 @- A a E e E# E2 | ||||
| E3 i I I# I2 I3 ja ju | |||||
| o O u u" u# V V# y | |||||
| Y | |||||
| E3 i I I# I2 I3 I^ ja | |||||
| ju o O u u" u# V V# | |||||
| y Y | |||||
| * ; b d d; dZ; f g | * ; b d d; dZ; f g | ||||
| j k l l^ m n n^ p | |||||
| r R s S s; S; t t; | |||||
| ts ts; tS; v x z Z z; | |||||
| Z; | |||||
| j k l l^ m m; n n^ | |||||
| p r R s S s; S; t | |||||
| t; ts ts; tS; v x z Z | |||||
| z; Z; | |||||
| Dictionary sk_dict | Dictionary sk_dict |
| mc m@k | mc m@k | ||||
| oem $abbrev | oem $abbrev | ||||
| ok $abbrev | ok $abbrev | ||||
| otoh $abbrev | |||||
| os $abbrev | os $abbrev | ||||
| riscos rIskoUEs | riscos rIskoUEs | ||||
| sae $abbrev | sae $abbrev | ||||
| amount a2maUnt | amount a2maUnt | ||||
| amply amplI2 $verbf | amply amplI2 $verbf | ||||
| anal eIn@L | anal eIn@L | ||||
| analogous a2nal@g@s | |||||
| analog an@l0g | analog an@l0g | ||||
| analogue an@l0g | analogue an@l0g | ||||
| analyses a2nal@si:z | analyses a2nal@si:z | ||||
| definitive dI2fInItIv | definitive dI2fInItIv | ||||
| deity deI@tI2 | deity deI@tI2 | ||||
| deja deIZA: $only | deja deIZA: $only | ||||
| deli dElI2 | |||||
| deliberate dI2lIb@r@t | deliberate dI2lIb@r@t | ||||
| delicate dElIk@t | delicate dElIk@t | ||||
| delimit dI2lImIt // delimited | delimit dI2lImIt // delimited | ||||
| demolish dI2m0lIS | demolish dI2m0lIS | ||||
| demon di:m@n | demon di:m@n | ||||
| demo dEmoU | demo dEmoU | ||||
| demonstrative $2 | |||||
| denouement deIn'u:mO~ | denouement deIn'u:mO~ | ||||
| denier dI2naI3 | denier dI2naI3 | ||||
| deny dI2naI | deny dI2naI | ||||
| fishnet fISnEt | fishnet fISnEt | ||||
| fiord fi:O@d | fiord fi:O@d | ||||
| fix fIks // for fixer | fix fIks // for fixer | ||||
| flagellum fla2dZEl@m | |||||
| flexible flEksIb@L | flexible flEksIb@L | ||||
| flier flaI3 | flier flaI3 | ||||
| flourish flVrI2S | flourish flVrI2S | ||||
| heroe hi@oU | heroe hi@oU | ||||
| heroic hI2roUIk | heroic hI2roUIk | ||||
| heroin hEroUIn | heroin hEroUIn | ||||
| heroism hEroUIz@m | |||||
| heroine hEroUIn | heroine hEroUIn | ||||
| herpes h3:pi:z | herpes h3:pi:z | ||||
| hideout haIdaUt | hideout haIdaUt | ||||
| reply rI2plaI // for replied | reply rI2plaI // for replied | ||||
| repost r,i:p'oUst | repost r,i:p'oUst | ||||
| reprisal rI2praIz@L | reprisal rI2praIz@L | ||||
| reputable rEpju:t@b@L | |||||
| reputation rEpju:t'eIS@n | reputation rEpju:t'eIS@n | ||||
| requiem rEkwIEm | requiem rEkwIEm | ||||
| rescue 'rEskju: | rescue 'rEskju: | ||||
| Sarah se@r@ | Sarah se@r@ | ||||
| Seamus SeIm@s | Seamus SeIm@s | ||||
| Sean SO:n | Sean SO:n | ||||
| Sebastian $2 | |||||
| Sheila Si:l@ | Sheila Si:l@ | ||||
| Sonia s0nj@ | Sonia s0nj@ | ||||
| Sophie soUfI2 | Sophie soUfI2 |
| fils fis | fils fis | ||||
| haillon _|ajO~ | haillon _|ajO~ | ||||
| haricot _|aRiko | haricot _|aRiko | ||||
| haricots _|aRikoz2 | |||||
| imprudent E~pRydA~ | imprudent E~pRydA~ | ||||
| juin ZwE~ | juin ZwE~ | ||||
| mars maRs | mars maRs | ||||
| vincent vE~sA~ | vincent vE~sA~ | ||||
| // Numbers | // Numbers | ||||
| _0 nullA | |||||
| _1 EJ | |||||
| _2 kEttY: | |||||
| _3 ha:R2om | |||||
| _4 ne:J | |||||
| _5 Yt | |||||
| _6 hAt | |||||
| _7 he:t | |||||
| _8 n^olts | |||||
| _9 kilEnts | |||||
| _10 ti:z | |||||
| _1X tizEn | |||||
| _20 hu:s | |||||
| _2X huson | |||||
| _3X hAR2mints | |||||
| _4X nEJvEn | |||||
| _5X YtvEn | |||||
| _6X hAtvAn | |||||
| _7X hEtvEn | |||||
| _8X n^oltsvAn | |||||
| _9X kilEntsvEn | |||||
| _0C sa:z | |||||
| _1C sa:z | |||||
| _0M1 EzER2 | |||||
| _1M1 EzER2 | |||||
| _2M1 ke:tEzER2 | |||||
| _0M2 millio: | |||||
| _1M2 millio: | |||||
| _2M2 ke:tmillio: | |||||
| _0M3 millia:R2d | |||||
| _1M3 millia:R2d | |||||
| _2M3 ke:tmillia:R2d | |||||
| _0M4 billio: | |||||
| _1M4 billio: | |||||
| _2M4 ke:tbillio: | |||||
| _dpt ||_vEss2Y:_ | |||||
| _0 nullA | |||||
| _1 EJ | |||||
| _2 kEttY: | |||||
| _3 ha:R2om | |||||
| _4 ne:J | |||||
| _5 Yt | |||||
| _6 hAt | |||||
| _7 he:t | |||||
| _8 n^olts | |||||
| _9 kilEnts | |||||
| _10 ti:z | |||||
| _1X tizEn | |||||
| _20 hu:s | |||||
| _2X huson | |||||
| _3X hAR2mints | |||||
| _4X nEJvEn | |||||
| _5X YtvEn | |||||
| _6X hAtvAn | |||||
| _7X hEtvEn | |||||
| _8X n^oltsvAn | |||||
| _9X kilEntsvEn | |||||
| _0C sa:z | |||||
| _1C sa:z | |||||
| _0M1 EzER2 | |||||
| _1M1 EzER2 | |||||
| _2M1 ke:tEzER2 | |||||
| _0M2 millio: | |||||
| _1M2 millio: | |||||
| _2M2 ke:tmillio: | |||||
| _0M3 millia:R2d | |||||
| _1M3 millia:R2d | |||||
| _1M3 ke:tmillia:R2d | |||||
| _0M4 billio: | |||||
| _1M4 billio: | |||||
| _2M4 ke:tbillio: | |||||
| _dpt ||_vEss2Y:_ | |||||
| // Abbreviations | // Abbreviations | ||||
| km kilo:me:tER2 | km kilo:me:tER2 | ||||
| mm milime:tER2 | |||||
| mm milime:tER2 | |||||
| a.m An^n^i||m'int $dot | a.m An^n^i||m'int $dot | ||||
| dr doktoR2 $dot | dr doktoR2 $dot | ||||
| // Conjunctions | // Conjunctions | ||||
| és $u $pause $strend2 // and | |||||
| és $u $strend2 // and | |||||
| de $u+ $pause // but | de $u+ $pause // but | ||||
| vagy $u+ $pause // or | vagy $u+ $pause // or | ||||
| mert $pause // because | |||||
| miatt $pause // because | |||||
| bár $pause // although | |||||
| habár $pause // although | |||||
| mert $u $pause // because | |||||
| miatt $u // because | |||||
| bár $u $pause // although | |||||
| habár $u $pause // although | |||||
| ha $u $pause // if | ha $u $pause // if | ||||
| noha $u $pause // even thought | noha $u $pause // even thought | ||||
| nem $alt2 $strend | nem $alt2 $strend | ||||
| ne $u+ | ne $u+ | ||||
| e $u // "-e" question | |||||
| e $atend // stressed at end of sentence | |||||
| // Unstressed adverbs prepositions etc. | // Unstressed adverbs prepositions etc. | ||||
| néhány $u+ | néhány $u+ | ||||
| is $u // also | is $u // also | ||||
| höz $u | höz $u | ||||
| ig $u // up to | ig $u // up to | ||||
| ik $u // -th | ik $u // -th | ||||
| nak $u // of, him/her | |||||
| nak $u // of, him/her | |||||
| nek $u | nek $u | ||||
| nál $u // by | nál $u // by | ||||
| nél $u | nél $u | ||||
| ra $u // onto | ra $u // onto | ||||
| re $u | re $u | ||||
| ról $u // from top of, about | ról $u // from top of, about | ||||
| röl $u | |||||
| röl $u | |||||
| ről $u | ről $u | ||||
| szer $u | szer $u | ||||
| szor $u // times | szor $u // times | ||||
| szór $u | |||||
| szór $u | |||||
| ször $u | ször $u | ||||
| tól $u // from | |||||
| töl $u | |||||
| tól $u // from | |||||
| töl $u | |||||
| től $u | től $u | ||||
| val $u // with | val $u // with | ||||
| vel $u | vel $u | ||||
| án $u // on that day | án $u // on that day | ||||
| é $u // his, her | |||||
| éi $u // his, her multiple | |||||
| é $u // his, her | |||||
| éi $u // his, her multiple | |||||
| én $u | én $u | ||||
| ón $u | ón $u | ||||
| ós $u | ós $u | ||||
| sok $u // many | sok $u // many | ||||
| kevés $u // few | kevés $u // few | ||||
| se $u $pause // neither | |||||
| sem $u $pause // nor | |||||
| miatt $u $pause // because | |||||
| se $u // neither | |||||
| sem $u // nor | |||||
| be $u //into | be $u //into | ||||
| c tse: | c tse: | ||||
| d de: | d de: | ||||
| _e E | _e E | ||||
| e $atend // stressed at end of sentence | |||||
| f Eff | f Eff | ||||
| g ge: | g ge: | ||||
| h ha: | h ha: |
| szé) ch tS | szé) ch tS | ||||
| _zi) ch (y tS | _zi) ch (y tS | ||||
| c (szín tS | |||||
| dA) c (sz ts | dA) c (sz ts | ||||
| kilen) c (sz ts | kilen) c (sz ts | ||||
| kvar) c (sz ts | kvar) c (sz ts | ||||
| ly j | ly j | ||||
| lly jj | lly jj | ||||
| A) lj (A lj_| | |||||
| C) ly (_ li | C) ly (_ li | ||||
| _kéth) ly li | _kéth) ly li | ||||
| szamue) lly lli | szamue) lly lli | ||||
| sz s | sz s | ||||
| ssz ss2 | ssz ss2 | ||||
| s (színű S | |||||
| hel) s (inki z | hel) s (inki z | ||||
| ki) s (ebb SS | ki) s (ebb SS | ||||
| _má) s (szó S | |||||
| _munká) s S | _munká) s S | ||||
| _o) slo slo: | _o) slo slo: | ||||
| _o) sló slo: | _o) sló slo: | ||||
| má) zc (sz z | má) zc (sz z | ||||
| mé) zc (sz z | mé) zc (sz z | ||||
| nehé) z (sé z | nehé) z (sé z | ||||
| szá) z (sz z | |||||
| tű) z (sz z | tű) z (sz z | ||||
| ví) z (sz z | ví) z (sz z | ||||
| tor) z (szülött z | tor) z (szülött z |
| .group м | .group м | ||||
| _) м (_ Em | _) м (_ Em | ||||
| м (ь m; | |||||
| м (ь m;I^ | |||||
| м (Y m; | м (Y m; | ||||
| м (бь m; | м (бь m; | ||||
| м (бY m; | м (бY m; |
| * GNU General Public License for more details. * | * GNU General Public License for more details. * | ||||
| * * | * * | ||||
| * You should have received a copy of the GNU General Public License * | * You should have received a copy of the GNU General Public License * | ||||
| * along with this program; if not, write see: * | |||||
| * along with this program; if not, see: * | |||||
| * <http://www.gnu.org/licenses/>. * | * <http://www.gnu.org/licenses/>. * | ||||
| ***************************************************************************/ | ***************************************************************************/ | ||||
| sometimes be zero (which does NOT indicate end of synthesis). | sometimes be zero (which does NOT indicate end of synthesis). | ||||
| events: an array of espeak_EVENT items which indicate word and sentence events, and | events: an array of espeak_EVENT items which indicate word and sentence events, and | ||||
| also the occurance if <mark> and <audio> elements within the text. | |||||
| also the occurance if <mark> and <audio> elements within the text. The list of | |||||
| events is terminated by an event of type = 0. | |||||
| Callback returns: 0=continue synthesis, 1=abort synthesis. | Callback returns: 0=continue synthesis, 1=abort synthesis. |
| fr 35 118 | fr 35 118 | ||||
| fr_ca 11 118 | fr_ca 11 118 | ||||
| hi 50 132 | hi 50 132 | ||||
| hu 22 112 | |||||
| hu 23 112 | |||||
| nl 26 117 | nl 26 117 | ||||
| pl 15 107 | pl 15 107 | ||||
| sk 29 125 | sk 29 125 | ||||
| hr 19 129 | hr 19 129 | ||||
| mk 21 130 | mk 21 130 | ||||
| sr 2 129 | sr 2 129 | ||||
| ru 36 124 | |||||
| ru 38 126 | |||||
| it 17 117 | it 17 117 | ||||
| la 21 114 | la 21 114 | ||||
| es 6 114 | es 6 114 | ||||
| 1 l^/j2u base | 1 l^/j2u base | ||||
| 1 l^/_l^ base | 1 l^/_l^ base | ||||
| 1 l^/l^ base | 1 l^/l^ base | ||||
| 8 l/l base en af sk ru la pt ro | |||||
| 10 l/_l base en af de sk ru la pt ro | |||||
| 9 l/l base en af hu sk ru la pt ro | |||||
| 11 l/_l base en af de hu sk ru la pt ro | |||||
| 1 l/l_ base | 1 l/l_ base | ||||
| 2 l/l@ base | 2 l/l@ base | ||||
| 1 l/L1_aL base | 1 l/L1_aL base | ||||
| 4 l/l_long base fr la ro | 4 l/l_long base fr la ro | ||||
| 2 l/lo base | 2 l/lo base | ||||
| 2 l/lu base | 2 l/lu base | ||||
| 8 l/tl base en af sk ru la pt ro | |||||
| 9 l/tl base en af hu sk ru la pt ro | |||||
| 6 l/xl base | 6 l/xl base | ||||
| 2 m/_m base ro | |||||
| 2 m/m_ base ro | |||||
| 3 m/_m base ru ro | |||||
| 3 m/m_ base ru ro | |||||
| 1 m/m@ base | 1 m/m@ base | ||||
| 1 m/m#_ is | 1 m/m#_ is | ||||
| 1 m/ma base | 1 m/ma base | ||||
| 1 m/me base | 1 m/me base | ||||
| 1 m/mi base | 1 m/mi base | ||||
| 2 m/mj base ro | |||||
| 3 m/mj base ru ro | |||||
| 1 m/mo base | 1 m/mo base | ||||
| 1 m/mu base | 1 m/mu base | ||||
| 1 n^/_n^ base | 1 n^/_n^ base | ||||
| 1 vwl_no/u#2 no | 1 vwl_no/u#2 no | ||||
| 1 vwl_no/y# no | 1 vwl_no/y# no | ||||
| 1 vwl_no/y#y no | 1 vwl_no/y#y no | ||||
| 1 vwl_ro/ii- ro | |||||
| 2 vwl_ro/ii- ru ro | |||||
| 1 vwl_ro/li ro | 1 vwl_ro/li ro | ||||
| 1 vwl_ro/mi ro | |||||
| 2 vwl_ro/mi ru ro | |||||
| 1 vwl_ro/ni ro | 1 vwl_ro/ni ro | ||||
| 1 vwl_ru/8 ru | 1 vwl_ru/8 ru | ||||
| 1 vwl_ru/a ru | 1 vwl_ru/a ru |
| switchvoicing z | switchvoicing z | ||||
| endphoneme | endphoneme | ||||
| phoneme l | |||||
| liquid | |||||
| length 100 | |||||
| lengthmod 7 | |||||
| beforenotvowel l/ | |||||
| formants l/l | |||||
| after _ l/_l | |||||
| after t l/tl | |||||
| // after l/ l/l_long // double l, make it longer | |||||
| endphoneme | |||||
| endphoneme | endphoneme | ||||
| phoneme I^ // "silent i", palatilizes the preceding consonant | |||||
| vowel starttype (i) endtype (i) | |||||
| length 70 | |||||
| unstressed nonsyllabic | |||||
| formants vwl_ro/ii- | |||||
| beforevowel ; | |||||
| after m; vwl_ro/mi | |||||
| endphoneme | |||||
| phoneme m; | |||||
| vcd blb nasal | |||||
| vowelout f1=2 f2=1000 -500 -350 f3=200 80 brk colr=1 | |||||
| starttype m endtype m | |||||
| length 100 | |||||
| lengthmod 4 | |||||
| formants NULL | |||||
| after _ m/_m | |||||
| before _ m/m_ | |||||
| before (r) m/mj | |||||
| endphoneme | |||||
| //******************************************************************* | //******************************************************************* | ||||
| // VOWELS | // VOWELS |
| phoneme @- // very short schwa | phoneme @- // very short schwa | ||||
| vowel | |||||
| vowel nonsyllabic | |||||
| starttype (@) endtype (@) | starttype (@) endtype (@) | ||||
| formants vowel/@- | formants vowel/@- | ||||
| unstressed | unstressed |
| {"palatal", 0x2000000+phPALATAL}, | {"palatal", 0x2000000+phPALATAL}, | ||||
| {"long", 0x2000000+phLONG}, | {"long", 0x2000000+phLONG}, | ||||
| {"brkafter", 0x2000000+phBRKAFTER}, | {"brkafter", 0x2000000+phBRKAFTER}, | ||||
| {"nonsyllabic",0x2000000+phNONSYLLABIC}, | |||||
| // voiced / unvoiced | // voiced / unvoiced | ||||
| {"vcd", 0x2000000+phVOICED}, | {"vcd", 0x2000000+phVOICED}, |
| continue; | continue; | ||||
| } | } | ||||
| if((ph->type == phVOWEL) && (ph->code != phonSCHWA_SHORT)) | |||||
| if((ph->type == phVOWEL) && !(ph->phflags & phNONSYLLABIC)) | |||||
| { | { | ||||
| vowel_stress[count] = (char)stress; | vowel_stress[count] = (char)stress; | ||||
| if((stress >= 4) && (stress >= max_stress)) | if((stress >= 4) && (stress >= max_stress)) | ||||
| p = phonetic; | p = phonetic; | ||||
| while(*p != 0) | while(*p != 0) | ||||
| { | { | ||||
| if((phoneme_tab[*p]->type == phVOWEL) && (*p != phonSCHWA_SHORT)) | |||||
| if((phoneme_tab[*p]->type == phVOWEL) && !(phoneme_tab[*p]->phflags & phNONSYLLABIC)) | |||||
| { | { | ||||
| if(vowel_stress[ix] != 0) | if(vowel_stress[ix] != 0) | ||||
| *word++ = stress_phonemes[vowel_stress[ix]]; | *word++ = stress_phonemes[vowel_stress[ix]]; | ||||
| ix = 1; | ix = 1; | ||||
| for(p = phonetic; *p != 0; p++) | for(p = phonetic; *p != 0; p++) | ||||
| { | { | ||||
| if((phoneme_tab[p[0]]->type == phVOWEL) && (p[0] != phonSCHWA_SHORT)) | |||||
| if((phoneme_tab[p[0]]->type == phVOWEL) && !(phoneme_tab[p[0]]->phflags & phNONSYLLABIC)) | |||||
| { | { | ||||
| int weight = 0; | int weight = 0; | ||||
| int lengthened = 0; | int lengthened = 0; | ||||
| prev_last_stress = 0; | prev_last_stress = 0; | ||||
| } | } | ||||
| else | else | ||||
| if(((ph->type == phVOWEL) && (ph->code != phonSCHWA_SHORT)) || (*p == phonSYLLABIC)) | |||||
| if(((ph->type == phVOWEL) && !(ph->phflags & phNONSYLLABIC)) || (*p == phonSYLLABIC)) | |||||
| { | { | ||||
| // a vowel, or a consonant followed by a syllabic consonant marker | // a vowel, or a consonant followed by a syllabic consonant marker | ||||
| void DecodePhonemes2(const char *inptr, char *outptr) | |||||
| static void DecodePhonemes2(const char *inptr, char *outptr) | |||||
| //=================================================== | //=================================================== | ||||
| // Translate from internal phoneme codes into phoneme mnemonics | // Translate from internal phoneme codes into phoneme mnemonics | ||||
| // This version is for Lexicon_De() | |||||
| { | { | ||||
| unsigned char phcode; | unsigned char phcode; | ||||
| unsigned char c; | unsigned char c; | ||||
| } | } | ||||
| } | } | ||||
| *outptr = 0; /* string terminator */ | *outptr = 0; /* string terminator */ | ||||
| } // end of DecodePhonemes | |||||
| } // end of DecodePhonemes2 | |||||
| void Lexicon_De() | void Lexicon_De() |
| #define phBEFORENOTVOWEL 0x0c00 | #define phBEFORENOTVOWEL 0x0c00 | ||||
| #define phSWITCHVOICING 0x0800 | #define phSWITCHVOICING 0x0800 | ||||
| #define phNONSYLLABIC 0x100000 // don't count this vowel as a syllable when finding the stress position | |||||
| // fixed phoneme code numbers, these can be used from the program code | // fixed phoneme code numbers, these can be used from the program code | ||||
| #define phonCONTROL 1 | #define phonCONTROL 1 | ||||
| #define phonSTRESS_U 2 | #define phonSTRESS_U 2 |
| if(option_phoneme_input) | if(option_phoneme_input) | ||||
| { | { | ||||
| if(phoneme_mode > 0) | |||||
| phoneme_mode--; | |||||
| else | |||||
| if((c1 == '[') && (c2 == '[')) | if((c1 == '[') && (c2 == '[')) | ||||
| phoneme_mode = 1; // input is phoneme mnemonics, so don't look for punctuation | |||||
| phoneme_mode = -1; // input is phoneme mnemonics, so don't look for punctuation | |||||
| else | else | ||||
| if((c1 == ']') && (c2 == ']')) | if((c1 == ']') && (c2 == ']')) | ||||
| phoneme_mode = 0; | |||||
| phoneme_mode = 2; // set phoneme_mode to zero after the next two characters | |||||
| } | } | ||||
| if(c1 == '\n') | if(c1 == '\n') | ||||
| linelength = 0; | linelength = 0; | ||||
| } | } | ||||
| if(option_punctuation && (phoneme_mode==0) && iswpunct(c1)) | |||||
| if(option_punctuation && (phoneme_mode==0) && (sayas_mode==0) && iswpunct(c1)) | |||||
| { | { | ||||
| // option is set to explicitly speak punctuation characters | // option is set to explicitly speak punctuation characters | ||||
| // if a list of allowed punctuation has been set up, check whether the character is in it | // if a list of allowed punctuation has been set up, check whether the character is in it |
| end_of_clause = 0; | end_of_clause = 0; | ||||
| for(p2 = p+1; p2->newword== 0; p2++) | for(p2 = p+1; p2->newword== 0; p2++) | ||||
| { | { | ||||
| if(p2->type == phVOWEL) | |||||
| if((p2->type == phVOWEL) && !(p2->ph->phflags & phNONSYLLABIC)) | |||||
| more_syllables++; | more_syllables++; | ||||
| } | } | ||||
| if((p2->newword & 2) && (more_syllables==0)) | if((p2->newword & 2) && (more_syllables==0)) |
| char path_home[120]; | char path_home[120]; | ||||
| char wavefile[120]; | char wavefile[120]; | ||||
| int (* uri_callback)(int, const char *, const char *) = NULL; | int (* uri_callback)(int, const char *, const char *) = NULL; | ||||
| int (* phoneme_callback)(const char *) = NULL; | |||||
| static const char *help_text = | static const char *help_text = |
| static int synchronous_mode = 1; | static int synchronous_mode = 1; | ||||
| t_espeak_callback* synth_callback = NULL; | t_espeak_callback* synth_callback = NULL; | ||||
| int (* uri_callback)(int, const char *, const char *) = NULL; | int (* uri_callback)(int, const char *, const char *) = NULL; | ||||
| int (* phoneme_callback)(const char *) = NULL; | |||||
| char path_home[120]; | char path_home[120]; | ||||
| uri_callback = UriCallback; | uri_callback = UriCallback; | ||||
| } | } | ||||
| ESPEAK_API void espeak_SetPhonemeCallback(int (* PhonemeCallback)(const char*)) | |||||
| {//=========================================================================== | |||||
| phoneme_callback = PhonemeCallback; | |||||
| } | |||||
| ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output_type, int buf_length, const char *path, int options) | ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output_type, int buf_length, const char *path, int options) | ||||
| {//============================================================================================================= | {//============================================================================================================= | ||||
| ENTER("espeak_Initialize"); | ENTER("espeak_Initialize"); |
| sometimes be zero (which does NOT indicate end of synthesis). | sometimes be zero (which does NOT indicate end of synthesis). | ||||
| events: an array of espeak_EVENT items which indicate word and sentence events, and | events: an array of espeak_EVENT items which indicate word and sentence events, and | ||||
| also the occurance if <mark> and <audio> elements within the text. | |||||
| also the occurance if <mark> and <audio> elements within the text. The list of | |||||
| events is terminated by an event of type = 0. | |||||
| Callback returns: 0=continue synthesis, 1=abort synthesis. | Callback returns: 0=continue synthesis, 1=abort synthesis. | ||||
| espeakSSML Elements within < > are treated as SSML elements, or if not recognised are ignored. | espeakSSML Elements within < > are treated as SSML elements, or if not recognised are ignored. | ||||
| espeakPHONEMES Text within [[ ]] is treated as phonemes codes (in espeak's Hirschenbaum encoding). | |||||
| espeakPHONEMES Text within [[ ]] is treated as phonemes codes (in espeak's Hirshenbaum encoding). | |||||
| espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then | espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then | ||||
| this pause is suppressed. | this pause is suppressed. |
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.27.08 09.Jul.07"; | |||||
| const char *version_string = "1.27.09 12.Jul.07"; | |||||
| const int version_phdata = 0x012701; | const int version_phdata = 0x012701; | ||||
| int option_device_number = -1; | int option_device_number = -1; |
| { | { | ||||
| fprintf(f_trans,"%s\n",translator->phon_out); | fprintf(f_trans,"%s\n",translator->phon_out); | ||||
| } | } | ||||
| if(phoneme_callback != NULL) | |||||
| { | |||||
| phoneme_callback(translator->phon_out); | |||||
| } | |||||
| translator->CalcPitches(clause_tone); | translator->CalcPitches(clause_tone); | ||||
| translator->CalcLengths(); | translator->CalcLengths(); | ||||
| // tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x4; // don't propagate over word boundaries | // tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x4; // don't propagate over word boundaries | ||||
| tr->langopts.param[LOPT_IT_DOUBLING] = 1; | tr->langopts.param[LOPT_IT_DOUBLING] = 1; | ||||
| tr->langopts.param[LOPT_COMBINE_WORDS] = 99; // combine some prepositions with the following word | tr->langopts.param[LOPT_COMBINE_WORDS] = 99; // combine some prepositions with the following word | ||||
| tr->langopts.long_stop = 130; | |||||
| tr->langopts.numbers = 0x1809 + NUM_ROMAN; | tr->langopts.numbers = 0x1809 + NUM_ROMAN; | ||||
| SetLetterVowel(tr,'y'); | SetLetterVowel(tr,'y'); | ||||
| tr->langopts.spelling_stress = 1; | tr->langopts.spelling_stress = 1; | ||||
| //SetLengthMods(tr,3); // all equal | |||||
| SetLengthMods(tr,3); // all equal | |||||
| } | } | ||||
| break; | break; | ||||
| extern wchar_t *p_wchar_input; | extern wchar_t *p_wchar_input; | ||||
| extern int ungot_char; | extern int ungot_char; | ||||
| extern int (* uri_callback)(int, const char *, const char *); | extern int (* uri_callback)(int, const char *, const char *); | ||||
| extern int (* phoneme_callback)(const char *); | |||||
| extern void SetLengthMods(Translator *tr, int value); | extern void SetLengthMods(Translator *tr, int value); | ||||
| Translator *SelectTranslator(const char *name); | Translator *SelectTranslator(const char *name); |