Added language: "bs" Bosnian. Fix to speak_lib.h for Windows dll version. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@69 d46cf337-b52f-0410-862d-fd96e6ae7743master
& @ @- @2 a A a: aI | & @ @- @2 a A a: aI | ||||
aU E e e: E~ i I i: | aU E e e: E~ i I i: | ||||
l- o o: oU r- u U u: | |||||
y | |||||
l- O o o: oU r- u U | |||||
u: y | |||||
* b d dZ dZ; f g h | * b d dZ dZ; f g h | ||||
j k l l^ m n N n^ | j k l l^ m n N n^ | ||||
r R s t w z | r R s t w z | ||||
Dictionary sr_dict | |||||
& @ @- @2 a A a: aI | |||||
aU E e e: E~ i I i: | |||||
l- o o: oU r- u U u: | |||||
y | |||||
* b d dZ dZ; f g h | |||||
j k l l^ m n N n^ | |||||
p r R s S t tS ts | |||||
tS; v x z Z | |||||
Dictionary mk_dict | Dictionary mk_dict | ||||
& @ @- @2 a A a: E | & @ @- @2 a A a: E |
farewell $2 | farewell $2 | ||||
fasten faas@n | fasten faas@n | ||||
fathom faD@m | fathom faD@m | ||||
favorite feIv@-rIt // sp. | |||||
favorite feIv@-rIt // sp. | |||||
favourite feIv@-rIt | favourite feIv@-rIt | ||||
favorites feIv@-rIts // sp. | |||||
favorites feIv@-rIts // sp. | |||||
favourites feIv@-rIts | favourites feIv@-rIts | ||||
feisty faIstI2 | feisty faIstI2 | ||||
feline fi:laIn | feline fi:laIn | ||||
feminine fEm@nIn | feminine fEm@nIn | ||||
fete feIt | fete feIt | ||||
fetus fi:t@s | fetus fi:t@s | ||||
fi f,aI // as in "hi-fi" | |||||
fi f,aI // as in "hi-fi" | |||||
fiasco fi:'askoU | fiasco fi:'askoU | ||||
fiery faI@rI2 | fiery faI@rI2 | ||||
finale fIn'A:lI2 | finale fIn'A:lI2 | ||||
finance faInans $only | finance faInans $only | ||||
finance $verb | finance $verb | ||||
finess fI2nEs // for finessed | |||||
finesse fI2nEs | finesse fI2nEs | ||||
finite faInaIt | finite faInaIt | ||||
fishnet fISnEt | fishnet fISnEt | ||||
fiord fi:O@d | fiord fi:O@d | ||||
fix fIks // for fixer | |||||
fix fIks // for fixer | |||||
flagellum fla2dZEl@m | flagellum fla2dZEl@m | ||||
flexible flEksIb@L | flexible flEksIb@L | ||||
flier flaI3 | flier flaI3 | ||||
flourish flVrI2S | flourish flVrI2S | ||||
focus foUk@s // ed,ing | |||||
focus foUk@s // ed,ing | |||||
foothold fUthoUld | foothold fUthoUld | ||||
forage f0rIdZ | forage f0rIdZ | ||||
force fo@s | force fo@s | ||||
foretell fo@t'El | foretell fo@t'El | ||||
forever $2 | forever $2 | ||||
forewarn $2 | forewarn $2 | ||||
formid fO@m'Id // formidable | |||||
formid fO@m'Id // formidable | |||||
foyer fOIeI | foyer fOIeI | ||||
freelance fri:laans | freelance fri:laans | ||||
frigate frIg@t | frigate frIg@t | ||||
fringer frIndZ3 // infringer | |||||
fringer frIndZ3 // infringer | |||||
fringing frIndZIN | fringing frIndZIN | ||||
frontend fr'Vnt,End | frontend fr'Vnt,End | ||||
frontpage fr'Vntp,eIdZ | frontpage fr'Vntp,eIdZ | ||||
graduate gradju:@t | graduate gradju:@t | ||||
graduate gradju:eIt $verb | graduate gradju:eIt $verb | ||||
graffiti gra2fi:tI2 | graffiti gra2fi:tI2 | ||||
gredient gri:di@nt // ingredient | |||||
gredient gri:di@nt // ingredient | |||||
grenade gr@neId | grenade gr@neId | ||||
grosvenor groUv@n3 | grosvenor groUv@n3 | ||||
groupie gru:pI | groupie gru:pI | ||||
influenza Influ:'Enz@ | influenza Influ:'Enz@ | ||||
infrastructure $1 | infrastructure $1 | ||||
ingenuity IndZIn'ju:I2tI2 | ingenuity IndZIn'ju:I2tI2 | ||||
inherit I2nhErIt // inherited | |||||
inherit I2nhErIt // inherited | |||||
innard In3d | innard In3d | ||||
inner In3 | inner In3 | ||||
inning InIN | inning InIN | ||||
insert Ins'3:t $verb | insert Ins'3:t $verb | ||||
insightful $2 | insightful $2 | ||||
inspire Insp'aI@ | inspire Insp'aI@ | ||||
instal I2nstO:l // instalment | |||||
instal I2nstO:l // instalment | |||||
installation Inst@l'eIS@n | installation Inst@l'eIS@n | ||||
instinctive $2 | instinctive $2 | ||||
insult $2 | insult $2 | ||||
interrogatory $3 | interrogatory $3 | ||||
inventory Inv@ntrI2 | inventory Inv@ntrI2 | ||||
interface $1 | interface $1 | ||||
intermin I2nt3:mIn // interminable | |||||
intermin I2nt3:mIn // interminable | |||||
internet Int3nEt | internet Int3nEt | ||||
interrupt $1 $onlys | interrupt $1 $onlys | ||||
interrupt $3 $verb | interrupt $3 $verb | ||||
interval Int3v@L | interval Int3v@L | ||||
interven Int3v'i:n // for intervening | |||||
interven Int3v'i:n // for intervening | |||||
intro $1 | intro $1 | ||||
iris aIrIs | iris aIrIs | ||||
irony aIr@nI2 | irony aIr@nI2 | ||||
Penelope p@nEl@pI2 | Penelope p@nEl@pI2 | ||||
Phoebe fi:bi: | Phoebe fi:bi: | ||||
Rachel reItS@L | Rachel reItS@L | ||||
Reilly raIlI2 | |||||
Rica ri:ka2 | Rica ri:ka2 | ||||
Robert r0b3t | Robert r0b3t | ||||
Roderick r0drIk | Roderick r0drIk |
.group e | .group e | ||||
e E | e E | ||||
&) e (_ | &) e (_ | ||||
e (_ =@ | |||||
_C) e (_ i: | |||||
_CC) e (_ i: | |||||
_C) e (_N i: | |||||
_CC) e (_N i: | |||||
_C) e (Be_ i: | _C) e (Be_ i: | ||||
_CC) e (Be_ i: | _CC) e (Be_ i: | ||||
_CCC) e (Be_ i: | _CCC) e (Be_ i: | ||||
_C) er 3: | _C) er 3: | ||||
_h) er (A Er | _h) er (A Er | ||||
_CC) er 3: | _CC) er 3: | ||||
_CC) er (A Er | |||||
_qu) er 3: | _qu) er 3: | ||||
c) er (am I2r | c) er (am I2r | ||||
&) ere (_ 3 | &) ere (_ 3 | ||||
c) ere (mon ErI2 | c) ere (mon ErI2 | ||||
h) er (en i@r | h) er (en i@r | ||||
st) ereo ErI2oU | st) ereo ErI2oU | ||||
_st) er (A Er | |||||
m) er (ge '3: | m) er (ge '3: | ||||
erging '3:dZI2N | erging '3:dZI2N | ||||
v) er (ge '3: | v) er (ge '3: | ||||
ied (_$2i d // suffix | ied (_$2i d // suffix | ||||
ie (c aI | ie (c aI | ||||
ie (ce i: | ie (ce i: | ||||
_C) ie (_ aI | |||||
ie (_ aI | |||||
&) ie (_ I2 | |||||
_r) ie i: | _r) ie i: | ||||
iedly IdlI2 | iedly IdlI2 | ||||
_z) ie i: | _z) ie i: | ||||
cl) ie (nt aI@ | cl) ie (nt aI@ | ||||
&) ier (y I2@r | &) ier (y I2@r | ||||
ier i@ | ier i@ | ||||
ier (_ i@ | |||||
&) ier (_S2i @ | |||||
_h) ie (r aI@ | _h) ie (r aI@ | ||||
pl) ier (_ aI@ | pl) ier (_ aI@ | ||||
_Cr) ier aI@ | _Cr) ier aI@ | ||||
ser) ies (_ i:z | ser) ies (_ i:z | ||||
_ar) ies (_ i:z | _ar) ies (_ i:z | ||||
iesc I2Es | iesc I2Es | ||||
&) ie (st_ I2@ | |||||
&) iest (_S3i @st | |||||
pr) ie (st i: | pr) ie (st i: | ||||
_v) ie (t %i@ | _v) ie (t %i@ | ||||
ie (ve i: | ie (ve i: | ||||
regim rEdZIm | regim rEdZIm | ||||
re (gist rE | re (gist rE | ||||
_) re (i@P2 r,i: | _) re (i@P2 r,i: | ||||
_) rei (l raI | |||||
_) rele (g rElI2 | _) rele (g rElI2 | ||||
rele (nt rI2lE | rele (nt rI2lE | ||||
rele (v rElI | rele (v rElI |
a a $atend | a a $atend | ||||
_o o | _o o | ||||
o o $atend | o o $atend | ||||
v uve | |||||
x Ekis | |||||
_y ,ig@-*'iEQa | _y ,ig@-*'iEQa | ||||
y ,ig@-*'iEQa $atend | y ,ig@-*'iEQa $atend | ||||
.group ू | .group ू | ||||
ू u: | ू u: | ||||
ूं u~ | |||||
ूं u~ // or O~ ?? | |||||
ूँ u~ | ूँ u~ | ||||
.group ृ | .group ृ | ||||
्) य (_ j@3 | ्) य (_ j@3 | ||||
.group र | .group र | ||||
र rV | |||||
र r@2 | |||||
र (B r | र (B r | ||||
?1 र (_ r | ?1 र (_ r | ||||
्) र (_ r@- | ्) र (_ r@- |
% p'osto | % p'osto | ||||
+ plus | + plus | ||||
€ 'euRo | € 'euRo | ||||
?2 € 'ev@-*o | |||||
@ _'at | @ _'at | ||||
& _'end | & _'end | ||||
! 'usklItSnIk | ! 'usklItSnIk | ||||
: dv'ototSk& | : dv'ototSk& | ||||
?2 : dv'otatSk& | |||||
# b@-*'oj_ | # b@-*'oj_ | ||||
/ k@-*'oz_ | / k@-*'oz_ | ||||
\\ b'EkslES | \\ b'EkslES | ||||
µ m'ik@-*o | µ m'ik@-*o | ||||
¶ tSl'an&k | ¶ tSl'an&k | ||||
° st'up&n^ | ° st'up&n^ | ||||
?2 ° st'epen | |||||
_" n'avodnIk | _" n'avodnIk | ||||
_‚ 'otvoReni||n'avodnIk | _‚ 'otvoReni||n'avodnIk | ||||
_„ sp'uSteni||n'avodnIk | _„ sp'uSteni||n'avodnIk | ||||
… t@-*'i||t'otSke | … t@-*'i||t'otSke | ||||
?2 … t@-*'i||t'atSke | |||||
† k@-*'iZ | † k@-*'iZ | ||||
‡ dv'ost@-*Uki||k@-*'iZ | ‡ dv'ost@-*Uki||k@-*'iZ | ||||
‰ p@-*'omil | ‰ p@-*'omil | ||||
_“ 'otvoReni||n'avodnIk | _“ 'otvoReni||n'avodnIk | ||||
_” z'atvoReni||n'avodnIk | _” z'atvoReni||n'avodnIk | ||||
• k@-*'upna||t'otSk& | • k@-*'upna||t'otSk& | ||||
?2 • k@-*'upna||t'atSk& | |||||
_– En||ts'r-t& | _– En||ts'r-t& | ||||
_— Em||ts'r-t& | _— Em||ts'r-t& | ||||
™ p@-*'o'izvodZ&tS | ™ p@-*'o'izvodZ&tS | ||||
_- ts'r-t'its& | _- ts'r-t'its& | ||||
_. t'otSk& | _. t'otSk& | ||||
_; t'otSk&z,a*Ez | _; t'otSk&z,a*Ez | ||||
?2 _. t'atSk& | |||||
?2 _; t'atSk&z,a*Ez | |||||
_< m'an^i||'od | _< m'an^i||'od | ||||
_= j'edn&ko | _= j'edn&ko | ||||
_> v'etSi||'od | _> v'etSi||'od | ||||
_0M1 t'isUtS;& | _0M1 t'isUtS;& | ||||
_0MA1 t'isUtS;e | _0MA1 t'isUtS;e | ||||
_1M1 t'isUtS;U | _1M1 t'isUtS;U | ||||
?2 _0M1 h'il^ad& | |||||
?2 _0MA1 h'il^ade | |||||
?2 _1M1 h'il^adU | |||||
_0M2 m'ilijUna | _0M2 m'ilijUna | ||||
_0MA2 m'ilijUna | _0MA2 m'ilijUna | ||||
_1M2 m'ilijUn | _1M2 m'ilijUn | ||||
?2 _0M2 m'ilijOna | |||||
?2 _0MA2 m'ilijOna | |||||
?2 _1M2 m'ilijOn | |||||
_0M3 m'iliardI | _0M3 m'iliardI | ||||
_0MA3 m'iliarde | _0MA3 m'iliarde | ||||
_1M3 m'iliardU | _1M3 m'iliardU | ||||
_0M4 b'ilijUna | _0M4 b'ilijUna | ||||
_1M4 b'ilijUn | _1M4 b'ilijUn | ||||
?2 _0M4 b'ilijOna | |||||
?2 _1M4 b'ilijOn | |||||
_dpt _:z'a*Ez_ | _dpt _:z'a*Ez_ | ||||
// Demonstratives | // Demonstratives | ||||
tko $u+ | tko $u+ | ||||
?2 šta $u+ | |||||
što $u+ | što $u+ | ||||
koga $pause | koga $pause | ||||
čega $pause | čega $pause |
// translation rules for Croatian | // translation rules for Croatian | ||||
// This file is UTF-8 encoded | // This file is UTF-8 encoded | ||||
// Conditional rules: | |||||
// ?1 Croatian | |||||
// ?2 Bosnian (Bosna and Hercegovina) | |||||
.group a | .group a | ||||
a a | a a | ||||
a (j A | a (j A | ||||
$ d'ol&R | $ d'ol&R | ||||
. totSk& | . totSk& | ||||
?2 . tatSk& | |||||
. (. _: | . (. _: | ||||
\.) . | \.) . | ||||
eu (s eU | eu (s eU | ||||
e (uCK e | e (uCK e | ||||
j) e (tA_ E | |||||
j) e (tAm_ E | |||||
j) e (tAs_ E | |||||
?1 d) e (CAA y | |||||
?1 d) e (CACAA y | |||||
?1 d) e (CACAC y | |||||
?1 d) e (CACC y | |||||
?1 d) e (CCAA y | |||||
?1 d) e (nCAA ,e | |||||
?1 d) e (CCACA y | |||||
?1 d) e (nCACA ,e | |||||
?1 d) e (CCACCA y | |||||
?1 d) e (nCACCA ,e | |||||
j) e (tA_ E | |||||
j) e (tAm_ E | |||||
j) e (tAs_ E | |||||
?1 _) es (C@@ S // drop initial "e". | ?1 _) es (C@@ S // drop initial "e". | ||||
?1 _) e (f i // efectuar, etc. | ?1 _) e (f i // efectuar, etc. | ||||
?1 _f) e (ch y // fechar | ?1 _f) e (ch y // fechar | ||||
?1 _p) e (rcentag y // percentagem | ?1 _p) e (rcentag y // percentagem | ||||
?1 p) e (ssoa y //pessoal, pessoais, etc. | ?1 p) e (ssoa y //pessoal, pessoais, etc. | ||||
?1 pr) e (cis y // precisar | |||||
?1 pr) e (cis y // precisar | |||||
?1 pr) e (f y // preferências, etc. | ?1 pr) e (f y // preferências, etc. | ||||
?1 _r) e (cicl y // recicla, reciclagem, etc... | ?1 _r) e (cicl y // recicla, reciclagem, etc... | ||||
?1 r) e (cor y // recorrer, recordar | ?1 r) e (cor y // recorrer, recordar | ||||
de 32 123 | de 32 123 | ||||
eo 13 108 | eo 13 108 | ||||
fi 40 127 | fi 40 127 | ||||
fr 35 118 | |||||
fr 34 118 | |||||
fr_ca 11 118 | fr_ca 11 118 | ||||
hi 50 132 | hi 50 132 | ||||
hu 23 112 | hu 23 112 | ||||
no 28 122 | no 28 122 | ||||
is 32 121 | is 32 121 | ||||
vi 41 133 | vi 41 133 | ||||
zhy 32 124 | |||||
zhy 33 125 | |||||
sw 14 105 | sw 14 105 | ||||
4 b/b base fr hi ro | |||||
3 b/b base hi ro | |||||
2 b/b_ base hi | 2 b/b_ base hi | ||||
2 b/b@ base hi | 2 b/b@ base hi | ||||
2 b/b@2 base hi | 2 b/b@2 base hi | ||||
10 vowel/e_mid2 af de fi nl sk ro el sw | 10 vowel/e_mid2 af de fi nl sk ro el sw | ||||
2 vowel/@_fnt hr mk | 2 vowel/@_fnt hr mk | ||||
1 vowel/@_hgh no | 1 vowel/@_hgh no | ||||
19 vowel/i base2 en_n en_rp en_wm cy eo fr hu pl it pt pt_pt ++ | |||||
18 vowel/i base2 en_n en_rp en_wm cy eo fr hu pl it pt pt_pt ++ | |||||
1 vowel/i# cy | 1 vowel/i# cy | ||||
5 vowel/i_2 de nl la sv | 5 vowel/i_2 de nl la sv | ||||
2 vowel/i_3 af sk | |||||
3 vowel/i_3 af fr sk | |||||
4 vowel/i_4 fi hu it is | 4 vowel/i_4 fi hu it is | ||||
5 vowel/i_5 en_sc | 5 vowel/i_5 en_sc | ||||
3 vowel/i#_5 pt_pt ro | 3 vowel/i#_5 pt_pt ro | ||||
1 vwl_sv/r_sv3 sv | 1 vwl_sv/r_sv3 sv | ||||
1 vwl_zh/aang zhy | 1 vwl_zh/aang zhy | ||||
1 vwl_zh/ong zhy | 1 vwl_zh/ong zhy | ||||
1 vwl_zh/ung zhy | |||||
2 w/w base fr | 2 w/w base fr | ||||
2 w/_w base fr | 2 w/_w base fr | ||||
1 w/w_ base | 1 w/w_ base |
phoneme i | phoneme i | ||||
vowel starttype (i) endtype (i) | vowel starttype (i) endtype (i) | ||||
length 160 | length 160 | ||||
formants vowel/i | |||||
formants vowel/i_3 | |||||
linkout ; | linkout ; | ||||
endphoneme | endphoneme | ||||
endphoneme | endphoneme | ||||
phoneme B | |||||
vcd blb frc | |||||
vowelin f1=2 f2=1000 -300 -200 f3=-100 100 | |||||
vowelout f1=2 f2=1000 -500 -300 f3=-100 60 len=50 | |||||
lengthmod 6 | |||||
formants b/b | |||||
switchvoicing f | |||||
endphoneme | |||||
phoneme p | phoneme p | ||||
vls blb stop | vls blb stop | ||||
vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 | ||||
// Cantonese Chinese | |||||
//================== | |||||
//==================================================== | //==================================================== | ||||
// Tone Numbers | // Tone Numbers | ||||
//==================================================== | //==================================================== | ||||
endphoneme | endphoneme | ||||
phoneme aang | phoneme aang | ||||
vowel starttype (a) endtype (u) | |||||
vowel starttype (a) endtype (a) | |||||
length 270 | length 270 | ||||
formants vwl_zh/aang | formants vwl_zh/aang | ||||
endphoneme | endphoneme | ||||
endphoneme | endphoneme | ||||
phoneme ong | phoneme ong | ||||
vowel starttype (o) endtype (u) | |||||
vowel starttype (o) endtype (o) | |||||
length 220 | length 220 | ||||
formants vwl_zh/ong | formants vwl_zh/ong | ||||
endphoneme | endphoneme | ||||
before N vowel/uu_bck | before N vowel/uu_bck | ||||
endphoneme | endphoneme | ||||
phoneme ung | |||||
vowel starttype (u) endtype (u) | |||||
length 200 | |||||
formants vwl_zh/ung | |||||
endphoneme | |||||
phoneme ui | phoneme ui | ||||
vowel starttype (u) endtype (i) | vowel starttype (u) endtype (i) | ||||
length 220 | length 220 |
int CPhoneme(); | int CPhoneme(); | ||||
void StartPhonemeTable(const char *name); | void StartPhonemeTable(const char *name); | ||||
void EndPhonemeTable(); | void EndPhonemeTable(); | ||||
void CPhonemeFiles(char *path_source); | |||||
void CPhonemeFiles(); | |||||
int NextItem(int type); | int NextItem(int type); | ||||
void UngetItem(); | void UngetItem(); | ||||
void Error(const char *msg); | void Error(const char *msg); | ||||
}; | }; | ||||
char path_source[80]; | |||||
char path_source[sizeof(path_home)+20]; | |||||
Compile *compile; | Compile *compile; | ||||
int resample_wav = 0; | int resample_wav = 0; | ||||
char fname_temp[100]; | char fname_temp[100]; | ||||
int scale_factor=0; | int scale_factor=0; | ||||
char command[200]; | |||||
char command[sizeof(path_source)+200]; | |||||
fseek(f,24,SEEK_SET); | fseek(f,24,SEEK_SET); | ||||
sr1 = Read4Bytes(f); | sr1 = Read4Bytes(f); | ||||
int hash; | int hash; | ||||
int type_code=' '; | int type_code=' '; | ||||
REF_HASH_TAB *p, *p2; | REF_HASH_TAB *p, *p2; | ||||
char buf[256]; | |||||
char buf[sizeof(path_source)+120]; | |||||
count_references++; | count_references++; | ||||
void Compile::CPhonemeFiles(char *path_source) | |||||
{//=========================================== | |||||
void Compile::CPhonemeFiles() | |||||
{//========================== | |||||
int phcode; | int phcode; | ||||
int item; | int item; | ||||
FILE *f; | FILE *f; | ||||
char buf[120]; | |||||
char buf[sizeof(path_source)+120]; | |||||
linenum = 1; | linenum = 1; | ||||
n_phcodes = 1; // don't use phoneme code=0, it's used as string terminator | n_phcodes = 1; // don't use phoneme code=0, it's used as string terminator | ||||
REF_HASH_TAB *p; | REF_HASH_TAB *p; | ||||
REF_HASH_TAB **list; | REF_HASH_TAB **list; | ||||
FILE *f_report; | FILE *f_report; | ||||
char fname[80]; | |||||
char fname[sizeof(path_source)+20]; | |||||
// make a list of all the references and sort it | // make a list of all the references and sort it | ||||
list = (REF_HASH_TAB **)malloc(count_references * sizeof(REF_HASH_TAB *)); | list = (REF_HASH_TAB **)malloc(count_references * sizeof(REF_HASH_TAB *)); | ||||
FILE *log; | FILE *log; | ||||
FILE *f_phused; | FILE *f_phused; | ||||
char dictname[80]; | char dictname[80]; | ||||
char fname_log[80]; | |||||
char fname_log[sizeof(path_dsource)+20]; | |||||
char save_voice_name[80]; | char save_voice_name[80]; | ||||
if(!wxDirExists(path_dictsource)) | if(!wxDirExists(path_dictsource)) | ||||
void Compile::CPhonemeTab(const char *source) | void Compile::CPhonemeTab(const char *source) | ||||
{//======================================== | {//======================================== | ||||
char fname[130]; | |||||
char fname[sizeof(path_source)+40]; | |||||
wxString report; | wxString report; | ||||
wxString report_dict; | wxString report_dict; | ||||
n_phoneme_tabs = 0; | n_phoneme_tabs = 0; | ||||
stack_ix = 0; | stack_ix = 0; | ||||
StartPhonemeTable("base"); | StartPhonemeTable("base"); | ||||
CPhonemeFiles(path_source); | |||||
CPhonemeFiles(); | |||||
EndPhonemeTable(); | EndPhonemeTable(); | ||||
WritePhonemeTable(); | WritePhonemeTable(); | ||||
char name1[40]; | char name1[40]; | ||||
char name2[40]; | char name2[40]; | ||||
char mbrola_voice[40]; | char mbrola_voice[40]; | ||||
char buf[150]; | |||||
char buf[sizeof(path_home)+30]; | |||||
int mbrola_ctrl = 20; // volume in 1/16 ths | int mbrola_ctrl = 20; // volume in 1/16 ths | ||||
MBROLA_TAB data[N_PHONEME_TAB]; | MBROLA_TAB data[N_PHONEME_TAB]; | ||||
FILE *f_out; | FILE *f_out; | ||||
int offset_rules=0; | int offset_rules=0; | ||||
int value; | int value; | ||||
char fname_buf[130]; | |||||
char fname_temp[130]; | |||||
char path[80]; | |||||
char fname_buf[sizeof(path_home)+15]; | |||||
char fname_temp[sizeof(path_home)+15]; | |||||
char path[sizeof(path_home)+40]; // path_dsource+20 | |||||
error_count = 0; | error_count = 0; | ||||
int length; | int length; | ||||
FILE *f; | FILE *f; | ||||
unsigned int size; | unsigned int size; | ||||
char fname[130]; | |||||
char fname[sizeof(path_home)+20]; | |||||
strcpy(dictionary_name,name); // currently loaded dictionary name | strcpy(dictionary_name,name); // currently loaded dictionary name | ||||
#include <string.h> | #include <string.h> | ||||
#include <getopt.h> | #include <getopt.h> | ||||
#include <time.h> | #include <time.h> | ||||
#include "sys/stat.h" | |||||
#include <sys/stat.h> | |||||
#include "speak_lib.h" | #include "speak_lib.h" | ||||
{//========================================= | {//========================================= | ||||
int err; | int err; | ||||
FILE *log; | FILE *log; | ||||
char fname_log[80]; | |||||
char err_fname[130]; | |||||
char fname_log[sizeof(path_dsource)+12]; | |||||
char err_fname[sizeof(path_home)+15]; | |||||
switch(event.GetId()) | switch(event.GetId()) | ||||
{ | { |
#include <wx/dirdlg.h> | #include <wx/dirdlg.h> | ||||
#include "wx/filename.h" | #include "wx/filename.h" | ||||
#include "wx/sound.h" | #include "wx/sound.h" | ||||
#include "wx/dir.h" | |||||
#include "sys/stat.h" | |||||
#include <sys/stat.h> | |||||
#include "speak_lib.h" | #include "speak_lib.h" | ||||
#include "main.h" | #include "main.h" | ||||
int counts[20][20][10]; | int counts[20][20][10]; | ||||
char phonemes[N_WORD_PHONEMES]; | char phonemes[N_WORD_PHONEMES]; | ||||
char buf[100]; | |||||
char buf[120]; | |||||
char fname[sizeof(path_dsource)+20]; | |||||
// KOI8-R codes for Russian vowels | // KOI8-R codes for Russian vowels | ||||
static char vowels[] = {0xa3,0xc0,0xc1,0xc5,0xc9,0xcf,0xd1,0xd5,0xd9,0xdc,0}; | static char vowels[] = {0xa3,0xc0,0xc1,0xc5,0xc9,0xcf,0xd1,0xd5,0xd9,0xdc,0}; | ||||
} | } | ||||
input_length = GetFileLength(buf); | input_length = GetFileLength(buf); | ||||
sprintf(buf,"%s%c%s",path_dsource,PATHSEP,"ru_listx_1"); | |||||
if((f_out = fopen(buf,"w")) == NULL) | |||||
sprintf(fname,"%s%c%s",path_dsource,PATHSEP,"ru_listx_1"); | |||||
if((f_out = fopen(fname,"w")) == NULL) | |||||
{ | { | ||||
wxLogError(_T("Can't write to: ")+wxString(buf,wxConvLocal)); | |||||
wxLogError(_T("Can't write to: ")+wxString(fname,wxConvLocal)); | |||||
fclose(f_in); | fclose(f_in); | ||||
return; | return; | ||||
} | } | ||||
sprintf(buf,"%s%c%s",path_dsource,PATHSEP,"ru_log"); | |||||
f_log = fopen(buf,"w"); | |||||
sprintf(buf,"%s%c%s",path_dsource,PATHSEP,"ru_roots_1"); | |||||
f_roots = fopen(buf,"w"); | |||||
sprintf(fname,"%s%c%s",path_dsource,PATHSEP,"ru_log"); | |||||
f_log = fopen(fname,"w"); | |||||
sprintf(fname,"%s%c%s",path_dsource,PATHSEP,"ru_roots_1"); | |||||
f_roots = fopen(fname,"w"); | |||||
LoadVoice("ru",0); | LoadVoice("ru",0); | ||||
return 0; | return 0; | ||||
} | } | ||||
char* text1 = "Hello World2. <audio src=\"here\"> Some text</audio> This is the second sentence"; | char* text1 = "Hello World2. <audio src=\"here\"> Some text</audio> This is the second sentence"; | ||||
void TestTest(int control) | void TestTest(int control) | ||||
//CharsetToUnicode("ISO-8859-4"); | //CharsetToUnicode("ISO-8859-4"); | ||||
//CharsetToUnicode("ISCII"); | //CharsetToUnicode("ISCII"); | ||||
test4(); | |||||
return; | return; | ||||
if(control==2) | if(control==2) |
#include "wx/wx.h" | #include "wx/wx.h" | ||||
#include "wx/fileconf.h" | #include "wx/fileconf.h" | ||||
#include "sys/stat.h" | |||||
#include <sys/stat.h> | |||||
#include "speech.h" | #include "speech.h" | ||||
#ifdef PLATFORM_WINDOWS | #ifdef PLATFORM_WINDOWS | ||||
extern int GetNumeric(wxTextCtrl *t); | extern int GetNumeric(wxTextCtrl *t); | ||||
extern void SetNumeric(wxTextCtrl *t, int value); | extern void SetNumeric(wxTextCtrl *t, int value); | ||||
extern int samplerate; | extern int samplerate; | ||||
extern char path_home[120]; // .speak directory in user's HOME | |||||
extern char voice_name[40]; | extern char voice_name[40]; | ||||
wxString basedir; | |||||
wxString path_spectload; | wxString path_spectload; | ||||
wxString path_spectload2; | wxString path_spectload2; | ||||
wxString path_pitches; | wxString path_pitches; | ||||
wxString path_dir1; | wxString path_dir1; | ||||
int option_speed=160; | int option_speed=160; | ||||
char path_dsource[120]; | |||||
char path_dsource[sizeof(path_home)+20]; | |||||
BEGIN_EVENT_TABLE(Options, wxDialog) | BEGIN_EVENT_TABLE(Options, wxDialog) | ||||
EVT_BUTTON(wxID_SAVE,Options::OnCommand) | EVT_BUTTON(wxID_SAVE,Options::OnCommand) | ||||
void ConfigSetPaths() | void ConfigSetPaths() | ||||
{//================== | {//================== | ||||
// set paths from wxStrings | |||||
// set c_string paths from wxStrings | |||||
strncpy0(path_source,path_phsource.mb_str(wxConvLocal),sizeof(path_source)-1); | strncpy0(path_source,path_phsource.mb_str(wxConvLocal),sizeof(path_source)-1); | ||||
strcat(path_source,"/"); | strcat(path_source,"/"); | ||||
{//============== | {//============== | ||||
long value; | long value; | ||||
wxString string; | wxString string; | ||||
wxString basedir; | |||||
const char *path_base; | const char *path_base; | ||||
#ifdef PLATFORM_WINDOWS | #ifdef PLATFORM_WINDOWS | ||||
{ | { | ||||
wxString RegVal; | wxString RegVal; | ||||
pRegKey->QueryValue(_T("Path"),RegVal); | pRegKey->QueryValue(_T("Path"),RegVal); | ||||
strcpy(buf,RegVal.mb_str(wxConvLocal)); | |||||
strncpy0(buf,RegVal.mb_str(wxConvLocal),sizeof(buf)); | |||||
path_base = buf; | path_base = buf; | ||||
} | } | ||||
else | else | ||||
#endif | #endif | ||||
WavegenInit(value,0); | WavegenInit(value,0); | ||||
pConfig->Read(_T("/basedir"),&basedir,wxString(path_base,wxConvLocal)); | |||||
basedir = wxString(path_base,wxConvLocal); // this is only used to set defaults for other paths if they are not in the config file | |||||
pConfig->Read(_T("/spectload"),&path_spectload,basedir+_T("/phsource")); | pConfig->Read(_T("/spectload"),&path_spectload,basedir+_T("/phsource")); | ||||
pConfig->Read(_T("/spectload2"),&path_spectload2,basedir+_T("/phsource")); | pConfig->Read(_T("/spectload2"),&path_spectload2,basedir+_T("/phsource")); | ||||
pConfig->Read(_T("/pitchpath"),&path_pitches,basedir+_T("/pitch")); | pConfig->Read(_T("/pitchpath"),&path_pitches,basedir+_T("/pitch")); | ||||
#ifndef PLATFORM_WINDOWS | #ifndef PLATFORM_WINDOWS | ||||
pConfig->Write(_T("/samplerate"),samplerate); | pConfig->Write(_T("/samplerate"),samplerate); | ||||
#endif | #endif | ||||
pConfig->Write(_T("/basedir"),basedir); | |||||
pConfig->Write(_T("/spectload"),path_spectload); | pConfig->Write(_T("/spectload"),path_spectload); | ||||
pConfig->Write(_T("/spectload2"),path_spectload2); | pConfig->Write(_T("/spectload2"),path_spectload2); | ||||
pConfig->Write(_T("/pitchpath"),path_pitches); | pConfig->Write(_T("/pitchpath"),path_pitches); |
extern wxString path_modifiervoice; | extern wxString path_modifiervoice; | ||||
extern wxString path_dir1; | extern wxString path_dir1; | ||||
extern char path_source[80]; | |||||
extern char path_dsource[120]; | |||||
extern char path_source[sizeof(path_home)+20]; | |||||
extern char path_dsource[sizeof(path_home)+20]; | |||||
extern int option_speed; | extern int option_speed; | ||||
#include "synthesize.h" | #include "synthesize.h" | ||||
#include "translate.h" | #include "translate.h" | ||||
#include <locale.h> | |||||
#define N_XML_BUF 256 | #define N_XML_BUF 256 | ||||
espeak_VOICE *SelectVoice(espeak_VOICE *voice_select, int *variant); | espeak_VOICE *SelectVoice(espeak_VOICE *voice_select, int *variant); | ||||
}; | }; | ||||
#ifdef PLATFORM_RISCOS | |||||
#ifdef NEED_WCHAR_FUNCTIONS | |||||
// additional Latin characters beyond the Latin1 character set | |||||
#define MAX_WALPHA 0x233 | |||||
// indexed by character - 0x100 | |||||
// 0=not alphabetic, 0xff=lower case, other=value to add to upper case to convert to lower case | |||||
static unsigned char walpha_tab[MAX_WALPHA-0xff] = { | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 100 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 110 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 120 | |||||
0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1, // 130 | |||||
0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, // 140 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 150 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 160 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, // 170 | |||||
0xff, 210, 1,0xff, 1,0xff, 206, 1,0xff, 205, 205, 1,0xff,0xff, 79, 202, // 180 | |||||
203, 1,0xff, 205, 207,0xff, 211, 209, 1,0xff,0xff,0xff, 211, 213,0xff, 214, // 190 | |||||
1,0xff, 1,0xff, 1,0xff, 218, 1,0xff, 218,0xff,0xff, 1,0xff, 218, 1, // 1a0 | |||||
0xff, 217, 217, 1,0xff, 1,0xff, 219, 1,0xff,0xff,0xff, 1,0xff,0xff,0xff, // 1b0 | |||||
0xff,0xff,0xff,0xff, 2, 1,0xff, 2, 1,0xff, 2, 1,0xff, 1,0xff, 1, // 1c0 | |||||
0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, // 1d0 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1e0 | |||||
0xff, 2, 1,0xff, 1,0xff,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1f0 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 200 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 210 | |||||
0xff, 0, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 220 | |||||
1,0xff, 1,0xff }; // 230 | |||||
// use ctype.h functions for Latin1 (character < 0x100) | |||||
int iswalpha(int c) | |||||
{ | |||||
if(c < 0x100) | |||||
return(isalpha(c)); | |||||
if(c > MAX_WALPHA) | |||||
return(0); | |||||
return(walpha_tab[c-0x100]); | |||||
} | |||||
int iswdigit(int c) | |||||
{ | |||||
if(c < 0x100) | |||||
return(isdigit(c)); | |||||
return(0); | |||||
} | |||||
int iswalnum(int c) | |||||
{ | |||||
if(iswdigit(c)) | |||||
return(1); | |||||
return(iswalpha(c)); | |||||
} | |||||
int towlower(int c) | |||||
{ | |||||
int x; | |||||
if(c < 0x100) | |||||
return(tolower(c)); | |||||
if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x100])==0xff)) | |||||
return(c); // already lower case | |||||
return(c + x); // convert to lower case | |||||
} | |||||
int towupper(int c) | |||||
{ | |||||
// check whether the previous character code is the upper-case equivalent of this character | |||||
if(tolower(c-1) == c) | |||||
return(c-1); // yes, use it | |||||
return(c); // no | |||||
} | |||||
int iswupper(int c) | |||||
{ | |||||
int x; | |||||
if(c < 0x100) | |||||
return(isupper(c)); | |||||
if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x100])==0) || (x == 0xff)) | |||||
return(0); | |||||
return(1); | |||||
} | |||||
int iswlower(int c) | |||||
{ | |||||
if(c < 0x100) | |||||
return(islower(c)); | |||||
if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff)) | |||||
return(0); | |||||
return(1); | |||||
} | |||||
int iswspace(int c) | |||||
{ | |||||
if(c < 0x100) | |||||
return(isspace(c)); | |||||
return(0); | |||||
} | |||||
int iswpunct(int c) | |||||
{ | |||||
if(c < 0x100) | |||||
return(ispunct(c)); | |||||
return(0); | |||||
} | |||||
const wchar_t *wcschr(const wchar_t *str, int c) | |||||
{ | |||||
while(*str != 0) | |||||
{ | |||||
if(*str == c) | |||||
return(str); | |||||
str++; | |||||
} | |||||
return(NULL); | |||||
} | |||||
const int wcslen(const wchar_t *str) | |||||
{ | |||||
int ix=0; | |||||
while(*str != 0) | |||||
{ | |||||
ix++; | |||||
} | |||||
return(ix); | |||||
} | |||||
float wcstod(const wchar_t *str, wchar_t **tailptr) | float wcstod(const wchar_t *str, wchar_t **tailptr) | ||||
{ | { | ||||
int ix; | int ix; | ||||
int *ip; | int *ip; | ||||
int length; | int length; | ||||
char fname_temp[100]; | char fname_temp[100]; | ||||
char fname2[200]; | |||||
char command[150]; | |||||
char fname2[sizeof(path_home)+13+40]; | |||||
char command[sizeof(fname2)+sizeof(fname2)+30]; | |||||
if(fname == NULL) | if(fname == NULL) | ||||
fname = soundicon_tab[index].filename; | fname = soundicon_tab[index].filename; |
#include <stdio.h> | #include <stdio.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <string.h> | #include <string.h> | ||||
#ifndef PLATFORM_DOS | |||||
#ifdef PLATFORM_WINDOWS | #ifdef PLATFORM_WINDOWS | ||||
#include <windows.h> | #include <windows.h> | ||||
#include <winreg.h> | #include <winreg.h> | ||||
#else | #else | ||||
#include <unistd.h> | #include <unistd.h> | ||||
#endif | #endif | ||||
#endif | |||||
#ifndef NEED_GETOPT | #ifndef NEED_GETOPT | ||||
#include <getopt.h> | #include <getopt.h> | ||||
#endif | #endif | ||||
#include <time.h> | #include <time.h> | ||||
#include <signal.h> | #include <signal.h> | ||||
#include <locale.h> | #include <locale.h> | ||||
#include "sys/stat.h" | |||||
#include <sys/stat.h> | |||||
#include "speak_lib.h" | #include "speak_lib.h" | ||||
#include "voice.h" | #include "voice.h" | ||||
char path_home[120]; | |||||
char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||||
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; | int (* phoneme_callback)(const char *) = NULL; | ||||
unsigned long size; | unsigned long size; | ||||
unsigned long var_type; | unsigned long var_type; | ||||
char *env; | char *env; | ||||
unsigned char buf[100]; | |||||
unsigned char buf[sizeof(path_home)-12]; | |||||
if((env = getenv("ESPEAK_DATA_PATH")) != NULL) | |||||
if(((env = getenv("ESPEAK_DATA_PATH")) != NULL) && ((strlen(env)+12) < sizeof(path_home))) | |||||
{ | { | ||||
sprintf(path_home,"%s/espeak-data",env); | |||||
sprintf(path_home,"%s\\espeak-data",env); | |||||
if(GetFileLength(path_home) == -2) | if(GetFileLength(path_home) == -2) | ||||
return; // an espeak-data directory exists | return; // an espeak-data directory exists | ||||
} | } | ||||
sprintf(path_home,"%s\\espeak-data",buf); | sprintf(path_home,"%s\\espeak-data",buf); | ||||
#else | #else | ||||
#ifdef PLATFORM_DOS | |||||
strcpy(path_home,PATH_ESPEAK_DATA); | |||||
#else | |||||
// char *env; | // char *env; | ||||
// if((env = getenv("ESPEAK_DATA_PATH")) != NULL) | // if((env = getenv("ESPEAK_DATA_PATH")) != NULL) | ||||
// { | // { | ||||
strcpy(path_home,PATH_ESPEAK_DATA); | strcpy(path_home,PATH_ESPEAK_DATA); | ||||
} | } | ||||
#endif | #endif | ||||
#endif | |||||
} | } | ||||
if(flag_compile) | if(flag_compile) | ||||
{ | { | ||||
#ifdef PLATFORM_DOS | |||||
char path_dsource[sizeof(path_home)+20]; | |||||
strcpy(path_dsource,path_home); | |||||
path_dsource[strlen(path_home)-11] = 0; // remove "espeak-data" from the end | |||||
strcat(path_dsource,"dictsource\\"); | |||||
CompileDictionary(path_dsource,dictionary_name,NULL,NULL); | |||||
#else | |||||
#ifdef PLATFORM_WINDOWS | #ifdef PLATFORM_WINDOWS | ||||
char path_dsource[120]; | |||||
char path_dsource[sizeof(path_home)+20]; | |||||
strcpy(path_dsource,path_home); | strcpy(path_dsource,path_home); | ||||
path_dsource[strlen(path_home)-11] = 0; // renove "espeak-data" from the end | |||||
path_dsource[strlen(path_home)-11] = 0; // remove "espeak-data" from the end | |||||
strcat(path_dsource,"dictsource\\"); | strcat(path_dsource,"dictsource\\"); | ||||
CompileDictionary(path_dsource,dictionary_name,NULL,NULL); | CompileDictionary(path_dsource,dictionary_name,NULL,NULL); | ||||
#else | #else | ||||
CompileDictionary(NULL,dictionary_name,NULL,NULL); | CompileDictionary(NULL,dictionary_name,NULL,NULL); | ||||
#endif | |||||
#endif | #endif | ||||
exit(0); | exit(0); | ||||
} | } |
#include "speech.h" | #include "speech.h" | ||||
#include "sys/stat.h" | |||||
#include <sys/stat.h> | |||||
#ifndef PLATFORM_WINDOWS | #ifndef PLATFORM_WINDOWS | ||||
#include <unistd.h> | #include <unistd.h> | ||||
#endif | #endif | ||||
int (* uri_callback)(int, const char *, const char *) = NULL; | int (* uri_callback)(int, const char *, const char *) = NULL; | ||||
int (* phoneme_callback)(const char *) = NULL; | int (* phoneme_callback)(const char *) = NULL; | ||||
char path_home[120]; | |||||
char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||||
voice_t voicedata; | voice_t voicedata; | ||||
voice_t *voice = &voicedata; | voice_t *voice = &voicedata; | ||||
unsigned long size; | unsigned long size; | ||||
unsigned long var_type; | unsigned long var_type; | ||||
char *env; | char *env; | ||||
unsigned char buf[100]; | |||||
unsigned char buf[sizeof(path_home)-13]; | |||||
if(path != NULL) | if(path != NULL) | ||||
{ | { | ||||
sprintf(path_home,"%s\\espeak-data",buf); | sprintf(path_home,"%s\\espeak-data",buf); | ||||
#else | #else | ||||
char *env; | |||||
// char *env; | |||||
if(path != NULL) | if(path != NULL) | ||||
{ | { |
"\t If <language> is omitted, then list all voices.\n"; | "\t If <language> is omitted, then list all voices.\n"; | ||||
// additional Latin characters beyond the Latin1 character set | |||||
#define MAX_WALPHA 0x233 | |||||
// indexed by character - 0x100 | |||||
// 0=not alphabetic, 0xff=lower case, other=value to add to upper case to convert to lower case | |||||
static unsigned char walpha_tab[MAX_WALPHA-0xff] = { | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 100 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 110 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 120 | |||||
0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1, // 130 | |||||
0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, // 140 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 150 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 160 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, // 170 | |||||
0xff, 210, 1,0xff, 1,0xff, 206, 1,0xff, 205, 205, 1,0xff,0xff, 79, 202, // 180 | |||||
203, 1,0xff, 205, 207,0xff, 211, 209, 1,0xff,0xff,0xff, 211, 213,0xff, 214, // 190 | |||||
1,0xff, 1,0xff, 1,0xff, 218, 1,0xff, 218,0xff,0xff, 1,0xff, 218, 1, // 1a0 | |||||
0xff, 217, 217, 1,0xff, 1,0xff, 219, 1,0xff,0xff,0xff, 1,0xff,0xff,0xff, // 1b0 | |||||
0xff,0xff,0xff,0xff, 2, 1,0xff, 2, 1,0xff, 2, 1,0xff, 1,0xff, 1, // 1c0 | |||||
0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, // 1d0 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1e0 | |||||
0xff, 2, 1,0xff, 1,0xff,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1f0 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 200 | |||||
1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 210 | |||||
0xff, 0, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 220 | |||||
1,0xff, 1,0xff }; // 230 | |||||
// use ctype.h functions for Latin1 (character < 0x100) | |||||
int iswalpha(int c) | |||||
{ | |||||
if(c < 0x100) | |||||
return(isalpha(c)); | |||||
if(c > MAX_WALPHA) | |||||
return(0); | |||||
return(walpha_tab[c-0x100]); | |||||
} | |||||
int iswdigit(int c) | |||||
{ | |||||
if(c < 0x100) | |||||
return(isdigit(c)); | |||||
return(0); | |||||
} | |||||
int iswalnum(int c) | |||||
{ | |||||
if(iswdigit(c)) | |||||
return(1); | |||||
return(iswalpha(c)); | |||||
} | |||||
int towlower(int c) | |||||
{ | |||||
int x; | |||||
if(c < 0x100) | |||||
return(tolower(c)); | |||||
if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x100])==0xff)) | |||||
return(c); // already lower case | |||||
return(c + x); // convert to lower case | |||||
} | |||||
int iswupper(int c) | |||||
{ | |||||
int x; | |||||
if(c < 0x100) | |||||
return(isupper(c)); | |||||
if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x100])==0) || (x == 0xff)) | |||||
return(0); | |||||
return(1); | |||||
} | |||||
int iswlower(int c) | |||||
{ | |||||
if(c < 0x100) | |||||
return(islower(c)); | |||||
if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff)) | |||||
return(0); | |||||
return(1); | |||||
} | |||||
int iswspace(int c) | |||||
{ | |||||
if(c < 0x100) | |||||
return(isspace(c)); | |||||
return(0); | |||||
} | |||||
int iswpunct(int c) | |||||
{ | |||||
if(c < 0x100) | |||||
return(ispunct(c)); | |||||
return(0); | |||||
} | |||||
const wchar_t *wcschr(const wchar_t *str, int c) | |||||
{ | |||||
while(*str != 0) | |||||
{ | |||||
if(*str == c) | |||||
return(str); | |||||
str++; | |||||
} | |||||
return(NULL); | |||||
} | |||||
const int wcslen(const wchar_t *str) | |||||
{ | |||||
int ix=0; | |||||
while(*str != 0) | |||||
{ | |||||
ix++; | |||||
} | |||||
return(ix); | |||||
} | |||||
int GetFileLength(const char *filename) | int GetFileLength(const char *filename) | ||||
{//==================================== | {//==================================== | ||||
int length=0; | int length=0; | ||||
_kernel_swi_regs regs; | _kernel_swi_regs regs; | ||||
_kernel_oserror *error; | _kernel_oserror *error; | ||||
char buf[80]; | char buf[80]; | ||||
char directory2[80]; | |||||
char directory2[sizeof(path_home)+100]; | |||||
regs.r[0] = 10; | regs.r[0] = 10; | ||||
regs.r[1] = (int)directory; | regs.r[1] = (int)directory; | ||||
void ReadVoiceNames() | void ReadVoiceNames() | ||||
{//=================== | {//=================== | ||||
char directory[80]; | |||||
char directory[sizeof(path_home)+10]; | |||||
for(n_voice_files=0; n_voice_files<N_VOICE_NAMES; n_voice_files++) | for(n_voice_files=0; n_voice_files<N_VOICE_NAMES; n_voice_files++) | ||||
voice_names[n_voice_files] = NULL; | voice_names[n_voice_files] = NULL; |
char *Alloc(int size); | char *Alloc(int size); | ||||
void Free(void *ptr); | void Free(void *ptr); | ||||
#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); | |||||
extern char path_home[]; | |||||
extern const char *version_string; | extern const char *version_string; | ||||
extern const int version_phdata; | extern const int version_phdata; | ||||
extern void strncpy0(char *to,const char *from, int size); | |||||
int size; | int size; | ||||
FILE *f_in; | FILE *f_in; | ||||
char path[150]; | |||||
char path[sizeof(path_home)+15]; | |||||
mbrola_name[0] = 0; | mbrola_name[0] = 0; | ||||
if(mbrola_voice == NULL) | if(mbrola_voice == NULL) |
#include "translate.h" | #include "translate.h" | ||||
#include "wave.h" | #include "wave.h" | ||||
const char *version_string = "1.28.01 17.Jul.07"; | |||||
const char *version_string = "1.28.03 30.Jul.07"; | |||||
const int version_phdata = 0x012801; | const int version_phdata = 0x012801; | ||||
int option_device_number = -1; | int option_device_number = -1; | ||||
FILE *f_in; | FILE *f_in; | ||||
char *p; | char *p; | ||||
unsigned int length; | unsigned int length; | ||||
char buf[200]; | |||||
char buf[sizeof(path_home)+40]; | |||||
sprintf(buf,"%s%c%s",path_home,PATHSEP,fname); | sprintf(buf,"%s%c%s",path_home,PATHSEP,fname); | ||||
length = GetFileLength(buf); | length = GetFileLength(buf); | ||||
void LoadConfig(void) | void LoadConfig(void) | ||||
{//================== | {//================== | ||||
// Load configuration file, if one exists | // Load configuration file, if one exists | ||||
char buf[130]; | |||||
char buf[sizeof(path_home)+10]; | |||||
FILE *f; | FILE *f; | ||||
int ix; | int ix; | ||||
char c1; | char c1; |
case L('h','r'): // Croatian | case L('h','r'): // Croatian | ||||
case L('b','s'): // Bosnian | |||||
case L('s','r'): // Serbian | case L('s','r'): // Serbian | ||||
{ | { | ||||
static int stress_amps_hr[8] = {16,16, 20,20, 20,24, 24,22 }; | static int stress_amps_hr[8] = {16,16, 20,20, 20,24, 24,22 }; |
new_c = langopts.replacement_chars[ix]; | new_c = langopts.replacement_chars[ix]; | ||||
break; | break; | ||||
} | } | ||||
if((word >> 16) == tolower(next_in)) | |||||
if((word >> 16) == (unsigned int)tolower(next_in)) | |||||
{ | { | ||||
new_c = langopts.replacement_chars[ix]; | new_c = langopts.replacement_chars[ix]; | ||||
ignore_next = 1; | ignore_next = 1; | ||||
*insert = c2; | *insert = c2; | ||||
new_c &= 0xffff; | new_c &= 0xffff; | ||||
} | } | ||||
#ifndef PLATFORM_RISCOS | |||||
if(upper_case) | if(upper_case) | ||||
new_c = towupper(new_c); | new_c = towupper(new_c); | ||||
#endif | |||||
return(new_c); | return(new_c); | ||||
} | } | ||||
{//======================== | {//======================== | ||||
wxString path; | wxString path; | ||||
wxString filename; | wxString filename; | ||||
char fname[130]; | |||||
char fname[sizeof(path_home)+10]; | |||||
sprintf(fname,"%s/voices",path_home); | sprintf(fname,"%s/voices",path_home); | ||||
path = wxFileSelector(_T("Load voice"),wxString(fname,wxConvLocal),_T(""),_T(""),_T("*"),wxOPEN); | path = wxFileSelector(_T("Load voice"),wxString(fname,wxConvLocal),_T(""),_T(""),_T("*"),wxOPEN); |
#define DEFAULT_LANGUAGE_PRIORITY 5 | #define DEFAULT_LANGUAGE_PRIORITY 5 | ||||
#define N_VOICES_LIST 100 | |||||
#define N_VOICES_LIST 150 | |||||
static int n_voices_list = 0; | static int n_voices_list = 0; | ||||
static espeak_VOICE *voices_list[N_VOICES_LIST]; | static espeak_VOICE *voices_list[N_VOICES_LIST]; | ||||
static int len_path_voices; | static int len_path_voices; | ||||
// Read a Voice file, allocate a VOICE_DATA and set data from the | // Read a Voice file, allocate a VOICE_DATA and set data from the | ||||
// file's language, gender, name lines | // file's language, gender, name lines | ||||
char linebuf[120]; | |||||
char linebuf[80]; | |||||
char vname[80]; | char vname[80]; | ||||
char vgender[80]; | char vgender[80]; | ||||
char vlanguage[80]; | char vlanguage[80]; | ||||
char languages[300]; // allow space for several alternate language names and priorities | char languages[300]; // allow space for several alternate language names and priorities | ||||
char fname_buf[sizeof(path_home)+15]; | |||||
unsigned int len; | unsigned int len; | ||||
// check whether the mbrola speech data is present for this voice | // check whether the mbrola speech data is present for this voice | ||||
memcpy(vname,&leafname[3],3); | memcpy(vname,&leafname[3],3); | ||||
vname[3] = 0; | vname[3] = 0; | ||||
sprintf(linebuf,"%s/mbrola/%s",path_home,vname); | |||||
sprintf(fname_buf,"%s/mbrola/%s",path_home,vname); | |||||
if(GetFileLength(linebuf) <= 0) | |||||
if(GetFileLength(fname_buf) <= 0) | |||||
return(0); | return(0); | ||||
} | } | ||||
#endif | #endif | ||||
char phonemes_name[40]; | char phonemes_name[40]; | ||||
char *language_type; | char *language_type; | ||||
char buf[200]; | char buf[200]; | ||||
char path_voices[140]; | |||||
char path_voices[sizeof(path_home)+12]; | |||||
char langname[4]; | char langname[4]; | ||||
int stress_amps[8]; | int stress_amps[8]; | ||||
FILE *f_voice; | FILE *f_voice; | ||||
espeak_VOICE *voice_data; | espeak_VOICE *voice_data; | ||||
int ftype; | int ftype; | ||||
char fname[140]; | |||||
char fname[sizeof(path_home)+100]; | |||||
#ifdef PLATFORM_RISCOS | #ifdef PLATFORM_RISCOS | ||||
#else | #else | ||||
int ix; | int ix; | ||||
static espeak_VOICE *voices[N_VOICES_LIST]; | static espeak_VOICE *voices[N_VOICES_LIST]; | ||||
char selected_voice_id[80]; | char selected_voice_id[80]; | ||||
char path_voices[130]; | |||||
char path_voices[sizeof(path_home)+12]; | |||||
// free previous voice list data | // free previous voice list data | ||||
if((voice_selected != NULL) && (voice_selected->identifier != NULL)) | if((voice_selected != NULL) && (voice_selected->identifier != NULL)) |
#include "phoneme.h" | #include "phoneme.h" | ||||
#include "synthesize.h" | #include "synthesize.h" | ||||
#include "translate.h" | #include "translate.h" | ||||
#include "options.h" | |||||
/* Read a file of vowel symbols and f1,f2 formants, and produce a vowel diagram | /* Read a file of vowel symbols and f1,f2 formants, and produce a vowel diagram | ||||
*/ | */ | ||||
extern wxString path_phsource; | extern wxString path_phsource; | ||||
extern char path_source[]; | |||||
extern char voice_name[]; | extern char voice_name[]; | ||||
extern char *spects_data; | extern char *spects_data; | ||||
SPECT_SEQ *seq; | SPECT_SEQ *seq; | ||||
frame_t *frame; | frame_t *frame; | ||||
int match_level; | int match_level; | ||||
char dirname[100]; | |||||
char fname[120]; | |||||
char dirname[sizeof(path_source)+20]; | |||||
char fname[sizeof(dirname)+40]; | |||||
progress = new wxProgressDialog(_T("Vowel charts"),_T(""),n_phoneme_tables); | progress = new wxProgressDialog(_T("Vowel charts"),_T(""),n_phoneme_tables); | ||||
SHOW("init_buffer > myRead=0x%x, myWrite=0x%x, BUFFER_LENGTH=0x%x, myReadPosition = myWritePosition = 0\n", (int)myRead, (int)myWrite, BUFFER_LENGTH); | SHOW("init_buffer > myRead=0x%x, myWrite=0x%x, BUFFER_LENGTH=0x%x, myReadPosition = myWritePosition = 0\n", (int)myRead, (int)myWrite, BUFFER_LENGTH); | ||||
} | } | ||||
static int get_used_mem() | |||||
static unsigned int get_used_mem() | |||||
{ | { | ||||
char* aRead = myRead; | char* aRead = myRead; | ||||
char* aWrite = myWrite; | char* aWrite = myWrite; | ||||
int used = 0; | |||||
unsigned int used = 0; | |||||
assert ((aRead >= myBuffer) | assert ((aRead >= myBuffer) | ||||
&& (aRead <= myBuffer + BUFFER_LENGTH) | && (aRead <= myBuffer + BUFFER_LENGTH) | ||||
static void start_stream() | static void start_stream() | ||||
{ | { | ||||
PaError err; | |||||
SHOW_TIME("start_stream"); | SHOW_TIME("start_stream"); | ||||
my_stream_could_start=0; | my_stream_could_start=0; | ||||
mInCallbackFinishedState = false; | mInCallbackFinishedState = false; | ||||
PaError err = Pa_StartStream(pa_stream); | |||||
err = Pa_StartStream(pa_stream); | |||||
SHOW("start_stream > Pa_StartStream=%d (%s)\n", err, Pa_GetErrorText(err)); | SHOW("start_stream > Pa_StartStream=%d (%s)\n", err, Pa_GetErrorText(err)); | ||||
#if USE_PORTAUDIO == 19 | #if USE_PORTAUDIO == 19 |
#ifndef WAVE_H | #ifndef WAVE_H | ||||
#define WAVE_H | #define WAVE_H | ||||
#ifndef PLATFORM_DOS | |||||
#include "stdint.h" | #include "stdint.h" | ||||
#endif | |||||
extern int option_device_number; | extern int option_device_number; | ||||
// comment this out when compiling the "speak" process | // comment this out when compiling the "speak" process | ||||
//#define SPECT_EDITOR | //#define SPECT_EDITOR | ||||
#include <windows.h> | #include <windows.h> | ||||
#define PLATFORM_WINDOWS | |||||
#define __WIN32__ | |||||
#define mkdir(p1,p2) mkdir(p1) | |||||
#define PLATFORM_WINDOWS | |||||
#define __WIN32__ | |||||
#define mkdir(p1,p2) mkdir(p1) | |||||
#define PATHSEP '\\' | #define PATHSEP '\\' | ||||
#define USE_PORTAUDIO | #define USE_PORTAUDIO | ||||
//#define USE_NANOSLEEP | //#define USE_NANOSLEEP | ||||
#define __cdecl | #define __cdecl | ||||
#define ESPEAK_API | |||||
#define ESPEAK_API | |||||
#define PATH_ESPEAK_DATA "C:\\Program files\\espeak\\espeak-data" | #define PATH_ESPEAK_DATA "C:\\Program files\\espeak\\espeak-data" | ||||
typedef unsigned short USHORT; | typedef unsigned short USHORT; | ||||
char *Alloc(int size); | char *Alloc(int size); | ||||
void Free(void *ptr); | void Free(void *ptr); | ||||
#define N_PATH_HOME 120 | |||||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||||
extern const char *version_string; | |||||
extern const int version_phdata; | |||||
extern void strncpy0(char *to,const char *from, int size); | extern void strncpy0(char *to,const char *from, int size); | ||||
extern char path_home[]; | |||||
extern const int version_phdata; | |||||
extern const char *version_string; |
void Free(void *ptr); | void Free(void *ptr); | ||||
extern void strncpy0(char *to,const char *from, int size); | |||||
extern char path_home[]; | |||||
#define N_PATH_HOME 120 | |||||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||||
extern const int version_phdata; | |||||
extern const char *version_string; | extern const char *version_string; | ||||
extern const int version_phdata; | |||||
extern void strncpy0(char *to,const char *from, int size); | |||||
#ifndef SPEAK_LIB_H | #ifndef SPEAK_LIB_H | ||||
#define SPEAK_LIB_H | #define SPEAK_LIB_H | ||||
/*************************************************************************** | /*************************************************************************** | ||||
* Copyright (C) 2006 by Jonathan Duddington * | |||||
* [email protected] * | |||||
* Copyright (C) 2005 to 2007 by Jonathan Duddington * | |||||
* email: [email protected] * | |||||
* * | * * | ||||
* This program is free software; you can redistribute it and/or modify * | * 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 * | * it under the terms of the GNU General Public License as published by * | ||||
* the Free Software Foundation; either version 2 of the License, or * | |||||
* the Free Software Foundation; either version 3 of the License, or * | |||||
* (at your option) any later version. * | * (at your option) any later version. * | ||||
* * | * * | ||||
* This program is distributed in the hope that it will be useful, * | * This program is distributed in the hope that it will be useful, * | ||||
* 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 to the * | |||||
* Free Software Foundation, Inc., * | |||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * | |||||
* along with this program; if not, see: * | |||||
* <http://www.gnu.org/licenses/>. * | |||||
***************************************************************************/ | ***************************************************************************/ | ||||
#include <stdio.h> | #include <stdio.h> | ||||
#define ESPEAK_LIB_REVISION 2 | |||||
#define ESPEAK_API_REVISION 2 | |||||
/* | /* | ||||
Revision 2 | Revision 2 | ||||
Added parameter "options" to eSpeakInitialize() | Added parameter "options" to eSpeakInitialize() | ||||
*/ | */ | ||||
/********************/ | /********************/ | ||||
/* Initialization */ | /* Initialization */ | ||||
/********************/ | /********************/ | ||||
espeakEVENT_MARK, // Mark | espeakEVENT_MARK, // Mark | ||||
espeakEVENT_PLAY, // Audio element | espeakEVENT_PLAY, // Audio element | ||||
espeakEVENT_END, // End of sentence | espeakEVENT_END, // End of sentence | ||||
espeakEVENT_MSG_TERMINATED // End of message | |||||
espeakEVENT_MSG_TERMINATED, // End of message | |||||
espeakEVENT_PHONEME // Phoneme, if enabled in espeak_Initialize() | |||||
} espeak_EVENT_TYPE; | } espeak_EVENT_TYPE; | ||||
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 | |||||
int number; // used for WORD and SENTENCE events. For PHONEME events this is the phoneme mnemonic. | |||||
const char *name; // used for MARK and PLAY events. UTF8 string | const char *name; // used for MARK and PLAY events. UTF8 string | ||||
} id; | } id; | ||||
} espeak_EVENT; | } espeak_EVENT; | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path); | |||||
int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options); | |||||
/* Must be called before any synthesis functions are called. | /* Must be called before any synthesis functions are called. | ||||
output: the audio data can either be played by eSpeak or passed back by the SynthCallback function. | output: the audio data can either be played by eSpeak or passed back by the SynthCallback function. | ||||
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. | ||||
Returns: sample rate in Hz | |||||
options: bit 0: 1=allow espeakEVENT_PHONEME events. | |||||
Returns: sample rate in Hz, or -1 (EE_INTERNAL_ERROR). | |||||
*/ | */ | ||||
typedef int (t_espeak_callback)(short*, int, espeak_EVENT*); | typedef int (t_espeak_callback)(short*, int, espeak_EVENT*); | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | |||||
void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | |||||
/* Must be called before any synthesis functions are called. | /* Must be called before any synthesis functions are called. | ||||
This specifies a function in the calling program which is called when a buffer of | This specifies a function in the calling program which is called when a buffer of | ||||
speech sound data has been produced. | speech sound data has been produced. | ||||
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. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*)); | |||||
void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*)); | |||||
/* This function may be called before synthesis functions are used, in order to deal with | /* This function may be called before synthesis functions are used, in order to deal with | ||||
<audio> tags. It specifies a callback function which is called when an <audio> element is | <audio> tags. It specifies a callback function which is called when an <audio> element is | ||||
encountered and allows the calling program to indicate whether the sound file which | encountered and allows the calling program to indicate whether the sound file which | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||||
espeak_ERROR espeak_Synth(const void *text, | |||||
size_t size, | size_t size, | ||||
unsigned int position, | unsigned int position, | ||||
espeak_POSITION_TYPE position_type, | espeak_POSITION_TYPE position_type, | ||||
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. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||||
espeak_ERROR espeak_Synth_Mark(const void *text, | |||||
size_t size, | size_t size, | ||||
const char *index_mark, | const char *index_mark, | ||||
unsigned int end_position, | unsigned int end_position, | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Key(const char *key_name); | |||||
espeak_ERROR espeak_Key(const char *key_name); | |||||
/* Speak the name of a keyboard key. | /* Speak the name of a keyboard key. | ||||
Currently this just speaks the "key_name" as given | Currently this just speaks the "key_name" as given | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Char(wchar_t character); | |||||
espeak_ERROR espeak_Char(wchar_t character); | |||||
/* Speak the name of the given character | /* Speak the name of the given character | ||||
Return: EE_OK: operation achieved | Return: EE_OK: operation achieved | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative); | |||||
espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative); | |||||
/* Sets the value of the specified parameter. | /* Sets the value of the specified parameter. | ||||
relative=0 Sets the absolute value of the parameter. | relative=0 Sets the absolute value of the parameter. | ||||
relative=1 Sets a relative value of the parameter. | relative=1 Sets a relative value of the parameter. | ||||
espeakVOLUME: volume in range 0-100 0=silence | espeakVOLUME: volume in range 0-100 0=silence | ||||
espeakPITCH: base pitch in Hz | |||||
espeakPITCH: base pitch, range 0-100. 50=normal | |||||
espeakRANGE: pitch range in Hz | |||||
espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal | |||||
espeakPUNCTUATION: which punctuation characters to announce: | espeakPUNCTUATION: which punctuation characters to announce: | ||||
value in espeak_PUNCT_TYPE (none, all, some), | value in espeak_PUNCT_TYPE (none, all, some), | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||||
int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||||
/* current=0 Returns the default value of the specified parameter. | /* current=0 Returns the default value of the specified parameter. | ||||
current=1 Returns the current value of the specified parameter, as set by SetParameter() | current=1 Returns the current value of the specified parameter, as set by SetParameter() | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||||
espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||||
/* Specified a list of punctuation characters whose names are to be spoken when the | /* Specified a list of punctuation characters whose names are to be spoken when the | ||||
value of the Punctuation parameter is set to "some". | value of the Punctuation parameter is set to "some". | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream); | |||||
void espeak_SetPhonemeTrace(int value, FILE *stream); | |||||
/* Controls the output of phoneme symbols for the text | /* Controls the output of phoneme symbols for the text | ||||
value=0 No phoneme output (default) | value=0 No phoneme output (default) | ||||
value=1 Output the translated phoneme symbols for the text | value=1 Output the translated phoneme symbols for the text | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log); | |||||
void espeak_CompileDictionary(const char *path, FILE *log); | |||||
/* Compile pronunciation dictionary for a language which corresponds to the currently | /* Compile pronunciation dictionary for a language which corresponds to the currently | ||||
selected voice. The required voice should be selected before calling this function. | selected voice. The required voice should be selected before calling this function. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec); | |||||
const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec); | |||||
/* Reads the voice files from espeak-data/voices and creates an array of espeak_VOICE pointers. | /* Reads the voice files from espeak-data/voices and creates an array of espeak_VOICE pointers. | ||||
The list is terminated by a NULL pointer | The list is terminated by a NULL pointer | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name); | |||||
espeak_ERROR espeak_SetVoiceByName(const char *name); | |||||
/* Searches for a voice with a matching "name" field. Language is not considered. | /* Searches for a voice with a matching "name" field. Language is not considered. | ||||
"name" is a UTF8 string. | "name" is a UTF8 string. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||||
espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||||
/* An espeak_VOICE structure is used to pass criteria to select a voice. Any of the following | /* An espeak_VOICE structure is used to pass criteria to select a voice. Any of the following | ||||
fields may be set: | fields may be set: | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void); | |||||
espeak_VOICE *espeak_GetCurrentVoice(void); | |||||
/* Returns the espeak_VOICE data for the currently selected voice. | /* Returns the espeak_VOICE data for the currently selected voice. | ||||
This is not affected by temporary voice changes caused by SSML elements such as <voice> and <s> | This is not affected by temporary voice changes caused by SSML elements such as <voice> and <s> | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Cancel(void); | |||||
espeak_ERROR espeak_Cancel(void); | |||||
/* Stop immediately synthesis and audio output of the current text. When this | /* Stop immediately synthesis and audio output of the current text. When this | ||||
function returns, the audio output is fully stopped and the synthesizer is ready to | function returns, the audio output is fully stopped and the synthesizer is ready to | ||||
synthesize a new message. | synthesize a new message. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API int espeak_IsPlaying(void); | |||||
int espeak_IsPlaying(void); | |||||
/* Returns 1 if audio is played, 0 otherwise. | /* Returns 1 if audio is played, 0 otherwise. | ||||
*/ | */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Synchronize(void); | |||||
espeak_ERROR espeak_Synchronize(void); | |||||
/* This function returns when all data have been spoken. | /* This function returns when all data have been spoken. | ||||
Return: EE_OK: operation achieved | Return: EE_OK: operation achieved | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API espeak_ERROR espeak_Terminate(void); | |||||
espeak_ERROR espeak_Terminate(void); | |||||
/* last function to be called. | /* last function to be called. | ||||
Return: EE_OK: operation achieved | Return: EE_OK: operation achieved | ||||
EE_INTERNAL_ERROR. | EE_INTERNAL_ERROR. | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
#endif | #endif | ||||
ESPEAK_API const char *espeak_Info(void* ptr); | |||||
const char *espeak_Info(void* ptr); | |||||
/* Returns the version number string. | /* Returns the version number string. | ||||
The parameter is for future use, and should be set to NULL | The parameter is for future use, and should be set to NULL | ||||
*/ | */ |
void Free(void *ptr); | void Free(void *ptr); | ||||
extern void strncpy0(char *to,const char *from, int size); | |||||
extern char path_home[]; | |||||
#define N_PATH_HOME 120 | |||||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||||
extern const int version_phdata; | |||||
extern const char *version_string; | extern const char *version_string; | ||||
extern const int version_phdata; | |||||
extern void strncpy0(char *to,const char *from, int size); | |||||
void Free(void *ptr); | void Free(void *ptr); | ||||
extern void strncpy0(char *to,const char *from, int size); | |||||
extern char path_home[]; | |||||
#define N_PATH_HOME 120 | |||||
extern char path_home[N_PATH_HOME]; // this is the espeak-data directory | |||||
extern const int version_phdata; | |||||
extern const char *version_string; | extern const char *version_string; | ||||
extern const int version_phdata; | |||||
extern void strncpy0(char *to,const char *from, int size); | |||||