[1.47.03d]

Lang=ml, change aspirated voiced consonants.
Lang=ko, define temporary replacements for undefined consonant phonemes.
Lang=bn, fix numbers.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@334 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
jonsd
2013-03-27 00:16:39 +00:00
parent 62687ad0a3
commit 473e9abc15
26 changed files with 1102 additions and 640 deletions
+1 -1
View File
@@ -619,7 +619,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
phlist[ix].length = option_wordgap*14; // 10mS per unit at the default speed
}
if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE)
if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE || (ph->phflags & phPREVOICE))
{
phlist[ix].length = 128; // length_mod
phlist[ix].env = PITCHfall;
+1 -1
View File
@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"
const char *version_string = "1.47.03c 23.Mar.13";
const char *version_string = "1.47.03d 26.Mar.13";
const int version_phdata = 0x014701;
int option_device_number = -1;
+19 -1
View File
@@ -1426,7 +1426,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
EndAmplitude();
if(p->prepause > 0)
if((p->prepause > 0) && !(p->ph->phflags & phPREVOICE))
DoPause(p->prepause,1);
done_phoneme_marker = 0;
@@ -1455,6 +1455,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
case phSTOP:
released = 0;
ph = p->ph;
if(next->type==phVOWEL)
{
released = 1;
@@ -1468,6 +1469,23 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
if(released == 0)
p->synthflags |= SFLAG_NEXT_PAUSE;
if(ph->phflags & phPREVOICE)
{
// a period of voicing before the release
memset(&fmtp, 0, sizeof(fmtp));
InterpretPhoneme(NULL, 0x01, p, &phdata, &worddata);
fmtp.fmt_addr = phdata.sound_addr[pd_FMT];
fmtp.fmt_amp = phdata.sound_param[pd_FMT];
if(last_pitch_cmd < 0)
{
DoAmplitude(next->amp,NULL);
DoPitch(envelope_data[p->env],next->pitch1,next->pitch2);
}
DoSpect2(ph, 0, &fmtp, p, 0);
}
InterpretPhoneme(NULL, 0, p, &phdata, &worddata);
phdata.pd_control |= pd_DONTLENGTHEN;
DoSample3(&phdata, 0, 0);
+1 -1
View File
@@ -79,7 +79,7 @@ ALPHABET alphabets [] = {
{"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0},
{"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0},
{"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS},
{"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0},
{"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, L('b','n'), 0},
{"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, L('p','a'), AL_WORDS},
{"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0},
{"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0},
+1 -1
View File
@@ -601,7 +601,7 @@ voice_t *LoadVoice(const char *vname, int control)
// which directory to look for a named voice. List of voice names, must end in a space.
static const char *voices_asia =
"fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta tr vi vi-hue zh zh-yue ";
"bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue zh zh-yue ";
static const char *voices_europe =
"an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";