Browse Source

ar: use the ph_arabic file from https://github.com/linuxscout/espeak-ng

master
Reece H. Dunn 8 years ago
parent
commit
8e7343fdc3
5 changed files with 83 additions and 487 deletions
  1. 83
    487
      phsource/ph_arabic
  2. BIN
      phsource/vwl_ar/dhad.wav
  3. BIN
      phsource/vwl_ar/hah.wav
  4. BIN
      phsource/vwl_ar/shin.wav
  5. BIN
      phsource/vwl_ar/zah.wav

+ 83
- 487
phsource/ph_arabic View File

// 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)
phoneme #r virtual
// Used for "r" sounds
endphoneme 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)
phoneme H // arabic Hah
vls phr frc
ipa ħ
lengthmod 5
WAV(vwl_ar/hah)
endphoneme 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)
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 endphoneme







phoneme w
liquid
phoneme dH //arabic Dhad
alv vls stop
ipa dˤ
voicingswitch d[
lengthmod 7 lengthmod 7
FMT(w/w_)
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 endphoneme



phoneme j
liquid palatal
phoneme s[
vls dnt stop
voicingswitch s
length 160
lengthmod 7 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_)
WAV(vwl_ar/shin)
endphoneme 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
phoneme X
vls uvl frc
voicingswitch Q
lengthmod 7 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
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)


FMT(dzh/dzh) addWav(x/dzh)
endphoneme 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)
// vowels
phoneme a
vowel starttype #a endtype #a
IF nextPhW(isPause) THEN
length 80
ELSE
length 140
ENDIF 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
IF nextPhW(a) THEN
length 200
ENDIF ENDIF
FMT(voc/dh) addWav(vocw/dh)
FMT(vowel/a)
endphoneme 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
phoneme i
vowel starttype #i endtype #i
IF nextPhW(isPause) THEN
length 80
ELSE
length 140
ENDIF 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)
IF nextPhW(i) THEN
length 200
ENDIF 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)
FMT(vowel/i)
endphoneme 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
phoneme u
vowel starttype #u endtype #u
IF nextPhW(isPause) THEN
length 80
ELSE
length 140
ENDIF 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)
IF nextPhW(u) THEN
length 200
ENDIF ENDIF
FMT(r/r_)
FMT(vowel/u)
endphoneme 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

BIN
phsource/vwl_ar/dhad.wav View File


BIN
phsource/vwl_ar/hah.wav View File


BIN
phsource/vwl_ar/shin.wav View File


BIN
phsource/vwl_ar/zah.wav View File


Loading…
Cancel
Save