Browse Source

phoneme_add_feature: support setting the voice features.

The 'fortis' feature is not used, so it has been removed.
master
Reece H. Dunn 8 years ago
parent
commit
9dc3d27497
2 changed files with 10 additions and 5 deletions
  1. 0
    5
      src/libespeak-ng/compiledata.c
  2. 10
    0
      src/libespeak-ng/phoneme.c

+ 0
- 5
src/libespeak-ng/compiledata.c View File

@@ -296,7 +296,6 @@ static keywtab_t keywords[] = {
// flags
{ "wavef", tPHONEME_FLAG, phWAVE },
{ "unstressed", tPHONEME_FLAG, phUNSTRESSED },
{ "fortis", tPHONEME_FLAG, phFORTIS },
{ "sibilant", tPHONEME_FLAG, phSIBILANT }, // TODO (deprecated): use 'sib' instead
{ "nolink", tPHONEME_FLAG, phNOLINK },
{ "trill", tPHONEME_FLAG, phTRILL }, // TODO (deprecated): use 'trl' instead
@@ -315,10 +314,6 @@ static keywtab_t keywords[] = {
{ "flag2", tPHONEME_FLAG, phFLAG2 },
{ "flag3", tPHONEME_FLAG, phFLAG3 },

// voiced / unvoiced
{ "vcd", tPHONEME_FLAG, phVOICED },
{ "vls", tPHONEME_FLAG, phFORTIS },

// vowel transition attributes
{ "len=", tTRANSITION, 1 },
{ "rms=", tTRANSITION, 2 },

+ 10
- 0
src/libespeak-ng/phoneme.c View File

@@ -62,6 +62,9 @@ enum feature_t {
uvl = FEATURE('u', 'v', 'l'),
phr = FEATURE('p', 'h', 'r'),
glt = FEATURE('g', 'l', 't'),
// voice
vcd = FEATURE('v', 'c', 'd'),
vls = FEATURE('v', 'l', 's'),
};

uint32_t lookup_feature(const char *feature) {
@@ -164,6 +167,13 @@ phoneme_add_feature(PHONEME_TAB *phoneme,
case alp:
// FIXME: Not supported by eSpeak. Used in Chinese/Japanese ɕ and ʑ.
break;
// voice
case vcd:
phoneme->phflags |= phVOICED;
break;
case vls: // FIXME: This should be a phVOICELESS (!phVOICED) flag. Fortis/lenis are a different thing.
phoneme->phflags |= phFORTIS;
break;
// invalid phoneme feature
default:
return create_name_error_context(context, ENS_UNKNOWN_PHONEME_FEATURE, feature);

Loading…
Cancel
Save