|
|
@@ -80,6 +80,45 @@ enum feature_t { |
|
|
|
// rounding |
|
|
|
unr = FEATURE('u', 'n', 'r'), |
|
|
|
rnd = FEATURE('r', 'n', 'd'), |
|
|
|
// articulation |
|
|
|
lgl = FEATURE('l', 'g', 'l'), |
|
|
|
idt = FEATURE('i', 'd', 't'), |
|
|
|
apc = FEATURE('a', 'p', 'c'), |
|
|
|
lmn = FEATURE('l', 'm', 'n'), |
|
|
|
// air flow |
|
|
|
egs = FEATURE('e', 'g', 's'), |
|
|
|
igs = FEATURE('i', 'g', 's'), |
|
|
|
// phonation |
|
|
|
brv = FEATURE('b', 'r', 'v'), |
|
|
|
slv = FEATURE('s', 'l', 'v'), |
|
|
|
stv = FEATURE('s', 't', 'v'), |
|
|
|
crv = FEATURE('c', 'r', 'v'), |
|
|
|
glc = FEATURE('g', 'l', 'c'), |
|
|
|
// rounding and labialization |
|
|
|
ptr = FEATURE('p', 't', 'r'), |
|
|
|
cmp = FEATURE('c', 'm', 'p'), |
|
|
|
mrd = FEATURE('m', 'r', 'd'), |
|
|
|
lrd = FEATURE('l', 'r', 'd'), |
|
|
|
// syllabicity |
|
|
|
syl = FEATURE('s', 'y', 'l'), |
|
|
|
nsy = FEATURE('n', 's', 'y'), |
|
|
|
// consonant release |
|
|
|
asp = FEATURE('a', 's', 'p'), |
|
|
|
nrs = FEATURE('n', 'r', 's'), |
|
|
|
lrs = FEATURE('l', 'r', 's'), |
|
|
|
unx = FEATURE('u', 'n', 'x'), |
|
|
|
// coarticulation |
|
|
|
pzd = FEATURE('p', 'z', 'd'), |
|
|
|
vzd = FEATURE('v', 'z', 'd'), |
|
|
|
fzd = FEATURE('f', 'z', 'd'), |
|
|
|
nzd = FEATURE('n', 'z', 'd'), |
|
|
|
rzd = FEATURE('r', 'z', 'd'), |
|
|
|
// tongue root |
|
|
|
atr = FEATURE('a', 't', 'r'), |
|
|
|
rtr = FEATURE('r', 't', 'r'), |
|
|
|
// fortis and lenis |
|
|
|
fts = FEATURE('f', 't', 's'), |
|
|
|
lns = FEATURE('l', 'n', 's'), |
|
|
|
}; |
|
|
|
|
|
|
|
uint32_t lookup_feature(const char *feature) { |
|
|
@@ -210,6 +249,69 @@ phoneme_add_feature(PHONEME_TAB *phoneme, |
|
|
|
case rnd: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
// articulation |
|
|
|
case lgl: |
|
|
|
case idt: |
|
|
|
case apc: |
|
|
|
case lmn: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
// air flow |
|
|
|
case egs: |
|
|
|
case igs: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
// phonation |
|
|
|
case brv: |
|
|
|
case slv: |
|
|
|
case stv: |
|
|
|
case crv: |
|
|
|
case glc: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
// rounding and labialization |
|
|
|
case ptr: |
|
|
|
case cmp: |
|
|
|
case mrd: |
|
|
|
case lrd: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
// syllabicity |
|
|
|
case syl: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
case nsy: |
|
|
|
phoneme->phflags |= phNONSYLLABIC; |
|
|
|
break; |
|
|
|
// consonant release |
|
|
|
case asp: |
|
|
|
case nrs: |
|
|
|
case lrs: |
|
|
|
case unx: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
// coarticulation |
|
|
|
case pzd: |
|
|
|
phoneme->phflags |= phPALATAL; |
|
|
|
break; |
|
|
|
case vzd: |
|
|
|
case fzd: |
|
|
|
case nzd: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
case rzd: |
|
|
|
phoneme->phflags |= phRHOTIC; |
|
|
|
break; |
|
|
|
// tongue root |
|
|
|
case atr: |
|
|
|
case rtr: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
// fortis and lenis |
|
|
|
case fts: |
|
|
|
case lns: |
|
|
|
// Not supported by eSpeak. |
|
|
|
break; |
|
|
|
// invalid phoneme feature |
|
|
|
default: |
|
|
|
return create_name_error_context(context, ENS_UNKNOWN_PHONEME_FEATURE, feature); |