mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-10 00:11:11 +00:00
[1.33] continued
git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@159 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
|
||||
// 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
|
||||
@@ -0,0 +1,115 @@
|
||||
|
||||
// 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
@@ -1,4 +1,4 @@
|
||||
49 phoneme tables
|
||||
47 phoneme tables
|
||||
new total
|
||||
base 98 98
|
||||
base2 24 117
|
||||
@@ -39,7 +39,7 @@
|
||||
grc 12 122
|
||||
sv 25 120
|
||||
no 28 124
|
||||
is 32 123
|
||||
is 33 124
|
||||
vi 42 136
|
||||
zhy 40 131
|
||||
zh 65 148
|
||||
@@ -47,8 +47,6 @@
|
||||
tr 18 122
|
||||
ku 17 121
|
||||
id 14 119
|
||||
ja 7 103
|
||||
rw 12 122
|
||||
|
||||
Data file Used by
|
||||
b/b [b] base
|
||||
@@ -576,14 +574,17 @@ ufric/s_ [s] base
|
||||
[s] es
|
||||
[s#] pt
|
||||
[z;] ro
|
||||
[s2] is
|
||||
ufric/s! [s] base
|
||||
[s2] fi
|
||||
[s] fr
|
||||
[s2] hu
|
||||
[s] es
|
||||
[s#] pt
|
||||
[s2] is
|
||||
ufric/s_continue [s2] fi
|
||||
[s2] hu
|
||||
[s2] is
|
||||
ufric/sh [S] base
|
||||
[S] fr
|
||||
[s#] pt_pt
|
||||
@@ -696,7 +697,7 @@ ustop/p_ [p] base
|
||||
[p2] fr
|
||||
[ph] hi
|
||||
[ph] zh
|
||||
ustop/percus10 [(X1] base
|
||||
ustop/percus10 [(X1)] base
|
||||
ustop/pl [p] base
|
||||
[p] base2
|
||||
[p] fi
|
||||
@@ -789,7 +790,7 @@ ustop/tsh_ [tS] base
|
||||
ustop/t_short [t.] hi
|
||||
[t] sk
|
||||
[t] el
|
||||
ustop/tsh_pzd [tS;] zh
|
||||
ustop/tsh_pzd [tS;h] zh
|
||||
ustop/tsh_pzd_unasp [tS;] zh
|
||||
ustop/tsh_sr [tS] sr
|
||||
ustop/ts_pzd [tS;] base
|
||||
@@ -802,7 +803,7 @@ ustop/ts_pzd2 [c] hi
|
||||
[c] hu
|
||||
ustop/t_sr [d] sr
|
||||
[t] sr
|
||||
ustop/ts_rfx [ts.] zh
|
||||
ustop/ts_rfx [ts.h] zh
|
||||
ustop/ts_rfx_unasp [ts.] zh
|
||||
ustop/ts_sr [tS;] sr
|
||||
[dZ;] sr
|
||||
@@ -1028,9 +1029,9 @@ vnasal/a#_n [&~] pt
|
||||
vnasal/a#u_n [&U~] pt
|
||||
[&U~] pt_pt
|
||||
vnasal/ee_n [E~] en
|
||||
[a] en_us
|
||||
[E~] fr_ca
|
||||
vnasal/ee_n2 [E~] hi
|
||||
vnasal/ee_n2 [a] en_us
|
||||
[E~] hi
|
||||
[E~] pl
|
||||
[&~] pt_pt
|
||||
vnasal/e_n [e~] af
|
||||
@@ -1190,15 +1191,12 @@ vowel/a [a] en_n
|
||||
[a] it
|
||||
[a] zh
|
||||
[a] id
|
||||
[a] ja
|
||||
vowel/a# [a/] base2
|
||||
[a2] en_sc
|
||||
[a2] en_wi
|
||||
[&] sr
|
||||
[&] pt
|
||||
[&/] pt
|
||||
[a#] rw
|
||||
[a/] rw
|
||||
vowel/a_2 [a] base2
|
||||
[a] en_wi
|
||||
[A:] en_wi
|
||||
@@ -1209,7 +1207,6 @@ vowel/a_2 [a] base2
|
||||
[a] pt_pt
|
||||
[a] ro
|
||||
[a:] vi
|
||||
[a] rw
|
||||
vowel/a#_2 [&] hr
|
||||
[a2] sv
|
||||
[&] is
|
||||
@@ -1294,8 +1291,6 @@ vowel/e [e] base2
|
||||
[e] grc
|
||||
[e] vi
|
||||
[e] id
|
||||
[e] rw
|
||||
[e#] rw
|
||||
vowel/e# [I] en_sc
|
||||
[I2] en_sc
|
||||
vowel/e_2 [eI] en_sc
|
||||
@@ -1350,7 +1345,6 @@ vowel/e_mid [E] en_rp
|
||||
[E] tr
|
||||
[E] id
|
||||
[E2] id
|
||||
[e] ja
|
||||
vowel/e_mid2 [E] af
|
||||
[E] de
|
||||
[E2] de
|
||||
@@ -1388,9 +1382,6 @@ vowel/i [i] base2
|
||||
[i] zhy
|
||||
[i] zh
|
||||
[i] sw
|
||||
[i] ja
|
||||
[i] rw
|
||||
[i#] rw
|
||||
vowel/i# [i] en_rp
|
||||
[y:] cy
|
||||
vowel/i_2 [i:] en_rp
|
||||
@@ -1486,8 +1477,6 @@ vowel/o [o] base2
|
||||
[o] grc
|
||||
[o:] sv
|
||||
[o] id
|
||||
[o] rw
|
||||
[o#] rw
|
||||
vowel/o_2 [o:] cy
|
||||
[o:] hi
|
||||
[o:] hu
|
||||
@@ -1525,7 +1514,6 @@ vowel/oo [O:] en_sc
|
||||
[o] zhy
|
||||
[O] tr
|
||||
[O] id
|
||||
[o] ja
|
||||
vowel/oo_1 [O:] en_n
|
||||
[O:] en_rp
|
||||
[O@] en_rp
|
||||
@@ -1620,8 +1608,6 @@ vowel/u_bck [u] base2
|
||||
[u] is
|
||||
[u] zhy
|
||||
[u] zh
|
||||
[u] rw
|
||||
[u#] rw
|
||||
vowel/u_bck2 [u:] la
|
||||
vowel/u_fnt [u:] en_rp
|
||||
vowel/uu [U] en
|
||||
@@ -1642,7 +1628,6 @@ vowel/uu_bck [U] en_n
|
||||
[U] pt
|
||||
[U] no
|
||||
[u] zhy
|
||||
vowel/u_unr [u] ja
|
||||
vowel/V [3] en_sc
|
||||
vowel/V_2 [V] en
|
||||
[a] af
|
||||
@@ -1794,7 +1779,7 @@ vwl_ru/u [u] ru
|
||||
vwl_ru/u# [u#] ru
|
||||
vwl_ru/u#u [u"] ru
|
||||
vwl_sv/r_sv3 [r] sv
|
||||
vwl_zh/aang [aan] zhy
|
||||
vwl_zh/aang [aang] zhy
|
||||
vwl_zh/aau [Au] zh
|
||||
vwl_zh/a_n [a] zh
|
||||
vwl_zh/ang [ang] zhy
|
||||
@@ -1805,7 +1790,7 @@ vwl_zh/ie [iE] zh
|
||||
vwl_zh/ing [ing] zhy
|
||||
vwl_zh/iou [iou] zh
|
||||
vwl_zh/ng [ng] zhy
|
||||
vwl_zh/oeng [oen] zhy
|
||||
vwl_zh/oeng [oeng] zhy
|
||||
vwl_zh/ong [ong] zhy
|
||||
vwl_zh/uaa [uA] zh
|
||||
vwl_zh/uai [uai] zh
|
||||
|
||||
@@ -29,9 +29,9 @@ phoneme a
|
||||
vowel starttype (a) endtype (@)
|
||||
length 210
|
||||
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
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -262,3 +262,16 @@ phoneme v // no fricative noise
|
||||
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
@@ -70,20 +70,20 @@ endphoneme
|
||||
|
||||
phoneme u
|
||||
vowel starttype (u) endtype (u)
|
||||
length 130
|
||||
length 110
|
||||
formants vowel/u
|
||||
reduceto U 4
|
||||
endphoneme
|
||||
|
||||
phoneme U
|
||||
vowel starttype (u) endtype (u)
|
||||
length 130
|
||||
length 110
|
||||
formants vowel/u#_3
|
||||
endphoneme
|
||||
|
||||
phoneme u:
|
||||
vowel starttype (u) endtype (u)
|
||||
length 270
|
||||
length 250
|
||||
formants vowel/u
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -1274,9 +1274,3 @@ include ph_kurdish
|
||||
phonemetable id base2
|
||||
include ph_indonesian
|
||||
|
||||
phonemetable ja base
|
||||
include ph_japanese
|
||||
|
||||
phonemetable rw base2
|
||||
include ph_kinyarwanda
|
||||
|
||||
|
||||
Binary file not shown.
@@ -2,7 +2,7 @@
|
||||
|
||||
[Setup]
|
||||
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).
|
||||
WindowVisible=yes
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
[Setup]
|
||||
AppName=eSpeakEdit
|
||||
AppVerName=eSpeakEdit version 1.32
|
||||
AppVerName=eSpeakEdit version 1.33
|
||||
DefaultDirName={pf}\eSpeak
|
||||
DefaultGroupName=eSpeak
|
||||
OutputBaseFilename=setup_espeakedit
|
||||
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
# 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=/
|
||||
BINDIR=$(PREFIX)/usr/bin
|
||||
@@ -6,7 +6,7 @@ INCDIR=$(PREFIX)/usr/include/espeak
|
||||
LIBDIR=$(PREFIX)/usr/lib
|
||||
DATADIR=$(PREFIX)/usr/share/espeak-data
|
||||
|
||||
RELEASE = 1.31
|
||||
RELEASE = 1.33
|
||||
BIN_NAME = speak
|
||||
BIN2_NAME = espeak
|
||||
LIB_NAME = libespeak.so
|
||||
@@ -68,7 +68,7 @@ all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME)
|
||||
mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG)
|
||||
|
||||
.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)
|
||||
$(CXX) -o $@ $(OBJS1) $(LIBS1)
|
||||
@@ -80,7 +80,7 @@ $(BIN2_NAME): $(OBJS3) $(LIB_NAME)
|
||||
|
||||
x_%.o: %.cpp
|
||||
$(CXX) $(CXXFLAGS) -Wall -fpic -pedantic \
|
||||
-I. -D LIBRARY -c $< -o x_$*.o
|
||||
-I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o
|
||||
|
||||
$(LIB_NAME): $(OBJS2)
|
||||
$(CXX) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ $(OBJS2) $(LIBS2)
|
||||
|
||||
+15
-5
@@ -36,6 +36,11 @@
|
||||
#include "voice.h"
|
||||
#include "spect.h"
|
||||
|
||||
#ifdef PLATFORM_POSIX
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define tNUMBER 1
|
||||
#define tSTRING 2
|
||||
@@ -742,6 +747,7 @@ int Compile::LoadWavefile(FILE *f, const char *fname)
|
||||
int resample_wav = 0;
|
||||
char fname_temp[100];
|
||||
int scale_factor=0;
|
||||
int fd_temp;
|
||||
char command[sizeof(path_source)+200];
|
||||
|
||||
fseek(f,24,SEEK_SET);
|
||||
@@ -762,12 +768,16 @@ int Compile::LoadWavefile(FILE *f, const char *fname)
|
||||
Error("Not mono: ",fname);
|
||||
}
|
||||
#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");
|
||||
|
||||
+2
-2
@@ -1516,8 +1516,8 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
|
||||
+25
-17
@@ -87,20 +87,24 @@ void strncpy0(char *to,const char *from, int size)
|
||||
to[size-1] = 0;
|
||||
}
|
||||
|
||||
#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;
|
||||
|
||||
for(ix=24; ix>=0; ix -= 8)
|
||||
{
|
||||
word2 |= (word >> ix) & 0xff;
|
||||
word2 = word2 << 8;
|
||||
}
|
||||
return(word2);
|
||||
}
|
||||
// use the following macros for translation from little endian to host's endianness
|
||||
|
||||
#ifdef ARCH_BIG
|
||||
#define FIX_ENDIAN_USHORT(val) ((unsigned short) ( \
|
||||
(unsigned short) ((unsigned short) (val) >> 8) | \
|
||||
(unsigned short) ((unsigned short) (val) << 8)))
|
||||
|
||||
#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
|
||||
|
||||
|
||||
@@ -157,7 +161,7 @@ int Translator::LoadDictionary(const char *name, int no_error)
|
||||
size = GetFileLength(fname);
|
||||
|
||||
f = fopen(fname,"rb");
|
||||
if((f == NULL) || (size == 0))
|
||||
if((f == NULL) || (size <= 0))
|
||||
{
|
||||
if(no_error == 0)
|
||||
{
|
||||
@@ -175,13 +179,15 @@ int Translator::LoadDictionary(const char *name, int no_error)
|
||||
|
||||
|
||||
pw = (int *)data_dictlist;
|
||||
length = pw[1];
|
||||
length = FIX_ENDIAN_UINT(pw[1]);
|
||||
if(size <= (N_HASH_DICT + sizeof(int)*2))
|
||||
{
|
||||
fprintf(stderr,"Empty _dict file: '%s\n",fname);
|
||||
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);
|
||||
return(2);
|
||||
@@ -258,7 +264,9 @@ void Translator::InitGroups(void)
|
||||
pw = (unsigned int *)langopts.replace_chars;
|
||||
while(*pw != 0)
|
||||
{
|
||||
*pw = reverse_word_bytes(*pw);
|
||||
*pw = FIX_ENDIAN_UINT(*pw);
|
||||
pw++;
|
||||
*pw = FIX_ENDIAN_UINT(*pw);
|
||||
pw++;
|
||||
}
|
||||
#endif
|
||||
|
||||
+2
-2
@@ -126,7 +126,7 @@ static const short non_ascii_tab[] = {
|
||||
|
||||
|
||||
// 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_ACUTE,0),
|
||||
LETTER('a',M_CIRCUMFLEX,0),
|
||||
@@ -291,7 +291,7 @@ LETTER('s',M_NAME,0), // long-s // U+17f
|
||||
|
||||
|
||||
// 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(L_ALPHA,0,0),
|
||||
LETTER(L_ALPHA,M_TURNED,0),
|
||||
|
||||
+14
-4
@@ -34,6 +34,10 @@
|
||||
#include "voice.h"
|
||||
#include "translate.h"
|
||||
|
||||
#ifdef PLATFORM_POSIX
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include <locale.h>
|
||||
#define N_XML_BUF 256
|
||||
|
||||
@@ -642,6 +646,7 @@ static int LoadSoundFile(const char *fname, int index)
|
||||
if((f = fopen(fname,"rb")) != NULL)
|
||||
{
|
||||
int ix;
|
||||
int fd_temp;
|
||||
const char *resample;
|
||||
int header[3];
|
||||
|
||||
@@ -660,11 +665,16 @@ static int LoadSoundFile(const char *fname, int index)
|
||||
else
|
||||
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
@@ -35,7 +35,7 @@
|
||||
#include "translate.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;
|
||||
|
||||
int option_device_number = -1;
|
||||
|
||||
+1
-1
@@ -82,7 +82,7 @@ const char *WordToString(unsigned int word)
|
||||
int ix;
|
||||
static char buf[5];
|
||||
|
||||
for(ix=0; ix<3; ix++)
|
||||
for(ix=0; ix<4; ix++)
|
||||
buf[ix] = word >> (ix*8);
|
||||
buf[4] = 0;
|
||||
return(buf);
|
||||
|
||||
@@ -656,7 +656,7 @@ SetLengthMods(tr,3); // all equal
|
||||
|
||||
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 };
|
||||
|
||||
tr = new Translator();
|
||||
|
||||
+22
-9
@@ -893,26 +893,39 @@ if((wmark > 0) && (wmark < 8))
|
||||
}
|
||||
|
||||
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++;
|
||||
|
||||
if((prefix_type & SUFX_B) && (ix == (n_chars-1)))
|
||||
for(ix=(prefix_type & 0xf); ix>0; ix--) // num. of characters to remove
|
||||
{
|
||||
prefix_chars[pfix-1] = 0; // discard the last character of the prefix, this is the separator character
|
||||
wordx++;
|
||||
while((*wordx & 0xc0) == 0x80) wordx++; // for multibyte characters
|
||||
}
|
||||
}
|
||||
prefix_chars[pfix] = 0;
|
||||
else
|
||||
{
|
||||
pfix = 1;
|
||||
prefix_chars[0] = 0;
|
||||
n_chars = prefix_type & 0x3f;
|
||||
|
||||
for(ix=0; ix < n_chars; ix++) // num. of bytes to remove
|
||||
{
|
||||
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;
|
||||
}
|
||||
c_temp = wordx[-1];
|
||||
wordx[-1] = ' ';
|
||||
confirm_prefix = 1;
|
||||
|
||||
if(prefix_type & SUFX_B)
|
||||
{
|
||||
// SUFX_B is used for Turkish, tr_rules contains "(Pb£
|
||||
// retranslate the prefix part
|
||||
char *wordpf;
|
||||
char prefix_phonemes2[12];
|
||||
|
||||
@@ -31,6 +31,11 @@
|
||||
#include "translate.h"
|
||||
#include "prosodydisplay.h"
|
||||
|
||||
#ifdef PLATFORM_POSIX
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
|
||||
#include "wx/font.h"
|
||||
#include "wx/textctrl.h"
|
||||
#include "wx/button.h"
|
||||
@@ -372,6 +377,7 @@ void TranslDlg::OnCommand(wxCommandEvent& event)
|
||||
int clause_tone;
|
||||
int clause_count;
|
||||
FILE *f;
|
||||
int fd_temp;
|
||||
char fname_temp[100];
|
||||
static int n_ph_list;
|
||||
static PHONEME_LIST ph_list[N_PH_LIST+1];
|
||||
@@ -383,11 +389,25 @@ void TranslDlg::OnCommand(wxCommandEvent& event)
|
||||
case T_RULES:
|
||||
case MENU_SPEAK_RULES:
|
||||
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));
|
||||
if((f = fopen(fname_temp,"w+")) != NULL)
|
||||
{
|
||||
f_trans = f; // write translation rule trace to a temp file
|
||||
}
|
||||
#endif
|
||||
case T_TRANSLATE:
|
||||
case MENU_SPEAK_TRANSLATE:
|
||||
option_multibyte = espeakCHARS_AUTO;
|
||||
|
||||
@@ -1052,6 +1052,14 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s
|
||||
|
||||
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)
|
||||
{
|
||||
score = 100;
|
||||
@@ -1198,6 +1206,7 @@ static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices, int
|
||||
for(ix=0; ix<n_voices_list; ix++)
|
||||
{
|
||||
vp = voices_list[ix];
|
||||
|
||||
if(((control & 1) == 0) && (memcmp(vp->identifier,"mb/",3) == 0))
|
||||
continue;
|
||||
|
||||
|
||||
+4
-2
@@ -816,8 +816,8 @@ static void WavegenSetEcho(void)
|
||||
if(embedded_value[EMBED_T] > 0)
|
||||
{
|
||||
// announcing punctuation
|
||||
amp = embedded_value[EMBED_T] * 10;
|
||||
delay = 130;
|
||||
amp = embedded_value[EMBED_T] * 8;
|
||||
delay = 60;
|
||||
}
|
||||
|
||||
if(delay == 0)
|
||||
@@ -825,6 +825,8 @@ static void WavegenSetEcho(void)
|
||||
|
||||
echo_head = (delay * samplerate)/1000;
|
||||
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)
|
||||
echo_length = echo_head * 2; // perhaps allow 2 echo periods if the echo is loud.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user