|
|
@@ -65,6 +65,21 @@ enum feature_t { |
|
|
|
// voice |
|
|
|
vcd = FEATURE('v', 'c', 'd'), |
|
|
|
vls = FEATURE('v', 'l', 's'), |
|
|
|
// vowel height |
|
|
|
hgh = FEATURE('h', 'g', 'h'), |
|
|
|
smh = FEATURE('s', 'm', 'h'), |
|
|
|
umd = FEATURE('u', 'm', 'd'), |
|
|
|
mid = FEATURE('m', 'i', 'd'), |
|
|
|
lmd = FEATURE('l', 'm', 'd'), |
|
|
|
sml = FEATURE('s', 'm', 'l'), |
|
|
|
low = FEATURE('l', 'o', 'w'), |
|
|
|
// vowel backness |
|
|
|
fnt = FEATURE('f', 'n', 't'), |
|
|
|
cnt = FEATURE('c', 'n', 't'), |
|
|
|
bck = FEATURE('b', 'c', 'k'), |
|
|
|
// rounding |
|
|
|
unr = FEATURE('u', 'n', 'r'), |
|
|
|
rnd = FEATURE('r', 'n', 'd'), |
|
|
|
}; |
|
|
|
|
|
|
|
uint32_t lookup_feature(const char *feature) { |
|
|
@@ -174,6 +189,27 @@ phoneme_add_feature(PHONEME_TAB *phoneme, |
|
|
|
case vls: |
|
|
|
phoneme->phflags |= phVOICELESS; |
|
|
|
break; |
|
|
|
// vowel height |
|
|
|
case hgh: |
|
|
|
case smh: |
|
|
|
case umd: |
|
|
|
case mid: |
|
|
|
case lmd: |
|
|
|
case sml: |
|
|
|
case low: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
// vowel backness |
|
|
|
case fnt: |
|
|
|
case cnt: |
|
|
|
case bck: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
// rounding |
|
|
|
case unr: |
|
|
|
case rnd: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
// invalid phoneme feature |
|
|
|
default: |
|
|
|
return create_name_error_context(context, ENS_UNKNOWN_PHONEME_FEATURE, feature); |