mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
[1.31.06]
espeakEVENT_PHONEME, fix audio position of vowel when it follows a voiced consonant. Ensure enough space in the event list when espeak_Initialize() is called with a small buffer size. Tone languages: set the final stressed syllable to stress=7 so that it can be longer. lang=zh: adjust vowels git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@136 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
+5
-2
@@ -59,7 +59,11 @@ language).
|
||||
a4o Au51
|
||||
|
||||
a (DnK a
|
||||
a (DngK A
|
||||
ch) a (DngK A
|
||||
ch) a (4ngK a
|
||||
ch) a (ng4K a
|
||||
k) a (DngK A
|
||||
_) a (DngK A
|
||||
|
||||
y) a iA
|
||||
y) ao Au
|
||||
@@ -144,7 +148,6 @@ language).
|
||||
|
||||
.group o
|
||||
o o
|
||||
o (DngK u
|
||||
ou ou
|
||||
o1u ou55
|
||||
o2u ou35
|
||||
|
||||
@@ -426,9 +426,9 @@ nn/_nn [N] base
|
||||
[N] zh
|
||||
nn/nn_ [N] base
|
||||
[N] en
|
||||
[N] zh
|
||||
nn/nn@ [(@)] base
|
||||
nn/nn#_ [N#] is
|
||||
nn/nn2_ [N] zh
|
||||
nn/nna [(a)] base
|
||||
nn/nne [(e)] base
|
||||
nn/nni [(i)] base
|
||||
@@ -838,7 +838,6 @@ vdiph2/ie [i@] en_wi
|
||||
[ie] fi
|
||||
[ia] th
|
||||
[i:a] th
|
||||
vdiph2/ie_2 [iE] zh
|
||||
vdiph2/ii@ [i@] en
|
||||
[i@3] en
|
||||
vdiph2/ii@_3 [i@] vi
|
||||
@@ -1438,6 +1437,7 @@ vowel/i_6 [i:] en_us
|
||||
[i] hr
|
||||
[i] id
|
||||
[i] tr
|
||||
vowel/i#_6 [i.] zh
|
||||
vowel/i#_7 [i[] zh
|
||||
vowel/i_en [i:] en
|
||||
[i:] fr
|
||||
@@ -1521,7 +1521,6 @@ vowel/o_4 [oU] en_n
|
||||
vowel/o-_4 [o] ro
|
||||
vowel/o_5 [O] nl
|
||||
vowel/o_6 [O:] nl
|
||||
vowel/o_7 [u] zh
|
||||
vowel/oe [W] en
|
||||
[W] af
|
||||
[W] de
|
||||
@@ -1530,6 +1529,7 @@ vowel/oe_2 [W] no
|
||||
vowel/oe_4 [W] sv
|
||||
vowel/o_mid [O] fr
|
||||
[o] hu
|
||||
[o] zh
|
||||
[o] tr
|
||||
vowel/oo [O:] en_sc
|
||||
[O] en_wi
|
||||
@@ -1810,13 +1810,14 @@ vwl_ru/u#u [u"] ru
|
||||
vwl_sv/r_sv3 [r] sv
|
||||
vwl_zh/aang [aan] zhy
|
||||
vwl_zh/aau [Au] zh
|
||||
vwl_zh/a_n [a] zh
|
||||
vwl_zh/ang [ang] zhy
|
||||
vwl_zh/eng [eng] zhy
|
||||
vwl_zh/iaa [iA] zh
|
||||
vwl_zh/iaau [iAu] zh
|
||||
vwl_zh/ie [iE] zh
|
||||
vwl_zh/ing [ing] zhy
|
||||
vwl_zh/iou [iou] zh
|
||||
vwl_zh/i_rfx [i.] zh
|
||||
vwl_zh/ng [ng] zhy
|
||||
vwl_zh/oeng [oen] zhy
|
||||
vwl_zh/ong [ong] zhy
|
||||
|
||||
+8
-6
@@ -212,11 +212,11 @@ endphoneme
|
||||
|
||||
phoneme N //should be more different from n
|
||||
vcd vel nasal
|
||||
vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk
|
||||
vowelout f1=2 f2=1900 200 400 f3=400 80 len=50 rms=15 brk
|
||||
formants NULL
|
||||
before _ nn/nn_
|
||||
before _ nn/nn2_
|
||||
after _ nn/_nn
|
||||
lengthmod 1
|
||||
lengthmod 7
|
||||
after (i) nn/inn
|
||||
endphoneme
|
||||
|
||||
@@ -224,6 +224,7 @@ phoneme a
|
||||
vowel starttype (a) endtype (a)
|
||||
length 250
|
||||
formants vowel/a
|
||||
before N vwl_zh/a_n
|
||||
endphoneme
|
||||
|
||||
phoneme A
|
||||
@@ -287,7 +288,8 @@ endphoneme
|
||||
phoneme i. //after ts. ts.h s. z.
|
||||
vowel starttype (i) endtype (i)
|
||||
length 250
|
||||
formants vwl_zh/i_rfx
|
||||
// formants vwl_zh/i_rfx
|
||||
formants vowel/i#_6
|
||||
endphoneme
|
||||
|
||||
phoneme iA //try more before N
|
||||
@@ -305,7 +307,7 @@ endphoneme
|
||||
phoneme iE
|
||||
vowel starttype (i) endtype (e)
|
||||
length 250
|
||||
formants vdiph2/ie_2
|
||||
formants vwl_zh/ie
|
||||
endphoneme
|
||||
|
||||
phoneme io
|
||||
@@ -324,6 +326,7 @@ phoneme o
|
||||
vowel starttype (o) endtype (o)
|
||||
length 250
|
||||
formants vdiph2/o_oo
|
||||
before N vowel/o_mid
|
||||
endphoneme
|
||||
|
||||
phoneme o-
|
||||
@@ -342,7 +345,6 @@ phoneme u //try more before N
|
||||
vowel starttype (u) endtype (u)
|
||||
length 250
|
||||
formants vowel/u_bck
|
||||
before N vowel/o_7
|
||||
endphoneme
|
||||
|
||||
phoneme uA
|
||||
|
||||
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
+2
-2
@@ -1880,14 +1880,14 @@ void Translator::MatchRule(char *word[], const char *group, char *rule, MatchRec
|
||||
case RULE_DIGIT:
|
||||
if(IsDigit(letter_w))
|
||||
{
|
||||
match.points += (21-distance_right);
|
||||
match.points += (20-distance_right);
|
||||
post_ptr += letter_xbytes;
|
||||
}
|
||||
else
|
||||
if(langopts.tone_numbers)
|
||||
{
|
||||
// also match if there is no digit
|
||||
match.points += (21-distance_right);
|
||||
match.points += (20-distance_right);
|
||||
post_ptr--;
|
||||
}
|
||||
else
|
||||
|
||||
+11
-3
@@ -759,8 +759,14 @@ void Translator::CalcPitches_Tone(int clause_tone)
|
||||
{
|
||||
if((p->type == phVOWEL) && (p->tone >= 4))
|
||||
{
|
||||
final_stressed = ix;
|
||||
count_stressed++;
|
||||
if(count_stressed == 0)
|
||||
final_stressed = ix;
|
||||
|
||||
if(p->tone >= 4)
|
||||
{
|
||||
final_stressed = ix;
|
||||
count_stressed++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -769,7 +775,6 @@ void Translator::CalcPitches_Tone(int clause_tone)
|
||||
{
|
||||
// LANG=vi
|
||||
p = &phoneme_list[final_stressed];
|
||||
p->tone = 7;
|
||||
if(p->tone_ph == 0)
|
||||
p->tone_ph = LookupPh("7"); // change tone 1 to falling tone at end of clause
|
||||
}
|
||||
@@ -889,6 +894,9 @@ void Translator::CalcPitches_Tone(int clause_tone)
|
||||
p->pitch2 = pitch_adjust + phoneme_tab[tone_ph]->end_type;
|
||||
}
|
||||
}
|
||||
|
||||
phoneme_list[final_stressed].tone = 7;
|
||||
|
||||
} // end of Translator::CalcPitches_Tone
|
||||
|
||||
|
||||
|
||||
+3
-2
@@ -698,8 +698,9 @@ ENTER("espeak_Initialize");
|
||||
if((out_start = outbuf) == NULL)
|
||||
return(EE_INTERNAL_ERROR);
|
||||
|
||||
// allocate space for event list. Allow 200 events per second
|
||||
n_event_list = (buf_length*200)/1000;
|
||||
// allocate space for event list. Allow 200 events per second.
|
||||
// Add a constant to allow for very small buf_length
|
||||
n_event_list = (buf_length*200)/1000 + 20;
|
||||
if((event_list = (espeak_EVENT *)realloc(event_list,sizeof(espeak_EVENT) * n_event_list)) == NULL)
|
||||
return(EE_INTERNAL_ERROR);
|
||||
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@
|
||||
#include "translate.h"
|
||||
#include "wave.h"
|
||||
|
||||
const char *version_string = "1.31.05 04.Feb.08";
|
||||
const char *version_string = "1.31.06 05.Feb.08";
|
||||
const int version_phdata = 0x013105;
|
||||
|
||||
int option_device_number = -1;
|
||||
|
||||
+12
-4
@@ -1097,6 +1097,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
|
||||
unsigned char *amp_env;
|
||||
PHONEME_TAB *ph;
|
||||
PHONEME_TAB *prev_ph;
|
||||
static int sourceix=0;
|
||||
|
||||
#ifdef TEST_MBROLA
|
||||
if(mbrola_name[0] != 0)
|
||||
@@ -1140,15 +1141,16 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
|
||||
if(p->newword)
|
||||
{
|
||||
last_frame = NULL;
|
||||
sourceix = (p->sourceix & 0x7ff) + clause_start_char;
|
||||
|
||||
if(p->newword & 4)
|
||||
DoMarker(espeakEVENT_SENTENCE, (p->sourceix & 0x7ff) + clause_start_char, 0, count_sentences); // start of sentence
|
||||
DoMarker(espeakEVENT_SENTENCE, sourceix, 0, count_sentences); // start of sentence
|
||||
|
||||
// if(p->newword & 2)
|
||||
// DoMarker(espeakEVENT_END, count_characters, 0, count_sentences); // end of clause
|
||||
|
||||
if(p->newword & 1)
|
||||
DoMarker(espeakEVENT_WORD, (p->sourceix & 0x7ff) + clause_start_char, p->sourceix >> 11, clause_start_word + word_count++);
|
||||
DoMarker(espeakEVENT_WORD, sourceix, p->sourceix >> 11, clause_start_word + word_count++);
|
||||
}
|
||||
|
||||
EndAmplitude();
|
||||
@@ -1156,9 +1158,10 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
|
||||
if(p->prepause > 0)
|
||||
DoPause(p->prepause);
|
||||
|
||||
if(option_phoneme_events)
|
||||
if(option_phoneme_events && (p->type != phVOWEL))
|
||||
{
|
||||
DoMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, p->ph->mnemonic);
|
||||
// Note, for vowels, do the phoneme event after the vowel-start
|
||||
DoMarker(espeakEVENT_PHONEME, sourceix, 0, p->ph->mnemonic);
|
||||
}
|
||||
|
||||
switch(p->type)
|
||||
@@ -1398,6 +1401,11 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
|
||||
DoSpect(ph,prev->ph,next->ph,1,p,modulation);
|
||||
}
|
||||
|
||||
if(option_phoneme_events)
|
||||
{
|
||||
DoMarker(espeakEVENT_PHONEME, sourceix, 0, p->ph->mnemonic);
|
||||
}
|
||||
|
||||
DoSpect(p->ph,prev->ph,next->ph,2,p,modulation);
|
||||
|
||||
memset(vowel_transition,0,sizeof(vowel_transition));
|
||||
|
||||
@@ -718,7 +718,7 @@ SetLengthMods(tr,3); // all equal
|
||||
case L('z','h'):
|
||||
case L_zhy:
|
||||
{
|
||||
static const short stress_lengths_zh[8] = {230,150, 230,230, 230,0, 230,250};
|
||||
static const short stress_lengths_zh[8] = {230,150, 230,230, 230,0, 230,300};
|
||||
static const unsigned char stress_amps_zh[] = {22,16, 22,22, 22,22, 22,22 };
|
||||
|
||||
tr = new Translator;
|
||||
|
||||
Reference in New Issue
Block a user