Browse Source

[1.25.08] Fix to uft-8 recognizer.

lang=hu, set no secondary stress; [e:] [E] are closer, 
Don't consider mbrola voices during voice selection.
Fix voice variant not being set from SSML.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@23 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 18 years ago
parent
commit
863f1f1048

+ 47
- 46
dictsource/fr_list View File

_17 d'is:'Et _17 d'is:'Et
_18 d'is:'w^it _18 d'is:'w^it
_19 d'is:n'@f _19 d'is:n'@f
_20 v'E~ _20 v'E~
_21 v'E~te:E~ _21 v'E~te:E~
_22 v'E~td'Y _22 v'E~td'Y
_23 v'E~t:tRw'a _23 v'E~t:tRw'a




// conjonctions // conjonctions
et e $u $pause et e $u $brk
ou $u $pause ou $u $brk
car $u $pause car $u $brk
soit $u $pause soit $u $brk
mais $u $pause mais $u $brk
ou u $u $pause ou u $u $brk
donc $u $pause donc $u $brk
or $u $pause or $u $brk
ni $u $pause ni $u $brk
car $u $pause car $u $brk
cependant $u $pause cependant $u $brk
néanmoins $u $pause néanmoins $u $brk
toutefois $u $pause toutefois $u $brk
comme $u $brk
lorsque $u $brk
comme $u $pause puisque $u $brk
lorsque $u $pause quand $u $brk
puisque $u $pause que $u $brk
quand $u $pause qui $u $brk
que $u $pause quoique $u $brk
qui $u $pause si $u $brk
quoique $u $pause // (à cause que) $u $brk
si $u $pause // (ainsi que) $u $brk
// (à mesure que) $u $brk
// (à cause que) $u $pause // (après que) $u $brk
// (ainsi que) $u $pause // (à moins que) $u $brk
// (à mesure que) $u $pause // (au lieu que) $u $brk
// (après que) $u $pause // (aussitôt que) $u $brk
// (à moins que) $u $pause // (pendant que) $u $brk
// (au lieu que) $u $pause
// (aussitôt que) $u $pause
// (pendant que) $u $pause
// (pourvu que) $u $pause // (pourvu que) $u $pause


// pronouns // pronouns
leurs $u+ leurs $u+


// prepositions // prepositions
de $u $nounf de $u $nounf
du $u+ $nounf du $u+ $nounf
des dEz2 $u $nounf des dEz2 $u $nounf
?2 des dez2 $u+ $nounf ?2 des dez2 $u+ $nounf
au $u $brk au $u $brk
aux $u $brk aux $u $brk


dans $u+ $pause dans $u+ $brk
sur $u+ $pause sur $u+ $brk
par $u+ $pause par $u+ $brk
pour $u+ $pause pour $u+ $brk
en $u+ $brk en $u+ $brk
(en effet) A~nEf'E $pause (en effet) A~nEf'E $brk


vers $u+ $pause vers $u+ $brk
avec $u+ $pause avec $u+ $brk
sans $u+ $pause sans $u+ $brk
sous $u+ $pause sous $u+ $brk
entre $u+ $pause entre $u+ $brk
contre $u+ $pause contre $u+ $brk


durant $pause durant $brk


// negative // negative
ne $u ne $u
fils fis fils fis
mars maRs mars maRs
pays pEi pays pEi
pourcent purs'A~
sens sA~s sens sA~s
c'est sEt2 $u c'est sEt2 $u
qu'à ka qu'à ka

+ 1
- 1
dictsource/hr_rules View File

