diff --git a/phsource/ph_arabic b/phsource/ph_arabic index 5510a042..cd3d25c3 100644 --- a/phsource/ph_arabic +++ b/phsource/ph_arabic @@ -1,518 +1,114 @@ -// short vowels +phoneme #r virtual +// Used for "r" sounds +endphoneme + + +phoneme H // arabic Hah + vls phr frc + ipa ħ + lengthmod 5 + WAV(vwl_ar/hah) +endphoneme + +phoneme Z // arabic ZAH .Todo + vls phr frc + ipa ðˤ + lengthmod 5 + voicingswitch z + Vowelin f1=1 f2=2700 400 600 f3=200 70 rate len=70 + Vowelout f1=1 f2=2700 400 600 f3=200 70 rate + WAV(vwl_ar/zah) +endphoneme + +//phoneme A // arabic Ain +// vls phr frc +// ipa ʕ +// voicingswitch a +// length 160 +// Vowelin f1=2 f2=2300 -400 500 f3=300 80 +// Vowelout f1=2 f2=2300 -300 450 f3=-100 10 +// WAV(vwl_ar/ain) +//endphoneme + +phoneme gH // arabic ghain, +// the phoneme is derived from Q + vcd vel frc + voicingswitch R2 + ipa ɣ + lengthmod 6 + Vowelin f1=2 f2=2300 200 400 f3=-100 80 + Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk + FMT(voc/Q) //addWav(vocw/Q) +endphoneme + + +phoneme dH //arabic Dhad + alv vls stop + ipa dˤ + voicingswitch d[ + lengthmod 7 + Vowelin f1=2 f2=1500 -300 300 f3=-150 80 + Vowelout f1=2 f2=1500 -300 300 f3=-150 80 + WAV(vwl_ar/dhad) +//FMT(vwl_ar/d_dnt) +endphoneme + +phoneme s[ + vls dnt stop + voicingswitch s + length 160 + lengthmod 7 + WAV(vwl_ar/shin) +endphoneme + +phoneme X + vls uvl frc + voicingswitch Q + lengthmod 7 + Vowelin f1=0 f2=2300 200 400 f3=-100 80 + Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 + WAV(ufric/xx, 70) + +endphoneme + +// 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#) + IF nextPhW(isPause) THEN + length 80 + ELSE + length 140 ENDIF - + IF nextPhW(a) THEN + length 200 + ENDIF + FMT(vowel/a) endphoneme phoneme i vowel starttype #i endtype #i - length 140 - unstressed - CALL ShortVowelLength + IF nextPhW(isPause) THEN + length 80 + ELSE + length 140 + ENDIF + IF nextPhW(i) THEN + length 200 + ENDIF 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 + IF nextPhW(isPause) THEN + length 80 + ELSE + length 140 + ENDIF + IF nextPhW(u) THEN 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 \ No newline at end of file diff --git a/phsource/vwl_ar/dhad.wav b/phsource/vwl_ar/dhad.wav new file mode 100644 index 00000000..02bf529d Binary files /dev/null and b/phsource/vwl_ar/dhad.wav differ diff --git a/phsource/vwl_ar/hah.wav b/phsource/vwl_ar/hah.wav new file mode 100644 index 00000000..24263223 Binary files /dev/null and b/phsource/vwl_ar/hah.wav differ diff --git a/phsource/vwl_ar/shin.wav b/phsource/vwl_ar/shin.wav new file mode 100644 index 00000000..e996ccb0 Binary files /dev/null and b/phsource/vwl_ar/shin.wav differ diff --git a/phsource/vwl_ar/zah.wav b/phsource/vwl_ar/zah.wav new file mode 100644 index 00000000..ef9d809c Binary files /dev/null and b/phsource/vwl_ar/zah.wav differ