//******************************************************************* // VOWELS //******************************************************************* phoneme 3 // Schwa, used for rhotic schwa in American vowel starttype #@ endtype #@ ipa ɚ unstressed length 210 IfNextVowelAppend(r-) FMT(vwl_en_us/3_us) endphoneme phoneme @ // Schwa vowel 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 vowel starttype #@ endtype #@ unstressed length 120 IF nextPh(isVowel) THEN ChangePhoneme(I2) ENDIF FMT(vowel/@_low2) endphoneme phoneme a vowel 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# vowel 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 vowel starttype #e endtype #e length 190 ChangeIfDiminished(I2) FMT(vwl_en_us/ee) endphoneme phoneme I vowel starttype #i endtype #i length 160 IfNextVowelAppend(;) ChangeIfDiminished(I2) IF nextPhW(r) THEN length 200 ENDIF FMT(vowel/ii_4) endphoneme phoneme I2 vowel starttype #i endtype #i unstressed length 160 IfNextVowelAppend(;) FMT(vowel/ii#_3) endphoneme phoneme I# vowel starttype #i endtype #i unstressed length 160 ipa ᵻ // FMT(vowel/@_fnt) FMT(vowel/ii#) endphoneme phoneme i // optional variant of [I] for end of words vowel starttype #i endtype #i unstressed length 170 IfNextVowelAppend(;) IF NOT thisPh(isFinalVowel) THEN ChangePhoneme(I) ENDIF FMT(vowel/ii_final) endphoneme phoneme 0 vowel 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 vowel starttype #o endtype #o length 140 ChangePhoneme(V) endphoneme phoneme V vowel starttype #a endtype #@ length 170 ChangeIfDiminished(@) FMT(vowel/V_6) endphoneme phoneme U vowel starttype #o endtype #o length 145 FMT(vowel/8_2) endphoneme phoneme A: vowel 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 vowel 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 vowel starttype #a endtype #a ChangePhoneme(A:) endphoneme phoneme 3: vowel starttype #@ endtype #@ length 210 IfNextVowelAppend(r-) ChangeIfDiminished(3) FMT(vwl_en_us/3_us2) endphoneme phoneme i: vowel starttype #i endtype #i length 180 IfNextVowelAppend(;) FMT(vowel/i_en) endphoneme phoneme O: vowel starttype #o endtype #o length 220 ChangeIfDiminished(@) IF nextPhW(r) THEN FMT(vwl_en_us/oor) ENDIF FMT(vowel/0_3) endphoneme phoneme O@ vowel starttype #o endtype #@ length 250 ipa ɔː|ɹ IF nextPhW(r) THEN ipa ɔː ENDIF IfNextVowelAppend(r) FMT(vwl_en_us/oor) endphoneme phoneme o@ vowel starttype #o endtype #@ length 250 ipa oː|ɹ IF nextPhW(r) THEN ipa oː ENDIF IfNextVowelAppend(r) FMT(vwl_en_us/or) endphoneme phoneme O vowel starttype #o endtype #o length 200 ChangeIfDiminished(@) FMT(vowel/aa#) endphoneme phoneme u: vowel starttype #u endtype #u length 190 IF prevPhW(j) AND NOT thisPh(isWordEnd) THEN length 160 ENDIF FMT(vdiph2/uw_6) endphoneme phoneme aU vowel starttype #a endtype #o length 235 FMT(vdiph/aoo) endphoneme phoneme oU vowel starttype #@ endtype #u length 230 FMT(vdiph/8u) endphoneme phoneme aI vowel starttype #a endtype #i length 240 IF nextPh(#a) OR nextPh(#o) THEN AppendPhoneme(;) ENDIF FMT(vwl_en_us/ai) endphoneme phoneme eI vowel starttype #e endtype #i length 220 FMT(vdiph2/ei_4) // FMT(vdiph/eei_5) endphoneme phoneme OI vowel starttype #o endtype #i length 270 FMT(vdiph/ooi_3) endphoneme phoneme e@ vowel starttype #e endtype #@ length 260 ipa ɛ|ɹ IF nextPhW(r) THEN ipa ɛ ENDIF IfNextVowelAppend(r) FMT(vwl_en_us/er) endphoneme phoneme i@ vowel starttype #i endtype #@ length 250 FMT(vdiph2/ii@) // don't append [r] before a vowel endphoneme phoneme i@3 vowel starttype #i endtype #@ length 280 ipa ɪ|ɹ IF nextPhW(r) THEN ipa ɪ ENDIF IfNextVowelAppend(r) FMT(vwl_en_us/ir) endphoneme phoneme U@ vowel starttype #@ endtype #@ length 250 ipa ʊ|ɹ IF nextPhW(r-) THEN ipa ʊ ENDIF IfNextVowelAppend(r-) FMT(vwl_en_us/ur) endphoneme phoneme aI@ vowel starttype #a endtype #@ length 300 ipa aɪə IfNextVowelAppend(r-) FMT(vwl_en_us/ai@) endphoneme phoneme aI3 vowel starttype #a endtype #@ length 310 ipa aɪɚ IfNextVowelAppend(r-) FMT(vwl_en_us/ai3) endphoneme phoneme aU@ vowel 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 stop 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 stop 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 base/t endphoneme phoneme ? // glottal stop vls glt stop lengthmod 1 // 5? longer preceding vowel nolink Vowelin glstop Vowelout glstop WAV(ustop/null) endphoneme