mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 13:38:47 +00:00
[1.24.12] Produce dictsource/dict_phonemes, a list of which phonemes are used by each language's *_rules and *_list files.
Fix crash with -X option when spelling words (acronyms). Rules files: added special character X meaning "no vowel until the word boundary". Used for lang=no. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@14 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
+56
-53
@@ -141,52 +141,53 @@ _dpt pOInt
|
||||
// ABBREVIATIONS
|
||||
//**************
|
||||
|
||||
abc eIbi:s'i:
|
||||
ac eI'si:
|
||||
adfs eIdi:Ef'Es
|
||||
a.k.a aka2_!
|
||||
agm eIdZi:'Em
|
||||
ai eI;'aI
|
||||
api apI2
|
||||
asap eIEseIpi:
|
||||
awol eIw0l
|
||||
cio si:aI'oU
|
||||
ctrl k0ntr'oUl
|
||||
dept dI2pA@tm@nt
|
||||
diy di:aI'waI
|
||||
eg fO@Egz'aamp@L
|
||||
etc Et'sEtr@
|
||||
eur jU@
|
||||
hmm h@m
|
||||
(http ://) eItSti:ti:'pi:_
|
||||
ibm aIbi:Em
|
||||
ie aIi:_! $pause
|
||||
i.e aIi:_! $pause
|
||||
irc aI;A@s'i:
|
||||
lbs paUndz
|
||||
ltd lImItId
|
||||
mc m@k
|
||||
oem oUi:'Em
|
||||
ok oU'keI
|
||||
os oUEs
|
||||
riscos rIskoUEs
|
||||
sae EseI'i:
|
||||
seac si:ak
|
||||
st s@nt
|
||||
th T
|
||||
thu T3: // Thursday
|
||||
?5 thu TIR // Thursday
|
||||
ufo ju:Ef'oU
|
||||
ui ,ju:'aI
|
||||
uk ju:k'eI
|
||||
url ju:A@'El
|
||||
usa ju:Es'eI
|
||||
wwii dVb@Lju:dVb@Lju:t'u:
|
||||
xy EkswaI
|
||||
abc $abbrev
|
||||
ac $abbrev
|
||||
adfs $abbrev
|
||||
a.k.a aka2_!
|
||||
agm $abbrev
|
||||
ai $abbrev
|
||||
api $abbrev
|
||||
asap $abbrev
|
||||
awol eIw0l
|
||||
cio $abbrev
|
||||
ctrl k0ntr'oUl
|
||||
dept dI2pA@tm@nt
|
||||
diy $abbrev
|
||||
edt $abbrev
|
||||
eg fO@Egz'aamp@L
|
||||
est $abbrev
|
||||
etc Et'sEtr@
|
||||
eur jU@
|
||||
hmm h@m
|
||||
(http ://) eItSti:ti:'pi:_
|
||||
ibm $abbrev
|
||||
ie aIi:_! $pause
|
||||
i.e aIi:_! $pause
|
||||
irc $abbrev
|
||||
lbs paUndz
|
||||
ltd lImItId
|
||||
mc m@k
|
||||
oem $abbrev
|
||||
ok $abbrev
|
||||
os $abbrev
|
||||
riscos rIskoUEs
|
||||
sae $abbrev
|
||||
st s@nt
|
||||
th T
|
||||
thu T3: // Thursday
|
||||
?5 thu TIR // Thursday
|
||||
ufo $abbrev
|
||||
ui $abbrev
|
||||
uk $abbrev
|
||||
url $abbrev
|
||||
usa $abbrev
|
||||
wwii dVb@Lju:dVb@Lju:t'u:
|
||||
xy $abbrev
|
||||
|
||||
ii tu: $abbrev // roman numerals
|
||||
iii Tri: $abbrev
|
||||
iv fo@ $abbrev
|
||||
ii tu: $abbrev // roman numerals
|
||||
iii Tri: $abbrev
|
||||
iv fo@ $abbrev
|
||||
|
||||
|
||||
nd $only
|
||||
@@ -194,14 +195,14 @@ rd $only
|
||||
th $only
|
||||
st $only
|
||||
|
||||
mr mIst3 $dot
|
||||
mrs mIsIz $dot
|
||||
mr mIst3 $dot
|
||||
mrs mIsIz $dot
|
||||
//ms mIz $dot
|
||||
dr d0kt3 $dot $capital
|
||||
lt $dot
|
||||
prof $dot
|
||||
rev $dot
|
||||
st $dot
|
||||
dr d0kt3 $dot $capital
|
||||
lt $dot
|
||||
prof $dot
|
||||
rev $dot
|
||||
st $dot
|
||||
|
||||
|
||||
|
||||
@@ -448,6 +449,7 @@ bastion basti@n
|
||||
batman batman
|
||||
belisha b@l'i:S@
|
||||
bely bI2laI
|
||||
beryl bEr@L
|
||||
basal beIs@L
|
||||
best bEst
|
||||
beta bi:t@
|
||||
@@ -866,7 +868,6 @@ foretell fo@t'El
|
||||
forever $2
|
||||
forewarn $2
|
||||
formid fO@m'Id // formidable
|
||||
forte fo@teI
|
||||
foyer fOIeI
|
||||
freelance fri:laans
|
||||
frigate frIg@t
|
||||
@@ -1327,6 +1328,7 @@ peculiar pI2kju:lI3
|
||||
pedalo pEd@loU
|
||||
pejorative p@dZ0r@tIv
|
||||
penal pi:n@L
|
||||
?4 penchant p0nS0n
|
||||
peninsula p@n'InsjUl@
|
||||
penis pi:nI2s
|
||||
perfectly p3:fEktlI2
|
||||
@@ -1672,6 +1674,7 @@ sundae sVndeI
|
||||
sundial sVndaI@l
|
||||
suite swi:t $onlys
|
||||
superb su:p'3:b
|
||||
superfluous su:p'3:flu:@s
|
||||
superman su:p3man
|
||||
supplier s@plaI3
|
||||
suppose $2
|
||||
|
||||
+5
-1
@@ -317,6 +317,7 @@
|
||||
c) ad (enc eId
|
||||
ad (eq ad
|
||||
_) ad (i ad
|
||||
gl) ad (i ad
|
||||
adjec adZEk
|
||||
ad (le eId
|
||||
ad (junct_ ad
|
||||
@@ -479,7 +480,7 @@
|
||||
_) al (i al
|
||||
_) al (ig a2l
|
||||
_) ali (Be a2laI
|
||||
&) al (isC_ @l
|
||||
&) ali (sC_ @li
|
||||
&) al (isCic @l
|
||||
_) al (k al
|
||||
_) all (@ a2l
|
||||
@@ -2677,6 +2678,7 @@
|
||||
pl) ia (nt 'aI@
|
||||
ill) ia (nt I2@
|
||||
al) ia (nt I2@
|
||||
_p) ia (nA i@
|
||||
iar aI@
|
||||
@l) iar (_ i@
|
||||
iara (_ I'A:r@
|
||||
@@ -3754,6 +3756,7 @@
|
||||
&) or (ous @
|
||||
orough Vr@
|
||||
eff) or (t 3
|
||||
f) orte (_ 'o@teI
|
||||
w) or (t_ o@
|
||||
w) or (r V
|
||||
w) or (n o@
|
||||
@@ -4473,6 +4476,7 @@
|
||||
_) tri (vi trI
|
||||
tsch tS
|
||||
_) two tu:
|
||||
ttu (r t@
|
||||
@) tur (A tS@r
|
||||
@) tur (al_ tS=@r
|
||||
@) tur (y tS@r
|
||||
|
||||
+2
-1
@@ -4,6 +4,7 @@
|
||||
.group a
|
||||
a a
|
||||
aj (K aI
|
||||
a (r A // don't reduce to [&]
|
||||
|
||||
.group b
|
||||
b b
|
||||
@@ -70,7 +71,7 @@
|
||||
o o
|
||||
ou oU
|
||||
oj (K oI
|
||||
o (r 8
|
||||
&) o (r_ 8
|
||||
|
||||
.group p
|
||||
p p
|
||||
|
||||
+8
-6
@@ -65,7 +65,7 @@ _9X n'It:i:
|
||||
_0C h'u-:nd@-*e:d@2
|
||||
_1C 'Et||h'u-:nd@-*e:d@2
|
||||
_0M1 t'u-:s@n
|
||||
_0M1 'Et||t'u-:s@n
|
||||
_1M1 'Et||t'u-:s@n
|
||||
_0M2 m'Illi:;,u:n@r
|
||||
_1M2 'e:n||m'Illi:;,u:n
|
||||
|
||||
@@ -84,13 +84,13 @@ ei $u
|
||||
|
||||
|
||||
// pronouns
|
||||
jeg $u+
|
||||
jeg jaI $u+
|
||||
du $u+
|
||||
han $u+
|
||||
hun $u+
|
||||
vi $u+
|
||||
dere $u+
|
||||
de $u+
|
||||
de di: $u+
|
||||
|
||||
meg $u+
|
||||
deg $u+
|
||||
@@ -104,8 +104,7 @@ denne $u+
|
||||
dette $u+
|
||||
disse $u+
|
||||
den $u+
|
||||
det $u+
|
||||
de $u+
|
||||
det de: $u+
|
||||
|
||||
|
||||
// possessive adjectives
|
||||
@@ -135,7 +134,7 @@ i $u $brk // in
|
||||
av $u $brk // of, off, by
|
||||
bak $pause // behind
|
||||
etter $u $pause // after
|
||||
for $u $pause // for
|
||||
for fOr: $u $pause // for
|
||||
foran $pause // in front of
|
||||
fra $u $pause // from
|
||||
in $u $brk // in
|
||||
@@ -216,6 +215,9 @@ _å o:
|
||||
_i i:
|
||||
i i: $atend
|
||||
|
||||
|
||||
|
||||
// MAIN WORD DICTIONARY
|
||||
//*********************
|
||||
|
||||
kom kOm
|
||||
|
||||
@@ -8,13 +8,17 @@
|
||||
a A:
|
||||
a (C% A
|
||||
a (_ A
|
||||
X) a (CCX A // single syllable with >= 2 final consonants
|
||||
ai AI
|
||||
au aU
|
||||
|
||||
aa o: // å
|
||||
aa (C% O
|
||||
X) aa (CCX O
|
||||
ae a: // æ
|
||||
ae (C% a
|
||||
X) ae (CCX a
|
||||
|
||||
|
||||
.group b
|
||||
b b
|
||||
@@ -36,10 +40,12 @@
|
||||
d d
|
||||
dd d:
|
||||
r) d (_
|
||||
&) det (_ d@2
|
||||
|
||||
.group e
|
||||
e e:
|
||||
e (C% E
|
||||
X) e (CCX E
|
||||
ei aI
|
||||
e (rC a // ??
|
||||
&) e (_ @2
|
||||
@@ -70,6 +76,7 @@
|
||||
.group i
|
||||
i i:
|
||||
i (C% I
|
||||
X) i (CCX I
|
||||
&) ig (_ I
|
||||
|
||||
.group j
|
||||
@@ -102,10 +109,12 @@
|
||||
.group o
|
||||
o u:
|
||||
o (C% O
|
||||
X) o (CCX O
|
||||
oi OI
|
||||
|
||||
oe Y: // ø
|
||||
oe (C% W
|
||||
X) oe (CCX W
|
||||
oey Yy
|
||||
|
||||
o (nd U
|
||||
@@ -155,6 +164,7 @@
|
||||
.group u
|
||||
u u-:
|
||||
u (C% u-
|
||||
X) u (CCX u-
|
||||
ui u-I
|
||||
|
||||
.group v
|
||||
@@ -171,6 +181,7 @@
|
||||
.group y
|
||||
y y:
|
||||
y (C% y
|
||||
X) y (CCX y
|
||||
|
||||
.group z
|
||||
z s
|
||||
@@ -180,24 +191,29 @@
|
||||
.group å
|
||||
å o:
|
||||
å (C% O
|
||||
X) å (CCX O
|
||||
|
||||
.group æ
|
||||
æ E:
|
||||
æ (r a:
|
||||
æ (C% a
|
||||
X) æ (CCX a
|
||||
|
||||
.group ø
|
||||
ø Y:
|
||||
ø (C% W
|
||||
X) ø (CCX W
|
||||
øy Yy
|
||||
|
||||
.group ä
|
||||
ä E:
|
||||
ä (C% E
|
||||
X) ä (CCX E
|
||||
|
||||
.group ö
|
||||
ö Y:
|
||||
ö (C% W
|
||||
X) ö (CCX W
|
||||
|
||||
.group
|
||||
é 'e:
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
fi 40 123
|
||||
fr 33 115
|
||||
fr_ca 11 115
|
||||
hi 50 128
|
||||
hi 49 127
|
||||
hu 24 109
|
||||
nl 25 112
|
||||
pl 17 103
|
||||
sk 25 120
|
||||
cs 5 120
|
||||
hr 23 129
|
||||
hr 24 130
|
||||
ru 36 120
|
||||
it 28 112
|
||||
es 6 112
|
||||
@@ -233,7 +233,6 @@
|
||||
2 ufric/x base vi
|
||||
4 ufric/x2 af nl pt
|
||||
1 ufric/x_hr hr
|
||||
1 ufric/xx hr
|
||||
1 ustop/c base
|
||||
5 ustop/k base en fr hi sw
|
||||
9 ustop/k_ base en fi fr hi hu it el sw
|
||||
@@ -346,6 +345,7 @@
|
||||
1 vdiph/u-i vi
|
||||
1 vdiph/ui_2 af
|
||||
2 vdiph/ui_3 cy
|
||||
1 vdiph/ui_4 hr
|
||||
1 vdiph/Vi vi
|
||||
1 vdiph/Vu af
|
||||
2 vdiph/Vu_2 en_us en_wm
|
||||
@@ -411,9 +411,9 @@
|
||||
1 vowel/3_3 en_rp
|
||||
3 vowel/3_en en en_wm af
|
||||
2 vowel/@_4 nl hr
|
||||
2 vowel/8_2 en_us sv
|
||||
3 vowel/8_2 en_us hr sv
|
||||
1 vowel/8_3 zh_yue
|
||||
10 vowel/a en_n cy de hu nl pl sk hr
|
||||
11 vowel/a en_n cy de hu nl pl sk hr
|
||||
4 vowel/a# en_sc it pt
|
||||
5 vowel/a_2 eo it pt_pt ro vi
|
||||
4 vowel/a#_2 hr sv is sw
|
||||
@@ -463,7 +463,6 @@
|
||||
6 vowel/ii_en en en_n
|
||||
5 vowel/@_low hi ro no
|
||||
8 vowel/o en en_wm de hi it pt_pt sv
|
||||
1 vowel/o- hr
|
||||
4 vowel/o_2 cy hi hu no
|
||||
2 vowel/o-_2 en_n en_wm
|
||||
2 vowel/o_3 en_sc
|
||||
@@ -487,7 +486,7 @@
|
||||
3 vowelr/r-voc hi sk
|
||||
2 vowelr/V3_r en en_sc
|
||||
1 vowelr/V_r en
|
||||
8 vowel/u en_n cy de eo fr hi cs
|
||||
7 vowel/u en_n cy de eo fr cs
|
||||
5 vowel/u# en en_sc
|
||||
3 vowel/u_2 fi sk ro
|
||||
1 vowel/u#_2 sv
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+18
-14
@@ -25,6 +25,13 @@ phoneme a
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme A // 'a' before 'r', doesn't reduce to [&]
|
||||
vowel starttype (a) endtype (a)
|
||||
length 160
|
||||
formants vowel/a
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme &
|
||||
vowel starttype (a) endtype (a)
|
||||
length 140
|
||||
@@ -72,7 +79,7 @@ endphoneme
|
||||
phoneme 8
|
||||
vowel starttype (o) endtype (o)
|
||||
length 140
|
||||
formants vowel/o-
|
||||
formants vowel/8_2
|
||||
endphoneme
|
||||
|
||||
|
||||
@@ -92,14 +99,14 @@ endphoneme
|
||||
|
||||
phoneme aI
|
||||
vowel starttype (a) endtype (i)
|
||||
length 230
|
||||
length 250
|
||||
formants vdiph/ai
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme eI
|
||||
vowel starttype (e) endtype (i)
|
||||
length 220
|
||||
length 250
|
||||
formants vdiph/ei_2
|
||||
linkout ;
|
||||
endphoneme
|
||||
@@ -115,12 +122,19 @@ endphoneme
|
||||
|
||||
phoneme oI
|
||||
vowel starttype (o) endtype (i)
|
||||
length 220
|
||||
length 250
|
||||
formants vdiph/ooi_3
|
||||
linkout ;
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme uI
|
||||
vowel starttype (u) endtype (i)
|
||||
length 250
|
||||
formants vdiph/ui_4
|
||||
linkout ;
|
||||
endphoneme
|
||||
|
||||
|
||||
phoneme p
|
||||
vls blb stop
|
||||
@@ -170,14 +184,4 @@ phoneme x
|
||||
switchvoicing Q
|
||||
endphoneme
|
||||
|
||||
phoneme x2 // TEST
|
||||
vls vel frc
|
||||
vowelin f1=0 f2=2300 200 400 f3=-100 80
|
||||
vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
|
||||
length 100
|
||||
lengthmod 3
|
||||
wave ufric/xx%120
|
||||
switchvoicing Q
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
+10
-16
@@ -5,7 +5,7 @@
|
||||
|
||||
phoneme : // Lengthen the previous vowel by "length"
|
||||
virtual
|
||||
length 80
|
||||
length 100
|
||||
endphoneme
|
||||
|
||||
phoneme @
|
||||
@@ -13,7 +13,7 @@ phoneme @
|
||||
length 130
|
||||
formants vowel/@_bck
|
||||
before H vowel/@_low
|
||||
reduceto NULL 0
|
||||
reduceto @- 0
|
||||
endphoneme
|
||||
|
||||
phoneme V
|
||||
@@ -48,14 +48,14 @@ endphoneme
|
||||
|
||||
phoneme i:
|
||||
vowel long starttype (i) endtype (i)
|
||||
length 220
|
||||
length 230
|
||||
formants vowel/i_fnt
|
||||
linkout ;
|
||||
endphoneme
|
||||
|
||||
phoneme i // as [i:] but not marked as 'long'
|
||||
vowel starttype (i) endtype (i)
|
||||
length 220
|
||||
length 230
|
||||
formants vowel/i_fnt
|
||||
linkout ;
|
||||
endphoneme
|
||||
@@ -69,7 +69,7 @@ endphoneme
|
||||
|
||||
phoneme e:
|
||||
vowel long starttype (e) endtype (e)
|
||||
length 210
|
||||
length 220
|
||||
formants vowel/e_2
|
||||
endphoneme
|
||||
|
||||
@@ -81,7 +81,7 @@ endphoneme
|
||||
|
||||
phoneme E:
|
||||
vowel long starttype (e) endtype (e)
|
||||
length 210
|
||||
length 220
|
||||
formants vdiph/ee-e
|
||||
endphoneme
|
||||
|
||||
@@ -100,7 +100,7 @@ endphoneme
|
||||
|
||||
phoneme &:
|
||||
vowel long starttype (a) endtype (a)
|
||||
length 210
|
||||
length 220
|
||||
formants vowel/&
|
||||
endphoneme
|
||||
|
||||
@@ -120,7 +120,7 @@ endphoneme
|
||||
|
||||
phoneme o:
|
||||
vowel long starttype (o) endtype (o)
|
||||
length 210
|
||||
length 220
|
||||
formants vowel/o_2
|
||||
endphoneme
|
||||
|
||||
@@ -132,7 +132,7 @@ endphoneme
|
||||
|
||||
phoneme O:
|
||||
vowel long starttype (o) endtype (o)
|
||||
length 200
|
||||
length 210
|
||||
formants vowel/oo_4
|
||||
endphoneme
|
||||
|
||||
@@ -165,16 +165,10 @@ endphoneme
|
||||
|
||||
phoneme u:
|
||||
vowel long starttype (u) endtype (u)
|
||||
length 220
|
||||
length 230
|
||||
formants vowel/u_bck
|
||||
endphoneme
|
||||
|
||||
phoneme u2:
|
||||
vowel long starttype (u) endtype (u)
|
||||
length 220
|
||||
formants vowel/u
|
||||
endphoneme
|
||||
|
||||
|
||||
|
||||
phoneme r-
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Binary file not shown.
@@ -75,6 +75,7 @@
|
||||
|
||||
extern void Write4Bytes(FILE *f, int value);
|
||||
extern void MakeVowelLists(void);
|
||||
extern void FindPhonemesUsed(void);
|
||||
extern int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *fname);
|
||||
extern char voice_name[];
|
||||
|
||||
@@ -1824,6 +1825,76 @@ void Compile::Report(void)
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int ph_sorter(char **a, char **b)
|
||||
{//======================================
|
||||
int ix;
|
||||
int t1, t2;
|
||||
char mnem1[6];
|
||||
|
||||
PHONEME_TAB *p1 = (PHONEME_TAB *)(*a);
|
||||
PHONEME_TAB *p2 = (PHONEME_TAB *)(*b);
|
||||
|
||||
t1 = p1->type;
|
||||
if(t1 > phVOWEL) t1 = phVOWEL+1;
|
||||
|
||||
t2 = p2->type;
|
||||
if(t2 > phVOWEL) t2 = phVOWEL+1;
|
||||
|
||||
if((ix = t1 - t2) != 0)
|
||||
return(ix);
|
||||
|
||||
strcpy(mnem1,WordToString(p1->mnemonic));
|
||||
return(strcasecmp(mnem1,WordToString(p2->mnemonic)));
|
||||
} /* end of ph_sorter */
|
||||
|
||||
|
||||
|
||||
void PrintPhonemesUsed(FILE *f, const char *dictname)
|
||||
{//==================================================
|
||||
int ix;
|
||||
PHONEME_TAB *ph;
|
||||
PHONEME_TAB *ph_tab[N_PHONEME_TAB];
|
||||
int count = 0;
|
||||
int n_ph = 0;
|
||||
int section = 0;
|
||||
|
||||
fprintf(f,"\n\nDictionary %s_dict\n",dictname);
|
||||
fflush(f);
|
||||
|
||||
for(ix=0; (ix<N_PHONEME_TAB) && (phoneme_tab[ix] != NULL); ix++)
|
||||
{
|
||||
if(phoneme_tab_flags[ix] & 2)
|
||||
{
|
||||
ph_tab[n_ph++] = phoneme_tab[ix];
|
||||
}
|
||||
}
|
||||
|
||||
qsort((void *)ph_tab,n_ph,sizeof(PHONEME_TAB *),(int (*)(const void *,const void *))ph_sorter);
|
||||
|
||||
for(ix=0; ix<n_ph; ix++)
|
||||
{
|
||||
ph = ph_tab[ix];
|
||||
|
||||
if(ph->type > 1)
|
||||
{
|
||||
if((ph->type > phVOWEL) && (section == 0))
|
||||
{
|
||||
section = 1;
|
||||
count = 0;
|
||||
fputc('\n',f);
|
||||
}
|
||||
if((count & 0x7) == 0)
|
||||
fputc('\n',f);
|
||||
fprintf(f,"%-4s ",WordToString(ph->mnemonic));
|
||||
count++;
|
||||
}
|
||||
}
|
||||
fputc('\n',f);
|
||||
} // end of PrintPhonemesUsed
|
||||
|
||||
|
||||
|
||||
wxString CompileAllDictionaries()
|
||||
{//==============================
|
||||
wxString filename;
|
||||
@@ -1834,6 +1905,7 @@ wxString CompileAllDictionaries()
|
||||
int errors = 0;
|
||||
int dict_count = 0;
|
||||
FILE *log;
|
||||
FILE *f_phused;
|
||||
char dictname[80];
|
||||
char fname_log[80];
|
||||
char save_voice_name[80];
|
||||
@@ -1866,6 +1938,13 @@ wxString CompileAllDictionaries()
|
||||
|
||||
sprintf(fname_log,"%s%s",path_dsource,"dict_log");
|
||||
log = fopen(fname_log,"w");
|
||||
sprintf(fname_log,"%s%s",path_dsource,"dict_phonemes");
|
||||
f_phused = fopen(fname_log,"w");
|
||||
|
||||
if(f_phused)
|
||||
{
|
||||
fprintf(f_phused,"Phonemes which are used in the *_rules and *_list files\n");
|
||||
}
|
||||
|
||||
bool cont = dir.GetFirst(&filename, _T("*_rules"), wxDIR_FILES);
|
||||
while ( cont )
|
||||
@@ -1883,10 +1962,19 @@ wxString CompileAllDictionaries()
|
||||
errors += err;
|
||||
}
|
||||
|
||||
if(f_phused != NULL)
|
||||
{
|
||||
memset(phoneme_tab_flags,0,sizeof(phoneme_tab_flags));
|
||||
FindPhonemesUsed();
|
||||
PrintPhonemesUsed(f_phused,dictname);
|
||||
}
|
||||
|
||||
cont = dir.GetNext(&filename);
|
||||
}
|
||||
if(log != NULL)
|
||||
fclose(log);
|
||||
if(f_phused != NULL)
|
||||
fclose(f_phused);
|
||||
|
||||
LoadVoice(save_voice_name,1);
|
||||
|
||||
|
||||
@@ -657,6 +657,9 @@ void copy_rule_string(char *string, int &state)
|
||||
case 'W':
|
||||
c = RULE_SPELLING;
|
||||
break;
|
||||
case 'X':
|
||||
c = RULE_NOVOWELS;
|
||||
break;
|
||||
case 'L':
|
||||
// expect two digits
|
||||
c = *p++ - '0';
|
||||
|
||||
+32
-3
@@ -1261,7 +1261,11 @@ void Translator::SetWordStress(char *output, unsigned int dictionary_flags, int
|
||||
else
|
||||
{
|
||||
// unstressed syllable within a word
|
||||
v_stress = 1; /* change from 0 (unstressed) to 1 (diminished stress) */
|
||||
if((vowel_stress[v-1] != 1) || ((langopts.stress_flags & 0x10000) == 0))
|
||||
{
|
||||
v_stress = 1; /* change from 0 (unstressed) to 1 (diminished stress) */
|
||||
vowel_stress[v] = v_stress;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1383,7 +1387,7 @@ char *Translator::DecodeRule(const char *group, char *rule)
|
||||
static char output[60];
|
||||
|
||||
static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',
|
||||
'@','&','%','+','#','S','D','Z','A','B','C','H','F','G','Y','N','K','V','L','T'};
|
||||
'@','&','%','+','#','S','D','Z','A','B','C','H','F','G','Y','N','K','V','L','T','X','?','W'};
|
||||
|
||||
|
||||
match_type = 0;
|
||||
@@ -1805,6 +1809,23 @@ void Translator::MatchRule(char *word[], const char *group, char *rule, MatchRec
|
||||
}
|
||||
break;
|
||||
|
||||
case RULE_NOVOWELS:
|
||||
{
|
||||
char *p = post_ptr + letter_xbytes;
|
||||
while(letter_w != RULE_SPACE)
|
||||
{
|
||||
if(IsLetter(letter_w,LETTERGP_VOWEL2))
|
||||
{
|
||||
failed = 1;
|
||||
break;
|
||||
}
|
||||
p += utf8_in(&letter_w,p,0);
|
||||
}
|
||||
if(!failed)
|
||||
match.points += (19-distance_right);
|
||||
}
|
||||
break;
|
||||
|
||||
case RULE_INC_SCORE:
|
||||
match.points += 20; // force an increase in points
|
||||
break;
|
||||
@@ -1932,6 +1953,13 @@ void Translator::MatchRule(char *word[], const char *group, char *rule, MatchRec
|
||||
failed = 1;
|
||||
break;
|
||||
|
||||
case RULE_NOVOWELS:
|
||||
if(word_vowel_count== 0)
|
||||
match.points += 19;
|
||||
else
|
||||
failed =1;
|
||||
break;
|
||||
|
||||
case RULE_IFVERB:
|
||||
if(expect_verb)
|
||||
match.points += 1;
|
||||
@@ -2710,7 +2738,8 @@ int Translator::LookupDictList(char *word1, char *ph_out, unsigned int *flags, i
|
||||
|
||||
int Translator::Lookup(char *word, char *ph_out)
|
||||
{//=============================================
|
||||
return(LookupDictList(word,ph_out,NULL,0));
|
||||
unsigned int flags;
|
||||
return(LookupDictList(word,ph_out,&flags,0));
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@
|
||||
#include "translate.h"
|
||||
#include "wave.h"
|
||||
|
||||
const char *version_string = "1.24.11 17.May.07";
|
||||
const char *version_string = "1.24.12 18.May.07";
|
||||
const int version_phdata = 0x012201;
|
||||
|
||||
int option_device_number = -1;
|
||||
|
||||
@@ -244,7 +244,7 @@ Translator *SelectTranslator(const char *name)
|
||||
static const wchar_t replace_chars_hi[11] = {0x966,0x967,0x968,0x969,0x96a,0x96b,0x96c,0x96d,0x96e,0x96f,0}; // digits 0-9
|
||||
static const unsigned int replacement_chars_hi[11] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0};
|
||||
static int stress_lengths_hi[8] = {190, 190, 210, 210, 0, 0, 230, 250};
|
||||
static int stress_amps_hi[8] = {17,14, 20,20, 20,24, 24,22 };
|
||||
static int stress_amps_hi[8] = {17,14, 20,19, 20,24, 24,22 };
|
||||
|
||||
tr = new Translator();
|
||||
SetupTranslator(tr,stress_lengths_hi,stress_amps_hi);
|
||||
@@ -252,7 +252,7 @@ Translator *SelectTranslator(const char *name)
|
||||
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
|
||||
|
||||
tr->langopts.stress_rule = 6; // stress on last heaviest syllable
|
||||
tr->langopts.stress_flags = 0x4; // use 'diminished' for unstressed final syllable
|
||||
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable
|
||||
tr->langopts.numbers = 0x811 + 0x40000;
|
||||
tr->letter_bits_offset = OFFSET_DEVANAGARI;
|
||||
tr->langopts.replace_chars = replace_chars_hi;
|
||||
@@ -392,7 +392,7 @@ Translator *SelectTranslator(const char *name)
|
||||
case L('n','o'): // Norwegian
|
||||
{
|
||||
static int stress_amps_no[] = {16,16, 20,20, 20,24, 24,22 };
|
||||
static int stress_lengths_no[8] = {160,140, 200,200, 0,0, 250,270};
|
||||
static int stress_lengths_no[8] = {160,140, 200,190, 0,0, 220,240};
|
||||
tr = new Translator();
|
||||
SetupTranslator(tr,stress_lengths_no,stress_amps_no);
|
||||
|
||||
|
||||
+5
-3
@@ -122,9 +122,10 @@
|
||||
#define RULE_NOTVOWEL 25 // K
|
||||
#define RULE_IFVERB 26 // V
|
||||
#define RULE_LETTERGP 27 // L + letter group number
|
||||
#define RULE_ALT1 28 // word has $alt attribute
|
||||
#define RULE_SPELLING 31 // while spelling letter-by-letter
|
||||
#define RULE_LAST_RULE 28
|
||||
#define RULE_ALT1 28 // T word has $alt attribute
|
||||
#define RULE_NOVOWELS 29 // X no vowels up to word boundary
|
||||
#define RULE_SPELLING 31 // W while spelling letter-by-letter
|
||||
#define RULE_LAST_RULE 31
|
||||
|
||||
#define LETTERGP_A 0
|
||||
#define LETTERGP_B 1
|
||||
@@ -258,6 +259,7 @@ typedef struct {
|
||||
// bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish
|
||||
// bit12= In a 2-syllable word, if one has primary stress then give the other secondary stress
|
||||
// bit13= If there is only one syllable before the primary stress, give it a secondary stress
|
||||
// bit16= Don't diminish consecutive syllables within a word.
|
||||
|
||||
int stress_flags;
|
||||
int unstressed_wd1; // stress for $u word of 1 syllable
|
||||
|
||||
+13
-2
@@ -373,10 +373,12 @@ void VowelChart(int control, char *fname)
|
||||
|
||||
|
||||
|
||||
static void FindPhonemesUsed(void)
|
||||
{//===============================
|
||||
void FindPhonemesUsed(void)
|
||||
{//========================
|
||||
int hash;
|
||||
char *p;
|
||||
char *start;
|
||||
char *group;
|
||||
char *next;
|
||||
unsigned char c;
|
||||
int count = 0;
|
||||
@@ -386,15 +388,24 @@ static void FindPhonemesUsed(void)
|
||||
p = translator->data_dictrules;
|
||||
while(*p != 0)
|
||||
{
|
||||
if(*p == RULE_CONDITION)
|
||||
p+=2;
|
||||
if(*p == RULE_GROUP_END)
|
||||
{
|
||||
p++;
|
||||
if(*p == 0) break;
|
||||
}
|
||||
if(*p == RULE_GROUP_START)
|
||||
{
|
||||
group = p;
|
||||
p += (strlen(p)+1);
|
||||
}
|
||||
|
||||
while((((c = *p) != RULE_PHONEMES)) && (c != 0)) p++;
|
||||
count++;
|
||||
if(c == RULE_PHONEMES)
|
||||
{
|
||||
start = p;
|
||||
p++;
|
||||
while(*p != 0)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user