Browse Source

1.46.11

master
Reece Dunn 13 years ago
parent
commit
812bd35f73

+ 35
- 8
dictsource/en_list View File

// ?8 Use full vowel, not schwa in some word endings // ?8 Use full vowel, not schwa in some word endings


// $alt use strong ending // $alt use strong ending
// $alt2 use weak ending




// letter names, as they are spoken as a single character in text // letter names, as they are spoken as a single character in text
_18 'eIti:n _18 'eIti:n
_19 n'aInti:n _19 n'aInti:n
_2X tw'Enti _2X tw'Enti
?3 _2X tw'Eni
_3X T'3:ti _3X T'3:ti
?5 _3X T'IRti ?5 _3X T'IRti
_4X f'o@ti _4X f'o@ti
?7 _7X s'@v@nti ?7 _7X s'@v@nti
_8X 'eIti _8X 'eIti
_9X n'aInti _9X n'aInti

_0C h'Vndr@d _0C h'Vndr@d
_0M1 T'aUz@nd _0M1 T'aUz@nd
_0M2 m'Ili@n _0M2 m'Ili@n
askew a#skju: askew a#skju:
ass as ass as
assess a#sEs assess a#sEs
asus eIs@s
atlas atl@s atlas atl@s
atop a#t0p atop a#t0p
attache at'aSeI $only attache at'aSeI $only
bizzare bIz'A@ bizzare bIz'A@
blancmange bl@m0nZ blancmange bl@m0nZ
blase blA:zeI blase blA:zeI
bleh blEh
blockade $2 blockade $2
blouse blaUz blouse blaUz
bluest blu:@st bluest blu:@st
caprice ka#pr'i:s caprice ka#pr'i:s
caramel kar@mEl caramel kar@mEl
caravan kar@van caravan kar@van
carburetor kA@b@r'Et3
?3 carburetor kA@b@reIt3
career k@r'i@3 career k@r'i@3
caress k@rEs caress k@rEs
carpel kA@p@l carpel kA@p@l
cascade $2 cascade $2
cashier kaS'i@3
cashmere kaSm'i@3 cashmere kaSm'i@3
catastrophe ka#tastr@f%i catastrophe ka#tastr@f%i
catarrh k@tA@ catarrh k@tA@
charade Sa#rA:d charade Sa#rA:d
charismatic karIsm'atIk charismatic karIsm'atIk
charit tSarIt // charitable charit tSarIt // charitable
charlatan SA@l@t@n
chassis SaSi
chateau SatoU chateau SatoU
chemise SEm'i:z chemise SEm'i:z
chevrolet SEvr@leI chevrolet SEvr@leI
corporal kO@pr@L corporal kO@pr@L
corporate kO@p@r@t corporate kO@p@r@t
corps kO@ $only corps kO@ $only
corral k@r'al
cosmos k0zm0s cosmos k0zm0s
countered kaUnt3d countered kaUnt3d
coupon ku:p0n coupon ku:p0n
edwardian Edw'O@di@n edwardian Edw'O@di@n
efile i:faIl efile i:faIl
egg Eg // egging egg Eg // egging
egregious Igr'i:dZ@s
eh eI eh eI
eid i:d eid i:d
el ,El $only el ,El $only
élite Il'i:t élite Il'i:t
embed Emb'Ed embed Emb'Ed
ember Emb3 ember Emb3
emphasis Emf@sIs
empire $1 empire $1
emu i:mju: emu i:mju:
enroute 0nr'u:t enroute 0nr'u:t
famine famIn famine famIn
farewell $2 farewell $2
fasten faas@n fasten faas@n
fatigue fa#ti:g
fathom faD@m fathom faD@m
(faux pas) f'oU||p'A: (faux pas) f'oU||p'A:
favorite feIv@-rI2t // sp. favorite feIv@-rI2t // sp.
forever $2 forever $2
forewarn $2 forewarn $2
formid fO@m'Id // formidable formid fO@m'Id // formidable
formica fO@m'aIk@
fortunate fO@tS@n@t fortunate fO@tS@n@t
fortune fO@tSu:n fortune fO@tSu:n
foyer fOIeI foyer fOIeI
gimme gImi gimme gImi
giraffe dZI2raaf giraffe dZI2raaf
goin ,goUI2n $only // for goin' goin ,goUI2n $only // for goin'
gonna g,@n@
goodbye $2 goodbye $2
goodday $2 goodday $2
goodnight $2 goodnight $2
huzzah h@z'A: huzzah h@z'A:
hyperbola haIp'3:b@l@ hyperbola haIp'3:b@l@
hyperbole haIp'3:b@li hyperbole haIp'3:b@li
hypothesis haIp'0T@sIs
hypotheses haIp'0T@si:z
hypotenuse haIp'0t@nju:s hypotenuse haIp'0t@nju:s
hypoxia haIp'0ksi@ hypoxia haIp'0ksi@


iconbar aIk0nbA@ iconbar aIk0nbA@
idly aIdlI idly aIdlI
ignoramus Igno@r'eIm@s ignoramus Igno@r'eIm@s
illiterate $alt2
imagine I2madZI2n imagine I2madZI2n
impedance Imp'i:d@ns impedance Imp'i:d@ns
imperative Imp'Er@tIv imperative Imp'Er@tIv
landowner l'and,oUn3 landowner l'and,oUn3
las ,las $only las ,las $only
?3 las ,lA:s $only ?3 las ,lA:s $only
lasagne l@zanj@
lasagna l@zanj@
laser leIz3 laser leIz3
lasso las'u: lasso las'u:
latte lateI latte lateI
linen lInI2n linen lInI2n
liqueur lI2kjU@ liqueur lI2kjU@
liter li:t3 liter li:t3
literate $alt2
literature lItrI2tS3 literature lItrI2tS3
live laIv $onlys live laIv $onlys
live lIv $verb live lIv $verb
meadow mEdoU meadow mEdoU
mediaeval mEdI'i:v@L mediaeval mEdI'i:v@L
medicine mEds@n medicine mEds@n
melee mEleI
?3 melee meIleI
melon mEl@n melon mEl@n
menus mEnju:z menus mEnju:z
memo mEmoU memo mEmoU


