mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
[1.43.63]
Phoneme definitions. Add "equivalents" table to translate phonemes from a foreign language (eg. English) into the equivalant phonemes of this language. This is used when *_rules and *_list files indicate that a word uses pronunciation rules from a different language. Unpronouncable words can be recognised by rules in *_rule files. This feature is now used for en, de, es. Lang=ta, hi. Letter-names for combining vowel characters are distinguished from stand-alone vowel characters by a preceding beep. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@251 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
+12
-7
@@ -53,6 +53,7 @@ static char *hash_chains[N_HASH_DICT];
|
||||
static char letterGroupsDefined[N_LETTER_GROUPS];
|
||||
|
||||
MNEM_TAB mnem_rules[] = {
|
||||
{"unpr", 0x01},
|
||||
{"w_alt2", 0x12},
|
||||
{"w_alt3", 0x13},
|
||||
{"w_alt", 0x11}, // note: put longer names before their sub-strings
|
||||
@@ -192,8 +193,8 @@ char *print_dictionary_flags(unsigned int *flags)
|
||||
|
||||
|
||||
|
||||
char *DecodeRule(const char *group_chars, int group_length, char *rule)
|
||||
{//====================================================================
|
||||
char *DecodeRule(const char *group_chars, int group_length, char *rule, int control)
|
||||
{//=================================================================================
|
||||
/* Convert compiled match template to ascii */
|
||||
|
||||
unsigned char rb;
|
||||
@@ -268,16 +269,20 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule)
|
||||
|
||||
if(rb == RULE_DOLLAR)
|
||||
{
|
||||
p[0] = '$';
|
||||
name = LookupMnemName(mnem_rules, *rule++);
|
||||
strcpy(&p[1],name);
|
||||
p += (strlen(name)+1);
|
||||
value = *rule++ & 0xff;
|
||||
if((value != 0x01) || (control & FLAG_UNPRON_TEST))
|
||||
{
|
||||
p[0] = '$';
|
||||
name = LookupMnemName(mnem_rules, value);
|
||||
strcpy(&p[1],name);
|
||||
p += (strlen(name)+1);
|
||||
}
|
||||
c = ' ';
|
||||
}
|
||||
else
|
||||
if(rb == RULE_ENDING)
|
||||
{
|
||||
static const char *flag_chars = "ei vtfq t";
|
||||
static const char *flag_chars = "eipvdfq tba ";
|
||||
flags = ((rule[0] & 0x7f)<< 8) + (rule[1] & 0x7f);
|
||||
suffix_char = 'S';
|
||||
if(flags & (SUFX_P >> 8))
|
||||
|
||||
Reference in New Issue
Block a user