mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-01 05:46:19 +00:00
The 'dontlist' feature was used by the now removed PrintPhonemesUsed function to not display that phoneme in the list. It was also only used by the English phonemetable.
629 lines
10 KiB
Plaintext
629 lines
10 KiB
Plaintext
|
|
phoneme t2 // [t] which doesn't reduce
|
|
vcd alv stop
|
|
ChangePhoneme(t)
|
|
endphoneme
|
|
|
|
|
|
phoneme t# // reduced [t] as in "city" in en-us
|
|
vcd alv stop
|
|
ChangePhoneme(t)
|
|
endphoneme
|
|
|
|
|
|
phoneme d# // change to [d] or [t] depending on whether previous phoneme is voiced
|
|
vls alv stop
|
|
IF prevPh(isVoiced) THEN
|
|
ChangePhoneme(d)
|
|
ELSE
|
|
ChangePhoneme(t)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
phoneme z# // change to [z] or [s] depending on whether previous phoneme is voiced
|
|
vls alv frc sibilant
|
|
IF prevPh(isVoiced) THEN
|
|
ChangePhoneme(z)
|
|
ELSE
|
|
ChangePhoneme(s)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
|
|
phoneme l // use dark [l/2] before not-vowel
|
|
liquid
|
|
lengthmod 7
|
|
|
|
IF NOT nextPhW(isVowel) THEN
|
|
IF prevPh(isVowel) OR prevPh(j) OR prevPh(w) THEN
|
|
ChangePhoneme(l/2)
|
|
ELSE
|
|
ChangePhoneme(l/)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
CALL base/l
|
|
endphoneme
|
|
|
|
|
|
phoneme r- // linking r, used in English between certain vowels and a following vowel
|
|
liquid rhotic
|
|
ipa ɹ
|
|
|
|
IF NOT thisPh(isWordEnd) AND NOT prevPh(@) AND NOT prevPh(3) THEN
|
|
ChangePhoneme(r)
|
|
ENDIF
|
|
|
|
lengthmod 0
|
|
|
|
NextVowelStarts
|
|
VowelStart(r2/r2@)
|
|
VowelStart(r2/r2a)
|
|
VowelStart(r2/r2e)
|
|
VowelStart(r2/r2i)
|
|
VowelStart(r2/r2o)
|
|
VowelStart(r2/r2u)
|
|
EndSwitch
|
|
|
|
IF prevPh(isVowel) THEN
|
|
VowelEnding(r/xr, -60)
|
|
ENDIF
|
|
|
|
FMT(r/r)
|
|
endphoneme
|
|
|
|
|
|
phoneme z/2 // used for 's suffix
|
|
vcd alv frc sibilant
|
|
lengthmod 6
|
|
IF prevPh(isSibilant) THEN
|
|
InsertPhoneme(I2)
|
|
ENDIF
|
|
|
|
IF NOT prevPh(isVoiced) THEN
|
|
ChangePhoneme(s)
|
|
ENDIF
|
|
ChangePhoneme(z)
|
|
endphoneme
|
|
|
|
|
|
phoneme w#
|
|
vls glt apr // [h]
|
|
ipa ʍ
|
|
|
|
IF nextPh(isVowel) THEN
|
|
NextVowelStarts
|
|
VowelStart(w/w@)
|
|
VowelStart(w/wa)
|
|
VowelStart(w/we)
|
|
VowelStart(w/wi)
|
|
VowelStart(w/wo)
|
|
VowelStart(w/wu)
|
|
EndSwitch
|
|
ENDIF
|
|
|
|
WAV(h/hu, 70)
|
|
endphoneme
|
|
|
|
|
|
//*******************************************************************
|
|
// VOWELS
|
|
//*******************************************************************
|
|
|
|
phoneme @ // Schwa
|
|
vowel starttype #@ endtype #@
|
|
unstressed
|
|
length 140
|
|
IfNextVowelAppend(r-)
|
|
IF thisPh(isWordEnd) THEN
|
|
FMT(vowel/@_6, 90)
|
|
ENDIF
|
|
FMT(vowel/@)
|
|
endphoneme
|
|
|
|
|
|
phoneme 3 // Schwa, used for rhotic schwa in American, e.g. bett**er**
|
|
CALL @
|
|
ipa ə
|
|
endphoneme
|
|
|
|
|
|
phoneme @2 // Schwa, changes to I before a vowel. th**e**, used only for "the".
|
|
vowel starttype #@ endtype #@
|
|
unstressed
|
|
length 120
|
|
IF nextPh(isVowel) THEN
|
|
ChangePhoneme(I2)
|
|
ENDIF
|
|
ChangePhoneme(@)
|
|
endphoneme
|
|
|
|
|
|
phoneme @5 // Schwa, changes to U before a vowel. t**o**, used only for "to".
|
|
vowel starttype #@ endtype #@
|
|
unstressed
|
|
length 140
|
|
IF nextPh(isVowel) OR nextPh(isPause) THEN
|
|
ChangePhoneme(U)
|
|
ENDIF
|
|
ChangePhoneme(@)
|
|
endphoneme
|
|
|
|
|
|
phoneme @L // simp**le**
|
|
vowel starttype #@ endtype l
|
|
ipa ə|l
|
|
unstressed
|
|
length 160
|
|
CALL vowelstart_l
|
|
FMT(vwl_en/@L)
|
|
endphoneme
|
|
|
|
|
|
phoneme a
|
|
vowel starttype #a endtype #a
|
|
length 160
|
|
ChangeIfDiminished(a#)
|
|
IF thisPh(isUnstressed) THEN
|
|
FMT(vowel/a_8)
|
|
ENDIF
|
|
FMT(vowel/a)
|
|
endphoneme
|
|
|
|
|
|
phoneme a2 // don't reduce to a#
|
|
vowel
|
|
ChangePhoneme(a)
|
|
endphoneme
|
|
|
|
|
|
phoneme a# // **a**bout. This may be \[@\] or may be a more open schwa.
|
|
vowel starttype #@ endtype #@
|
|
ipa ɐ
|
|
unstressed
|
|
length 150
|
|
|
|
IF NOT thisPh(isUnstressed) THEN
|
|
ChangePhoneme(a) // syllable has an explicit stress
|
|
ENDIF
|
|
|
|
FMT(vowel/a#_3)
|
|
endphoneme
|
|
|
|
|
|
phoneme aa // 'b**a**th' etc. This is \[a\] in some accents, \[A:\] in others.
|
|
vowel starttype #a endtype #a
|
|
ipa a
|
|
length 200
|
|
|
|
IF MbrolaSynth THEN
|
|
ChangePhoneme(A:)
|
|
ENDIF
|
|
|
|
IfNextVowelAppend(r-)
|
|
FMT(vowel/a_6, 88)
|
|
endphoneme
|
|
|
|
|
|
phoneme E // dr**e**ss
|
|
vowel starttype #e endtype #e
|
|
length 140
|
|
IF nextPhW(n) THEN
|
|
ChangeIfDiminished(@)
|
|
ELSE
|
|
ChangeIfDiminished(I2)
|
|
ENDIF
|
|
FMT(vowel/ee_5)
|
|
endphoneme
|
|
|
|
|
|
phoneme E# // [@] in unstressed syllables, if next vowel is stressed
|
|
vowel starttype #e endtype #e
|
|
|
|
IF thisPh(isUnstressed) AND nextVowel(isVowel) AND nextVowel(isStressed) THEN
|
|
ChangePhoneme(@)
|
|
ENDIF
|
|
|
|
ChangePhoneme(E)
|
|
endphoneme
|
|
|
|
|
|
phoneme E2 // does not reduce in unstressed syllables
|
|
vowel starttype #e endtype #e
|
|
length 140
|
|
ChangePhoneme(E) // a second change ([E] to [I2]) won't happen
|
|
endphoneme
|
|
|
|
|
|
|
|
phoneme I // k**i**t
|
|
vowel starttype #i endtype #i
|
|
length 130
|
|
IfNextVowelAppend(;)
|
|
FMT(vowel/ii_2)
|
|
endphoneme
|
|
|
|
|
|
phoneme I2 // **i**ntend. As \[I\], but also indicates an unstressed syllable.
|
|
vowel starttype #i endtype #i
|
|
unstressed
|
|
length 130
|
|
|
|
IF MbrolaSynth THEN
|
|
ChangePhoneme(I)
|
|
ENDIF
|
|
|
|
IfNextVowelAppend(;)
|
|
|
|
IF thisPh(isAfterStress) AND thisPh(isFinalVowel) THEN
|
|
FMT(vowel/ii#_3)
|
|
ENDIF
|
|
FMT(vowel/ii_4)
|
|
endphoneme
|
|
|
|
|
|
phoneme I# // used for [I] which may be [@] in some accents
|
|
vowel starttype #i endtype #i
|
|
unstressed
|
|
length 130
|
|
|
|
IF MbrolaSynth THEN
|
|
ChangePhoneme(I)
|
|
ENDIF
|
|
|
|
IfNextVowelAppend(;)
|
|
ChangePhoneme(I2)
|
|
endphoneme
|
|
|
|
|
|
phoneme i // happ**y**. optional variant of [I] for end of words
|
|
vowel starttype #i endtype #i
|
|
unstressed
|
|
ipa i
|
|
length 150
|
|
IfNextVowelAppend(;)
|
|
|
|
// IF NOT thisPh(isFinalVowel) THEN
|
|
// ChangePhoneme(I)
|
|
// ENDIF
|
|
|
|
FMT(vowel/ii_7)
|
|
endphoneme
|
|
|
|
|
|
phoneme 0 // l**o**t
|
|
vowel starttype #o endtype #o
|
|
length 140
|
|
ChangeIfDiminished(@)
|
|
FMT(vowel/0)
|
|
endphoneme
|
|
|
|
|
|
phoneme 0# // [@] in unstressed syllables
|
|
vowel starttype #o endtype #o
|
|
|
|
IF thisPh(isUnstressed) AND nextVowel(isVowel) AND NOT nextVowel(isUnstressed) THEN
|
|
ChangePhoneme(@)
|
|
ENDIF
|
|
|
|
ChangePhoneme(0)
|
|
endphoneme
|
|
|
|
|
|
phoneme 02 // becomes V in en-us
|
|
vowel starttype #o endtype #o
|
|
length 140
|
|
ChangePhoneme(0)
|
|
endphoneme
|
|
|
|
|
|
phoneme V // str**u**t
|
|
vowel starttype #a endtype #@
|
|
length 140
|
|
|
|
ChangeIfDiminished(@)
|
|
FMT(vowel/V_2)
|
|
endphoneme
|
|
|
|
|
|
phoneme U // f**oo**t
|
|
vowel starttype #o endtype #o
|
|
length 150
|
|
|
|
IF prevPhW(j) THEN
|
|
length 130
|
|
FMT(vowel/8_2)
|
|
ENDIF
|
|
|
|
FMT(vowel/uu)
|
|
endphoneme
|
|
|
|
|
|
|
|
phoneme A: // p**al**m
|
|
vowel starttype #a endtype #a
|
|
length 230
|
|
IfNextVowelAppend(r-)
|
|
FMT(vowel/aa_2)
|
|
endphoneme
|
|
|
|
|
|
phoneme A@ // st**ar**t. Used for [A:] when followed by 'r'.
|
|
vowel starttype #a endtype #a
|
|
ipa ɑː
|
|
length 230
|
|
IfNextVowelAppend(r-)
|
|
FMT(vowel/aa_2)
|
|
endphoneme
|
|
|
|
|
|
phoneme A# // [a] in British [A:] in American
|
|
vowel starttype #a endtype #a
|
|
ChangePhoneme(a)
|
|
endphoneme
|
|
|
|
|
|
|
|
|
|
phoneme 3: // n**ur**se
|
|
vowel starttype #@ endtype #@
|
|
length 210
|
|
IfNextVowelAppend(r-)
|
|
ChangeIfDiminished(@)
|
|
FMT(vowel/3_en)
|
|
endphoneme
|
|
|
|
|
|
phoneme i: // fl**ee**ce
|
|
vowel starttype #i endtype #i
|
|
length 175
|
|
IfNextVowelAppend(;)
|
|
IF prevPh(w) THEN
|
|
VowelStart(w/wi2)
|
|
ENDIF
|
|
FMT(vowel/i_en)
|
|
endphoneme
|
|
|
|
|
|
phoneme O: // th**ou**ght
|
|
vowel starttype #o endtype #o
|
|
length 230
|
|
ChangeIfDiminished(@)
|
|
FMT(vowel/oo_en)
|
|
endphoneme
|
|
|
|
|
|
phoneme O
|
|
vowel starttype #o endtype #o
|
|
length 200
|
|
ChangeIfDiminished(@)
|
|
FMT(vowel/oo_en)
|
|
endphoneme
|
|
|
|
|
|
phoneme O@ // n**or**th
|
|
vowel starttype #o endtype #o
|
|
ipa ɔː
|
|
length 240
|
|
IfNextVowelAppend(r-)
|
|
FMT(vowel/oo_en)
|
|
endphoneme
|
|
|
|
|
|
phoneme o@ // f**or**ce
|
|
vowel starttype #o endtype #o
|
|
ipa ɔː
|
|
length 250
|
|
|
|
IF MbrolaSynth THEN
|
|
ChangePhoneme(O@)
|
|
ENDIF
|
|
|
|
IfNextVowelAppend(r-)
|
|
FMT(vowel/oo_en)
|
|
endphoneme
|
|
|
|
|
|
phoneme u: // g**oo**se
|
|
vowel starttype #u endtype #u
|
|
length 210
|
|
IF nextPh(l/2) THEN
|
|
FMT(vwl_en/u_L)
|
|
ENDIF
|
|
IF prevPhW(j) AND NOT thisPh(isWordEnd) THEN
|
|
length 160
|
|
ENDIF
|
|
FMT(vdiph2/uw_2)
|
|
endphoneme
|
|
|
|
|
|
phoneme aU // m**ou**th
|
|
vowel starttype #a endtype #u
|
|
length 230
|
|
FMT(vdiph/au)
|
|
endphoneme
|
|
|
|
|
|
phoneme oU // g**oa**t
|
|
vowel starttype #@ endtype #u
|
|
ipa əʊ
|
|
length 220
|
|
FMT(vdiph/@u_en)
|
|
endphoneme
|
|
|
|
|
|
phoneme oU#
|
|
vowel
|
|
IF thisPh(isStressed) THEN
|
|
ChangePhoneme(0)
|
|
ENDIF
|
|
|
|
IF nextVowel(isStressed) OR prevVowel(isStressed) THEN
|
|
ChangePhoneme(@)
|
|
ENDIF
|
|
|
|
ChangePhoneme(oU)
|
|
endphoneme
|
|
|
|
|
|
phoneme aI // pr**i**ce
|
|
vowel starttype #a endtype #i
|
|
length 240
|
|
IF nextPh(#a) THEN
|
|
AppendPhoneme(;)
|
|
ENDIF
|
|
FMT(vdiph/ai_2)
|
|
endphoneme
|
|
|
|
|
|
phoneme eI // f**a**ce
|
|
vowel starttype #e endtype #i
|
|
length 210
|
|
FMT(vdiph/eei)
|
|
endphoneme
|
|
|
|
|
|
phoneme OI // ch**oi**ce
|
|
vowel starttype #o endtype #i
|
|
length 230
|
|
FMT(vdiph/ooi)
|
|
endphoneme
|
|
|
|
|
|
phoneme e@ // squ**are**
|
|
vowel starttype #e endtype #@
|
|
length 230
|
|
IfNextVowelAppend(r-)
|
|
FMT(vowel/ee_1)
|
|
endphoneme
|
|
|
|
|
|
phoneme i@ // n**ear**
|
|
vowel starttype #i endtype #@
|
|
length 250
|
|
IfNextVowelAppend(r-)
|
|
FMT(vdiph2/ii@)
|
|
endphoneme
|
|
|
|
|
|
phoneme i@3
|
|
vowel starttype #i endtype #@
|
|
length 250
|
|
|
|
IF MbrolaSynth THEN
|
|
ChangePhoneme(i@)
|
|
ENDIF
|
|
|
|
IfNextVowelAppend(r-)
|
|
FMT(vdiph2/ii@)
|
|
endphoneme
|
|
|
|
|
|
phoneme U@ // c**ure**
|
|
vowel starttype #u endtype #@
|
|
length 200
|
|
IfNextVowelAppend(r-)
|
|
IF thisPh(isUnstressed) THEN
|
|
FMT(vdiph2/8@)
|
|
ENDIF
|
|
FMT(vdiph2/uu@)
|
|
endphoneme
|
|
|
|
|
|
phoneme aI@ // sc**ie**nce
|
|
vowel starttype #a endtype #@
|
|
length 280
|
|
IfNextVowelAppend(r-)
|
|
FMT(vwl_en/aI@)
|
|
endphoneme
|
|
|
|
|
|
phoneme aI3
|
|
vowel starttype #a endtype #@
|
|
length 280
|
|
ChangePhoneme(aI@)
|
|
endphoneme
|
|
|
|
|
|
phoneme aU@ // h**our**
|
|
vowel starttype #a endtype #@
|
|
length 280
|
|
IfNextVowelAppend(r-)
|
|
FMT(vwl_en/aU@)
|
|
endphoneme
|
|
|
|
|
|
|
|
|
|
phoneme IR // used for "ir" when [3:] is split (Scottish)
|
|
vowel starttype #@ endtype #@
|
|
length 190
|
|
ipa əɹ
|
|
IF nextPhW(r-) THEN
|
|
ipa ə
|
|
ENDIF
|
|
IfNextVowelAppend(r-)
|
|
FMT(vowelr/V_r)
|
|
endphoneme
|
|
|
|
|
|
phoneme VR // used for "or"/"ur" when [3:] is split (Scottish)
|
|
vowel starttype #@ endtype #@
|
|
length 210
|
|
ipa ʌɹ
|
|
IF nextPhW(r-) THEN
|
|
ipa ʌ
|
|
ENDIF
|
|
IfNextVowelAppend(r-)
|
|
FMT(vowelr/V3_r)
|
|
endphoneme
|
|
|
|
|
|
phoneme o:
|
|
vowel starttype #o endtype #o
|
|
length 220
|
|
FMT(vowel/o)
|
|
endphoneme
|
|
|
|
|
|
phoneme A~
|
|
vowel starttype #a endtype #a
|
|
length 260
|
|
FMT(vnasal/aa_n2)
|
|
endphoneme
|
|
|
|
|
|
phoneme O~
|
|
vowel starttype #o endtype #o
|
|
length 240
|
|
FMT(vnasal/oo_n2)
|
|
endphoneme
|
|
|
|
|
|
phoneme e:
|
|
vowel starttype #e endtype #e
|
|
length 210
|
|
FMT(vowel/e)
|
|
endphoneme
|
|
|
|
|
|
phoneme a#2 // for word 'an'
|
|
vowel
|
|
IF next2Ph(isVowel) THEN
|
|
ChangePhoneme(a#)
|
|
ELSE
|
|
ChangePhoneme(a)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
phoneme @# // TEST: [@] which is slightly more 'front'
|
|
vowel starttype #i endtype #i
|
|
unstressed
|
|
length 130
|
|
FMT(vowel/@_3)
|
|
endphoneme
|
|
|