naif naI'i:f naif naI'i:f
naïve naI'i:v naïve naI'i:v
naivete naI'i:v@teI
naked neIkI#d naked neIkI#d
nasa nasa# nasa nasa#
nascent neIs@nt nascent neIs@nt
panacea pana#s'i:@ panacea pana#s'i:@
panache $2 panache $2
pancreas pankri@s pancreas pankri@s
papaya pa#paI;@
parabola p@rab@l@ parabola p@rab@l@
paralysis p@ral@sIs paralysis p@ral@sIs
parameter p@ramI2t3 parameter p@ramI2t3
radar reIdA@ radar reIdA@
radish radIS radish radIS
ragged ragI#d ragged ragI#d
raiment reIm@nt
rainforest r'eInf,0rI2st rainforest r'eInf,0rI2st
rajah rA:dZA: rajah rA:dZA:
rapier reIpi@3 rapier reIpi@3
sofa soUf@ sofa soUf@
soiree swA:reI soiree swA:reI
sojourn soUdZ3:n sojourn soUdZ3:n
solder s0ld3
soldier soUldZ3 soldier soUldZ3
solemn s0l@m solemn s0l@m
solicit s@lIsI2t // solicited,ing solicit s@lIsI2t // solicited,ing
souvenir su:v@n'i@3 souvenir su:v@n'i@3
sorbet sO@beI sorbet sO@beI
soyabean sOI@bi:n soyabean sOI@bi:n
spaghetti spag'Eti
spaghetti spa#gEti
spasm spas@m spasm spas@m
specific sp@sIfIk specific sp@sIfIk
specimen spEsI2m@n specimen spEsI2m@n
suspect $verb suspect $verb
symbol sImb@L symbol sImb@L
sync sINk sync sINk
synthesis sInT@sIs $only
synthesise sInT@saIz


tableau tabloU tableau tabloU
tablet tabl@t tablet tabl@t
Cincinnati sInsIn'ati Cincinnati sInsIn'ati
Cologne k@loUn Cologne k@loUn
Columbus $2 Columbus $2
Congo $1
Congo k0NgoU
Connecticut k@nEtI2k@t Connecticut k@nEtI2k@t
Copenhagen koUp@nh'eIg@n Copenhagen koUp@nh'eIg@n
Cruz kru:z Cruz kru:z
Cyprus saIpr@s Cyprus saIpr@s
Dahomey $2 Dahomey $2
Dallas dal@s
Damascus da#mask@s Damascus da#mask@s
Dakota da#koUt@ Dakota da#koUt@
Danish deInIS Danish deInIS
Lois loUIs Lois loUIs
Louis lu:i Louis lu:i
Louise lu:w'i:z Louise lu:w'i:z
Luigi lu:'i:dZi
Luis lu:Is Luis lu:Is
Lupe lu:peI Lupe lu:peI
Madeline mad@lI2n Madeline mad@lI2n
Maurice m0rIs Maurice m0rIs
Mavis meIvIs Mavis meIvIs
Megan mEg@n Megan mEg@n
Melissa $2
Melissa m@lIs@
Michele mI2SEl Michele mI2SEl
Michelle mI2SEl Michelle mI2SEl
Miguel mi:Q'El Miguel mi:Q'El
Pandora $2 Pandora $2
Patricia pa#trIS@ Patricia pa#trIS@
Penelope p@nEl@pi Penelope p@nEl@pi
Persephone p3s'Ef@ni
Phoebe fi:bi: Phoebe fi:bi:
Rachael reItS@L Rachael reItS@L
Rachel reItS@L Rachel reItS@L
Rees ri:s Rees ri:s
Reese ri:s Reese ri:s
Reggie rEdZi Reggie rEdZi
Remus ri:m@s
Reynold rEn@Ld Reynold rEn@Ld
Rhys ri:s Rhys ri:s
Rihanna rI'A:n@ Rihanna rI'A:n@
Disney dIzni Disney dIzni
Dolce d0ltSeI Dolce d0ltSeI
Dvorak d@-vo@Zak Dvorak d@-vo@Zak
Folger foUldZ3
Gibson gIbs@n Gibson gIbs@n
Guinness gInIs Guinness gInIs
Hades heIdi:z Hades heIdi:z
Mackenna m@kEn@ Mackenna m@kEn@
Mackenzie m@kEnzi Mackenzie m@kEnzi
Medusa $2
Montague m0nt@gju: Montague m0nt@gju:
Niro ni@roU Niro ni@roU
Patel pa#tEl Patel pa#tEl
Wii wi:: Wii wi::
Yaesu jeIsu: Yaesu jeIsu:
Yamaha jam@hA: Yamaha jam@hA:
zeus zju:s
zhivago ZI2vA:goU zhivago ZI2vA:goU





+ 34
- 6
dictsource/en_rules View File

.L02 i y .L02 i y
.L03 a i o u // vowel, not 'e' .L03 a i o u // vowel, not 'e'
.L05 c g k .L05 c g k
.L06 s z


