Browse Source

[1.33] continued

git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@159 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 17 years ago
parent
commit
eab1faff96

+ 127
- 0
dictsource/ku_list View File


// This file is UTF8 encoded
// Spelling-to-phoneme words for Kurdish


_0 s'Ifr
_1 j'Ek
_2 d'U
_3 s'e
_4 dZ'ar
_5 p'endZ
_6 S'ES
_7 h'Eft
_8 h'EjSt
_9 n'Eh
_10 d'Eh
_11 jazd'E#
_12 danzd'E#
_13 sezd'E#
_14 tSaRd'E#
_15 panzd'E#
_16 Sanzd'E#
_17 hIvd'Eh
_18 hIZd'Eh
_19 nozd'Eh
_2X b'Ist
_3X s'i
_4X tS'Il
_5X pendZ'i
_6X S'est
_7X hEft'e
_8X heSt'e
_9X n'od
_0C s'Ed
_1C s'Ed
_0M1 hEz'ar
_1M1 hEz'ar
_0M2 mIl'jon
_1M2 mIl'jon

_0and _u
_dpt _xal
_?? tipa
_cap mezin // or "ya mezin" after the letter


// characters
// letter names
_a a
b be
c dZe
ç tSe
d de
_e E
_ê e
f fe
g ge
h he
_i I
_î i
j Ze
k ke
l le
m me
n ne
_o o
p pe
q qe
r Re
s se
ş Se
t te
_u U
_û u
v ve
w we
x xe
y je
z ze


_, behnok
_. xal
_: dZotxal
_; xalbehnok
_- bEndIk
_? pIRsniS'an
_! banES'an
% sEde
* steRk

// function words

û $u+ $pause
a $u+
ê $u+

// pronouns
ez $u+
te $u+
wê $u+
wî $u+
me $u+
we $u+
wan $u+

bes $pause
an $u $pause
anji $u $pause
ên $u
ya $u
yê $u
yan $u
yên $u
ji $u
bi $u
re $u
di $u
de $u
kir $u
got $u


// abbreviations
hwd hEr||wEki||dIn

// pronunciation exceptions

+ 115
- 0
dictsource/ku_rules View File


// Kurdish translation rules
// This file is UTF-8 encoded

.L01 î iy ê ew ey // front vowels

.group a
a a

