Files
espeak-ng/phsource/ph_english_us
T

480 lines
7.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//*******************************************************************
// VOWELS
//*******************************************************************
phoneme 3 // Schwa, used for rhotic schwa in American
vwl starttype #@ endtype #@
ipa ɚ
unstressed
length 210
IfNextVowelAppend(r-)
FMT(vwl_en_us/3_us)
endphoneme
phoneme @ // Schwa
vwl starttype #@ endtype #@
unstressed
length 130
IF nextPh(isRhotic) THEN
ChangePhoneme(3)
ENDIF
IF thisPh(isWordEnd) THEN
FMT(vowel/@_6)
ENDIF
FMT(vowel/@_4)
endphoneme
phoneme @2 // Schwa, changes to I before a vowel
vwl starttype #@ endtype #@
unstressed
length 120
IF nextPh(isVowel) THEN
ChangePhoneme(I2)
ENDIF
FMT(vowel/@_low2)
endphoneme
phoneme a
vwl starttype #e endtype #@
ipa æ
length 210
ChangeIfDiminished(a#)
IF nextPh(isNasal) AND NOT KlattSynth THEN
FMT(vnasal/ee_n2)
ELSEIF nextPh(r) AND thisPh(isStressed) THEN
length 190
FMT(vwl_en_us/ar)
ENDIF
FMT(vwl_en_us/a)
endphoneme
phoneme aa // 'bath' etc.
import_phoneme en-us/a
endphoneme
phoneme a#
vwl starttype #@ endtype #@
ipa ɐ
unstressed
length 150
IF thisPh(isStressed) THEN
ChangePhoneme(a)
ENDIF
IF nextPhW(r) THEN
ChangePhoneme(3)
ENDIF
FMT(vowel/a#_3)
endphoneme
phoneme E
vwl starttype #e endtype #e
length 190
IF nextPhW(n) THEN
ChangeIfDiminished(@)
ELSE
ChangeIfDiminished(I2)
ENDIF
FMT(vwl_en_us/ee)
endphoneme
phoneme I
vwl starttype #i endtype #i
length 160
IfNextVowelAppend(;)
ChangeIfDiminished(I2)
IF nextPhW(r) THEN
length 200
ENDIF
FMT(vowel/ii_4)
endphoneme
phoneme I2
vwl starttype #i endtype #i
unstressed
length 160
IfNextVowelAppend(;)
FMT(vowel/ii#_3)
endphoneme
phoneme I#
vwl starttype #i endtype #i
unstressed
length 160
ipa ᵻ
// FMT(vowel/@_fnt)
FMT(vowel/ii#)
endphoneme
phoneme I2#
vwl starttype #i endtype #i
unstressed
ChangePhoneme(I#)
endphoneme
phoneme 0
vwl starttype #a endtype #a
length 220
ipa ɑː
ChangeIfDiminished(@)
IF nextPh(r) THEN
ChangePhoneme(O:)
ENDIF
FMT(vowel/aa_8)
endphoneme
phoneme 02 // becomes V in en-us
vwl starttype #o endtype #o
length 140
ChangePhoneme(V)
endphoneme
phoneme O2
vwl starttype #o endtype #o
length 220
FMT(vowel/aa#) // Same as /O/, but not diminished.
endphoneme
phoneme V
vwl starttype #a endtype #@
length 170
ChangeIfDiminished(@)
FMT(vowel/V_6)
endphoneme
phoneme U
vwl starttype #o endtype #o
length 145
FMT(vowel/8_2)
endphoneme
phoneme A:
vwl starttype #a endtype #a
length 220
IF nextPhW(r) THEN
FMT(vwl_en_us/aar)
ENDIF
FMT(vowel/aa_8)
endphoneme
phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American
vwl starttype #a endtype #a
ipa ɑː|ɹ
IF nextPh(r-) THEN
ipa ɑː
ENDIF
length 260
IfNextVowelAppend(r-)
FMT(vwl_en_us/aar)
endphoneme
phoneme A# // [a] in British [A:] in American
vwl starttype #a endtype #a
ChangePhoneme(A:)
endphoneme
phoneme 3:
vwl starttype #@ endtype #@
length 210
IfNextVowelAppend(r-)
ChangeIfDiminished(3)
FMT(vwl_en_us/3_us2)
endphoneme
phoneme i:
vwl starttype #i endtype #i
length 180
IfNextVowelAppend(;)
FMT(vowel/i_en)
endphoneme
phoneme O:
vwl starttype #o endtype #o
length 220
ChangeIfDiminished(@)
IF nextPhW(r) THEN
FMT(vwl_en_us/oor)
ENDIF
FMT(vowel/0_3)
endphoneme
phoneme O@
vwl starttype #o endtype #@
length 250
ipa ɔː|ɹ
IF nextPhW(r) THEN
ipa ɔː
ENDIF
IfNextVowelAppend(r)
FMT(vwl_en_us/oor)
endphoneme
phoneme o@
vwl starttype #o endtype #@
length 250
ipa oː|ɹ
IF nextPhW(r) THEN
ipa oː
ENDIF
IfNextVowelAppend(r)
FMT(vwl_en_us/or)
endphoneme
phoneme O
vwl starttype #o endtype #o
length 200
ChangeIfDiminished(@)
FMT(vowel/aa#)
endphoneme
phoneme u:
vwl starttype #u endtype #u
length 190
IF prevPhW(j) AND NOT thisPh(isWordEnd) THEN
length 160
ENDIF
FMT(vdiph2/uw_6)
endphoneme
phoneme aU
vwl starttype #a endtype #o
length 235
FMT(vdiph/aoo)
endphoneme
phoneme oU
vwl starttype #@ endtype #u
length 230
FMT(vdiph/8u)
endphoneme
phoneme aI
vwl starttype #a endtype #i
length 240
IF nextPh(#a) OR nextPh(#o) THEN
AppendPhoneme(;)
ENDIF
FMT(vwl_en_us/ai)
endphoneme
phoneme eI
vwl starttype #e endtype #i
length 220
FMT(vdiph2/ei_4)
// FMT(vdiph/eei_5)
endphoneme
phoneme OI
vwl starttype #o endtype #i
length 270
FMT(vdiph/ooi_3)
endphoneme
phoneme e@
vwl starttype #e endtype #@
length 260
ipa ɛ|ɹ
IF nextPhW(r) THEN
ipa ɛ
ENDIF
IfNextVowelAppend(r)
FMT(vwl_en_us/er)
endphoneme
phoneme i
vwl starttype #i endtype #i
unstressed
ipa i
length 170
IfNextVowelAppend(;)
IF NOT thisPh(isFinalVowel) THEN
length 130
FMT(vowel/ii_4)
ENDIF
FMT(vowel/ii_final)
endphoneme
phoneme i@
vwl starttype #i endtype #@
length 250
FMT(vdiph2/ii@) // don't append [r] before a vowel
endphoneme
phoneme i@3
vwl starttype #i endtype #@
length 280
ipa ɪ|ɹ
IF nextPhW(r) THEN
ipa ɪ
ENDIF
IfNextVowelAppend(r)
FMT(vwl_en_us/ir)
endphoneme
phoneme U@
vwl starttype #@ endtype #@
length 250
ipa ʊ|ɹ
IF nextPhW(r-) THEN
ipa ʊ
ENDIF
IfNextVowelAppend(r-)
FMT(vwl_en_us/ur)
endphoneme
phoneme aI@
vwl starttype #a endtype #@
length 300
ipa aɪə
IfNextVowelAppend(r-)
FMT(vwl_en_us/ai@)
endphoneme
phoneme aI3
vwl starttype #a endtype #@
length 310
ipa aɪɚ
IfNextVowelAppend(r-)
FMT(vwl_en_us/ai3)
endphoneme
phoneme aU@
vwl starttype #a endtype #@
length 300
ipa aɪʊɹ
IF nextPhW(r) THEN
ipa aɪʊ
ENDIF
IfNextVowelAppend(r)
FMT(vwl_en_us/aU@)
endphoneme
//==============
// Consonants
//==============
phoneme r/ // used for [r] when not preceding a vowel
liquid
lengthmod 2 //
// formants NULL
endphoneme
phoneme t# // reduced [t] as in "city"
vcd alv stp
ipa ɾ
lengthmod 5
Vowelin f1=1 f2=1700 -300 300 f3=-100 80
Vowelout f1=2 f2=1700 -300 300 f3=-100 80
IF nextPh(isNotVowel) THEN
ChangePhoneme(t)
ENDIF
IF KlattSynth THEN
IF PreVoicing THEN
FMT(klatt/x_tap)
ENDIF
FMT(klatt/tap2) addWav(x/d, 70)
ENDIF
IF PreVoicing THEN
FMT(d/x_tap)
ENDIF
FMT(d/tap2) addWav(x/d, 50)
endphoneme
phoneme t
vls alv stp
voicingswitch d
lengthmod 2
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
IF nextPhW(isVowel) AND nextPh(isUnstressed) THEN
IF NOT next2PhW(n) OR nextPhW(3:) THEN
IF prevPhW(isVowel) THEN
ChangePhoneme(t#)
ELIF prevPhW(n) THEN
WAV(ustop/t, 60)
ENDIF
ENDIF
ENDIF
IF nextPh(isPause2) THEN
WAV(ustop/t_)
ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
WAV(ustop/tr)
ELIF nextPh(@-) THEN
WAV(ustop/t_dnt, 50)
ENDIF
WAV(ustop/t, 90)
endphoneme
phoneme t2 // [t] which doesn't reduce
import_phoneme base1/t
endphoneme
phoneme ? // glottal stp
vls glt stp
lengthmod 1 // 5? longer preceding vowel
nolink
Vowelin glstop
Vowelout glstop
WAV(ustop/null)
endphoneme