[1.39.07]

Fix  SSML <prosody rate> to allow the maximum rate of 390 wpm.
Fixes to the generation of the dict_phonemes report.
Lang=en-n adjust vowel sounds.
Compile phonemes: automatically assume vowel-break marker in second keyframe of a vowel file if none is set.
Set letter group 'A' to "vowel letters only" for Indic alphabets.



git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@195 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
jonsd
2008-09-27 18:14:15 +00:00
parent 359b2327a9
commit 5ef05700e1
37 changed files with 456 additions and 297 deletions
+45 -5
View File
@@ -381,6 +381,8 @@ void FindPhonemesUsed(void)
char *next;
unsigned char c;
int count = 0;
int ignore;
char phonetic[N_WORD_PHONEMES];
// look through all the phoneme strings in the **_rules data
// and mark these phoneme codes as used.
@@ -419,21 +421,37 @@ void FindPhonemesUsed(void)
p += (strlen(p)+1);
}
while((((c = *p) != RULE_PHONEMES)) && (c != 0)) p++;
while((c = *p) != 0)
{
if(c == RULE_CONDITION)
p++; // next byte is the condition number, which may be 3 (= RULE_PHONEMES)
if(c == RULE_PHONEMES)
break;
p++;
}
count++;
if(c == RULE_PHONEMES)
{
ignore = 0;
start = p;
p++;
while(*p != 0)
while((c = *p) != 0)
{
phoneme_tab_flags[*p & 0xff] |= 2;
if(c == phonSWITCH)
ignore = 1;
if(ignore == 0)
phoneme_tab_flags[c] |= 2;
p++;
}
}
p++;
}
// NOTE, we should recognise langopts.textmode and ignore the *_list file (lang=zh)
for(hash=0; hash<N_HASH_DICT; hash++)
{
p = translator->dict_hashtab[hash];
@@ -446,11 +464,33 @@ void FindPhonemesUsed(void)
if((p[1] & 0x80) == 0)
{
p += ((p[1] & 0x3f) + 2);
while(*p != 0)
strcpy(phonetic,p);
p += strlen(phonetic) +1;
// examine flags
ignore = 0;
while(p < next)
{
phoneme_tab_flags[*p & 0xff] |= 2;
if(*p == BITNUM_FLAG_TEXTMODE)
{
ignore = 1;
break;
}
p++;
}
if(ignore == 0)
{
p = phonetic;
while((c = *p) != 0)
{
if(c == phonSWITCH)
break;
phoneme_tab_flags[c] |= 2;
p++;
}
}
}
p = next;
}