.L10 grap log met scop // scientific endings .L10 grap log met scop // scientific endings


st) an (_ an st) an (_ an
m) an (_ an m) an (_ an
hum) an (_ @n hum) an (_ @n
&) an (ty_ @n
&) an (t_ @n &) an (t_ @n
?8 &) an (t_ a#n ?8 &) an (t_ a#n
pl) an (t_ an pl) an (t_ an
@) aneous 'eIni@s @) aneous 'eIni@s
p) an (el an p) an (el an
&) an (ese @n &) an (ese @n
_) ane (s anI
an (gul 'an an (gul 'an
&) ani (_ 'A:nI &) ani (_ 'A:nI
an (ia 'eIn an (ia 'eIn
_) arr (@ a#r _) arr (@ a#r
_) arr (ant ar _) arr (ant ar
_) arr (o ar _) arr (o ar
_) arro (g ar@
ar (i_ 'A:r ar (i_ 'A:r
?3 @) ar (io_ 'ar ?3 @) ar (io_ 'ar
_b) ar (L02t ar _b) ar (L02t ar


.group at .group at
_g) ator eIt3 _g) ator eIt3
&) ate (_$w_alt2 @t
pal) ate (_ @t pal) ate (_ @t
consul) ate (_ @t consul) ate (_ @t
macul) ate (_ @t macul) ate (_ @t
@@e) d (_S1 d // suffix @@e) d (_S1 d // suffix
db (_ d,i:bi: db (_ d,i:bi:
ddh d ddh d
dh (K d
dj dZ dj dZ
dg (_ dZ dg (_ dZ
dg (C dZ dg (C dZ
de (law dE de (law dE
de (leg dE de (leg dE
de (lica dE de (lica dE
de (ll dE
_) de (ll dE
de (lph dE de (lph dE
_) de (lt dE _) de (lt dE
delu (g dElju: delu (g dElju:
j) eo (p E j) eo (p E
_l) eo i@ _l) eo i@
p) eo (pl i: p) eo (pl i:
_) eor eI3
@) eosis i:'oUsIs @) eosis i:'oUsIs
&) eous (_ =i@s &) eous (_ =i@s
th) eo (@ I2@ th) eo (@ I2@
es (tate I2s es (tate I2s
@) esc (enC 'Es @) esc (enC 'Es
pr) es (ent Ez pr) es (ent Ez
magn) es (i 'i:z
es (iA i:z
es (ian_ 'i:z es (ian_ 'i:z
es (ic 'i:z es (ic 'i:z
th) eses (_ @si:z
th) esis (_ @sIs
th) es (iL06e_ @s
r) esis (_ 'i:sIs r) esis (_ 'i:sIs
es (ive 'i:s es (ive 'i:s
esque 'Esk esque 'Esk
Cr) es (t Es Cr) es (t Es
v) es (t+ Es v) es (t+ Es
harv) es (t Is harv) es (t Is
esti (m EstI#
v) es (ty @s v) es (ty @s


.group et .group et


.group ev .group ev
_) ev I2v _) ev I2v
_) eva (ne Ev@
_) eve i:v _) eve i:v
_) even i:v@n _) even i:v@n
_) eve (nt I2vE _) eve (nt I2vE
_) g (ilK g _) g (ilK g
g (ilC g g (ilC g
l) ging dZI2N l) ging dZI2N
_) g (iz g
g (y dZ g (y dZ
exa) gg (er dZ exa) gg (er dZ
ght t ght t
_) hypo (@P4 h,aIpoU _) hypo (@P4 h,aIpoU
_) hypo (cr hIp0 _) hypo (cr hIp0
hypo (de h,aIp@ hypo (de h,aIp@
hypo (thes haIp'0
hypo (thet h,aIp@ hypo (thet h,aIp@


.group i .group i
&) ial (_ =I2@l &) ial (_ =I2@l
i (ani_ I i (ani_ I
_) i (b aI _) i (b aI
i (ba_ 'i:
@) ibab aIb@b @) ibab aIb@b
l) i (bel aI l) i (bel aI
l) i (ber I l) i (ber I
ize (d_ aIz ize (d_ aIz
i (zen I2 i (zen I2
iz (er_ aIz iz (er_ aIz
i (zon_ 'aI
p) izz (a i:t|s p) izz (a i:t|s




_) in (fo_ In _) in (fo_ In
_) infra (P5 ,Infr@ _) infra (P5 ,Infr@
_) infra (c %Infra _) infra (c %Infra
in (ga_ 'IN
in (got IN in (got IN
_) in (gro IN _) in (gro IN
_) in (jur In _) in (jur In




.group io .group io
io (_ =I2oU
?7 io (_ =i:oU
&) io (_ =I2oU
?7 &) io (_ =i:oU
io (_ i:oU
b) io aIoU b) io aIoU
b) io (logy aI0 b) io (logy aI0
card) io I2oU card) io I2oU
_) ki (lC@ kI2 _) ki (lC@ kI2
_) ki (ll@ kI _) ki (ll@ kI
_) kilo (@ kIl@ _) kilo (@ kIl@
kinesis k@n'i:sI#s
kuan kwan kuan kwan
ku (ch ku: ku (ch ku:
kuwait ku:w'eIt kuwait ku:w'eIt
ninth naInT ninth naInT
n (Co_ =n n (Co_ =n
_) non (@P3 n,0n _) non (@P3 n,0n
nonchala (n n0nS@l@
?3 nonchala (n n0nS@l'A:
_) nurse (B n3:s _) nurse (B n3:s


.group ng .group ng
oer oU@ oer oU@
_) oe (s i: _) oe (s i:
&) oe (s_S2 z &) oe (s_S2 z
oe (soph I2
oesopha I2s0f@
p) oe (t oUI p) oe (t oUI
f) oe (tA i: f) oe (tA i:
p) oe (ti oUE p) oe (ti oUE
t) ol (er 0l t) ol (er 0l
m) ol (ec @l m) ol (ec @l
m) ol (ecule 0l m) ol (ecule 0l
&) ol (enC @l
old oUld old oUld
w) olf Ulf w) olf Ulf
p) olice @li:s p) olice @li:s
per (cei p3 per (cei p3
per (culi p3 per (culi p3
per (cus p3 per (cus p3
_) peregrin pEr@grIn
per (fec p3 per (fec p3
per (iph p@r per (iph p@r
perme (a p3:mI perme (a p3:mI
qu (_ k qu (_ k
quay ki: quay ki:
jac) qu k jac) qu k
mes) qui (t k'i:
li) quor k3 li) quor k3
quy kwI quy kwI


un) rede (C ,ri:dI2 un) rede (C ,ri:dI2
re (dem+ rI2 re (dem+ rI2
_) re (dC rE _) re (dC rE
_) re (dolen rE
_) re (dr r%i: _) re (dr r%i:
_) re (eduP2 r%i: _) re (eduP2 r%i:
_) re (emP2 r%i: _) re (emP2 r%i:
sch (o sk sch (o sk
sch (C S sch (C S
sch (_ S sch (_ S
_e) sch S
?3 sch (ed sk ?3 sch (ed sk
_) sch (il S _) sch (il S
_) scar (A ske@ _) scar (A ske@
_) tian tjan _) tian tjan
&) tial S@L &) tial S@L
&) ti (ali SI &) ti (ali SI
i) tia (liL06 S@
&) tien S@n &) tien S@n
&) tience S@ns &) tience S@ns
&) tion S=@n &) tion S=@n
_l) u (a u: _l) u (a u:
r) u (aC+ u: r) u (aC+ u:
u (a_ =ju: u (a_ =ju:
s) ua (d weI
s) ua (de weI
s) uag weIdZ s) uag weIdZ
@g) ua (ge wI @g) ua (ge wI
u (al_ ju: u (al_ ju:
fl) ui (d u:I fl) ui (d u:I
dr) ui (d u:I dr) ui (d u:I
c) uisine wIzi:n c) uisine wIzi:n
c) uis wIz
rc) ui (t I rc) ui (t I
rc) ui (tous ''ju:I rc) ui (tous ''ju:I
g) ui (ta I2 g) ui (ta I2

+ 56
- 0
dictsource/hu_list View File

váltana $unstressend váltana $unstressend
találtam $unstressend találtam $unstressend
(sem biztosak) SEm_'||bistoSAk $unstressend (sem biztosak) SEm_'||bistoSAk $unstressend
kaphatnak $unstressend
költ $unstressend
hivatalt $unstressend
támogatással $unstressend
ugyanis $unstressend
bizonyítják $unstressend
ösztönzése $unstressend
elvégezze $unstressend


intézet $unstressend
takarítani $unstressend
bízza $unstressend
bízna $unstressend
filmekkel $unstressend
lejátszóhoz $unstressend
filmeket $unstressend
vesződni $unstressend
(legkényelmesebb az) lEgke:n^ElmESEb:_||Az $unstressend
sejtem $unstressend
vonalat $unstressend
ragaszkodni $unstressend
(mellett az) mEl:Et:_||Az $unstressend
(a felület) A'||fElylEt $unstressend
terveket $unstressend
tervek $unstressend
közben $unstressend
menetrendet $unstressend
(az indoklást) Az_'||indokla:St $unstressend
hóbort $unstressend
fogom $unstressend
(az adatokat) Az_'||AdAtokAt $unstressend
zajlik $unstressend
kütyüt $unstressend
tartok $unstressend
(törvényt is) tYR2ve:n^t_||iS $unstressend
ülésen $unstressend
jogszabály $unstressend
törvényjavaslatról $unstressend
rövid $unstressend
vonulhatnának $unstressend
(horderejű kérdésben) hoR2dER2Ejy:_||ke:R2de:SbEn $unstressend
törvényjavaslatához $unstressend
(miniszter volt) ministER2||volt $unstressend
szavazatot $unstressend
(rendelkezést is) REndElkEze:St_||iS $unstressend
(lehetővé tenné) lEhEtY:ve:_||tEn:e: $unstressend
(indítványnak van) indi:tva:n^nAk_||vAn $unstressend
(ellenére is biztosítaná) El:Ene:R2E_||iS_||bistoSi:tAna: $unstressend
emelni $unstressend
(csak ki) tSAk_||ki $unstressend
indítványokról $unstressend
(a módosítások) A'||mo:doSi:ta:Sok $unstressend
közölni $unstressend
tudjanak $unstressend
piacot $unstressend
rakott $unstressend
(ott van) ot:_||vAn $unstressend


// word pairs // word pairs



+ 0
- 1
dictsource/ta_rules View File

_) ப (ாதித்த b _) ப (ாதித்த b
_) ப (ாதிப்படை b _) ப (ாதிப்படை b
_) ப (ாதிப்படைகி b _) ப (ாதிப்படைகி b
_) ப (ாதிப்படைய b
_) ப (ாதிப்படையுமெ b _) ப (ாதிப்படையுமெ b
_) ப (ாதிப்படைவ b _) ப (ாதிப்படைவ b
_) ப (ாதிப்பதா b _) ப (ாதிப்பதா b

+ 14
- 0
phsource/ph_kazakh View File

lengthmod 3 lengthmod 3
WAV(ufric/x2, 60) WAV(ufric/x2, 60)
endphoneme endphoneme

phoneme L
import_phoneme sq/ll
// import_phoneme base/l-
endphoneme

phoneme l
liquid
IF nextPhW(isFlag1) THEN
ELSE
ChangePhoneme(L) // Hard
ENDIF
CALL base/l
endphoneme

+ 28
- 28
src/dictionary.cpp View File

}; };




static void WritePhMnemonic(char **buf, PHONEME_TAB *ph, PHONEME_LIST *plist)
{//=======================================================================================
char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa)
{//=====================================================================================
int c; int c;
int mnem; int mnem;
int len; int len;
int first; int first;
int ix = 0; int ix = 0;
char *phon_out;
char *p;
unsigned int ipa_control=0; // first byte of ipa string may control the phoneme name interpretation. 0x20 = ignore this phoneme unsigned int ipa_control=0; // first byte of ipa string may control the phoneme name interpretation. 0x20 = ignore this phoneme
PHONEME_DATA phdata; PHONEME_DATA phdata;


phon_out = *buf;

if(ph->code == phonEND_WORD) if(ph->code == phonEND_WORD)
{ {
// ignore // ignore
phon_out[0] = 0; phon_out[0] = 0;
return;
return(phon_out);
}

if(ph->code == phonSWITCH)
{
// the tone_ph field contains a phoneme table number
p = phoneme_tab_list[plist->tone_ph].name;
sprintf(phon_out, "(%s)", p);
return(phon_out + strlen(phon_out));
} }


if(option_phonemes == 3)
if(use_ipa)
{ {
// has an ipa name been defined for this phoneme ? // has an ipa name been defined for this phoneme ?
phdata.ipa_string[0] = 0; phdata.ipa_string[0] = 0;
} }
if(ipa_control >= 0x20) if(ipa_control >= 0x20)
{ {
*buf += ix;
return; // 0x20 = ignore phoneme
phon_out = &phon_out[ix];
*phon_out = 0;
return(phon_out); // 0x20 = ignore phoneme
} }
} }
} }
if((c == '/') && (option_phoneme_variants==0)) if((c == '/') && (option_phoneme_variants==0))
break; // discard phoneme variant indicator break; // discard phoneme variant indicator


if(option_phonemes == 3)
if(use_ipa)
{ {
// convert from ascii to ipa // convert from ascii to ipa
if(first && (c == '_')) if(first && (c == '_'))
first = 0; first = 0;
} }


*buf += ix;
phon_out = &phon_out[ix];
*phon_out = 0;
return(phon_out);
} // end of WritePhMnemonic } // end of WritePhMnemonic






void GetTranslatedPhonemeString(char *phon_out, int n_phon_out)
{//============================================================
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
{//=========================================================================
/* Can be called after a clause has been translated into phonemes, in order /* Can be called after a clause has been translated into phonemes, in order
to display the clause in phoneme mnemonic form. to display the clause in phoneme mnemonic form.
*/ */
int phon_out_ix=0; int phon_out_ix=0;
int stress; int stress;
unsigned int c; unsigned int c;
char *p;
char *buf; char *buf;
char phon_buf[30]; char phon_buf[30];
PHONEME_LIST *plist; PHONEME_LIST *plist;
c = 0; c = 0;
if(stress > 5) stress = 5; if(stress > 5) stress = 5;


if(option_phonemes == 3)
if(use_ipa)
{ {
c = 0x2cc; // ipa, secondary stress c = 0x2cc; // ipa, secondary stress
if(stress > 3) if(stress > 3)
} }
} }


if(plist->ph->code == phonSWITCH)
{
// the tone_ph field contains a phoneme table number
p = phoneme_tab_list[plist->tone_ph].name;
buf = WritePhMnemonic(buf, plist->ph, plist, use_ipa);


sprintf(buf, "(%s)", p);
buf += (strlen(p) + 2);
}
else
if(plist->ph->code != phonSWITCH)
{ {
WritePhMnemonic(&buf, plist->ph, plist);
if(plist->synthflags & SFLAG_LENGTHEN) if(plist->synthflags & SFLAG_LENGTHEN)
{ {
WritePhMnemonic(&buf, phoneme_tab[phonLENGTHEN], NULL);
buf = WritePhMnemonic(buf, phoneme_tab[phonLENGTHEN], NULL, use_ipa);
} }
if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL)) if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL))
{ {
// syllablic consonant // syllablic consonant
WritePhMnemonic(&buf, phoneme_tab[phonSYLLABIC], NULL);
buf = WritePhMnemonic(buf, phoneme_tab[phonSYLLABIC], NULL, use_ipa);
} }
if(plist->tone_ph > 0) if(plist->tone_ph > 0)
{ {
WritePhMnemonic(&buf, phoneme_tab[plist->tone_ph], NULL);
buf = WritePhMnemonic(buf, phoneme_tab[plist->tone_ph], NULL, use_ipa);
} }
} }

+ 8
- 2
src/extras.cpp View File

fprintf(f_events,"'%s'\n",events->id.name); fprintf(f_events,"'%s'\n",events->id.name);
else else
if(type==espeakEVENT_PHONEME) if(type==espeakEVENT_PHONEME)
fprintf(f_events,"[%s]\n",WordToString(events->id.number));
{
char buf[10];
// fprintf(f_events,"[%s]\n",WordToString(events->id.number)); //old version, only 4 characters bytes
memcpy(buf, events->id.string, 8);
buf[8] = 0;
fprintf(f_events,"[%s]\n", buf);
}
else else
fprintf(f_events,"%d\n",events->id.number); fprintf(f_events,"%d\n",events->id.number);


fprintf(f_events,"Type Audio Text Length Id\n"); fprintf(f_events,"Type Audio Text Length Id\n");
fclose(f_events); fclose(f_events);


espeak_Initialize(AUDIO_OUTPUT_RETRIEVAL,1000,NULL,1);
espeak_Initialize(AUDIO_OUTPUT_RETRIEVAL, 1000, NULL, espeakINITIALIZE_PHONEME_IPA);
espeak_SetSynthCallback(TestSynthCallback); espeak_SetSynthCallback(TestSynthCallback);
espeak_SetUriCallback(TestUriCallback); espeak_SetUriCallback(TestUriCallback);



+ 1
- 1
src/speak.cpp View File







void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr)
void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr)
{//====================================================================================== {//======================================================================================
// Do nothing in the command-line version. // Do nothing in the command-line version.
if(type == 2) if(type == 2)

+ 15
- 4
src/speak_lib.cpp View File

#endif #endif




void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr)
{//======================================================================================
// type: 1=word, 2=sentence, 3=named mark, 4=play audio, 5=end
void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr)
{//==================================================================================================
// type: 1=word, 2=sentence, 3=named mark, 4=play audio, 5=end, 7=phoneme
ENTER("MarkerEvent"); ENTER("MarkerEvent");
espeak_EVENT *ep; espeak_EVENT *ep;
double time; double time;
PHONEME_TAB *ph;
if((event_list == NULL) || (event_list_ix >= (n_event_list-2))) if((event_list == NULL) || (event_list_ix >= (n_event_list-2)))
return; return;
if((type == espeakEVENT_MARK) || (type == espeakEVENT_PLAY)) if((type == espeakEVENT_MARK) || (type == espeakEVENT_PLAY))
ep->id.name = &namedata[value]; ep->id.name = &namedata[value];
else else
if(type == espeakEVENT_PHONEME)
{
int *p;
p = (int *)(ep->id.string);
p[0] = value;
p[1] = value2;
}
else
{
ep->id.number = value; ep->id.number = value;
}
} // end of MarkerEvent } // end of MarkerEvent




option_phonemes = 0; option_phonemes = 0;
option_mbrola_phonemes = 0; option_mbrola_phonemes = 0;
option_phoneme_events = (options & 1);
option_phoneme_events = (options & (espeakINITIALIZE_PHONEME_EVENTS | espeakINITIALIZE_PHONEME_IPA));


VoiceReset(0); VoiceReset(0);
// SetVoiceByName("default"); // SetVoiceByName("default");

+ 10
- 2
src/speak_lib.h View File

#define ESPEAK_API #define ESPEAK_API
#endif #endif


#define ESPEAK_API_REVISION 6
#define ESPEAK_API_REVISION 7
/* /*
Revision 2 Revision 2
Added parameter "options" to eSpeakInitialize() Added parameter "options" to eSpeakInitialize()


Revision 6 Revision 6
Added macros: espeakRATE_MINIMUM, espeakRATE_MAXIMUM, espeakRATE_NORMAL Added macros: espeakRATE_MINIMUM, espeakRATE_MAXIMUM, espeakRATE_NORMAL

Revision 7 24.Dec.2011
Changed espeak_EVENT structure to add id.string[] for phoneme mnemonics.
Added espeakINITIALIZE_PHONEME_IPA option for espeak_Initialize() to report phonemes as IPA names.

*/ */
/********************/ /********************/
/* Initialization */ /* Initialization */
int sample; // sample id (internal use) int sample; // sample id (internal use)
void* user_data; // pointer supplied by the calling program void* user_data; // pointer supplied by the calling program
union { union {
int number; // used for WORD and SENTENCE events. For PHONEME events this is the phoneme mnemonic.
int number; // used for WORD and SENTENCE events.
const char *name; // used for MARK and PLAY events. UTF8 string const char *name; // used for MARK and PLAY events. UTF8 string
char string[8]; // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes.
} id; } id;
} espeak_EVENT; } espeak_EVENT;
/* /*
} espeak_ERROR; } espeak_ERROR;


#define espeakINITIALIZE_PHONEME_EVENTS 0x0001 #define espeakINITIALIZE_PHONEME_EVENTS 0x0001
#define espeakINITIALIZE_PHONEME_IPA 0x0002
#define espeakINITIALIZE_DONT_EXIT 0x8000 #define espeakINITIALIZE_DONT_EXIT 0x8000


#ifdef __cplusplus #ifdef __cplusplus
path: The directory which contains the espeak-data directory, or NULL for the default location. path: The directory which contains the espeak-data directory, or NULL for the default location.


options: bit 0: 1=allow espeakEVENT_PHONEME events. options: bit 0: 1=allow espeakEVENT_PHONEME events.
bit 1: 1= espeakEVENT_PHONEME events give IPA phoneme names, not eSpeak phoneme names
bit 15: 1=don't exit if espeak_data is not found (used for --help) bit 15: 1=don't exit if espeak_data is not found (used for --help)


Returns: sample rate in Hz, or -1 (EE_INTERNAL_ERROR). Returns: sample rate in Hz, or -1 (EE_INTERNAL_ERROR).

+ 5
- 1
src/synth_mbrola.cpp View File

len = (80 * speed.wav_factor)/256; len = (80 * speed.wav_factor)/256;


if(ph->code != phonEND_WORD) if(ph->code != phonEND_WORD)
DoMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, ph->mnemonic);
{
char phoneme_name[16];
WritePhMnemonic(phoneme_name, p->ph, p, option_phoneme_events & espeakINITIALIZE_PHONEME_IPA);
DoPhonemeMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, phoneme_name);
}


ptr += sprintf(ptr,"%s\t",WordToString(name)); ptr += sprintf(ptr,"%s\t",WordToString(name));



+ 2
- 2
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.h" #include "wave.h"


const char *version_string = "1.46.10 21.Dec.11";
const char *version_string = "1.46.11 24.Dec.11";
const int version_phdata = 0x014600; const int version_phdata = 0x014600;


int option_device_number = -1; int option_device_number = -1;


if(control & 0x100) if(control & 0x100)
{ {
// change phonemes pass
// "change phonemes" pass
plist->ph = phoneme_tab[plist->phcode]; plist->ph = phoneme_tab[plist->phcode];
} }
ph = plist->ph; ph = plist->ph;

+ 35
- 7
src/synthesize.cpp View File

// Type 1=word, 2=sentence, 3=named marker, 4=play audio, 5=end // Type 1=word, 2=sentence, 3=named marker, 4=play audio, 5=end
if(WcmdqFree() > 5) if(WcmdqFree() > 5)
{ {
wcmdq[wcmdq_tail][0] = WCMD_MARKER;
wcmdq[wcmdq_tail][1] = type;
wcmdq[wcmdq_tail][2] = (char_posn & 0xffffff) | (length << 24);
wcmdq[wcmdq_tail][3] = value;
wcmdq[wcmdq_tail][0] = WCMD_MARKER + (type << 8);
wcmdq[wcmdq_tail][1] = (char_posn & 0xffffff) | (length << 24);
wcmdq[wcmdq_tail][2] = value;
WcmdqInc();
}
} // end of DoMarker


void DoPhonemeMarker(int type, int char_posn, int length, char *name)
{//==================================================================
// This could be used to return an index to the word currently being spoken
// Type 7=phoneme
int *p;

if(WcmdqFree() > 5)
{
wcmdq[wcmdq_tail][0] = WCMD_MARKER + (type << 8);
wcmdq[wcmdq_tail][1] = (char_posn & 0xffffff) | (length << 24);
p = (int *)name;
wcmdq[wcmdq_tail][2] = p[0]; // up to 8 bytes of UTF8 characters
wcmdq[wcmdq_tail][3] = p[1];
WcmdqInc(); WcmdqInc();
} }
} // end of DoMarker } // end of DoMarker
unsigned char *pitch_env=NULL; unsigned char *pitch_env=NULL;
unsigned char *amp_env; unsigned char *amp_env;
PHONEME_TAB *ph; PHONEME_TAB *ph;
int use_ipa=0;
char phoneme_name[16];
static int sourceix=0; static int sourceix=0;


PHONEME_DATA phdata; PHONEME_DATA phdata;
if(option_quiet) if(option_quiet)
return(0); return(0);


if(option_phoneme_events & espeakINITIALIZE_PHONEME_IPA)
use_ipa = 1;

if(mbrola_name[0] != 0) if(mbrola_name[0] != 0)
return(MbrolaGenerate(phoneme_list,n_ph,resume)); return(MbrolaGenerate(phoneme_list,n_ph,resume));


if(option_phoneme_events && (p->type != phVOWEL) && (p->ph->code != phonEND_WORD)) if(option_phoneme_events && (p->type != phVOWEL) && (p->ph->code != phonEND_WORD))
{ {
// Note, for vowels, do the phoneme event after the vowel-start // Note, for vowels, do the phoneme event after the vowel-start
DoMarker(espeakEVENT_PHONEME, sourceix, 0, p->ph->mnemonic);
WritePhMnemonic(phoneme_name, p->ph, p, use_ipa);
DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name);
} }


switch(p->type) switch(p->type)


if(option_phoneme_events) if(option_phoneme_events)
{ {
DoMarker(espeakEVENT_PHONEME, sourceix, 0, p->ph->mnemonic);
WritePhMnemonic(phoneme_name, p->ph, p, use_ipa);
DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name);
} }


fmtp.fmt_addr = phdata.sound_addr[pd_FMT]; fmtp.fmt_addr = phdata.sound_addr[pd_FMT];


if((option_phonemes > 0) || (phoneme_callback != NULL)) if((option_phonemes > 0) || (phoneme_callback != NULL))
{ {
GetTranslatedPhonemeString(translator->phon_out,sizeof(translator->phon_out));
int use_ipa = 0;
if(option_phonemes == 3)
use_ipa = 1;

GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa);
if(option_phonemes > 0) if(option_phonemes > 0)
{ {
fprintf(f_trans,"%s\n",translator->phon_out); fprintf(f_trans,"%s\n",translator->phon_out);

+ 2
- 2
src/synthesize.h View File

void WavegenInit(int rate, int wavemult_fact); void WavegenInit(int rate, int wavemult_fact);
float polint(float xa[],float ya[],int n,float x); float polint(float xa[],float ya[],int n,float x);
int WavegenFill(int fill_zeros); int WavegenFill(int fill_zeros);
void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr);
void MarkerEvent(int type, unsigned int char_position, int value, int value2, unsigned char *out_ptr);




extern unsigned char *wavefile_data; extern unsigned char *wavefile_data;
void MbrolaReset(void); void MbrolaReset(void);
void DoEmbedded(int *embix, int sourceix); void DoEmbedded(int *embix, int sourceix);
void DoMarker(int type, int char_posn, int length, int value); void DoMarker(int type, int char_posn, int length, int value);
//int DoSample(PHONEME_TAB *ph1, PHONEME_TAB *ph2, int which, int length_mod, int amp);
void DoPhonemeMarker(int type, int char_posn, int length, char *name);
int DoSample3(PHONEME_DATA *phdata, int length_mod, int amp); int DoSample3(PHONEME_DATA *phdata, int length_mod, int amp);
int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, PHONEME_LIST *plist, int modulation); int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params, PHONEME_LIST *plist, int modulation);
int PauseLength(int pause, int control); int PauseLength(int pause, int control);

+ 2
- 1
src/translate.h View File

int IsAlpha(unsigned int c); int IsAlpha(unsigned int c);
int isspace2(unsigned int c); int isspace2(unsigned int c);
int towlower2(unsigned int c); int towlower2(unsigned int c);
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out);
void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa);


Translator *SelectTranslator(const char *name); Translator *SelectTranslator(const char *name);
int SetTranslator2(const char *name); int SetTranslator2(const char *name);
void SetVoiceStack(espeak_VOICE *v, const char *variant_name); void SetVoiceStack(espeak_VOICE *v, const char *variant_name);
void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_DATA *phdata); void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_DATA *phdata);
void InterpretPhoneme2(int phcode, PHONEME_DATA *phdata); void InterpretPhoneme2(int phcode, PHONEME_DATA *phdata);
char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa);


extern FILE *f_trans; // for logging extern FILE *f_trans; // for logging
extern FILE *f_logespeak; extern FILE *f_logespeak;

+ 4
- 2
src/transldlg.cpp View File

char phon_out[N_PH_LIST*2]; char phon_out[N_PH_LIST*2];
int clause_tone; int clause_tone;
int clause_count; int clause_count;
int use_ipa = 0;
FILE *f; FILE *f;
int fd_temp; int fd_temp;
char fname_temp[100]; char fname_temp[100];
t_phonetic->SetDefaultStyle(style_phonetic_large); t_phonetic->SetDefaultStyle(style_phonetic_large);


translate_text = 3; translate_text = 3;
use_ipa = 1;
break; break;


case T_PROCESS: case T_PROCESS:
myframe->OnProsody(event); myframe->OnProsody(event);
} }
prosodycanvas->LayoutData(ph_list,n_ph_list); prosodycanvas->LayoutData(ph_list,n_ph_list);
option_phoneme_events = 1;
option_phoneme_events = espeakINITIALIZE_PHONEME_EVENTS;
option_log_frames = 1; option_log_frames = 1;
MakeWave2(ph_list,n_ph_list); MakeWave2(ph_list,n_ph_list);
option_log_frames = 0; option_log_frames = 0;
CalcPitches(translator,clause_tone); CalcPitches(translator,clause_tone);
CalcLengths(translator); CalcLengths(translator);


GetTranslatedPhonemeString(translator->phon_out,sizeof(translator->phon_out));
GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa);
if(clause_count++ > 0) if(clause_count++ > 0)
strcat(phon_out," ||"); strcat(phon_out," ||");
strcat(phon_out,translator->phon_out); strcat(phon_out,translator->phon_out);

+ 20
- 9
src/wavegen.cpp View File





#ifdef LOG_FRAMES #ifdef LOG_FRAMES
static void LogMarker(int type, int value)
{//=======================================
static void LogMarker(int type, int value, int value2)
{//===================================================
char buf[20];
int *p;

if(option_log_frames == 0) if(option_log_frames == 0)
return; return;


if(f_log) if(f_log)
{ {
if(type == espeakEVENT_PHONEME) if(type == espeakEVENT_PHONEME)
fprintf(f_log,"Phoneme [%s]\n",WordToString(value));
{
p = (int *)buf;
p[0] = value;
p[1] = value2;
buf[8] = 0;
fprintf(f_log,"Phoneme [%s]\n", buf);
}
else else
fprintf(f_log,"\n"); fprintf(f_log,"\n");
fclose(f_log); fclose(f_log);
} }
WavegenSetEcho(); WavegenSetEcho();
SetPitchFormants(); SetPitchFormants();
MarkerEvent(espeakEVENT_SAMPLERATE,0,wvoice->samplerate,out_ptr);
MarkerEvent(espeakEVENT_SAMPLERATE, 0, wvoice->samplerate, 0, out_ptr);
// WVoiceChanged(wvoice); // WVoiceChanged(wvoice);
} }


long *q; long *q;
int length; int length;
int result; int result;
int marker_type;
static int resume=0; static int resume=0;
static int echo_complete=0; static int echo_complete=0;


q = wcmdq[wcmdq_head]; q = wcmdq[wcmdq_head];
length = q[1]; length = q[1];


switch(q[0])
switch(q[0] & 0xff)
{ {
case WCMD_PITCH: case WCMD_PITCH:
SetPitch(length,(unsigned char *)q[2],q[3] >> 16,q[3] & 0xffff); SetPitch(length,(unsigned char *)q[2],q[3] >> 16,q[3] & 0xffff);
#endif #endif


case WCMD_MARKER: case WCMD_MARKER:
MarkerEvent(q[1],q[2],q[3],out_ptr);
marker_type = q[0] >> 8;
MarkerEvent(marker_type, q[1],q[2],q[3],out_ptr);
#ifdef LOG_FRAMES #ifdef LOG_FRAMES
LogMarker(q[1],q[3]);
LogMarker(marker_type, q[2], q[3]);
#endif #endif
if(q[1] == 1)
if(marker_type == 1) // word marker
{ {
current_source_index = q[2] & 0xffffff;
current_source_index = q[1] & 0xffffff;
} }
break; break;



Loading…
Cancel
Save