mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 13:38:47 +00:00
520 lines
8.6 KiB
Plaintext
520 lines
8.6 KiB
Plaintext
|
|
//====================================================
|
|
// Tone Numbers
|
|
//====================================================
|
|
|
|
|
|
phoneme 1 // tone: yinping
|
|
ipa ˨˦
|
|
stress
|
|
Tone(40, 80, envelope/p_rise, NULL)
|
|
endphoneme
|
|
|
|
|
|
phoneme 2 // tone: yangping
|
|
ipa ˩˩
|
|
stress
|
|
Tone(20, 20, envelope/p_level, NULL)
|
|
endphoneme
|
|
|
|
|
|
phoneme 3 // tone: shang
|
|
ipa ˧˩
|
|
stress
|
|
Tone(60, 20, envelope/p_fall, NULL)
|
|
endphoneme
|
|
|
|
|
|
phoneme 4 // tone: qu
|
|
ipa ˥˥
|
|
stress
|
|
Tone(100, 100, envelope/p_level, NULL)
|
|
endphoneme
|
|
|
|
|
|
phoneme 5 // tone: yinru
|
|
stress
|
|
ipa ˨
|
|
Tone(40, 40, envelope/p_level, NULL)
|
|
endphoneme
|
|
|
|
|
|
phoneme 6 // tone: yangru
|
|
stress
|
|
ipa ˥
|
|
Tone(100, 100, envelope/p_level, NULL)
|
|
endphoneme
|
|
|
|
//====================================================
|
|
// Consonant
|
|
//====================================================
|
|
|
|
phoneme p
|
|
vls blb stp
|
|
lengthmod 2
|
|
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 rms=30
|
|
Vowelout f1=1 f2=1000 -500 -350 f3=-300 80 rms=22
|
|
IF nextPh(isPause2) THEN
|
|
WAV(NULL)
|
|
ENDIF
|
|
WAV(ustop/p)
|
|
endphoneme
|
|
|
|
phoneme t
|
|
vls alv stp
|
|
lengthmod 2
|
|
Vowelin f1=0 f2=1700 -300 300 f3=100 80
|
|
Vowelout f1=1 f2=1700 -300 250 f3=-100 80 rms=20
|
|
IF nextPh(isPause2) THEN
|
|
WAV(NULL)
|
|
ENDIF
|
|
WAV(ustop/t)
|
|
endphoneme
|
|
|
|
phoneme N
|
|
vcd vel nas
|
|
Vowelout f1=2 f2=1900 0 300 f3=400 80 len=50 rms=15 brk
|
|
lengthmod 7
|
|
|
|
NextVowelStarts
|
|
VowelStart(nn/nn@)
|
|
VowelStart(nn/nna)
|
|
VowelStart(nn/nne)
|
|
VowelStart(nn/nni)
|
|
VowelStart(nn/nno)
|
|
VowelStart(nn/nnu)
|
|
EndSwitch
|
|
|
|
IF prevPh(isPause) THEN
|
|
FMT(nn/_nn)
|
|
ELIF nextPh(isNotVowel) THEN
|
|
length 190
|
|
FMT(nn/nn2_)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
phoneme n^ // ng(i)-
|
|
vcd pal nas
|
|
Vowelout f1=2 f2=1900 0 300 f3=400 80 len=50 rms=15 brk
|
|
lengthmod 7
|
|
|
|
NextVowelStarts
|
|
VowelStart(n^/n^@)
|
|
VowelStart(n^/n^a)
|
|
VowelStart(n^/n^e)
|
|
VowelStart(n^/n^i)
|
|
VowelStart(n^/n^o)
|
|
VowelStart(n^/n^u)
|
|
EndSwitch
|
|
|
|
IF prevPh(isPause) THEN
|
|
FMT(n^/_n^)
|
|
ELIF nextPh(isNotVowel) THEN
|
|
length 190
|
|
FMT(n^/n^_)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
phoneme n
|
|
vcd alv nas
|
|
Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk
|
|
lengthmod 2
|
|
|
|
NextVowelStarts
|
|
VowelStart(n/n@)
|
|
VowelStart(n/na)
|
|
VowelStart(n/ne)
|
|
VowelStart(n/ni)
|
|
VowelStart(n/no)
|
|
VowelStart(n/nu)
|
|
EndSwitch
|
|
|
|
IF nextPh(isNotVowel) THEN
|
|
length 190
|
|
FMT(n/n_long_)
|
|
ENDIF
|
|
FMT(n/_n)
|
|
endphoneme
|
|
|
|
phoneme m
|
|
vcd blb nas
|
|
Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk
|
|
lengthmod 4
|
|
|
|
NextVowelStarts
|
|
VowelStart(m/m@)
|
|
VowelStart(m/ma)
|
|
VowelStart(m/me)
|
|
VowelStart(m/mi)
|
|
VowelStart(m/mo)
|
|
VowelStart(m/mu)
|
|
EndSwitch
|
|
|
|
IF nextPh(isNotVowel) THEN
|
|
length 190
|
|
FMT(m/m_)
|
|
ENDIF
|
|
FMT(m/_m)
|
|
endphoneme
|
|
|
|
phoneme p
|
|
vls blb stp
|
|
lengthmod 2
|
|
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
|
|
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
|
|
WAV(ustop/p_unasp)
|
|
endphoneme
|
|
|
|
phoneme ph
|
|
vls blb stp
|
|
lengthmod 2
|
|
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
|
|
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
|
|
WAV(ustop/p_asp)
|
|
endphoneme
|
|
|
|
|
|
phoneme f
|
|
vls lbd frc
|
|
lengthmod 2
|
|
Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
|
|
WAV(ufric/f)
|
|
endphoneme
|
|
|
|
|
|
phoneme v
|
|
vcd lbd frc
|
|
voicingswitch f
|
|
lengthmod 6
|
|
Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
|
|
Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
|
|
|
|
IF KlattSynth THEN
|
|
Vowelout f1=1 f2=1000 -500 -300 f3=-300 60 len=50 brk
|
|
IF nextPh(isPause2) THEN
|
|
FMT(klatt/v_) addWav(vocw/v)
|
|
ENDIF
|
|
FMT(klatt/v) addWav(vocw/v, 150)
|
|
ENDIF
|
|
|
|
IF nextPh(isPause2) THEN
|
|
FMT(voc/v_) addWav(vocw/v)
|
|
ENDIF
|
|
IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN
|
|
length 70
|
|
ENDIF
|
|
FMT(voc/v) addWav(vocw/v)
|
|
endphoneme
|
|
|
|
phoneme t
|
|
vls alv stp
|
|
lengthmod 2
|
|
Vowelin f1=0 f2=1700 -300 300 f3=-100 80 rms=40
|
|
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
|
|
WAV(ustop/t_unasp2, 40)
|
|
endphoneme
|
|
|
|
|
|
phoneme th
|
|
vls alv stp
|
|
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_)
|
|
endphoneme
|
|
|
|
phoneme l
|
|
liquid
|
|
lengthmod 7
|
|
|
|
IF prevPh(isPause) THEN
|
|
FMT(l/_l)
|
|
ENDIF
|
|
|
|
FMT(l/l)
|
|
endphoneme
|
|
|
|
phoneme k
|
|
vls uvl stp
|
|
lengthmod 2
|
|
Vowelin f1=1 f2=1700 0 200 f3=-300 80 f4
|
|
Vowelout f1=1 f2=1700 0 200 f3=-300 80 f4 rms=30
|
|
WAV(ustop/k_unasp_, 75)
|
|
endphoneme
|
|
|
|
phoneme kh
|
|
vls uvl stp
|
|
lengthmod 2
|
|
Vowelin f1=1 f2=1700 0 200 f3=-300 80 f4
|
|
Vowelout f1=1 f2=1700 0 200 f3=-300 80 f4 rms=30
|
|
WAV(ustop/k_asp, 80)
|
|
endphoneme
|
|
|
|
phoneme h
|
|
vls glt apr
|
|
lengthmod 3
|
|
ipa h
|
|
|
|
IF nextPh(#@) THEN
|
|
WAV(h/h@)
|
|
ELIF nextPh(#a) THEN
|
|
WAV(h/ha)
|
|
ELIF nextPh(#e) THEN
|
|
WAV(h/he)
|
|
ELIF nextPh(#i) THEN
|
|
WAV(h/hi)
|
|
ELIF nextPh(#o) THEN
|
|
WAV(h/ho)
|
|
ELIF nextPh(#u) THEN
|
|
WAV(h/hu)
|
|
ENDIF
|
|
WAV(h/h_, 70) // no vowel following
|
|
endphoneme
|
|
|
|
phoneme tS;
|
|
vls alp sib afr
|
|
ipa tɕ
|
|
lengthmod 2
|
|
Vowelin f1=0 f2=2700 400 600 f3=300 80
|
|
WAV(ustop/tsh_pzd_unasp)
|
|
endphoneme
|
|
|
|
phoneme tS;h
|
|
vls alp sib afr
|
|
ipa tɕh
|
|
lengthmod 2
|
|
Vowelin f1=0 f2=2700 400 600 f3=300 80
|
|
WAV(ustop/tsh_pzd, 80)
|
|
endphoneme
|
|
|
|
phoneme S;
|
|
vls pla frc sib
|
|
lengthmod 2
|
|
ipa ɕ
|
|
Vowelin f1=0 f2=2700 400 600 f3=300 80
|
|
WAV(ufric/sh_pzd2, 20)
|
|
endphoneme
|
|
|
|
phoneme ts
|
|
vls alv afr sib
|
|
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/ts_unasp, 70)
|
|
endphoneme
|
|
|
|
phoneme tsh
|
|
vls alv afr sib
|
|
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/ts, 60)
|
|
endphoneme
|
|
|
|
phoneme s
|
|
vls alv frc sib
|
|
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
|
|
|
|
IF nextPh(isPause) THEN
|
|
WAV(ufric/s_)
|
|
ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
|
|
WAV(ufric/s!)
|
|
ENDIF
|
|
WAV(ufric/s)
|
|
endphoneme
|
|
|
|
phoneme j
|
|
liquid pal
|
|
lengthmod 1
|
|
|
|
IF nextPh(isVowel) THEN
|
|
NextVowelStarts
|
|
VowelStart(j/j@)
|
|
VowelStart(j/ja)
|
|
VowelStart(j/je)
|
|
VowelStart(j/ji)
|
|
VowelStart(j/jo)
|
|
VowelStart(j/ju)
|
|
EndSwitch
|
|
|
|
VowelEnding(j/xj, -30)
|
|
|
|
FMT(j/_j)
|
|
ELSE
|
|
// no vowel follows
|
|
Vowelout len=70
|
|
FMT(j/j_)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
|
|
//Syllablic consonants
|
|
//=====================
|
|
|
|
phoneme m-
|
|
vwl starttype #@ endtype #@
|
|
ipa mU+0329
|
|
lengthmod 4
|
|
length 240
|
|
|
|
IF thisPh(isWordStart) THEN
|
|
length 240
|
|
ENDIF
|
|
IF KlattSynth THEN
|
|
FMT(klatt/m-syl)
|
|
ENDIF
|
|
FMT(m/m-syl)
|
|
endphoneme
|
|
|
|
phoneme n-
|
|
vwl starttype #@ endtype #@
|
|
ipa nU+0329
|
|
lengthmod 4
|
|
length 240
|
|
|
|
IF thisPh(isWordStart) THEN
|
|
length 240
|
|
ENDIF
|
|
IF KlattSynth THEN
|
|
FMT(klatt/n-syl)
|
|
ENDIF
|
|
FMT(n/n-syl)
|
|
endphoneme
|
|
|
|
phoneme N-
|
|
vwl starttype #e endtype #e
|
|
ipa ŋU+0329
|
|
lengthmod 4
|
|
length 240
|
|
FMT(nn/nn-syl)
|
|
endphoneme
|
|
|
|
|
|
//====================================================
|
|
// Vowels and Diphtnongs
|
|
//====================================================
|
|
|
|
|
|
phoneme i
|
|
vwl starttype #i endtype #i
|
|
length 250
|
|
FMT(vowel/i)
|
|
endphoneme
|
|
|
|
phoneme i.
|
|
vwl starttype #i endtype #i
|
|
length 250
|
|
FMT(vowel/i#_6)
|
|
endphoneme
|
|
|
|
phoneme a
|
|
vwl starttype #a endtype #a
|
|
length 250
|
|
FMT(vowel/a)
|
|
endphoneme
|
|
|
|
phoneme e
|
|
vwl starttype #e endtype #e
|
|
length 250
|
|
FMT(vowel/e)
|
|
endphoneme
|
|
|
|
phoneme o
|
|
vwl starttype #o endtype #o
|
|
length 250
|
|
FMT(vowel/oo)
|
|
endphoneme
|
|
|
|
phoneme u //try more before N
|
|
vwl starttype #u endtype #u
|
|
length 250
|
|
FMT(vowel/u)
|
|
endphoneme
|
|
|
|
phoneme ai
|
|
vwl starttype #a endtype #i
|
|
length 250
|
|
FMT(vdiph/ai_6)
|
|
endphoneme
|
|
|
|
phoneme au
|
|
vwl starttype #a endtype #u
|
|
length 250
|
|
FMT(vdiph/au)
|
|
endphoneme
|
|
|
|
phoneme eu
|
|
vwl starttype #e endtype #u
|
|
length 250
|
|
FMT(vdiph/eu)
|
|
endphoneme
|
|
|
|
phoneme ia
|
|
vwl starttype #i endtype #a
|
|
length 250
|
|
FMT(vwl_zh/iaa)
|
|
endphoneme
|
|
|
|
phoneme iau
|
|
vwl starttype #i endtype #u
|
|
length 250
|
|
FMT(vwl_zh/iaau)
|
|
endphoneme
|
|
|
|
phoneme ie
|
|
vwl starttype #i endtype #e
|
|
length 250
|
|
FMT(vwl_zh/ie)
|
|
endphoneme
|
|
|
|
phoneme io
|
|
vwl starttype #i endtype #o
|
|
length 250
|
|
FMT(vdiph2/iioo)
|
|
endphoneme
|
|
|
|
phoneme iu
|
|
vwl starttype #i endtype #u
|
|
length 250
|
|
FMT(vdiph2/iu)
|
|
endphoneme
|
|
|
|
phoneme oi
|
|
vwl starttype #o endtype #i
|
|
length 250
|
|
FMT(vdiph/ooi)
|
|
endphoneme
|
|
|
|
phoneme ua
|
|
vwl starttype #u endtype #a
|
|
length 250
|
|
FMT(vwl_zh/uaa)
|
|
endphoneme
|
|
|
|
phoneme uai
|
|
vwl starttype #u endtype #i
|
|
length 250
|
|
FMT(vwl_zh/uai)
|
|
endphoneme
|
|
|
|
phoneme ue
|
|
vwl starttype #u endtype #e
|
|
length 250
|
|
FMT(vwl_zh/uei)
|
|
endphoneme
|
|
|
|
phoneme ui
|
|
vwl starttype #u endtype #i
|
|
length 250
|
|
FMT(vdiph/ui)
|
|
endphoneme
|
|
|
|
phoneme o- // er
|
|
vwl starttype #o endtype #o
|
|
length 180
|
|
FMT(vowel/o-)
|
|
endphoneme |