// short vowels phoneme a vowel starttype #a endtype #a unstressed length 180 CALL ShortVowelLength IF prevPh(s[) OR prevPh(d[) OR prevPh(t[) OR prevPh(Z) THEN FMT(vowel/0_3) ELSE FMT(vowel/a#) ENDIF endphoneme phoneme i vowel starttype #i endtype #i length 140 unstressed CALL ShortVowelLength FMT(vowel/i) endphoneme phoneme u vowel starttype #u endtype #u unstressed length 140 CALL ShortVowelLength FMT(vowel/u) endphoneme phoneme : // lengthen previous vowel by "length" virtual length 200 endphoneme // long vowels phoneme a: vowel starttype #a endtype #a length 300 //CALL LongVowelLength IF prevPh(s[) OR prevPh(d[) OR prevPh(t[) OR prevPh(Z) THEN FMT(vowel/0_3) ELSE FMT(vowel/a#) ENDIF endphoneme phoneme i: vowel starttype #i endtype #i length 300 //CALL LongVowelLength FMT(vowel/i) endphoneme phoneme u: vowel starttype #u endtype #u length 300 //CALL LongVowelLength FMT(vowel/u) endphoneme // Redifine consnant for arabic phoneme l liquid lengthmod 7 IF nextPh(isNotVowel) THEN ChangePhoneme(l/) ENDIF IF nextPh(isNotVowel) THEN // in case the next phoneme is no longer a vowel, in pass=2 PrevVowelEndings VowelEnding(l/L1_@L, -60) VowelEnding(l/L1_aL, -40) VowelEnding(l/L1_eL, -30) VowelEnding(l/L1_iL, -30) VowelEnding(l/L1_oL, -40) VowelEnding(l/L1_uL, -40) EndSwitch FMT(l/l_) RETURN ENDIF CALL vowelstart_l IF prevPh(#@) THEN VowelEnding(l/xl, -50) ELIF prevPh(isVowel) THEN VowelEnding(l/xl, -40) ENDIF IF prevPh(isPause) THEN FMT(l/_l) ENDIF IF prevPh(t) THEN FMT(l/tl) ENDIF IF prevPh(l/) THEN FMT(l/l_long) // double l, make it longer ENDIF FMT(l/l) endphoneme phoneme w liquid lengthmod 7 FMT(w/w_) endphoneme phoneme j liquid palatal lengthmod 7 FMT(j/j_) endphoneme //******************************************************************* // NASAL CONSONANTS //******************************************************************* phoneme m vcd blb nasal Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk lengthmod 4 FMT(m/m_) endphoneme phoneme n vcd alv nasal Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk lengthmod 4 FMT(n/n_) endphoneme //******************************************************************* // VOICED STOPS //******************************************************************* phoneme b vcd blb stop voicingswitch p Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk lengthmod 7 FMT(b/b) addWav(x/b) endphoneme phoneme d vcd alv stop voicingswitch t lengthmod 5 Vowelin f1=1 f2=1700 -300 300 f3=-100 80 Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk FMT(d/d) addWav(x/d) endphoneme phoneme d[ vcd dnt stop voicingswitch t[ lengthmod 5 Vowelin f1=2 f2=1500 -300 300 f3=-150 80 Vowelout f1=2 f2=1500 -300 300 f3=-150 80 FMT(d/d) addWav(x/d_dnt, 100) endphoneme phoneme dZ vcd pla afr sibilant voicingswitch tS //lengthmod 8 Vowelin f1=2 f2=2300 200 400 f3=100 80 Vowelout f1=2 f2=2300 250 300 f3=100 80 brk FMT(dzh/dzh) addWav(x/dzh) endphoneme phoneme J vcd pal afr sibilant palatal voicingswitch c lengthmod 5 Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 Vowelout f1=2 f2=2700 400 600 f3=300 80 colr=1 IF KlattSynth THEN IF nextPh(isPause2) THEN FMT(klatt/dz_pzd_) addWav(x/dzh, 35) ENDIF FMT(klatt/dz_pzd) addWav(x/dzh, 45) ENDIF FMT(dzh/dz_pzd) addWav(x/dzh, 45) endphoneme phoneme g vcd vel stop voicingswitch k lengthmod 5 Vowelin f1=2 f2=2300 200 300 f3=-300 80 Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk FMT(g/g) addWav(x/g2, 150) endphoneme //******************************************************************* // VOICED fricatives //******************************************************************* phoneme D vcd dnt frc voicingswitch T lengthmod 6 Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 IF KlattSynth THEN Vowelin f1=0 f2=1290 -300 300 f3=0 0 ENDIF FMT(voc/dh) addWav(vocw/dh) endphoneme phoneme z vcd alv frc sibilant //voicingswitch s lengthmod 1 Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 IF KlattSynth THEN Vowelin f1=0 f2=1390 -300 300 f3=0 0 Vowelout f1=1 f2=1390 -300 300 f3=-100 60 len=50 brk ENDIF FMT(voc/z) addWav(ufric/s_, 85) endphoneme phoneme Z vcd pla frc sibilant voicingswitch S lengthmod 6 Vowelin f1=0 f2=2000 0 300 f3=-200 80 Vowelout f1=2 f2=2000 0 300 f3=-200 80 brk IF KlattSynth THEN IF nextPh(isPause2) THEN FMT(klatt/zh_) addWav(vocw/zh) ENDIF FMT(klatt/zh) addWav(vocw/zh, 130) ENDIF FMT(voc/zh) addWav(vocw/zh, 130) endphoneme //******************************************************************* // UNVOICED STOPS //******************************************************************* 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 WAV(ustop/t, 90) endphoneme phoneme t[ // dental variant of /t/ vls dnt stop voicingswitch d[ lengthmod 2 Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16 Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20 WAV(ustop/t_dnt, 35) endphoneme phoneme k vls vel stop voicingswitch g lengthmod 2 Vowelin f1=0 f2=2300 200 300 f3=-200 80 Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20 IF KlattSynth THEN Vowelout f1=0 f2=2300 200 300 f3=-200 80 rms=20 ENDIF WAV(ustop/k) endphoneme phoneme q vls uvl stop lengthmod 2 Vowelin f1=1 f2=1700 0 200 f3=-300 80 gpaus f4 rms=30 Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35 WAV(ustop/q, 48) endphoneme //******************************************************************* // UNVOICED fricatives //******************************************************************* phoneme f vls lbd frc voicingswitch v lengthmod 3 Vowelout f1=0 f2=1000 -500 -350 f3=-200 80 WAV(ufric/f) endphoneme phoneme T vls dnt frc voicingswitch D lengthmod 3 Vowelin f1=0 f2=1700 -300 300 f3=-100 80 Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 WAV(ufric/th) endphoneme phoneme s vls alv frc sibilant voicingswitch z lengthmod 3 Vowelin f1=0 f2=1700 -300 300 f3=-100 80 Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 WAV(ufric/s) endphoneme phoneme S vls pla frc sibilant voicingswitch Z lengthmod 3 Vowelin f1=0 f2=2100 100 300 f3=-100 80 Vowelout f1=0 f2=2100 100 300 f3=-100 80 WAV(ufric/sh) endphoneme phoneme x vls vel frc voicingswitch Q lengthmod 3 Vowelin f1=0 f2=2300 200 400 f3=-100 80 Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 //WAV(ufric/x) WAV(vwl_ar/kha) endphoneme phoneme h vls glt apr lengthmod 3 ipa h WAV(h/h_, 70) // no vowel following endphoneme // Added specific consnant to arabic phoneme H // arabic Hah vls phr frc ipa U+0127 lengthmod 5 WAV(vwl_ar/H2) endphoneme phoneme Z // arabic ZAH .Todo vls phr frc lengthmod 5 voicingswitch z WAV(vwl_ar/ZH4) endphoneme phoneme E // arabic Ain vls phr frc //ipa U+0127 //voicingswitch a lengthmod 5 //WAV(vwl_ar/AN2,50) WAV(vwl_ar/ain2) endphoneme phoneme G //arabic Ghain //vcd uvl frc vls uvl frc lengthmod 3 Vowelin f1=0 f2=2300 200 400 f3=-100 80 Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 voicingswitch R //lengthmod 5 //ipa U+0280 WAV(vwl_ar/ghain6) //FMT(voc/Q_ulv) addWav(vwl_ar/gh, 100) //FMT(voc/Q_ulv) addWav(vwl_ar/ghain3, 100) endphoneme phoneme d[ //arabic Dhad vls dnt stop voicingswitch d length 120 WAV(vwl_ar/da7) endphoneme phoneme s[ vls dnt stop //voicingswitch s lengthmod 7 WAV(vwl_ar/SA1) endphoneme phoneme r liquid rhotic ipa ? lengthmod 7 IF nextPh(a) OR nextPh(a:) THEN FMT(r/ra) ENDIF FMT(r/r_) endphoneme procedure ShortVowelLength //IF prevPhW(isVoiced) AND nextPhW(isVoiced) THEN // voiced IF prevPhW(isNotVowel) AND nextPhW(isNotVowel) THEN // consonants length 140 RETURN //ENDIF ELSE IF prevPh(isStressed) THEN length 160 ELSE length 175 ENDIF ENDIF endprocedure procedure LongVowelLength //IF prevPhW(isVoiced) AND nextPhW(isVoiced) THEN // voiced IF nextPhW(:) THEN length 300 RETURN //ENDIF ELIF prevPhW(isNotVowel) AND nextPhW(isNotVowel) THEN // consonants length 340 RETURN //ENDIF ELSE IF prevPh(isStressed) THEN length 360 ELSE length 375 ENDIF ENDIF endprocedure