mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 13:38:47 +00:00
518 lines
8.6 KiB
Plaintext
518 lines
8.6 KiB
Plaintext
// 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 |