//******************************************************************* // VOWELS //******************************************************************* phoneme @ // Schwa vwl starttype #@ endtype #@ unstressed length 140 IfNextVowelAppend(r-) FMT(vowel/@_3) endphoneme phoneme 3 // Schwa, used for rhotic schwa in American vwl starttype #@ endtype #@ unstressed length 140 IF nextPh(isVowel) THEN ChangePhoneme(@) ENDIF IfNextVowelAppend(r-) IF nextPh(isPause) THEN FMT(vowelr/V3_r) ENDIF FMT(vowel/V) endphoneme phoneme @2 // Schwa, changes to I before a vowel vwl starttype #@ endtype #@ unstressed length 120 IF nextPh(isVowel) THEN ChangePhoneme(I2) ENDIF ChangePhoneme(@) endphoneme phoneme @5 // Schwa, changes to U before a vowel vwl starttype #@ endtype #@ unstressed length 140 IF nextPh(isVowel) OR nextPh(isPause) THEN ChangePhoneme(U) ENDIF ChangePhoneme(@) endphoneme phoneme a vwl starttype #a endtype #a length 200 ChangeIfDiminished(a#) ChangeIfNotStressed(a/) FMT(vowel/a_3) endphoneme phoneme a/ vwl starttype #a endtype #a length 160 ChangeIfDiminished(a#) FMT(vowel/a_3) endphoneme phoneme a# vwl starttype #@ endtype #@ ipa ɐ unstressed length 140 IfNextVowelAppend(r-) FMT(vowel/a#) endphoneme phoneme aa // 'bath' etc. vwl starttype #a endtype #a ipa a: length 220 IfNextVowelAppend(r-) FMT(vowel/a_3) endphoneme phoneme E vwl starttype #e endtype #e length 170 IF nextPhW(n) THEN ChangeIfDiminished(@) ELSE ChangeIfDiminished(I2) ENDIF FMT(vowel/e_e) endphoneme phoneme I vwl starttype #@ endtype #@ length 110 IF nextPh(l/2) THEN VowelEnding(l/L2_@L, -30) FMT(vowel/@_3) ENDIF FMT(vowel/e#) endphoneme phoneme I2 vwl starttype #@ endtype #@ unstressed length 110 CALL I endphoneme phoneme I# vwl starttype #@ endtype #@ ChangePhoneme(I2) endphoneme phoneme i // optional variant of [I] for end of words vwl starttype #i endtype #e ipa e length 150 IfNextVowelAppend(;) FMT(vowel/e_5) endphoneme phoneme 0 vwl starttype #o endtype #o length 200 ChangeIfDiminished(@) FMT(vowel/oo_2) endphoneme phoneme 02 // becomes V in en-us vwl starttype #o endtype #o length 140 ChangePhoneme(V) endphoneme phoneme V vwl starttype #a endtype #@ length 140 ChangeIfDiminished(@) FMT(vowel/V_4) endphoneme phoneme U vwl starttype #u endtype #u ipa ʉ length 140 FMT(vowel/u#_4) endphoneme phoneme A: vwl starttype #a endtype #a length 220 ipa a: IfNextVowelAppend(r-) IF nextPh(r) THEN length 250 FMT(vowelr/aa_r) ENDIF FMT(vowel/a_3) endphoneme phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American vwl starttype #a endtype #@ length 250 ipa aː IF NOT nextPhW(r) THEN AppendPhoneme(r) ENDIF FMT(vowelr/aa_r) endphoneme phoneme 3: vwl starttype #e endtype #@ length 230 ChangeIfNotStressed(VR) // also need "replace 02 3: VR" in voice file ipa e FMT(vowelr/e_r) endphoneme phoneme i: vwl starttype #i endtype #i length 130 IfNextVowelAppend(;) IF prevPh(w) THEN VowelStart(w/wi2) ENDIF IF nextPh(isVFricative) OR nextPh(isPause) THEN length 180 ENDIF FMT(vowel/i_5) endphoneme phoneme O: vwl starttype #o endtype #o length 200 ChangeIfDiminished(@) IF nextPh(r) THEN FMT(vwl_en_us/or) ENDIF FMT(vowel/oo) endphoneme phoneme O@ vwl starttype #o endtype #@ length 230 ipa ɔ IF NOT nextPhW(r) THEN AppendPhoneme(r) ENDIF FMT(vowelr/oo_r) endphoneme phoneme o@ vwl starttype #o endtype #@ length 230 ipa o IF NOT nextPhW(r) THEN AppendPhoneme(r) ENDIF FMT(vowelr/oo_r) endphoneme phoneme O vwl starttype #o endtype #o length 150 ChangeIfDiminished(@) FMT(vowel/0_3) endphoneme phoneme u: vwl starttype #u endtype #u ipa ʉː length 160 IF nextPh(isVFricative) THEN length 200 ENDIF IF nextPh(isPause) THEN length 200 FMT(vowel/u#_4) ENDIF FMT(vowel/u#) endphoneme phoneme aU vwl starttype #a endtype #u ipa ʌʉ length 200 FMT(vdiph/au#) endphoneme phoneme oU vwl starttype #o endtype #u ipa oː length 190 FMT(vowel/o_3) endphoneme phoneme aI vwl starttype #a endtype #i length 190 IF nextPh(isVowel) OR nextPh(isVFricative) THEN ChangePhoneme(aI2) ENDIF IF nextPh(l/2) THEN // before l/2 vwl_en/aI@_2+vwl_en/@L_2 FMT(vwl_en/aI@_2) ENDIF // FMT(vdiph/&i_2 FMT(vdiph/ai_7) endphoneme phoneme aI2 vwl starttype #a endtype #i length 240 FMT(vdiph/ai_7) endphoneme phoneme eI vwl starttype #e endtype #i ipa eː length 190 FMT(vowel/e_2) endphoneme phoneme OI vwl starttype #o endtype #i length 210 FMT(vdiph/0i_2) endphoneme phoneme e@ vwl starttype #e endtype #@ length 220 ipa e IF NOT nextPhW(r) THEN AppendPhoneme(r) ENDIF FMT(vdiph2/e@) endphoneme phoneme i@3 vwl starttype #i endtype #@ ipa ɪ length 240 IF NOT nextPhW(r) THEN AppendPhoneme(r) ENDIF FMT(vowelr/i_r) endphoneme phoneme U@ vwl starttype #u endtype #@ ipa ʉɹ IF nextPh(r-) THEN ipa ʉ ENDIF length 240 IfNextVowelAppend(r-) FMT(vdiph2/u#@) endphoneme phoneme aU@ vwl starttype #a endtype #@ length 270 IfNextVowelAppend(r-) FMT(vwl_en/aU@) endphoneme phoneme aI@ vwl starttype #a endtype #@ length 270 IfNextVowelAppend(r-) FMT(vwl_en/aI@_2) endphoneme phoneme aI3 vwl starttype #a endtype #@ length 280 ChangePhoneme(aI@) endphoneme phoneme @L vwl starttype #@ endtype l ipa əl unstressed length 160 CALL vowelstart_l FMT(vwl_en/@L_2) endphoneme //============== // Consonants //============== phoneme r/ // used for [r] when not preceding a vowel liquid lengthmod 2 // FMT(NULL) endphoneme phoneme r liquid rhotic trl lengthmod 7 IF nextPh(isNotVowel) THEN ChangePhoneme(r/) ENDIF CALL base1/r ipa r endphoneme