@) a (_S1 %a
@) an (_S2 %an

.group b
b b

.group c
c dZ

.group ç
ç tS

.group d
d d

.group e
e E
e (_ E#
ew eU
ey eI

.group ê
ê e

@) ê (_S1 %e
@) ên (_S2 %en


.group f
f f

.group g
g g
g (L01 J

.group h
h h

.group i
i I

.group î
î i

.group j
j Z

.group k
k k
k (L01 c

.group l
l l

.group m
m m

.group n
n n

.group o
o o

.group p
p p

.group q
q q

.group r
r R

.group s
s s

.group ş
ş S

.group t
t t

.group u
u U

.group û
û u

.group v
v v

.group w
w w

.group x
x x

.group y
y j

.group z
z z

.group
ö I:
ü y
$ dUlar

+ 12
- 27
phsource/compile_report View File

49 phoneme tables
47 phoneme tables
new total new total
base 98 98 base 98 98
base2 24 117 base2 24 117
grc 12 122 grc 12 122
sv 25 120 sv 25 120
no 28 124 no 28 124
is 32 123
is 33 124
vi 42 136 vi 42 136
zhy 40 131 zhy 40 131
zh 65 148 zh 65 148
tr 18 122 tr 18 122
ku 17 121 ku 17 121
id 14 119 id 14 119
ja 7 103
rw 12 122


Data file Used by Data file Used by
b/b [b] base b/b [b] base
[s] es [s] es
[s#] pt [s#] pt
[z;] ro [z;] ro
[s2] is
ufric/s! [s] base ufric/s! [s] base
[s2] fi [s2] fi
[s] fr [s] fr
[s2] hu [s2] hu
[s] es [s] es
[s#] pt [s#] pt
[s2] is
ufric/s_continue [s2] fi ufric/s_continue [s2] fi
[s2] hu [s2] hu
[s2] is
ufric/sh [S] base ufric/sh [S] base
[S] fr [S] fr
[s#] pt_pt [s#] pt_pt
[p2] fr [p2] fr
[ph] hi [ph] hi
[ph] zh [ph] zh
ustop/percus10 [(X1] base
ustop/percus10 [(X1)] base
ustop/pl [p] base ustop/pl [p] base
[p] base2 [p] base2
[p] fi [p] fi
ustop/t_short [t.] hi ustop/t_short [t.] hi
[t] sk [t] sk
[t] el [t] el
ustop/tsh_pzd [tS;] zh
ustop/tsh_pzd [tS;h] zh
ustop/tsh_pzd_unasp [tS;] zh ustop/tsh_pzd_unasp [tS;] zh
ustop/tsh_sr [tS] sr ustop/tsh_sr [tS] sr
ustop/ts_pzd [tS;] base ustop/ts_pzd [tS;] base
[c] hu [c] hu
ustop/t_sr [d] sr ustop/t_sr [d] sr
[t] sr [t] sr
ustop/ts_rfx [ts.] zh
ustop/ts_rfx [ts.h] zh
ustop/ts_rfx_unasp [ts.] zh ustop/ts_rfx_unasp [ts.] zh
ustop/ts_sr [tS;] sr ustop/ts_sr [tS;] sr
[dZ;] sr [dZ;] sr
vnasal/a#u_n [&U~] pt vnasal/a#u_n [&U~] pt
[&U~] pt_pt [&U~] pt_pt
vnasal/ee_n [E~] en vnasal/ee_n [E~] en
[a] en_us
[E~] fr_ca [E~] fr_ca
vnasal/ee_n2 [E~] hi
vnasal/ee_n2 [a] en_us
[E~] hi
[E~] pl [E~] pl
[&~] pt_pt [&~] pt_pt
vnasal/e_n [e~] af vnasal/e_n [e~] af
[a] it [a] it
[a] zh [a] zh
[a] id [a] id
[a] ja
vowel/a# [a/] base2 vowel/a# [a/] base2
[a2] en_sc [a2] en_sc
[a2] en_wi [a2] en_wi
[&] sr [&] sr
[&] pt [&] pt
[&/] pt [&/] pt
[a#] rw
[a/] rw
vowel/a_2 [a] base2 vowel/a_2 [a] base2
[a] en_wi [a] en_wi
[A:] en_wi [A:] en_wi
[a] pt_pt [a] pt_pt
[a] ro [a] ro
[a:] vi [a:] vi
[a] rw
vowel/a#_2 [&] hr vowel/a#_2 [&] hr
[a2] sv [a2] sv
[&] is [&] is
[e] grc [e] grc
[e] vi [e] vi
[e] id [e] id
[e] rw
[e#] rw
vowel/e# [I] en_sc vowel/e# [I] en_sc
[I2] en_sc [I2] en_sc
vowel/e_2 [eI] en_sc vowel/e_2 [eI] en_sc
[E] tr [E] tr
[E] id [E] id
[E2] id [E2] id
[e] ja
vowel/e_mid2 [E] af vowel/e_mid2 [E] af
[E] de [E] de
[E2] de [E2] de
[i] zhy [i] zhy
[i] zh [i] zh
[i] sw [i] sw
[i] ja
[i] rw
[i#] rw
vowel/i# [i] en_rp vowel/i# [i] en_rp
[y:] cy [y:] cy
vowel/i_2 [i:] en_rp vowel/i_2 [i:] en_rp
[o] grc [o] grc
[o:] sv [o:] sv
[o] id [o] id
[o] rw
[o#] rw
vowel/o_2 [o:] cy vowel/o_2 [o:] cy
[o:] hi [o:] hi
[o:] hu [o:] hu
[o] zhy [o] zhy
[O] tr [O] tr
[O] id [O] id
[o] ja
vowel/oo_1 [O:] en_n vowel/oo_1 [O:] en_n
[O:] en_rp [O:] en_rp
[O@] en_rp [O@] en_rp
[u] is [u] is
[u] zhy [u] zhy
[u] zh [u] zh
[u] rw
[u#] rw
vowel/u_bck2 [u:] la vowel/u_bck2 [u:] la
vowel/u_fnt [u:] en_rp vowel/u_fnt [u:] en_rp
vowel/uu [U] en vowel/uu [U] en
[U] pt [U] pt
[U] no [U] no
[u] zhy [u] zhy
vowel/u_unr [u] ja
vowel/V [3] en_sc vowel/V [3] en_sc
vowel/V_2 [V] en vowel/V_2 [V] en
[a] af [a] af
vwl_ru/u# [u#] ru vwl_ru/u# [u#] ru
vwl_ru/u#u [u"] ru vwl_ru/u#u [u"] ru
vwl_sv/r_sv3 [r] sv vwl_sv/r_sv3 [r] sv
vwl_zh/aang [aan] zhy
vwl_zh/aang [aang] zhy
vwl_zh/aau [Au] zh vwl_zh/aau [Au] zh
vwl_zh/a_n [a] zh vwl_zh/a_n [a] zh
vwl_zh/ang [ang] zhy vwl_zh/ang [ang] zhy
vwl_zh/ing [ing] zhy vwl_zh/ing [ing] zhy
vwl_zh/iou [iou] zh vwl_zh/iou [iou] zh
vwl_zh/ng [ng] zhy vwl_zh/ng [ng] zhy
vwl_zh/oeng [oen] zhy
vwl_zh/oeng [oeng] zhy
vwl_zh/ong [ong] zhy vwl_zh/ong [ong] zhy
vwl_zh/uaa [uA] zh vwl_zh/uaa [uA] zh
vwl_zh/uai [uai] zh vwl_zh/uai [uai] zh

+ 3
- 3
phsource/ph_english_us View File

vowel starttype (a) endtype (@) vowel starttype (a) endtype (@)
length 210 length 210
formants vwl_en_us/a formants vwl_en_us/a
before n vnasal/ee_n
before N vnasal/ee_n
before m vnasal/ee_n
before n vnasal/ee_n2
before N vnasal/ee_n2
before m vnasal/ee_n2
reduceto a2 0 reduceto a2 0
endphoneme endphoneme



+ 13
- 0
phsource/ph_icelandic View File

endphoneme endphoneme




phoneme s2 // 2nd part of geminated s
vls alv frc sibilant
vowelin f1=0 f2=1700 -300 300 f3=-100 80
vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
lengthmod 3
wave ufric/s_continue
before _ ufric/s_
before p ufric/s!
before t ufric/s!
before k ufric/s!
switchvoicing z
endphoneme


+ 3
- 3
phsource/ph_tamil View File



phoneme u phoneme u
vowel starttype (u) endtype (u) vowel starttype (u) endtype (u)
length 130
length 110
formants vowel/u formants vowel/u
reduceto U 4 reduceto U 4
endphoneme endphoneme


phoneme U phoneme U
vowel starttype (u) endtype (u) vowel starttype (u) endtype (u)
length 130
length 110
formants vowel/u#_3 formants vowel/u#_3
endphoneme endphoneme


phoneme u: phoneme u:
vowel starttype (u) endtype (u) vowel starttype (u) endtype (u)
length 270
length 250
formants vowel/u formants vowel/u
endphoneme endphoneme



+ 0
- 6
phsource/phonemes View File

phonemetable id base2 phonemetable id base2
include ph_indonesian include ph_indonesian


phonemetable ja base
include ph_japanese

phonemetable rw base2
include ph_kinyarwanda


BIN
phsource/vwl_en_us/ii_2 View File


+ 1
- 1
platforms/windows/make_espeak.iss View File

[Setup] [Setup]
AppName=eSpeak AppName=eSpeak
AppVerName=eSpeak version 1.32
AppVerName=eSpeak version 1.33
AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details). AppCopyright=Licensed under GNU General Public License version 3. (See file License.txt for details).
WindowVisible=yes WindowVisible=yes

+ 1
- 1
platforms/windows/make_espeakedit.iss View File

[Setup] [Setup]
AppName=eSpeakEdit AppName=eSpeakEdit
AppVerName=eSpeakEdit version 1.32
AppVerName=eSpeakEdit version 1.33
DefaultDirName={pf}\eSpeak DefaultDirName={pf}\eSpeak
DefaultGroupName=eSpeak DefaultGroupName=eSpeak
OutputBaseFilename=setup_espeakedit OutputBaseFilename=setup_espeakedit

+ 4
- 4
src/Makefile View File

# removed -fno-exceptions because it caused problems with stdio library on some platforms
# remove -fno-exceptions because it caused problems with stdio library on some platforms (ARM)


PREFIX=/ PREFIX=/
BINDIR=$(PREFIX)/usr/bin BINDIR=$(PREFIX)/usr/bin
LIBDIR=$(PREFIX)/usr/lib LIBDIR=$(PREFIX)/usr/lib
DATADIR=$(PREFIX)/usr/share/espeak-data DATADIR=$(PREFIX)/usr/share/espeak-data


RELEASE = 1.31
RELEASE = 1.33
BIN_NAME = speak BIN_NAME = speak
BIN2_NAME = espeak BIN2_NAME = espeak
LIB_NAME = libespeak.so LIB_NAME = libespeak.so
mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG) mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG)


.cpp.o: .cpp.o:
$(CXX) $(CXXFLAGS) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c $<
$(CXX) $(CXXFLAGS) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $<


$(BIN_NAME): $(OBJS1) $(BIN_NAME): $(OBJS1)
$(CXX) -o $@ $(OBJS1) $(LIBS1) $(CXX) -o $@ $(OBJS1) $(LIBS1)


x_%.o: %.cpp x_%.o: %.cpp
$(CXX) $(CXXFLAGS) -Wall -fpic -pedantic \ $(CXX) $(CXXFLAGS) -Wall -fpic -pedantic \
-I. -D LIBRARY -c $< -o x_$*.o
-I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o


$(LIB_NAME): $(OBJS2) $(LIB_NAME): $(OBJS2)
$(CXX) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ $(OBJS2) $(LIBS2) $(CXX) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ $(OBJS2) $(LIBS2)

+ 15
- 5
src/compiledata.cpp View File

#include "voice.h" #include "voice.h"
#include "spect.h" #include "spect.h"


#ifdef PLATFORM_POSIX
#include <unistd.h>
#endif




#define tNUMBER 1 #define tNUMBER 1
#define tSTRING 2 #define tSTRING 2
int resample_wav = 0; int resample_wav = 0;
char fname_temp[100]; char fname_temp[100];
int scale_factor=0; int scale_factor=0;
int fd_temp;
char command[sizeof(path_source)+200]; char command[sizeof(path_source)+200];


fseek(f,24,SEEK_SET); fseek(f,24,SEEK_SET);
Error("Not mono: ",fname); Error("Not mono: ",fname);
} }
#else #else
sprintf(fname_temp,"%s.wav",tmpnam(NULL));
sprintf(command,"sox \"%s%s.wav\" -r %d -c 1 -w %s polyphase\n",path_source,fname,samplerate,fname_temp);
if(system(command) < 0)
strcpy(fname_temp,"/tmp/espeakXXXXXX");
if((fd_temp = mkstemp(fname_temp)) >= 0)
{ {
Error("Failed to resample: ",command);
return(0);
close(fd_temp);
sprintf(command,"sox \"%s%s.wav\" -r %d -c 1 -w %s polyphase\n",path_source,fname,samplerate,fname_temp);
if(system(command) < 0)
{
Error("Failed to resample: ",command);
return(0);
}
} }


f = fopen(fname_temp,"rb"); f = fopen(fname_temp,"rb");

+ 2
- 2
src/compiledict.cpp View File

} }


value = N_HASH_DICT; value = N_HASH_DICT;
fwrite(&value,4,1,f_out);
fwrite(&offset_rules,4,1,f_out);
Write4Bytes(f_out,value);
Write4Bytes(f_out,offset_rules);


compile_dictlist_start(); compile_dictlist_start();



+ 24
- 16
src/dictionary.cpp View File

to[size-1] = 0; to[size-1] = 0;
} }



// use the following macros for translation from little endian to host's endianness

#ifdef ARCH_BIG #ifdef ARCH_BIG
int reverse_word_bytes(int word)
{//=============================
// reverse the order of bytes from little-endian to big-endian
int ix;
int word2 = 0;
#define FIX_ENDIAN_USHORT(val) ((unsigned short) ( \
(unsigned short) ((unsigned short) (val) >> 8) | \
(unsigned short) ((unsigned short) (val) << 8)))


for(ix=24; ix>=0; ix -= 8)
{
word2 |= (word >> ix) & 0xff;
word2 = word2 << 8;
}
return(word2);
}
#define FIX_ENDIAN_UINT(val) ((unsigned int) ( \
(((unsigned int) (val) & (unsigned int) 0x000000ffU) << 24) | \
(((unsigned int) (val) & (unsigned int) 0x0000ff00U) << 8) | \
(((unsigned int) (val) & (unsigned int) 0x00ff0000U) >> 8) | \
(((unsigned int) (val) & (unsigned int) 0xff000000U) >> 24)))

