//==================================================== // Vietnamese Phonemes //==================================================== phoneme 1 // ngang tone: level stress Tone(30, 28, envelope/p_level, NULL) // 28 29 endphoneme phoneme 2 // huyền tone: low falling stress Tone(20, 8, envelope/p_fall, NULL) //20 8 endphoneme phoneme 3 // sắc Tone(rising stress Tone(20, 50, envelope/p_rise, NULL) // 30 60 endphoneme phoneme 4 // hỏi Tone(curve (dipping rising) stress Tone(10, 31, envelope/p_fallrise, NULL) //33 31 endphoneme phoneme 5 // ngã tone: broken (creaking rising) stress Tone(34, 60,envelope/p_214, envelope/vi_5amp) // 28,58 20 80 endphoneme phoneme 6 // nặng Tone(drop (constricted) stress //length 150 // ignore because it make too short sound 75 // reduce the length of the vowel Tone(34, 10, envelope/p_512, envelope/vi_6amp) //40 20 endphoneme phoneme 7 // Tone(1 (ngang) at end of clause stress Tone(30, 28, envelope/p_fall, NULL) //40 20 endphoneme // Vowels //======= phoneme a vwl starttype #@ endtype #@ IF nextPhW(p) THEN length 142 ELIF nextPhW(t[) THEN length 126 ELIF nextPhW(c) THEN length 136 ELIF nextPhW(m) THEN length 155 ELIF nextPhW(n) THEN length 185 ELIF nextPhW(N) THEN length 173 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN length 240 ELSE length 180 ENDIF FMT(vietnam/a_2) //a_4) endphoneme phoneme a: vwl starttype #a endtype #a IF nextPhW(p) THEN length 142 ELIF nextPhW(t[) THEN length 126 ELIF nextPhW(c) THEN length 136 ELIF nextPhW(m) THEN length 155 ELIF nextPhW(n) THEN length 185 ELIF nextPhW(N) THEN length 173 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 300 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN length 240 ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN length 333 ELSE length 180 ENDIF //FMT(vowel/a_8) FMT(vietnam/aa) endphoneme phoneme E vwl starttype #e endtype #e IF nextPhW(p) THEN length 143 ELIF nextPhW(t[) THEN length 107 ELIF nextPhW(c) THEN length 141 ELIF nextPhW(m) THEN length 128 ELIF nextPhW(n) THEN length 160 ELIF nextPhW(N) THEN length 187 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 300 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN length 240 ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN length 352 ELSE length 180 ENDIF //FMT(vowel/e_e) //ee_3) FMT(vietnam/e_e_2) endphoneme phoneme e vwl starttype #e endtype #e IF nextPhW(p) THEN length 114 ELIF nextPhW(t[) THEN length 126 ELIF nextPhW(c) THEN length 140 ELIF nextPhW(n^) THEN length 120 ELIF nextPhW(m) THEN length 148 ELIF nextPhW(n) THEN length 163 ELIF nextPhW(N) THEN length 115 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 300 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN length 240 ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN length 324 ELSE length 180 ENDIF IF nextPh(n^) THEN FMT(vowel/e) ELSE FMT(vietnam/e, 150) ENDIF endphoneme phoneme e- vwl starttype #e endtype #a length 140 FMT(vietnam/e_short_1) //FMT(vdiph/aai_3) endphoneme phoneme i vwl starttype #i endtype #i IfNextVowelAppend(;) IF prevPhW(w) THEN VowelStart(w/wi) ENDIF IF nextPhW(p) THEN length 131 ELIF nextPhW(t[) THEN length 113 ELIF nextPhW(c) OR nextPhW(n^) THEN length 72 ELIF nextPhW(m) THEN length 120 ELIF nextPhW(n) THEN length 128 ELIF nextPhW(N) THEN length 97 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 310 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN length 240 ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN length 363 ELSE length 180 ENDIF IF nextPh(n^) OR nextPh(c) THEN //FMT(vnasal/ii_n) FMT(vietnam/i) ELSE //FMT(vowel/i_4) FMT(vietnam/i_2) ENDIF endphoneme phoneme O vwl starttype #o endtype #o IF nextPhW(p) THEN length 129 ELIF nextPhW(t[) THEN length 125 ELIF nextPhW(c) THEN length 80 ELIF nextPhW(m) THEN length 133 ELIF nextPhW(n) THEN length 158 ELIF nextPhW(N) THEN length 102 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 300 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN length 240 ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN length 331 ELSE length 180 ENDIF //FMT(vdiph2/o_oo) //vowel/oo) FMT(vietnam/oo) endphoneme phoneme O+ vwl starttype #o endtype #o IF nextPh(kh) OR nextPh(N) THEN length 80 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 180 ENDIF FMT(vowel/o) //vowel/oo) endphoneme phoneme o vwl starttype #o endtype #o IF nextPhW(p) THEN length 140 ELIF nextPhW(t[) THEN length 113 ELIF nextPhW(c) THEN length 88 ELIF nextPhW(m) THEN length 134 ELIF nextPhW(n) THEN length 168 ELIF nextPhW(N) THEN length 99 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 310 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN length 240 ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN length 363 ELSE length 180 ENDIF //FMT(vowel/o) // o_2) FMT(vietnam/o) endphoneme phoneme u vwl starttype #u endtype #u IF nextPhW(p) THEN length 110 ELIF nextPhW(t[) THEN length 94 ELIF nextPhW(c) THEN length 83 ELIF nextPhW(m) THEN length 141 ELIF nextPhW(n) THEN length 177 ELIF nextPhW(N) THEN length 80 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 300 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN length 240 ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN length 333 ELSE length 180 ENDIF //FMT(vnasal/u_n) //vowel/u_5) FMT(vietnam/u) endphoneme phoneme y vwl starttype #u endtype #u IF nextPhW(p) THEN length 102 ELIF nextPhW(t[) THEN length 76 ELIF nextPhW(c) THEN length 70 ELIF nextPhW(m) THEN length 143 ELIF nextPhW(n) THEN length 136 ELIF nextPhW(N) THEN length 101 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 300 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN length 240 ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN length 328 ELSE length 180 ENDIF //FMT(vowel/u#_5) FMT(vietnam/y_2, 60) endphoneme phoneme @ vwl starttype #@ endtype #a IF nextPhW(p) THEN length 123 ELIF nextPhW(t[) THEN length 123 ELIF nextPhW(c) THEN length 139 ELIF nextPhW(m) THEN length 127 ELIF nextPhW(n) THEN length 160 ELIF nextPhW(N) THEN length 156 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN length 240 ELSE length 180 ENDIF // FMT(vowel/V) //vowel/@_2) FMT(vietnam/V_2) endphoneme phoneme @: vwl starttype #@ endtype #@ IF nextPhW(p) THEN length 123 ELIF nextPhW(t[) THEN length 123 ELIF nextPhW(c) THEN length 139 ELIF nextPhW(m) THEN length 127 ELIF nextPhW(n) THEN length 160 ELIF nextPhW(N) THEN length 156 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 300 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordStart) THEN length 240 ELIF thisPh(isWordStart) AND thisPh(isWordEnd) THEN length 333 ELSE length 180 ENDIF //FMT(vowel/@_2) FMT(vietnam/@_2) endphoneme // Diphthongs //=========== phoneme aI vwl starttype #a endtype #i IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph/&i_2) endphoneme phoneme a:I vwl starttype #a endtype #i length 240 //250 FMT(vdiph/ai) endphoneme phoneme @I vwl starttype #@ endtype #i length 240 //250 FMT(vdiph/@i) endphoneme phoneme @:I vwl starttype #@ endtype #i length 240 //250 FMT(vdiph/y#i) endphoneme phoneme eI vwl starttype #e endtype #i IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph/ei) endphoneme phoneme EI vwl starttype #e endtype #i IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph/eei) endphoneme phoneme OI vwl starttype #o endtype #i length 240 FMT(vdiph/ooi_4) endphoneme phoneme oI vwl starttype #o endtype #i length 240 FMT(vdiph/oi) endphoneme phoneme uI vwl starttype #u endtype #i length 240 FMT(vdiph/ui) endphoneme phoneme yI vwl starttype #u endtype #i length 240 FMT(vdiph/u-i) endphoneme phoneme aU vwl starttype #a endtype #u IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph/aau_4) endphoneme phoneme a:U vwl starttype #a endtype #u IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph/au) endphoneme phoneme eU vwl starttype #e endtype #u IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph/eu) endphoneme phoneme EU vwl starttype #e endtype #u IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph/eeu) endphoneme phoneme iU vwl starttype #i endtype #u IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph2/iu) endphoneme phoneme @U vwl starttype #@ endtype #u IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph/@u_3) endphoneme phoneme @:U vwl starttype #@ endtype #u IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph/@u) endphoneme phoneme i@ vwl starttype #i endtype #@ IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph2/ii@_3) endphoneme phoneme y@ vwl starttype #i endtype #@ IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF //FMT(vdiph2/y-y#) FMT(vietnam/y@) endphoneme phoneme u@ vwl starttype #u endtype #@ IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 140 ENDIF //FMT(vdiph2/uu@)- FMT(vietnam/u@) endphoneme // Addition Dipthongs phoneme o# // ông vwl starttype #o endtype #o IF nextPhW(k) THEN length 120 ELIF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 360 ELIF nextPhW(N) THEN length 99 ELIF nextPhW(k) THEN length 88 ELSE length 200 ENDIF //FMT(vnasal/a#u_n) FMT(vietnam/o#) endphoneme phoneme O# // ong vwl starttype #o endtype #o IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELIF nextPh(k) THEN length 140 ELIF nextPh(N) THEN length 102 ELSE length 200 ENDIF //FMT(vnasal/&u_n) FMT(vietnam/O_short_2) endphoneme phoneme o@ vwl starttype #o endtype #a IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph2/oa) endphoneme phoneme o& vwl starttype #o endtype #o IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vietnam/oe) endphoneme phoneme iE // iê : viết, giệc vwl starttype #i endtype #e IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vietnam/ie) endphoneme phoneme Oi // oai sound vwl starttype #o endtype #i IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 200 ENDIF FMT(vdiph/ooi_3) endphoneme // Vowel and Dipthong for south dialect phoneme O- // ôi southern sound vwl starttype #o endtype #i IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 180 ENDIF FMT(vnasal/oi_n) endphoneme phoneme @- // ơi southern sound vwl starttype #o endtype #i IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 180 ENDIF FMT(vdiph/@i_3) endphoneme phoneme u- // u southern sound vwl starttype #u endtype #u IF thisPh(isFirstVowel) AND thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 240 ELSE length 180 ENDIF FMT(vowel/u_3,70) endphoneme phoneme kh vls vel frc lengthmod 3 Vowelin f1=0 f2=2300 200 400 f3=200 80 len=30 Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20 WAV(ustop/k_unasp) //ufric/x, 50) endphoneme phoneme k vls vel frc lengthmod 3 Vowelin f1=0 f2=2300 200 400 f3=200 80 len=30 Vowelout f1=0 f2=2300 300 400 f3=200 80 rms=20 WAV(ustop/c) endphoneme phoneme N // si**ng** vcd lbv nas Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk lengthmod 12 // longer than 'n' IF thisPh(isWordEnd) THEN length 163 ENDIF FMT(n/nm) endphoneme phoneme l liquid Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=15 //lengthmod 7 //IF nextPh(isNotVowel) THEN // ChangePhoneme(l/2) //ENDIF //CALL vowelstart_l FMT(l/l_vi) endphoneme phoneme t vls alv stp //voicingswitch d lengthmod 2 Vowelin f1=0 f2=1700 -300 300 f3=-100 80 len=15 Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 WAV(vietnam/th, 50) endphoneme phoneme cr vls pla afr sib //voicingswitch dZ lengthmod 2 Vowelin f1=0 f2=2300 200 400 f3=-100 80 len=15 WAV(vietnam/tr,10) endphoneme phoneme d_ vcd alv stp // lengthmod 5 ipa ɗ length 50 Vowelin f1=1 f2=1700 -300 300 f3=-100 80 len=15 Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk len=30 WAV(vietnam/dd) endphoneme phoneme c vls pal stp pzd //voicingswitch J lengthmod 2 length 50 Vowelin f1=0 f2=2700 400 600 f3=300 80 len=15 brk Vowelout f1=1 f2=2700 400 600 f3=200 70 len=15 colr=1 WAV(vietnam/ch,5) endphoneme phoneme p vls blb stp lengthmod 2 length 15 Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 WAV(ustop/p_unasp_,10) endphoneme phoneme t[ // dental variant of /t/ IF thisPh(isWordEnd) THEN vls alv stp voicingswitch d lengthmod 2 length 15 Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 len=15 Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 len=15 WAV(ustop/t, 50) ELSE vls dnt stp voicingswitch d[ lengthmod 2 length 15 Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 len=15 Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 len=15 IF nextPh(isPause2) THEN WAV(ustop/t_unasp2, 5) ENDIF WAV(ustop/t_hi, 70) ENDIF endphoneme phoneme w liquid starttype #u IF nextPh(isVowel) THEN length 20 NextVowelStarts VowelStart(w/w@) VowelStart(w/wa) VowelStart(w/we) VowelStart(w/wi) VowelStart(w/wo) VowelStart(w/wu) EndSwitch VowelEnding(w/xw, -30) IF nextPh(isVowel) AND prevPhW(t[) THEN FMT(vnasal/u_n, 60) addWav(vietnam/w) ELIF prevPhW(isNasal) THEN FMT(w/w) ELSEIF prevPhW(h) THEN // none, [hw] ELSE //FMT(w/_w) addWav(vietnam/w) FMT(vietnam/_w) ENDIF ELSE // no vowel follows length 80 Vowelout len=50 //FMT(w/w_) FMT(vietnam/w_) ENDIF endphoneme