//==================================================== // kankani //==================================================== phoneme :0 virtual length 25 endphoneme phoneme :1 virtual length 50 endphoneme phoneme : // Lengthen the previous vowel by "length" virtual length 100 endphoneme phoneme @ vwl flag1 starttype #@ endtype #@ length 130 ChangeIfDiminished(@-) IF nextPh(H) OR prevPh(H) THEN FMT(vowel/@_low) ENDIF IF nextPh(j) THEN FMT(vowel/V_3) ENDIF FMT(vowel/@_bck) endphoneme phoneme V vwl flag1 starttype #@ endtype #@ length 140 IF thisPh(isWordStart) THEN FMT(vowel/V_3) RETURN ENDIF IF thisPh(isNotStressed) THEN length 130 IF thisPh(isWordEnd) AND NOT thisPh(isFirstVowel) THEN ChangePhoneme(NULL) ENDIF IF prevPh(H) THEN ChangePhoneme(@) ENDIF IF prev2PhW(isVowel) AND NOT nextVowel(isFlag1) THEN IF thisPh(isFinalVowel) AND nextPhW(isNotVowel) THEN // don't delete schwa before a word-final consonant ELSE ChangePhoneme(NULL) ENDIF ENDIF IF prevPh(isPalatal) AND NOT nextPh(H) THEN ChangePhoneme(@3) ELSEIF prevPh(r) THEN ChangePhoneme(@2) ELSE ChangePhoneme(@) ENDIF ENDIF IF nextPh(H) OR prevPh(H) THEN FMT(vowel/@_low) ENDIF IF prevPh(w) THEN FMT(vowel/V_4) ENDIF FMT(vowel/V_3) endphoneme phoneme @2 vwl flag1 starttype #@ endtype #@ length 130 FMT(vowel/@_low) endphoneme phoneme @3 vwl flag1 starttype #@ endtype #@ length 130 ChangeIfDiminished(@-) FMT(vowel/@_3) endphoneme phoneme i: vwl lng starttype #i endtype #i length 250 IF thisPh(isUnstressed) THEN ChangePhoneme(i) ENDIF IfNextVowelAppend(;) FMT(vowel/i_fnt) endphoneme phoneme i // as [i:] but not marked as 'long' vwl starttype #i endtype #i length 230 IfNextVowelAppend(;) FMT(vowel/ii_6) endphoneme phoneme I vwl starttype #i endtype #i length 150 IfNextVowelAppend(;) FMT(vowel/ii_3) endphoneme phoneme e: vwl lng starttype #e endtype #e length 240 FMT(vowel/e_2) endphoneme phoneme e vwl starttype #e endtype #e length 165 FMT(vowel/e_2) endphoneme phoneme E: vwl lng starttype #e endtype #e length 230 FMT(vdiph/ee-e) endphoneme phoneme E vwl starttype #e endtype #e length 175 FMT(vowel/e_mid) endphoneme phoneme &: vwl lng starttype #a endtype #a length 230 FMT(vowel/&) endphoneme phoneme a: vwl lng starttype #a endtype #a length 220 IF nextPhW(j) THEN FMT(vowel/a_5) ENDIF FMT(vowel/aa_9) endphoneme phoneme a vwl lng starttype #a endtype #a length 165 FMT(vowel/a#_3) endphoneme phoneme o: vwl lng starttype #o endtype #o length 240 FMT(vowel/o_2) endphoneme phoneme o vwl starttype #o endtype #o length 165 FMT(vowel/o) endphoneme phoneme O: vwl lng starttype #o endtype #o length 225 FMT(vowel/oo_4) endphoneme phoneme O vwl starttype #o endtype #o length 165 FMT(vowel/0) endphoneme phoneme U vwl starttype #u endtype #u length 165 FMT(vowel/uu_bck) endphoneme phoneme u: vwl lng starttype #u endtype #u length 250 FMT(vowel/u_bck) endphoneme // Nasal vowels //============= phoneme i~ vwl lng starttype #i endtype #i length 220 FMT(vnasal/i_n2) endphoneme phoneme I~ vwl lng starttype #i endtype #i length 170 FMT(vnasal/ii_n) endphoneme phoneme e~ vwl lng starttype #e endtype #e length 220 FMT(vnasal/e_n) endphoneme phoneme E~ vwl lng starttype #e endtype #e length 220 FMT(vnasal/ee_n2) endphoneme phoneme a~ vwl lng starttype #a endtype #a length 240 FMT(vnasal/a_n) endphoneme phoneme V~ vwl lng starttype #@ endtype #@ length 220 FMT(vnasal/V_n) endphoneme phoneme O~ vwl lng starttype #o endtype #o length 220 FMT(vnasal/oo_n2) endphoneme phoneme o~ vwl lng starttype #o endtype #o length 220 FMT(vnasal/o_n) endphoneme phoneme U~ vwl starttype #u endtype #u length 170 FMT(vnasal/u_n) endphoneme phoneme u~ vwl lng starttype #u endtype #u length 220 FMT(vnasal/u_n) endphoneme // Diphthongs //=========== phoneme aI vwl lng starttype #@ endtype #i length 240 lng FMT(vdiph/&i) endphoneme phoneme aU vwl lng starttype #a endtype #u length 240 lng FMT(vdiph/aau_3) endphoneme // CONSONANTS //=========== phoneme v // approximant, not fricative import_phoneme base1/v# voicingswitch f endphoneme phoneme w# liquid lengthmod 7 FMT(w/w2) endphoneme phoneme H // use for full "h" import_phoneme base1/h endphoneme // bilabial plosives //================== phoneme p import_phoneme consonants/p- endphoneme phoneme p# import_phoneme consonants/ph endphoneme phoneme b // this is [b] import_phoneme base1/b endphoneme phoneme b# vcd blb stp lengthmod 5 voicingswitch p# Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30 IF PreVoicing THEN FMT(b/xb) ENDIF FMT( b/b@2) addWav(ustop/p_asp, 70) endphoneme // dental plosives //================== phoneme t // dental variant of /t/ import_phoneme base1/t[ voicingswitch d endphoneme phoneme t# // dental variant of /t/ vls dnt stp lengthmod 2 voicingswitch d Vowelin f1=0 f2=1500 -300 300 f3=-100 80 amp=16 Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 IF nextPh(isPause2) THEN WAV(ustop/t_dnt, 35) ENDIF WAV(ustop/t_dnt, 50) endphoneme phoneme d // dental variant of /d/ import_phoneme base1/d[ voicingswitch t endphoneme phoneme d# vcd dnt stp lengthmod 5 voicingswitch t# Vowelin f1=0 f2=1500 -300 300 f3=-100 80 Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 IF PreVoicing THEN FMT(d/xd) ENDIF FMT(d/xd3) addWav(ustop/t_dnt, 40) endphoneme // retroflex plosives //=================== phoneme t. vls rfx stp lengthmod 2 ipa ʈ voicingswitch d. Vowelin f1=0 f2=1800 -300 300 f3=-400 80 Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2 WAV(ustop/t_short) endphoneme phoneme t.# vls rfx stp lengthmod 2 ipa ʈU+02B0 voicingswitch d.# Vowelin f1=0 f2=1800 -300 300 f3=-200 80 Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2 IF nextPhW(t.#) THEN ChangePhoneme(t.) ENDIF WAV(ustop/th_rfx2, 80) endphoneme phoneme d. vcd rfx stp lengthmod 5 voicingswitch t. ipa ɖ Vowelin f1=1 f2=1800 -300 300 f3=-400 80 Vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2 IF PreVoicing THEN FMT(d/xdr) ENDIF IF nextPh(isPause2) THEN FMT(d/d_) addWav(x/d_) ENDIF FMT(d/dr) addWav(x/d) endphoneme phoneme d.# vcd rfx stp lengthmod 5 ipa ɖU+02B0 voicingswitch t.# Vowelin f1=1 f2=1800 -300 300 f3=-400 80 Vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2 IF PreVoicing THEN FMT(d/xdr) ENDIF FMT(d/dr) addWav(ustop/t) // FMT(d/dr) addWav(ustop/th_rfx) endphoneme // palatal plosives //================= // also try [tS] and [dZ] phoneme c vls pla afr sib voicingswitch dZ lengthmod 2 Vowelin f1=0 f2=2300 200 400 f3=-100 80 IF nextPh(isPause2) THEN WAV(ustop/tsh_) ENDIF WAV(ustop/tsh_unasp) endphoneme phoneme c# CALL base1/tS; ipa cU+02B0 endphoneme phoneme J import_phoneme base1/J endphoneme phoneme J# vcd pal afr sib lengthmod 5 voicingswitch c# Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 Vowelout f1=0 f2=2700 400 600 f3=300 80 colr=1 IF PreVoicing THEN FMT(dzh/xdz_pzd) ENDIF FMT(dzh/xdz_pzd) addWav(ustop/ts_pzd) endphoneme // velar plosives //================== phoneme k import_phoneme consonants/k- voicingswitch g endphoneme phoneme k# import_phoneme consonants/k# voicingswitch g# endphoneme phoneme g import_phoneme base1/g voicingswitch k endphoneme phoneme g# vcd dnt stp lengthmod 5 voicingswitch k# Vowelin f1=1 f2=2300 200 300 f3=-150 80 rms=20 Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20 IF PreVoicing THEN FMT(g2/xg) ENDIF IF nextPh(isPause2) THEN FMT(g2/xg) addWav(ustop/k_asp, 35) ENDIF FMT(g2/xg) addWav(ustop/k_asp, 50) endphoneme //================ phoneme #X2 // click, use for indicating combining long vowels vls alv frc sib lengthmod 3 WAV(ustop/percus02, 60) endphoneme phoneme r liquid rhotic lengthmod 3 IF thisPh(isWordEnd) THEN CALL base1/r/ ELSE IF prevPhW(isVowel) THEN IF nextPhW(isNotVowel) THEN IF nextPhW(v) THEN ChangePhoneme(**) // test for lang=ta ENDIF IF nextPhW(isUStop) OR nextPhW(isVStop) THEN ChangePhoneme(*) ENDIF ENDIF IF nextPhW(V) THEN // [V] may be removed by ChangePhoneme(NULL) IF next2PhW(isUStop) OR next2PhW(isVStop) THEN ChangePhoneme(*) ENDIF ELSE IF nextPhW(isVowel) THEN ChangePhoneme(*) ENDIF ENDIF ENDIF CALL base1/r ENDIF ipa ɾ endphoneme