#else

# define FIX_ENDIAN_USHORT(val) (val)
# define FIX_ENDIAN_UINT(val) (val)
#endif #endif




size = GetFileLength(fname); size = GetFileLength(fname);


f = fopen(fname,"rb"); f = fopen(fname,"rb");
if((f == NULL) || (size == 0))
if((f == NULL) || (size <= 0))
{ {
if(no_error == 0) if(no_error == 0)
{ {




pw = (int *)data_dictlist; pw = (int *)data_dictlist;
length = pw[1];
length = FIX_ENDIAN_UINT(pw[1]);
if(size <= (N_HASH_DICT + sizeof(int)*2)) if(size <= (N_HASH_DICT + sizeof(int)*2))
{ {
fprintf(stderr,"Empty _dict file: '%s\n",fname); fprintf(stderr,"Empty _dict file: '%s\n",fname);
return(2); return(2);
} }
if((pw[0] != N_HASH_DICT) || (length <= 0) || (length > 0x8000000))

if((FIX_ENDIAN_UINT(pw[0]) != N_HASH_DICT) ||
(length <= 0) || (length > 0x8000000))
{ {
fprintf(stderr,"Bad data: '%s'\n",fname); fprintf(stderr,"Bad data: '%s'\n",fname);
return(2); return(2);
pw = (unsigned int *)langopts.replace_chars; pw = (unsigned int *)langopts.replace_chars;
while(*pw != 0) while(*pw != 0)
{ {
*pw = reverse_word_bytes(*pw);
*pw = FIX_ENDIAN_UINT(*pw);
pw++;
*pw = FIX_ENDIAN_UINT(*pw);
pw++; pw++;
} }
#endif #endif

+ 2
- 2
src/numbers.cpp View File





// characters U+00e0 to U+017f // characters U+00e0 to U+017f
const short letter_accents_0e0[] = {
const unsigned short letter_accents_0e0[] = {
LETTER('a',M_GRAVE,0), // U+00e0 LETTER('a',M_GRAVE,0), // U+00e0
LETTER('a',M_ACUTE,0), LETTER('a',M_ACUTE,0),
LETTER('a',M_CIRCUMFLEX,0), LETTER('a',M_CIRCUMFLEX,0),




// characters U+0250 to U+029F // characters U+0250 to U+029F
const short letter_accents_250[] = {
const unsigned short letter_accents_250[] = {
LETTER('a',M_TURNED,0), // U+250 LETTER('a',M_TURNED,0), // U+250
LETTER(L_ALPHA,0,0), LETTER(L_ALPHA,0,0),
LETTER(L_ALPHA,M_TURNED,0), LETTER(L_ALPHA,M_TURNED,0),

+ 14
- 4
src/readclause.cpp View File

#include "voice.h" #include "voice.h"
#include "translate.h" #include "translate.h"


#ifdef PLATFORM_POSIX
#include <unistd.h>
#endif

#include <locale.h> #include <locale.h>
#define N_XML_BUF 256 #define N_XML_BUF 256


if((f = fopen(fname,"rb")) != NULL) if((f = fopen(fname,"rb")) != NULL)
{ {
int ix; int ix;
int fd_temp;
const char *resample; const char *resample;
int header[3]; int header[3];


else else
resample = "polyphase"; resample = "polyphase";


sprintf(fname_temp,"%s.wav",tmpnam(NULL));
sprintf(command,"sox \"%s\" -r %d -w -s -c1 %s %s\n", fname, samplerate, fname_temp, resample);
if(system(command) == 0)
strcpy(fname_temp,"/tmp/espeakXXXXXX");
if((fd_temp = mkstemp(fname_temp)) >= 0)
{ {
fname = fname_temp;
close(fd_temp);
// sprintf(fname_temp,"%s.wav",tmpnam(NULL));
sprintf(command,"sox \"%s\" -r %d -w -s -c1 %s %s\n", fname, samplerate, fname_temp, resample);
if(system(command) == 0)
{
fname = fname_temp;
}
} }
} }
} }

+ 1
- 1
src/synthdata.cpp View File

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


const char *version_string = "1.32 04.Mar.08";
const char *version_string = "1.33 06.Mar.08";
const int version_phdata = 0x013200; const int version_phdata = 0x013200;


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

+ 1
- 1
src/synthesize.cpp View File

int ix; int ix;
static char buf[5]; static char buf[5];


for(ix=0; ix<3; ix++)
for(ix=0; ix<4; ix++)
buf[ix] = word >> (ix*8); buf[ix] = word >> (ix*8);
buf[4] = 0; buf[4] = 0;
return(buf); return(buf);

+ 1
- 1
src/tr_languages.cpp View File



case L('t','a'): // Tamil case L('t','a'): // Tamil
{ {
static const short stress_lengths_ta[8] = {190, 190, 200, 200, 0, 0, 220, 220};
static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230};
static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 }; static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 };


tr = new Translator(); tr = new Translator();

+ 21
- 8
src/translate.cpp View File

} }


wordx[-1] = c_temp; wordx[-1] = c_temp;
pfix = 1;
prefix_chars[0] = 0;
n_chars = prefix_type & 0x3f;


for(ix=0; ix < n_chars; ix++) // num. of bytes to remove
if((prefix_type & SUFX_B) == 0)
{ {
prefix_chars[pfix++] = *wordx++;
for(ix=(prefix_type & 0xf); ix>0; ix--) // num. of characters to remove
{
wordx++;
while((*wordx & 0xc0) == 0x80) wordx++; // for multibyte characters
}
}
else
{
pfix = 1;
prefix_chars[0] = 0;
n_chars = prefix_type & 0x3f;


if((prefix_type & SUFX_B) && (ix == (n_chars-1)))
for(ix=0; ix < n_chars; ix++) // num. of bytes to remove
{ {
prefix_chars[pfix-1] = 0; // discard the last character of the prefix, this is the separator character
prefix_chars[pfix++] = *wordx++;
if((prefix_type & SUFX_B) && (ix == (n_chars-1)))
{
prefix_chars[pfix-1] = 0; // discard the last character of the prefix, this is the separator character
}
} }
prefix_chars[pfix] = 0;
} }
prefix_chars[pfix] = 0;
c_temp = wordx[-1]; c_temp = wordx[-1];
wordx[-1] = ' '; wordx[-1] = ' ';
confirm_prefix = 1; confirm_prefix = 1;


if(prefix_type & SUFX_B) if(prefix_type & SUFX_B)
{ {
// SUFX_B is used for Turkish, tr_rules contains "(Pb£
// retranslate the prefix part // retranslate the prefix part
char *wordpf; char *wordpf;
char prefix_phonemes2[12]; char prefix_phonemes2[12];

+ 20
- 0
src/transldlg.cpp View File

#include "translate.h" #include "translate.h"
#include "prosodydisplay.h" #include "prosodydisplay.h"


#ifdef PLATFORM_POSIX
#include <unistd.h>
#endif


#include "wx/font.h" #include "wx/font.h"
#include "wx/textctrl.h" #include "wx/textctrl.h"
#include "wx/button.h" #include "wx/button.h"
int clause_tone; int clause_tone;
int clause_count; int clause_count;
FILE *f; FILE *f;
int fd_temp;
char fname_temp[100]; char fname_temp[100];
static int n_ph_list; static int n_ph_list;
static PHONEME_LIST ph_list[N_PH_LIST+1]; static PHONEME_LIST ph_list[N_PH_LIST+1];
case T_RULES: case T_RULES:
case MENU_SPEAK_RULES: case MENU_SPEAK_RULES:
option_phonemes = 2; option_phonemes = 2;

#ifdef PLATFORM_POSIX
strcpy(fname_temp,"/tmp/espeakXXXXXX");
if((fd_temp = mkstemp(fname_temp)) >= 0)
{
close(fd_temp);

if((f = fopen(fname_temp,"w+")) != NULL)
{
f_trans = f; // write translation rule trace to a temp file
}
}
#else
strcpy(fname_temp,tmpnam(NULL)); strcpy(fname_temp,tmpnam(NULL));
if((f = fopen(fname_temp,"w+")) != NULL) if((f = fopen(fname_temp,"w+")) != NULL)
{ {
f_trans = f; // write translation rule trace to a temp file f_trans = f; // write translation rule trace to a temp file
} }
#endif
case T_TRANSLATE: case T_TRANSLATE:
case MENU_SPEAK_TRANSLATE: case MENU_SPEAK_TRANSLATE:
option_multibyte = espeakCHARS_AUTO; option_multibyte = espeakCHARS_AUTO;

+ 9
- 0
src/voices.cpp View File



p = voice->languages; // list of languages+dialects for which this voice is suitable p = voice->languages; // list of languages+dialects for which this voice is suitable


if(strcmp(spec_language,"mbrola")==0)
{
// only list mbrola voices
if(memcmp(voice->identifier,"mb/",3) == 0)
return(100);
return(0);
}

if(spec_n_parts == 0) if(spec_n_parts == 0)
{ {
score = 100; score = 100;
for(ix=0; ix<n_voices_list; ix++) for(ix=0; ix<n_voices_list; ix++)
{ {
vp = voices_list[ix]; vp = voices_list[ix];

if(((control & 1) == 0) && (memcmp(vp->identifier,"mb/",3) == 0)) if(((control & 1) == 0) && (memcmp(vp->identifier,"mb/",3) == 0))
continue; continue;



+ 4
- 2
src/wavegen.cpp View File

if(embedded_value[EMBED_T] > 0) if(embedded_value[EMBED_T] > 0)
{ {
// announcing punctuation // announcing punctuation
amp = embedded_value[EMBED_T] * 10;
delay = 130;
amp = embedded_value[EMBED_T] * 8;
delay = 60;
} }


if(delay == 0) if(delay == 0)


echo_head = (delay * samplerate)/1000; echo_head = (delay * samplerate)/1000;
echo_length = echo_head; // ensure completion of echo at the end of speech. Use 1 delay period? echo_length = echo_head; // ensure completion of echo at the end of speech. Use 1 delay period?
if(amp == 0)
echo_length = 0;
if(amp > 20) if(amp > 20)
echo_length = echo_head * 2; // perhaps allow 2 echo periods if the echo is loud. echo_length = echo_head * 2; // perhaps allow 2 echo periods if the echo is loud.



Loading…
Cancel
Save