mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
Indicate language changes in IPA phoneme output. Phoneme definitions FMT(), second parameter is amplitude percentage. Phoneme definitions CALL(), If phoneme type is not defined, copy the static attributes from the called phoneme. Unpronouncable word check: stop when an apostrophe is reached. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@250 d46cf337-b52f-0410-862d-fd96e6ae7743
899 lines
15 KiB
Plaintext
899 lines
15 KiB
Plaintext
//====================================================
|
|
// French
|
|
//====================================================
|
|
// Updated 2010-07-16 Michel Such <michel.such@free.fr>
|
|
|
|
phoneme #l virtual
|
|
// Used for l and l/
|
|
endphoneme
|
|
|
|
phoneme #r virtual
|
|
// Used for "r" sounds
|
|
endphoneme
|
|
|
|
phoneme : // Lengthen previous vowel by "length"
|
|
virtual
|
|
length 40 // shorter than for fr-ca
|
|
endphoneme
|
|
|
|
phoneme #cFR virtual
|
|
// To identify "b k d f g p t v" when before "r"
|
|
endphoneme
|
|
|
|
|
|
procedure pre_r
|
|
IF prevPh(y) THEN
|
|
VowelEnding(vwl_fr/y2r)
|
|
ELIF prevPh(E) OR prevPh(E2) THEN
|
|
VowelEnding(vwl_fr/e_2r)
|
|
ELIF prevPh(A~) THEN
|
|
VowelEnding(vwl_fr/aa2r)
|
|
ELIF prevPh(E~) OR prevPh(W~) THEN
|
|
VowelEnding(vwl_fr/ee2r)
|
|
ELIF prevPh(O~) THEN
|
|
VowelEnding(vwl_fr/oo2r)
|
|
ELIF prevPh(isVowel) THEN
|
|
PrevVowelEndings
|
|
VowelEnding(vwl_fr/@2r)
|
|
VowelEnding(vwl_fr/a2r)
|
|
VowelEnding(vwl_fr/e2r)
|
|
VowelEnding(vwl_fr/i2r)
|
|
VowelEnding(vwl_fr/o2r)
|
|
VowelEnding(vwl_fr/u2r)
|
|
EndSwitch
|
|
ENDIF
|
|
endprocedure
|
|
|
|
|
|
procedure post_r
|
|
|
|
IF nextPh(E) OR nextPh(E2) THEN
|
|
VowelStart(vwl_fr/re2)
|
|
ELIF nextPh(W) THEN
|
|
VowelStart(vwl_fr/r@2)
|
|
ELIF nextPh(A~) THEN
|
|
VowelStart(vwl_fr/raa)
|
|
ELIF nextPh(E~) OR nextPh(W~) THEN
|
|
VowelStart(vwl_fr/ree)
|
|
ELIF nextPh(y) THEN
|
|
VowelStart(vwl_fr/ry)
|
|
ELIF nextPh(w) THEN
|
|
VowelStart(vwl_fr/rw)
|
|
ELIF nextPh(O~) THEN
|
|
VowelStart(vwl_fr/roo)
|
|
ELIF nextPh(j) OR nextPh(j/) THEN
|
|
VowelStart(vwl_fr/rj)
|
|
ELIF nextPh(isVowel) THEN
|
|
NextVowelStarts
|
|
VowelStart(vwl_fr/r@)
|
|
VowelStart(vwl_fr/ra)
|
|
VowelStart(vwl_fr/re)
|
|
VowelStart(vwl_fr/ri)
|
|
VowelStart(vwl_fr/ro)
|
|
VowelStart(vwl_fr/ru)
|
|
EndSwitch
|
|
ENDIF
|
|
endprocedure
|
|
|
|
|
|
phoneme r
|
|
vcd uvl frc nopause
|
|
rhotic
|
|
starttype #r endtype #r
|
|
Vowelin f1=0 f2=1500 -400 400 f3=-400 80
|
|
lengthmod 7
|
|
ipa U+0281
|
|
|
|
IF nextPh(isNotVowel) THEN
|
|
ChangePhoneme(r/)
|
|
ELIF prevPh(isNotVowel) OR prevPh(isPause) THEN
|
|
ChangePhoneme(r/2)
|
|
ENDIF
|
|
|
|
CALL pre_r
|
|
CALL post_r
|
|
|
|
FMT(vwl_fr/r)
|
|
endphoneme
|
|
|
|
|
|
phoneme r2 // silent unless followed by vowel
|
|
vcd uvl frc
|
|
rhotic
|
|
starttype #r endtype #r
|
|
ipa U+0281
|
|
|
|
IF nextPh(isNotVowel) THEN
|
|
ChangePhoneme(NULL)
|
|
ELSE
|
|
ChangePhoneme(r)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
phoneme r/ // variant of [r] when not preceding a vowel
|
|
vcd uvl frc
|
|
rhotic
|
|
starttype #r endtype #r
|
|
lengthmod 7
|
|
ipa U+0281
|
|
|
|
IF prevPhW(t) OR prevPhW(p) OR prevPhW(k) THEN
|
|
FMT(vwl_fr/trr) addWav(r3/rx, 15)
|
|
ELIF prevPh(isNotVowel) THEN
|
|
FMT(vwl_fr/rr) addWav(r3/rx, 15)
|
|
ENDIF
|
|
|
|
PrevVowelEndings
|
|
VowelEnding(vwl_fr/r_@)
|
|
VowelEnding(vwl_fr/r_a)
|
|
VowelEnding(vwl_fr/r_e)
|
|
VowelEnding(vwl_fr/r_i)
|
|
VowelEnding(vwl_fr/r_o)
|
|
VowelEnding(vwl_fr/r_u)
|
|
EndSwitch
|
|
IF prevPh(y) THEN
|
|
VowelEnding(vwl_fr/r_y)
|
|
ENDIF
|
|
|
|
IF nextPh(isNasal) THEN
|
|
FMT(vwl_fr/r_n) addWav(r3/rx, 20)
|
|
ELIF nextPh(#r) THEN
|
|
length 30
|
|
ENDIF
|
|
|
|
FMT(vwl_fr/r_) addWav(r3/rx, 20)
|
|
endphoneme
|
|
|
|
|
|
phoneme r/2
|
|
liquid rhotic uvl nopause
|
|
starttype #r endtype #r
|
|
Vowelin f1=0 f2=1500 -400 400 f3=-400 80
|
|
ipa U+0281
|
|
|
|
CALL post_r
|
|
IF prevPhW(f) OR prevPhW(k) OR prevPhW(p) OR prevPhW(s) OR prevPhW(t) OR prevPhW(S) THEN
|
|
FMT(vwl_fr/tr)
|
|
ELIF prevPhW(#cFR) THEN
|
|
FMT(vwl_fr/br)
|
|
ELSE
|
|
length 80
|
|
FMT(vwl_fr/r)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
phoneme l
|
|
liquid
|
|
starttype #l endtype #l
|
|
lengthmod 7
|
|
|
|
IF nextPh(isNotVowel) THEN
|
|
ChangePhoneme(l/)
|
|
ELIF prevPhW(#cFR) THEN
|
|
ChangePhoneme(l/2)
|
|
ENDIF
|
|
|
|
NextVowelStarts
|
|
VowelStart(l/l@)
|
|
VowelStart(l/la, -10)
|
|
VowelStart(l/le, -15)
|
|
VowelStart(l/li, -15)
|
|
VowelStart(l/lo, -10)
|
|
VowelStart(l/lu, -20)
|
|
EndSwitch
|
|
|
|
IF prevPh(#@) THEN
|
|
VowelEnding(l/xl, -50)
|
|
ELIF prevPh(isVowel) THEN
|
|
VowelEnding(l/xl, -40)
|
|
ENDIF
|
|
|
|
IF prevPh(isPause) OR thisPh(isWordStart) THEN
|
|
FMT(l/_l)
|
|
ENDIF
|
|
IF prevPh(isRhotic) 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 l/ // used for [l] when not before a vowel
|
|
liquid
|
|
starttype #l endtype #l
|
|
lengthmod 7
|
|
|
|
IF nextPh(isVowel) THEN
|
|
ChangePhoneme(l)
|
|
ENDIF
|
|
|
|
IF prevPhW(y) THEN
|
|
VowelEnding(l/l_y)
|
|
ELIF prevPhW(isVowel) THEN
|
|
PrevVowelEndings
|
|
VowelEnding(l/l_@)
|
|
VowelEnding(l/l_a)
|
|
VowelEnding(l/l_e)
|
|
VowelEnding(l/l_i)
|
|
VowelEnding(l/l_o)
|
|
VowelEnding(l/l_u)
|
|
EndSwitch
|
|
ENDIF
|
|
|
|
IF prevPh(#r) THEN
|
|
FMT(l/_l)
|
|
ENDIF
|
|
|
|
FMT(l/l_)
|
|
endphoneme
|
|
|
|
|
|
phoneme l/2
|
|
liquid
|
|
starttype #l endtype #l
|
|
|
|
IF nextPh(isNotVowel) THEN
|
|
ChangePhoneme(l/)
|
|
ENDIF
|
|
|
|
NextVowelStarts
|
|
VowelStart(l/l@)
|
|
VowelStart(l/la, -10)
|
|
VowelStart(l/le, -15)
|
|
VowelStart(l/li, -15)
|
|
VowelStart(l/lo, -10)
|
|
VowelStart(l/lu, -20)
|
|
EndSwitch
|
|
|
|
IF prevPh(t) THEN
|
|
FMT(l/tl)
|
|
ENDIF
|
|
|
|
FMT(l/l)
|
|
endphoneme
|
|
|
|
|
|
// Vowels
|
|
//=======
|
|
phoneme @
|
|
vowel starttype #@ endtype #@
|
|
length 170
|
|
FMT(vowel/@_hgh)
|
|
endphoneme
|
|
|
|
|
|
phoneme a
|
|
vowel starttype #a endtype #a
|
|
IF nextPh(isVowel) THEN
|
|
length 220
|
|
ELSE
|
|
length 170
|
|
ENDIF
|
|
|
|
FMT(vowel/a_7, 85)
|
|
endphoneme
|
|
|
|
|
|
phoneme e
|
|
vowel starttype #e endtype #e
|
|
|
|
IF nextPh(l/) THEN
|
|
VowelEnding(l/xl, -20)
|
|
ELIF nextPh(isVowel) THEN
|
|
length 200
|
|
ELSE
|
|
length 170
|
|
ENDIF
|
|
|
|
FMT(vowel/e_8)
|
|
endphoneme
|
|
|
|
|
|
phoneme E
|
|
vowel starttype #e endtype #e
|
|
|
|
IF nextPhW(j) THEN
|
|
length 190
|
|
ELSE
|
|
length 170
|
|
ENDIF
|
|
|
|
FMT(vowel/e_mid)
|
|
endphoneme
|
|
|
|
|
|
phoneme E2 // Between e and E
|
|
vowel starttype #e endtype #e
|
|
length 170
|
|
|
|
FMT(vowel/e_9)
|
|
endphoneme
|
|
|
|
|
|
phoneme i
|
|
vowel starttype #i endtype #i
|
|
palatal
|
|
|
|
IF prevPhW(r/2) OR prevPhW(l/2) THEN
|
|
IF nextPhW(isVowel) THEN
|
|
length 240
|
|
ENDIF
|
|
ELIF prevPhW(#r) AND nextPhW(isVowel) THEN
|
|
IF nextPhW(#i) THEN
|
|
length 220
|
|
IfNextVowelAppend(;)
|
|
ELSE
|
|
ChangePhoneme(j/)
|
|
ENDIF
|
|
ELIF nextPhW(isVowel) THEN
|
|
ChangePhoneme(j)
|
|
ELSE
|
|
length 160
|
|
IfNextVowelAppend(;)
|
|
ENDIF
|
|
|
|
FMT(vowel/i_8)
|
|
endphoneme
|
|
|
|
|
|
phoneme I // longer than i
|
|
vowel starttype #i endtype #i
|
|
palatal
|
|
length 240
|
|
ipa i
|
|
|
|
IfNextVowelAppend(;)
|
|
|
|
FMT(vowel/i_3)
|
|
endphoneme
|
|
|
|
|
|
phoneme j/ // Short "i" between "r" and a vowel
|
|
vowel starttype #i endtype #i
|
|
length 100
|
|
// unstressed
|
|
|
|
NextVowelStarts
|
|
VowelStart(j/j@)
|
|
VowelStart(j/ja)
|
|
VowelStart(j/je)
|
|
VowelStart(j/ji)
|
|
VowelStart(j/jo)
|
|
VowelStart(j/ju)
|
|
EndSwitch
|
|
FMT(vwl_fr/j)
|
|
endphoneme
|
|
|
|
|
|
phoneme o
|
|
vowel starttype #o endtype #o
|
|
IF nextPh(isVowel) THEN
|
|
length 220
|
|
ELSE
|
|
length 170
|
|
ENDIF
|
|
|
|
IF thisPh(isFinalVowel) THEN
|
|
FMT(vowel/o_8)
|
|
ELSE
|
|
FMT(vowel/o)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
phoneme O
|
|
vowel starttype #o endtype #o
|
|
length 170
|
|
|
|
IF nextPhW(z) OR nextPhW(z2) OR nextPhW(z3) THEN
|
|
ChangePhoneme(o)
|
|
ENDIF
|
|
|
|
FMT(vowel/o_mid2)
|
|
endphoneme
|
|
|
|
|
|
phoneme o3 // almost like english oU
|
|
vowel starttype #@ endtype #u
|
|
length 220
|
|
FMT(vdiph/@u_3)
|
|
endphoneme
|
|
|
|
|
|
phoneme u
|
|
vowel starttype #u endtype #u
|
|
IF nextPh(isVowel) OR nextPh(j) THEN
|
|
length 220
|
|
ELSE
|
|
length 180
|
|
ENDIF
|
|
|
|
FMT(vowel/u_bck2)
|
|
endphoneme
|
|
|
|
|
|
phoneme u: // slitely longer than u
|
|
vowel starttype #u endtype #u
|
|
length 240
|
|
FMT(vowel/u_bck2)
|
|
endphoneme
|
|
|
|
|
|
phoneme y
|
|
vowel starttype #u endtype #u
|
|
|
|
IF nextPhW(E~) OR nextPhW(#i) THEN
|
|
length 110
|
|
FMT(vowel/y)
|
|
ENDIF
|
|
|
|
length 180
|
|
FMT(vowel/y)
|
|
endphoneme
|
|
|
|
|
|
phoneme W
|
|
vowel starttype #@ endtype #@
|
|
length 180
|
|
|
|
FMT(vowel/@_6)
|
|
endphoneme
|
|
|
|
|
|
phoneme Y
|
|
vowel starttype #@ endtype #@
|
|
length 170
|
|
|
|
FMT(vowel/y#)
|
|
endphoneme
|
|
|
|
|
|
phoneme w
|
|
vowel starttype #u endtype #u
|
|
|
|
IF prevPh(#r) OR prevPhW(#l) THEN
|
|
NextVowelStarts
|
|
VowelStart(w/w@)
|
|
VowelStart(vwl_fr/wa)
|
|
VowelStart(w/we)
|
|
VowelStart(w/wi)
|
|
VowelStart(w/wo)
|
|
VowelStart(w/wu)
|
|
EndSwitch
|
|
ELSE
|
|
ChangePhoneme(w/)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
phoneme w/
|
|
liquid
|
|
lengthmod 7
|
|
|
|
IF nextPh(isVowel) THEN
|
|
NextVowelStarts
|
|
VowelStart(w/w@)
|
|
VowelStart(vwl_fr/wa)
|
|
VowelStart(w/we)
|
|
VowelStart(w/wi)
|
|
VowelStart(w/wo)
|
|
VowelStart(w/wu)
|
|
EndSwitch
|
|
|
|
VowelEnding(w/xw, -30)
|
|
|
|
IF prevPh(isPause) THEN
|
|
FMT(w/_w)
|
|
ELSE
|
|
FMT(w/_w)
|
|
ENDIF
|
|
ELSE
|
|
// no vowel follows
|
|
Vowelout len=50
|
|
IF prevPh(#i) THEN
|
|
FMT(w/iw_)
|
|
ENDIF
|
|
FMT(w/w_)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
phoneme A~
|
|
vowel starttype #a endtype #a
|
|
length 190
|
|
|
|
FMT(vnasal/aa_n4)
|
|
endphoneme
|
|
|
|
|
|
phoneme E~ // same as W~ for fr-fr
|
|
vowel starttype #e endtype #e
|
|
length 190
|
|
|
|
IF nextPh(n2) THEN
|
|
FMT(vowel/e_mid)
|
|
ENDIF
|
|
FMT(vnasal/W_n)
|
|
endphoneme
|
|
|
|
|
|
phoneme O~
|
|
vowel starttype #o endtype #o
|
|
length 190
|
|
FMT(vnasal/o_n2)
|
|
endphoneme
|
|
|
|
|
|
phoneme W~
|
|
vowel starttype #@ endtype #@
|
|
length 190
|
|
FMT(vnasal/W_n)
|
|
endphoneme
|
|
|
|
|
|
|
|
// These vowels map to others in fr-fr, but are distinct in fr-ca
|
|
|
|
phoneme U // same as [u]
|
|
import_phoneme fr/u
|
|
endphoneme
|
|
|
|
phoneme y" // same as [y]
|
|
import_phoneme fr/y
|
|
endphoneme
|
|
|
|
phoneme E: // slightly longer than [E]
|
|
import_phoneme E
|
|
endphoneme
|
|
|
|
phoneme A // same as [a]
|
|
import_phoneme a
|
|
endphoneme
|
|
|
|
|
|
|
|
|
|
// CONSONANTS
|
|
//===========
|
|
// uses the consonants in file "phonemes", unless overridden here
|
|
|
|
phoneme b
|
|
vcd blb stop
|
|
starttype #cFR endtype #cFR
|
|
voicingswitch p
|
|
lengthmod 6
|
|
Vowelin f1=2 f2=1000 -300 -200 f3=-100 100
|
|
Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk
|
|
|
|
IF KlattSynth THEN
|
|
Vowelin f1=1 f2=1000 -500 -300 f3=-300 80
|
|
IF nextPh(isPause2) THEN
|
|
FMT(klatt/b) addWav(x/b_)
|
|
ENDIF
|
|
FMT(klatt/b) addWav(x/b)
|
|
ENDIF
|
|
|
|
IF PreVoicing THEN
|
|
IF nextPhW(#r) THEN
|
|
FMT(b/xbr)
|
|
ELSE
|
|
FMT(b/xb)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF nextPh(isPause2) OR nextPh(l) THEN
|
|
FMT(b/b_) addWav(x/b_)
|
|
ELIF nextPh(l/) THEN
|
|
FMT(b/b)
|
|
ELIF nextPh(#r) THEN
|
|
FMT(b/br) addWav(x/b, 50)
|
|
ENDIF
|
|
|
|
FMT(b/b) addWav(x/b, 70)
|
|
endphoneme
|
|
|
|
|
|
phoneme d
|
|
vcd alv stop
|
|
starttype #cFR endtype #cFR
|
|
voicingswitch t
|
|
lengthmod 5
|
|
Vowelin f1=1 f2=1700 -300 300 f3=-100 80 amp=20
|
|
Vowelout f1=2 f2=1700 -300 300 f3=-100 80
|
|
|
|
IF PreVoicing THEN
|
|
IF nextPhW(#r) THEN
|
|
FMT(d/xdr)
|
|
ELSE
|
|
FMT(d/xd)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF nextPh(isPause2) THEN
|
|
FMT(d/d_) addWav(x/d_, 50)
|
|
ELIF nextPhW(#r) THEN
|
|
FMT(d/dr) addWav(x/d_, 50)
|
|
ENDIF
|
|
|
|
FMT(d/d) addWav(x/d, 40)
|
|
endphoneme
|
|
|
|
|
|
phoneme f
|
|
vls lbd frc
|
|
starttype #cFR endtype #cFR
|
|
voicingswitch v
|
|
lengthmod 3
|
|
Vowelout f1=0 f2=1000 -500 -350 f3=-200 100
|
|
|
|
IF nextPh(isPause) THEN
|
|
WAV(ufric/f_)
|
|
ENDIF
|
|
WAV(ufric/f, 80)
|
|
endphoneme
|
|
|
|
|
|
phoneme g
|
|
vcd vel stop
|
|
starttype #cFR endtype #cFR
|
|
voicingswitch k
|
|
lengthmod 5
|
|
Vowelin f1=2 f2=2300 200 300 f3=-300 80
|
|
Vowelout f1=1 f2=2300 250 300 f3=-300 80 brk
|
|
|
|
IF PreVoicing THEN
|
|
IF nextPhW(#r) THEN
|
|
FMT(g/xgr)
|
|
ELSE
|
|
FMT(g/xg)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF nextPh(isPause2) THEN
|
|
FMT(g/g_) addWav(x/g_)
|
|
ELIF nextPhW(#r) THEN
|
|
FMT(g/gr) addWav(x/g, 20)
|
|
ENDIF
|
|
|
|
FMT(g/g) addWav(x/g, 20)
|
|
endphoneme
|
|
|
|
|
|
phoneme k
|
|
vls vel stop
|
|
starttype #cFR endtype #cFR
|
|
voicingswitch g
|
|
length 50
|
|
lengthmod 2
|
|
Vowelin f1=0 f2=2300 200 400 f3=-100 80
|
|
Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
|
|
|
|
IF nextPh(isPause2) THEN
|
|
WAV(ustop/k_)
|
|
ELIF nextPh(#i) OR nextPh(;) THEN
|
|
WAV(ustop/ki, 45)
|
|
ELIF nextPh(#l) THEN
|
|
WAV(ustop/kl, 40)
|
|
ELIF nextPh(#r) THEN
|
|
length 45
|
|
WAV(ustop/k, 50)
|
|
ENDIF
|
|
|
|
WAV(ustop/k, 40)
|
|
endphoneme
|
|
|
|
|
|
|
|
phoneme n2
|
|
vcd alv nasal
|
|
IF nextPh(w) OR nextPh(isVowel) THEN
|
|
ChangePhoneme(n)
|
|
ELSE
|
|
ChangePhoneme(NULL)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
phoneme p
|
|
vls blb stop
|
|
starttype #cFR endtype #cFR
|
|
voicingswitch b
|
|
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
|
|
|
|
IF nextPh(isPause2) THEN
|
|
WAV(ustop/p_, 70)
|
|
ELIF nextPh(@-) THEN
|
|
WAV(ustop/p_unasp, 60)
|
|
ELIF nextPh(#l) THEN
|
|
WAV(ustop/pl, 30)
|
|
ELIF nextPh(#r) THEN
|
|
length 40
|
|
WAV(ustop/p_, 60)
|
|
ENDIF
|
|
WAV(ustop/p_unasp_, 90)
|
|
endphoneme
|
|
|
|
|
|
phoneme p2 // silent unless followed by vowel
|
|
vls blb stop
|
|
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
|
|
|
|
IF nextPh(isNotVowel) THEN
|
|
ChangePhoneme(NULL)
|
|
ENDIF
|
|
|
|
WAV(ustop/p, 45)
|
|
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
|
|
|
|
IF nextPh(isPause) THEN
|
|
WAV(ufric/s_, 45)
|
|
ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
|
|
WAV(ufric/s!, 45)
|
|
ENDIF
|
|
WAV(ufric/s, 45)
|
|
endphoneme
|
|
|
|
|
|
phoneme S
|
|
vls pla frc sibilant
|
|
starttype #cFR endtype #cFR
|
|
voicingswitch Z
|
|
lengthmod 3
|
|
Vowelin f1=0 f2=1900 100 300 f3=-100 80
|
|
Vowelout f1=0 f2=1900 100 300 f3=-100 80
|
|
|
|
IF prevPhW(t) THEN
|
|
length 60
|
|
ENDIF
|
|
|
|
IF nextPh(isPause) THEN
|
|
WAV(ufric/sh_, 45)
|
|
ENDIF
|
|
WAV(ufric/sh, 45)
|
|
endphoneme
|
|
|
|
|
|
|
|
phoneme t
|
|
vls alv stop
|
|
starttype #cFR endtype #cFR
|
|
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
|
|
|
|
IF nextPh(isPause2) THEN
|
|
WAV(ustop/t_, 40)
|
|
ELIF nextPh(#r) THEN
|
|
length 40
|
|
WAV(ustop/t_short_, 40)
|
|
ENDIF
|
|
|
|
WAV(ustop/t_short, 40)
|
|
endphoneme
|
|
|
|
|
|
phoneme t2 // silent unless followed by vowel
|
|
vls alv stop
|
|
Vowelin f1=0 f2=1600 -300 300 f3=-100 80
|
|
Vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20
|
|
lengthmod 2
|
|
|
|
IF nextPh(isVowel) OR nextPh(w) OR nextPh(j) THEN
|
|
WAV(ustop/t_short, 30)
|
|
ELSE
|
|
ChangePhoneme(NULL)
|
|
ENDIF
|
|
|
|
endphoneme
|
|
|
|
|
|
phoneme t3 // silent unless followed by vowel or pause
|
|
vls alv stop
|
|
lengthmod 2
|
|
IF nextPh(isPause) THEN
|
|
ChangePhoneme(t)
|
|
ELIF nextPh(isNotVowel) THEN
|
|
ChangePhoneme(NULL)
|
|
ELSE
|
|
ChangePhoneme(t2)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
phoneme v
|
|
vcd lbd frc
|
|
starttype #cFR endtype #cFR
|
|
voicingswitch f
|
|
lengthmod 6
|
|
length 90
|
|
Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
|
|
Vowelout f1=0 f2=1000 -500 -300 f3=-300 100
|
|
|
|
IF KlattSynth THEN
|
|
CALL base/v
|
|
RETURN
|
|
ENDIF
|
|
|
|
IF nextPh(isPause2) THEN
|
|
FMT(voc/v_) addWav(vocw/v)
|
|
ENDIF
|
|
IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN
|
|
Length 70
|
|
ELIF nextPhW(w/) OR nextPhW(#r) THEN
|
|
Length 60
|
|
ENDIF
|
|
FMT(voc/v) addWav(vocw/v, 60)
|
|
endphoneme
|
|
|
|
|
|
phoneme z
|
|
vcd alv frc sibilant
|
|
voicingswitch s
|
|
lengthmod 6
|
|
Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50
|
|
|
|
IF nextPhW(z) THEN
|
|
FMT(d/xd)
|
|
ENDIF
|
|
|
|
IF nextPh(isPause2) OR nextPh(isPause) THEN
|
|
FMT(voc/z_) addWav(ufric/s_, 45)
|
|
ENDIF
|
|
|
|
IF prevPhW(t) THEN
|
|
length 60
|
|
ENDIF
|
|
|
|
FMT(voc/z) addWav(ufric/s_, 45)
|
|
endphoneme
|
|
|
|
|
|
phoneme z2 // silent unless followed by vowel
|
|
vcd alv frc sibilant
|
|
IF nextPh(isVowel) OR nextPh(w/) OR nextPh(j) THEN
|
|
Length 70
|
|
FMT(voc/z) addWav(ufric/s, 40)
|
|
ELSE
|
|
ChangePhoneme(NULL)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
phoneme z3 // "six" and "dix". [s] before pause, [z] before vowel, else []
|
|
vcd alv frc sibilant
|
|
IF nextPh(isPause) THEN
|
|
ChangePhoneme(s)
|
|
ELIF nextPh(isVowel) OR nextPh(w/) THEN
|
|
ChangePhoneme(z)
|
|
ELSE
|
|
ChangePhoneme(NULL)
|
|
ENDIF
|
|
endphoneme
|
|
|
|
|
|
|