.group r .group r
r R r R
A) r (A R A) r (A R
K) r (A R K) r (A @-*
rr R rr R
r (_ R r (_ R



+ 7
- 3
dictsource/hu_list View File





// Conjunctions // Conjunctions
és $u $pause // and és $u $pause $strend2 // and
de $u $pause // but de $u+ $pause // but
vagy $u $pause // or vagy $u+ $pause // or


mert $pause // because mert $pause // because
miatt $pause // because miatt $pause // because
ha $u $pause // if ha $u $pause // if




// Prepositions etc.


// Negative // Negative
nem $u+ nem $u+
ne $u+ ne $u+


// Unstressed adverbs etc. // Unstressed adverbs etc.
néhány $u+ néhány $u+
is $u // ??




// Verbs // Verbs

+ 1
- 1
dictsource/hu_rules View File



.group r .group r
r R r R
A) r (A R A) r (A *
C) r (A R C) r (A R
r (C r r (C r
rr R rr R

+ 14
- 13
dictsource/no_rules View File

a A: a A:
a (C% A a (C% A
a (_ A a (_ A
X) a (CCX A // single syllable with >= 2 final consonants X) a (CCK A // single syllable with >= 2 final consonants
// or initial syllable with 3 consonants
ai AI ai AI
au aU au aU


aa o: // å aa o: // å
aa (C% O aa (C% O
X) aa (CCX O X) aa (CCK O
ae a: // æ ae a: // æ
ae (C% a ae (C% a
X) ae (CCX a X) ae (CCK a




.group b .group b
.group e .group e
e e: e e:
e (C% E e (C% E
X) e (CCX E X) e (CCK E
ei aI ei aI
e (rC a // ?? e (rC a // ??
&) e (_ @2 &) e (_ @2
.group i .group i
i i: i i:
i (C% I i (C% I
X) i (CCX I X) i (CCK I
&) ig (_ I &) ig (_ I


.group j .group j
.group o .group o
o u: o u:
o (C% O o (C% O
X) o (CCX O X) o (CCK O
oi OI oi OI


oe Y: // ø oe Y: // ø
oe (C% W oe (C% W
X) oe (CCX W X) oe (CCK W
oey Yy oey Yy


o (nd U o (nd U
.group u .group u
u u-: u u-:
u (C% u- u (C% u-
X) u (CCX u- X) u (CCK u-
ui u-I ui u-I


.group v .group v
.group å .group å
å o: å o:
å (C% O å (C% O
X) å (CCX O X) å (CCK O


.group æ .group æ
æ E: æ E:
æ (r a: æ (r a:
æ (C% a æ (C% a
X) æ (CCX a X) æ (CCK a


.group ø .group ø
ø Y: ø Y:
ø (C% W ø (C% W
X) ø (CCX W X) ø (CCK W
øy Yy øy Yy


.group ä .group ä
ä E: ä E:
ä (C% E ä (C% E
X) ä (CCX E X) ä (CCK E


.group ö .group ö
ö Y: ö Y:
ö (C% W ö (C% W
X) ö (CCX W X) ö (CCK W


.group .group
é 'e: é 'e:

+ 4
- 3
phsource/compile_report View File

1 vowel/@_bck hi 1 vowel/@_bck hi
13 vowel/e en en_n af cy eo fr hu hr it pt pt_pt vi 13 vowel/e en en_n af cy eo fr hu hr it pt pt_pt vi
2 vowel/e# en_sc 2 vowel/e# en_sc
7 vowel/e_2 en_sc de hi hu sv no 6 vowel/e_2 en_sc de hi sv no
1 vowel/e_3 hu
1 vowel/e_5 en_sc 1 vowel/e_5 en_sc
3 vowel/ee fr pl sv 3 vowel/ee fr pl sv
2 vowel/e_e en_sc is 2 vowel/e_e en_sc is
7 vowel/ee_1 en en_n pl it sv no zh_yue 7 vowel/ee_1 en en_n pl it sv no zh_yue
4 vowel/ee_2 en cy hu nl 3 vowel/ee_2 en cy nl
1 vowel/ee#_2 sv 1 vowel/ee#_2 sv
3 vowel/ee_3 af pt vi 3 vowel/ee_3 af pt vi
3 vowel/ee_6 en_n sk sv 3 vowel/ee_6 en_n sk sv
11 vowel/e_mid en_rp en_wm fr_ca hi sk cs hr es pt_pt no is 12 vowel/e_mid en_rp en_wm fr_ca hi hu sk cs hr es pt_pt no is
10 vowel/e_mid2 af de fi nl sk ro el sw 10 vowel/e_mid2 af de fi nl sk ro el sw
1 vowel/@_fnt hr 1 vowel/@_fnt hr
1 vowel/@_hgh no 1 vowel/@_hgh no

+ 2
- 2
phsource/ph_hungarian View File

phoneme E phoneme E
vowel starttype (e) endtype (e) vowel starttype (e) endtype (e)
length 130 length 130
formants vowel/ee_2 formants vowel/e_mid
endphoneme endphoneme


phoneme e phoneme e
phoneme e: phoneme e:
vowel starttype (e) endtype (e) vowel starttype (e) endtype (e)
length 240 length 240
formants vowel/e_2 formants vowel/e_3
endphoneme endphoneme


phoneme A phoneme A

BIN
phsource/vowel/e_3 View File


BIN
phsource/vowelr/r-voc View File


+ 4
- 1
src/espeakedit.cpp View File

// to something other than the default "C". Then, not only Latin1 but also the // to something other than the default "C". Then, not only Latin1 but also the
// other characters give the correct results with iswalpha() etc. // other characters give the correct results with iswalpha() etc.
if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL) if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL)
setlocale(LC_CTYPE,""); {
if(setlocale(LC_CTYPE,"UTF-8") == NULL)
setlocale(LC_CTYPE,"");
}




// Create the main frame window // Create the main frame window

+ 15
- 23
src/extras.cpp View File







char* text[]=
{
"<voice xml:lang=\"en\" variant=\"1\">eSpeak.</voice>",
" <voice xml:lang=\"en\" gender=\"male\" variant=\"1\"><prosody rate=\"1.0\"> normally would, </prosody></voice>"
};



#ifdef deleted #ifdef deleted
void Test2() void Test2()
} }
#endif #endif


char* text1[]=
{
"<voice xml:lang=\"en\" variant=\"2\">eSpeak.</voice>",
" <voice xml:lang=\"fr\" gender=\"male\" variant=\"3\"><prosody rate=\"1.0\"> normally would, </prosody></voice>"
};


void TestTest(int control) void TestTest(int control)
{//======================= {//=======================
//CharsetToUnicode("ISCII"); //CharsetToUnicode("ISCII");




return; //return;


if(control==2) if(control==2)
{ {


espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,NULL); espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,NULL);
espeak_SetSynthCallback(TestSynthCallback); espeak_SetSynthCallback(TestSynthCallback);
// espeak_SetUriCallback(TestUriCallback);

voice.languages = "fr";
voice.gender = 0;
voice.age = 0;
voice.variant = 0;
ix = espeak_SetVoiceByName("pt-xx");


voice2 = espeak_GetCurrentVoice(); unsigned int unique_identifier=0;
int index=0;
espeak_Synth(text1[index], strlen(text1[index])+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, NULL);


// espeak_SetVoiceByProperties(&voice); espeak_SetParameter(espeakPUNCTUATION, 1, 0);
espeak_SetParameter(espeakRANGE,0,0); espeak_Synchronize();
espeak_Synth(textbuf,ix+1,0,POS_CHARACTER,0,espeakCHARS_8BIT+espeakSSML,NULL,NULL); // espeak_Cancel();
espeak_SetParameter(espeakPUNCTUATION, 1, 0);


// for(voice.variant = 1; voice.variant < 9; voice.variant++) index++;
// { espeak_Synth(text1[index], strlen(text1[index])+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, NULL);
// espeak_SetVoiceByProperties(&voice);
// espeak_Synth(textbuf,ix+1,0,POS_CHARACTER,0,espeakCHARS_8BIT+espeakSSML,NULL,NULL);
// }
} }





+ 2
- 2
src/readclause.cpp View File

break; break;
} }


if(((c2 & 0xc0) != 0x80) && ((c2 & m) != 0)) if((c2 & 0xc0) != 0x80)
{ {
GetC_unget(c2); GetC_unget(c2);
break; break;
return(0); // <s> or <p> without language spec, nothing to do return(0); // <s> or <p> without language spec, nothing to do
ssml_sp = &ssml_stack[n_ssml_stack++]; ssml_sp = &ssml_stack[n_ssml_stack++];
attrcopy_utf8(ssml_sp->language,lang,sizeof(ssml_sp->language)); attrcopy_utf8(ssml_sp->language,lang,sizeof(ssml_sp->language));
attrcopy_utf8(ssml_sp->voice_name,name,sizeof(ssml_sp->voice_name)); attrcopy_utf8(ssml_sp->voice_name,name,sizeof(ssml_sp->voice_name));
ssml_sp->voice_variant = attrnumber(variant,1,0)-1; ssml_sp->voice_variant = attrnumber(variant,1,0)-1;

+ 4
- 1
src/speak.cpp View File

setlocale(LC_CTYPE,"ISO8859-1"); setlocale(LC_CTYPE,"ISO8859-1");
#else #else
if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL) if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL)
setlocale(LC_CTYPE,""); {
if(setlocale(LC_CTYPE,"UTF-8") == NULL)
setlocale(LC_CTYPE,"");
}
#endif #endif





+ 6
- 3
src/speak_lib.cpp View File

// to something other than the default "C". Then, not only Latin1 but also the // to something other than the default "C". Then, not only Latin1 but also the
// other characters give the correct results with iswalpha() etc. // other characters give the correct results with iswalpha() etc.
#ifdef PLATFORM_RISCOS #ifdef PLATFORM_RISCOS
setlocale(LC_CTYPE,"ISO8859-1"); setlocale(LC_CTYPE,"ISO8859-1");
#else #else
if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL) if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL)
setlocale(LC_CTYPE,""); {
if(setlocale(LC_CTYPE,"UTF-8") == NULL)
setlocale(LC_CTYPE,"");
}
#endif #endif


init_path(path); init_path(path);

+ 1
- 1
src/synthdata.cpp View File

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


const char *version_string = "1.25.06 23.May.07"; const char *version_string = "1.25.08 25.May.07";
const int version_phdata = 0x012501; const int version_phdata = 0x012501;


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

+ 2
- 1
src/tr_languages.cpp View File



tr->langopts.vowel_pause = 0x10; tr->langopts.vowel_pause = 0x10;
tr->langopts.stress_rule = 0; tr->langopts.stress_rule = 0;
tr->langopts.stress_flags = 0x16; tr->langopts.stress_flags = 0x36;
tr->langopts.unstressed_wd1 = 2;
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x4; // don't propagate over word boundaries tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x4; // don't propagate over word boundaries
tr->langopts.param[LOPT_IT_DOUBLING] = 1; tr->langopts.param[LOPT_IT_DOUBLING] = 1;
tr->langopts.long_stop = 130; tr->langopts.long_stop = 130;

+ 11
- 6
src/voices.cpp View File

if((v != NULL) && (variant > 0)) if((v != NULL) && (variant > 0))
{ {
sprintf(buf,"!variant%d",variant); sprintf(buf,"!variant%d",variant);
LoadVoice(buf,2); v = LoadVoice(buf,2);
} }
return(v); return(v);
} }
} // end of ScoreVoice } // end of ScoreVoice




static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices) static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices, int control)
{//========================================================================= {//======================================================================================
// control: bit0=1 include mbrola voices
int ix; int ix;
int score; int score;
int nv; // number of candidates int nv; // number of candidates
nv = 0; nv = 0;
for(ix=0; ix<n_voices_list; ix++) for(ix=0; ix<n_voices_list; ix++)
{ {
vp = voices_list[ix];
if(((control & 1) == 0) && (memcmp(vp->identifier,"mb/",3) == 0))
continue;

if((score = ScoreVoice(voice_select, n_parts, lang_len, voices_list[ix])) > 0) if((score = ScoreVoice(voice_select, n_parts, lang_len, voices_list[ix])) > 0)
{ {
voices[nv++] = vp = voices_list[ix]; voices[nv++] = vp;
vp->score = score; vp->score = score;
} }
} }
espeak_ListVoices(NULL); // create the voices list espeak_ListVoices(NULL); // create the voices list


// select and sort voices for the required language // select and sort voices for the required language
nv = SetVoiceScores(voice_select,voices); nv = SetVoiceScores(voice_select,voices,0);


if(nv == 0) if(nv == 0)
{ {
if(voice_spec) if(voice_spec)
{ {
// select the voices which match the voice_spec, and sort them by preference // select the voices which match the voice_spec, and sort them by preference
SetVoiceScores(voice_spec,voices); SetVoiceScores(voice_spec,voices,1);
return((const espeak_VOICE **)voices); return((const espeak_VOICE **)voices);
} }



Loading…
Cancel
Save