From 09824162de93262eba16b88cfa0b22f4ddeeb250 Mon Sep 17 00:00:00 2001 From: jonsd Date: Fri, 23 May 2014 12:46:15 +0000 Subject: [PATCH] [1.48.05] continued. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@377 d46cf337-b52f-0410-862d-fd96e6ae7743 --- espeak-data/voices/asia/gu | 3 + espeak-data/voices/asia/te | 5 + phsource/ph_arabic | 518 +++++++++++++++++++++++++++++++++++++ 3 files changed, 526 insertions(+) create mode 100755 espeak-data/voices/asia/gu create mode 100755 espeak-data/voices/asia/te create mode 100755 phsource/ph_arabic diff --git a/espeak-data/voices/asia/gu b/espeak-data/voices/asia/gu new file mode 100755 index 00000000..4d983c68 --- /dev/null +++ b/espeak-data/voices/asia/gu @@ -0,0 +1,3 @@ +name gujarati-test +language gu + diff --git a/espeak-data/voices/asia/te b/espeak-data/voices/asia/te new file mode 100755 index 00000000..c23078a8 --- /dev/null +++ b/espeak-data/voices/asia/te @@ -0,0 +1,5 @@ +name telugu-test +language te + +intonation 2 +//consonants 80 diff --git a/phsource/ph_arabic b/phsource/ph_arabic new file mode 100755 index 00000000..5510a042 --- /dev/null +++ b/phsource/ph_arabic @@ -0,0 +1,518 @@ +// 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 \ No newline at end of file