mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 21:39:47 +00:00
For ⟨ae⟩, we used to use the Latin [[aI]] phoneme, which sounds like /ae/. Call that phoneme [[aE]] for us and introduce a separate [[aI]] one, which sounds more like /ai/ (since Sindarin has both, and they’re supposed to sound different, though Appendix E of The Lord of the Rings notes that there is nothing closely corresponding to ⟨ae⟩ in English and that it may be pronounced like ⟨ai⟩). Furthermore, for ⟨oe⟩, just remove the TODO – the Latin phoneme is called [[OI]] but sounds more like /oe/ than /oi/, so it’s actually just fine for our purposes. Finally, the ⟨ui⟩ diphthong is copied from Finnish, just like in Quenya.
2052 lines
35 KiB
Plaintext
2052 lines
35 KiB
Plaintext
// This is the master phoneme file.
|
||
|
||
//*******************************************************************
|
||
// Stress Phonemes
|
||
//*******************************************************************
|
||
|
||
phoneme % // Unstressed
|
||
stress
|
||
stress_type 1
|
||
endphoneme
|
||
|
||
phoneme %% // Diminished stress
|
||
stress
|
||
stress_type 0
|
||
endphoneme
|
||
|
||
phoneme \, // [,] Secondary stress
|
||
stress
|
||
stress_type 2
|
||
endphoneme
|
||
|
||
phoneme \,\, // [,,] Secondary stress
|
||
stress
|
||
stress_type 3
|
||
endphoneme
|
||
|
||
phoneme ' // Primary stress
|
||
stress
|
||
stress_type 4
|
||
endphoneme
|
||
|
||
phoneme '' // Primary stress (priority)
|
||
stress
|
||
stress_type 5
|
||
endphoneme
|
||
|
||
phoneme '! // Primary stress (emphasized)
|
||
stress
|
||
stress_type 6
|
||
endphoneme
|
||
|
||
phoneme = // Place stress on previous vowel
|
||
stress
|
||
stress_type 2
|
||
endphoneme
|
||
|
||
phonemetable base1 base
|
||
|
||
// The base phoneme table contains the utility phonemes, the consonants,
|
||
// and a schwa. The vowels are defined in the language specific phoneme
|
||
// tables, which can also redefine consonants if they wish.
|
||
|
||
|
||
//*******************************************************************
|
||
// UTILITY PHONEMES
|
||
//*******************************************************************
|
||
|
||
phoneme || // End Word
|
||
pause
|
||
lengthmod 9 // no effect
|
||
endphoneme
|
||
|
||
phoneme _ // Short pause
|
||
pause
|
||
starttype _ endtype _
|
||
lengthmod 1
|
||
length 25
|
||
endphoneme
|
||
|
||
phoneme _! // Short pause, don't replace by linking
|
||
pause
|
||
starttype _ endtype _
|
||
lengthmod 1
|
||
nolink
|
||
length 35
|
||
endphoneme
|
||
|
||
phoneme _| // Very short pause
|
||
pause
|
||
starttype _ endtype _
|
||
lengthmod 5
|
||
length 1
|
||
endphoneme
|
||
|
||
phoneme _: // Standard pause
|
||
pause
|
||
starttype _ endtype _
|
||
lengthmod 1
|
||
length 75
|
||
endphoneme
|
||
|
||
phoneme _:: // Long pause
|
||
pause
|
||
starttype _ endtype _
|
||
lengthmod 1
|
||
length 150
|
||
endphoneme
|
||
|
||
phoneme _;_ // clause pause
|
||
pause
|
||
starttype _ endtype _
|
||
lengthmod 1
|
||
length 200
|
||
endphoneme
|
||
|
||
phoneme _^_ // Change dictionary (followed by language-code in ascii
|
||
pause
|
||
starttype _ endtype _
|
||
lengthmod 1
|
||
length 10
|
||
endphoneme
|
||
|
||
phoneme _X1 // a language specific action
|
||
pause
|
||
starttype _ endtype _
|
||
lengthmod 1
|
||
length 10
|
||
endphoneme
|
||
|
||
phoneme ? // glottal stp
|
||
vls glt stp
|
||
lengthmod 3 // ??
|
||
nolink
|
||
Vowelin glstop
|
||
Vowelout glstop
|
||
WAV(ustop/null)
|
||
endphoneme
|
||
|
||
|
||
phoneme : // lengthen previous vowel by "length"
|
||
virtual
|
||
length 70
|
||
endphoneme
|
||
|
||
phoneme - // Indicates the previous phoneme is a syllabic consonant
|
||
virtual
|
||
endphoneme
|
||
|
||
|
||
// Some default vowel definitions
|
||
|
||
phoneme @ // Schwa, e.g. alph**a**
|
||
vwl starttype #@ endtype #@
|
||
unstressed
|
||
length 140
|
||
FMT(vowel/@)
|
||
endphoneme
|
||
|
||
|
||
phoneme @- // very short schwa
|
||
vwl starttype #@ endtype #@
|
||
unstressed nsy
|
||
|
||
ipa ə
|
||
IF nextPhW(*) OR nextPhW(r) THEN
|
||
ipa NULL // @-* is used to make 'r'
|
||
ENDIF
|
||
length 50
|
||
FMT(vowel/@-)
|
||
endphoneme
|
||
|
||
|
||
phoneme a // tr**a**p
|
||
vwl starttype #a endtype #a
|
||
length 180
|
||
FMT(vowel/a)
|
||
endphoneme
|
||
|
||
|
||
phoneme e // German **eh**, French **é**
|
||
vwl starttype #e endtype #e
|
||
length 170
|
||
FMT(vowel/e)
|
||
endphoneme
|
||
|
||
|
||
phoneme i
|
||
vwl starttype #i endtype #i
|
||
length 170
|
||
IfNextVowelAppend(;)
|
||
FMT(vowel/i)
|
||
endphoneme
|
||
|
||
|
||
phoneme o // German **oo**, French **o**
|
||
vwl starttype #o endtype #o
|
||
length 170
|
||
FMT(vowel/oo)
|
||
endphoneme
|
||
|
||
|
||
phoneme u
|
||
vwl starttype #u endtype #u
|
||
length 170
|
||
FMT(vowel/u)
|
||
endphoneme
|
||
|
||
|
||
// Syllablic consonants
|
||
//=====================
|
||
|
||
phoneme m-
|
||
vwl starttype #@ endtype #@
|
||
ipa mU+0329
|
||
lengthmod 4
|
||
length 170
|
||
|
||
IF thisPh(isWordStart) THEN
|
||
length 190
|
||
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 170
|
||
|
||
IF thisPh(isWordStart) THEN
|
||
length 190
|
||
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 190
|
||
FMT(nn/nn-syl)
|
||
endphoneme
|
||
|
||
|
||
//*******************************************************************
|
||
// Other sounds
|
||
//*******************************************************************
|
||
|
||
phoneme #X1 // click, use for indicating capital letters
|
||
vls alv frc sib
|
||
lengthmod 3
|
||
WAV(ustop/percus10, 60)
|
||
endphoneme
|
||
|
||
|
||
//*******************************************************************
|
||
// VIRTUAL - referred to in vowels' vwl starttype and endtype
|
||
// These each apply to a class of vowels
|
||
//*******************************************************************
|
||
|
||
phoneme #@ virtual
|
||
endphoneme
|
||
|
||
phoneme #a virtual
|
||
endphoneme
|
||
|
||
phoneme #e virtual
|
||
endphoneme
|
||
|
||
phoneme #i virtual
|
||
endphoneme
|
||
|
||
phoneme #o virtual
|
||
endphoneme
|
||
|
||
phoneme #u virtual
|
||
endphoneme
|
||
|
||
|
||
//*******************************************************************
|
||
// SONORANTS
|
||
//*******************************************************************
|
||
|
||
|
||
phoneme r- // syllabic r
|
||
vwl starttype #@ endtype #@
|
||
ipa rU+0329
|
||
unstressed
|
||
length 220
|
||
FMT(vowelr/r-voc)
|
||
endphoneme
|
||
|
||
phoneme l- // syllabic l
|
||
vwl starttype #@ endtype #@
|
||
ipa lU+0329
|
||
unstressed
|
||
length 200
|
||
FMT(vwl_hi/l-voc)
|
||
endphoneme
|
||
|
||
|
||
phoneme r // **r**ed (Omitted if not immediately followed by a vowel)
|
||
liquid rhotic
|
||
ipa ɹ
|
||
lengthmod 7
|
||
|
||
IF nextPh(isNotVowel) THEN
|
||
ChangePhoneme(r/)
|
||
ENDIF
|
||
|
||
NextVowelStarts
|
||
VowelStart(r/r@, -15)
|
||
VowelStart(r/ra, -15)
|
||
VowelStart(r/re, -15)
|
||
VowelStart(r/ri, -15)
|
||
VowelStart(r/ro, -15)
|
||
VowelStart(r/ru, -15)
|
||
EndSwitch
|
||
|
||
IF prevPh(isVowel) THEN
|
||
VowelEnding(r/xr, -50)
|
||
ENDIF
|
||
|
||
IF prevPh(isPause) THEN
|
||
FMT(r/_r)
|
||
ELIF prevPh(t) OR prevPh(p) OR prevPh(k) THEN
|
||
FMT(r/tr)
|
||
ENDIF
|
||
|
||
FMT(r/r)
|
||
endphoneme
|
||
|
||
|
||
|
||
phoneme r/ // used for [r] when not preceding a vowel
|
||
liquid rhotic
|
||
lengthmod 2
|
||
|
||
IF nextPh(n) THEN
|
||
FMT(r3/r_n) addWav(r3/rx)
|
||
ENDIF
|
||
|
||
IF prevPh(t) OR prevPh(p) OR prevPh(k) THEN
|
||
FMT(r/trr)
|
||
ENDIF
|
||
|
||
IF prevPh(isNotVowel) THEN
|
||
FMT(r/rr)
|
||
ENDIF
|
||
|
||
FMT(r3/r_) addWav(r3/rx)
|
||
endphoneme
|
||
|
||
|
||
|
||
phoneme R
|
||
liquid trl
|
||
lengthmod 6
|
||
ipa r
|
||
IF nextPhW(R2) THEN
|
||
ipa NULL
|
||
ENDIF
|
||
Vowelin f1=0 f2=1600 -300 300 f3=-200 80
|
||
Vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk
|
||
FMT(r3/r_trill2) addWav(r3/r_trill2.wav, 65)
|
||
endphoneme
|
||
|
||
phoneme R2 // this is [R] from Slovak/Czech
|
||
liquid trl
|
||
lengthmod 6
|
||
ipa r
|
||
Vowelin f1=0 f2=1700 -300 300 f3=-300 80
|
||
Vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk
|
||
FMT(r3/r_trill) addWav(r3/r_trill.wav, 50)
|
||
endphoneme
|
||
|
||
phoneme R3 // Afrikaans
|
||
liquid trl
|
||
lengthmod 6
|
||
length 60
|
||
ipa r
|
||
Vowelin f1=2 f2=2700 -300 -200 f3=-1300 80
|
||
Vowelout f1=2 f2=1700 -300 -200 f3=-1300 80
|
||
|
||
// vowel modifier is the same as for [r]
|
||
NextVowelStarts
|
||
VowelStart(r/r@, -15)
|
||
VowelStart(r/ra, -15)
|
||
VowelStart(r/re, -15)
|
||
VowelStart(r/ri, -15)
|
||
VowelStart(r/ro, -15)
|
||
VowelStart(r/ru, -15)
|
||
EndSwitch
|
||
|
||
IF prevPh(isVowel) THEN
|
||
VowelEnding(r/xr, -50)
|
||
ENDIF
|
||
|
||
FMT(r3/r_trill) addWav(r3/r_trill3.wav)
|
||
endphoneme
|
||
|
||
|
||
phoneme r" // uvular trill
|
||
vcd uvl frc
|
||
ipa ʀ
|
||
lengthmod 6
|
||
IF nextPh(isNotVowel) THEN
|
||
FMT(r3/r_uvl) addWav(r3/r_uvl.wav, 50)
|
||
ENDIF
|
||
FMT(r3/r_uvl) addWav(r3/r_uvl.wav, 75)
|
||
endphoneme
|
||
|
||
|
||
procedure vowelstart_l
|
||
NextVowelStarts
|
||
VowelStart(l/l@)
|
||
VowelStart(l/la)
|
||
VowelStart(l/le)
|
||
VowelStart(l/li, -10)
|
||
VowelStart(l/lo)
|
||
VowelStart(l/lu)
|
||
EndSwitch
|
||
endprocedure
|
||
|
||
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 l/ // used for [l] when not before a vowel
|
||
liquid
|
||
lengthmod 7
|
||
|
||
IF nextPh(isVowel) THEN
|
||
ChangePhoneme(l)
|
||
ENDIF
|
||
|
||
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
|
||
|
||
// we need to replace these with new FMT sequeces for jl and wl
|
||
IF prevPhW(j) THEN
|
||
FMT(l/L1_eL)
|
||
ENDIF
|
||
IF prevPhW(w) THEN
|
||
FMT(l/L1_eL)
|
||
ENDIF
|
||
|
||
FMT(l/l_)
|
||
endphoneme
|
||
|
||
phoneme l/2 // 'dark' [l] after a vowel
|
||
liquid
|
||
lengthmod 7
|
||
|
||
IF nextPh(isVowel) THEN
|
||
ChangePhoneme(l)
|
||
ENDIF
|
||
|
||
CALL vowelstart_l
|
||
|
||
IF prevPhW(j) THEN
|
||
FMT(l/L2_eL)
|
||
ENDIF
|
||
IF prevPhW(w) THEN
|
||
FMT(l/L2_uL)
|
||
ENDIF
|
||
|
||
PrevVowelEndings
|
||
VowelEnding(l/L2_@L, -60)
|
||
VowelEnding(l/L2_aL, -50)
|
||
VowelEnding(l/L2_eL, -40)
|
||
VowelEnding(l/L2_iL, -30)
|
||
VowelEnding(l/L2_oL, -50)
|
||
VowelEnding(l/L2_uL, -40)
|
||
EndSwitch
|
||
endphoneme
|
||
|
||
|
||
phoneme l/3 // Replacement for [l/]
|
||
liquid
|
||
lengthmod 7
|
||
|
||
IF nextPh(isVowel) THEN
|
||
ChangePhoneme(l)
|
||
ENDIF
|
||
|
||
PrevVowelEndings
|
||
VowelEnding(l/l_@)
|
||
VowelEnding(l/l_a)
|
||
VowelEnding(l/l_e)
|
||
VowelEnding(l/l_i)
|
||
VowelEnding(l/l_o)
|
||
VowelEnding(l/l_u, -20)
|
||
EndSwitch
|
||
|
||
// IF nextPh(isLiquid) THEN
|
||
// FMT(l/_l)
|
||
// ENDIF
|
||
|
||
FMT(l/l_)
|
||
endphoneme
|
||
|
||
|
||
|
||
phoneme l^ // palatal l, e.g. Italian **g**li
|
||
liquid
|
||
ipa ʎ
|
||
lengthmod 7
|
||
Vowelout len=60 lenadd rate
|
||
length 100
|
||
|
||
NextVowelStarts
|
||
VowelStart(l^/j2@)
|
||
VowelStart(l^/j2a)
|
||
VowelStart(l^/j2e)
|
||
VowelStart(l^/j2i)
|
||
VowelStart(l^/j2o)
|
||
VowelStart(l^/j2u)
|
||
EndSwitch
|
||
|
||
IF prevPh(isPause) THEN
|
||
FMT(l^/_l^)
|
||
ENDIF
|
||
|
||
FMT(l^/l^)
|
||
endphoneme
|
||
|
||
|
||
phoneme l.
|
||
liquid rfx
|
||
ipa ɭ
|
||
lengthmod 7
|
||
FMT(l^/l_rfx)
|
||
endphoneme
|
||
|
||
|
||
phoneme L/
|
||
import_phoneme base1/l/2
|
||
endphoneme
|
||
|
||
phoneme L // velar L
|
||
liquid
|
||
lengthmod 7
|
||
|
||
IF nextPh(isNotVowel) THEN
|
||
ChangePhoneme(L/) // use 'dark' [l] after a vowel
|
||
ENDIF
|
||
|
||
VowelEnding(ll/xll, -40)
|
||
|
||
IF prevPh(isPause) THEN
|
||
FMT(ll/_ll)
|
||
ENDIF
|
||
|
||
FMT(ll/ll)
|
||
endphoneme
|
||
|
||
|
||
|
||
phoneme w
|
||
liquid
|
||
lengthmod 7
|
||
starttype #u
|
||
|
||
IF nextPh(isVowel) THEN
|
||
NextVowelStarts
|
||
VowelStart(w/w@)
|
||
VowelStart(w/wa)
|
||
VowelStart(w/we)
|
||
VowelStart(w/wi)
|
||
VowelStart(w/wo)
|
||
VowelStart(w/wu)
|
||
EndSwitch
|
||
|
||
VowelEnding(w/xw, -30)
|
||
|
||
IF prevPhW(isNasal) THEN
|
||
FMT(w/w)
|
||
ELSEIF prevPhW(h) THEN
|
||
// none, [hw]
|
||
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 j // **y**es
|
||
liquid pal starttype #i
|
||
lengthmod 7
|
||
|
||
IF nextPhW(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)
|
||
|
||
IF prevPh(isPause) THEN
|
||
FMT(j/_j)
|
||
ENDIF
|
||
ELSE
|
||
// no vowel follows
|
||
Vowelout len=70
|
||
FMT(j/j_)
|
||
ENDIF
|
||
endphoneme
|
||
|
||
|
||
phoneme ; // linking j, used between (i) vowels and a following vowel
|
||
// also to palatalize consonants
|
||
liquid pzd
|
||
lengthmod 0
|
||
|
||
IF prevPh(#i) THEN
|
||
ipa NULL // linking after i vowel, don't show in ipa
|
||
ENDIF
|
||
|
||
IF nextPh(isNotVowel) THEN
|
||
ChangePhoneme(NULL) // this is to ignore this phoneme if not before a vowel
|
||
ENDIF
|
||
|
||
NextVowelStarts
|
||
VowelStart(j2/j2@)
|
||
VowelStart(j2/j2a)
|
||
VowelStart(j2/j2e)
|
||
VowelStart(j2/j2i)
|
||
VowelStart(j2/j2o)
|
||
VowelStart(j2/j2u)
|
||
EndSwitch
|
||
|
||
IF prevPh(#i) THEN
|
||
VowelEnding(j2/xj2, -40)
|
||
ENDIF
|
||
|
||
IF prevPh(isPause) THEN
|
||
FMT(j2/_j2)
|
||
ENDIF
|
||
endphoneme
|
||
|
||
|
||
//*******************************************************************
|
||
// NASAL CONSONANTS
|
||
//*******************************************************************
|
||
|
||
|
||
phoneme m
|
||
vcd blb nas
|
||
Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk
|
||
lengthmod 4
|
||
|
||
IF KlattSynth THEN
|
||
Vowelin f1=0 f2=1000 -50 -200 f3=-200 80
|
||
IF nextPh(isPause2) THEN
|
||
FMT(klatt/m_)
|
||
ENDIF
|
||
FMT(klatt/m)
|
||
ENDIF
|
||
|
||
NextVowelStarts
|
||
VowelStart(m/m@)
|
||
VowelStart(m/ma)
|
||
VowelStart(m/me)
|
||
VowelStart(m/mi)
|
||
VowelStart(m/mo)
|
||
VowelStart(m/mu)
|
||
EndSwitch
|
||
|
||
IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
|
||
FMT(m/mj)
|
||
ELIF prevPh(isPause) THEN
|
||
FMT(m/_m)
|
||
ELIF nextPh(isNotVowel) THEN
|
||
FMT(m/m_)
|
||
ENDIF
|
||
endphoneme
|
||
|
||
|
||
phoneme n
|
||
vcd alv nas
|
||
Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk
|
||
lengthmod 4
|
||
|
||
IF KlattSynth THEN
|
||
Vowelin f1=0 f2=1500 -200 200 f3=0 80
|
||
FMT(klatt/n)
|
||
ENDIF
|
||
|
||
NextVowelStarts
|
||
VowelStart(n/n@)
|
||
VowelStart(n/na)
|
||
VowelStart(n/ne)
|
||
VowelStart(n/ni)
|
||
VowelStart(n/no)
|
||
VowelStart(n/nu)
|
||
EndSwitch
|
||
|
||
IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
|
||
FMT(n/nj)
|
||
ELIF prevPh(isPause) OR prevPh(n) THEN
|
||
FMT(n/_n)
|
||
ELIF nextPh(isNotVowel) THEN
|
||
FMT(n/n_)
|
||
ENDIF
|
||
endphoneme
|
||
|
||
|
||
phoneme n.
|
||
vcd rfx nas
|
||
ipa ɳ
|
||
starttype n endtype n
|
||
Vowelin f1=2 f2=1700 -300 300 f3=-500 80 rms=20 colr=2
|
||
Vowelout f1=2 f2=1700 -300 300 f3=-500 80 rms=20 brk colr=2
|
||
lengthmod 4
|
||
|
||
IF KlattSynth THEN
|
||
FMT(klatt/nr)
|
||
ENDIF
|
||
|
||
NextVowelStarts
|
||
VowelStart(n/nr@)
|
||
VowelStart(n/nra)
|
||
VowelStart(n/nre)
|
||
VowelStart(n/nri)
|
||
VowelStart(n/nro)
|
||
VowelStart(n/nru)
|
||
EndSwitch
|
||
|
||
IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
|
||
FMT(n/nj)
|
||
ELIF prevPh(isPause) OR prevPh(n.) THEN
|
||
FMT(n/_nr)
|
||
ELIF nextPh(isNotVowel) THEN
|
||
FMT(n/nr_)
|
||
ENDIF
|
||
endphoneme
|
||
|
||
|
||
phoneme n^ // Spanish **ñ**
|
||
vcd pal nas pzd
|
||
ipa ɲ
|
||
Vowelout f1=3 f2=2500 300 500 f3=100 80 len=45 brk rate
|
||
lengthmod 4
|
||
|
||
IF KlattSynth THEN
|
||
VowelStart(klatt/n^@)
|
||
FMT(klatt/n^)
|
||
ENDIF
|
||
|
||
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
|
||
IF nextPhW(n^) THEN
|
||
length 75
|
||
ELIF prevPhW(n^) THEN
|
||
length 100
|
||
ENDIF
|
||
FMT(n^/n^_)
|
||
ENDIF
|
||
endphoneme
|
||
|
||
|
||
phoneme N // si**ng**
|
||
vcd vel nas
|
||
Vowelout f1=3 f2=2300 300 400 f3=-200 80 len=40 rms=20 brk
|
||
lengthmod 8 // longer than 'n'
|
||
|
||
IF KlattSynth THEN
|
||
Vowelin f1=0 f2=2100 50 300 f3=0 80
|
||
IF nextPh(isPause2) THEN
|
||
FMT(klatt/nn_)
|
||
ENDIF
|
||
FMT(klatt/nn)
|
||
ENDIF
|
||
|
||
NextVowelStarts
|
||
VowelStart(nn/nn@)
|
||
VowelStart(nn/nna)
|
||
VowelStart(nn/nne)
|
||
VowelStart(nn/nni)
|
||
VowelStart(nn/nno)
|
||
VowelStart(nn/nnu)
|
||
EndSwitch
|
||
|
||
IF prevPh(#i) THEN
|
||
VowelEnding(nn/inn, -40)
|
||
ENDIF
|
||
|
||
IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
|
||
FMT(nn/nnj)
|
||
ELIF prevPh(isPause) THEN
|
||
FMT(nn/_nn)
|
||
ELIF nextPh(isNotVowel) THEN
|
||
FMT(nn/nn_)
|
||
ENDIF
|
||
endphoneme
|
||
|
||
|
||
phoneme ** // TEST flap
|
||
liquid alv rhotic
|
||
ipa ɾ
|
||
lengthmod 3
|
||
Vowelout f1=3 f2=1600 -300 300 f3=-300 80 rms=35 len=15
|
||
Vowelin f1=2 f2=1600 -300 300 f3=-100 80 len=20
|
||
|
||
IF prevPh(#i) OR prevPh(#e) THEN
|
||
FMT(r3/@tap2)
|
||
ENDIF
|
||
FMT(r3/@tap)
|
||
endphoneme
|
||
|
||
|
||
|
||
phoneme * // flap
|
||
vcd alv flp rhotic
|
||
brkafter
|
||
ipa ɾ
|
||
lengthmod 3
|
||
|
||
IF prevPhW(@-) THEN
|
||
ipa r // @-* sequence for [r]
|
||
ENDIF
|
||
|
||
IF nextPh(#e) OR nextPh(#i) THEN
|
||
Vowelin f1=0 f2=1500 -300 300 f3=-200 80
|
||
FMT(d/tap1) addWav(r3/rx, 150)
|
||
FMT(d/tap1) addWav(r3/rx, 150)
|
||
ENDIF
|
||
|
||
Vowelin f1=2 f2=1500 -300 300 f3=-200 80
|
||
IF nextPh(#a) THEN
|
||
FMT(d/tap3) addWav(r3/rx, 200)
|
||
ENDIF
|
||
|
||
IF nextPh(r) THEN
|
||
FMT(d/dr)
|
||
ENDIF
|
||
|
||
Vowelout f1=3 f2=1500 -400 300 f3=-200 80 rms=35 len=50
|
||
Vowelin f1=0 f2=1500 -300 300 f3=-200 80
|
||
FMT(d/tap3) addWav(r3/rx, 200)
|
||
endphoneme
|
||
|
||
|
||
|
||
phoneme r. // retroflex
|
||
liquid rfx
|
||
lengthmod 3
|
||
Vowelout f1=3 f2=1400 -400 300 f3=-400 80 rms=35 len=15 colr=2
|
||
Vowelin f1=2 f2=1400 -400 300 f3=-400 80 len=20
|
||
|
||
IF nextPh(isNotVowel) THEN
|
||
FMT(r3/@tap_rfx_)
|
||
ENDIF
|
||
FMT(r3/@tap_rfx)
|
||
endphoneme
|
||
|
||
|
||
//*******************************************************************
|
||
// VOICED STOPS
|
||
//*******************************************************************
|
||
|
||
|
||
phoneme b
|
||
vcd blb stp
|
||
voicingswitch p
|
||
Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk
|
||
lengthmod 5
|
||
|
||
IF PreVoicing THEN
|
||
FMT(b/xb)
|
||
ENDIF
|
||
|
||
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 nextPh(isPause2) THEN
|
||
FMT(b/b_) addWav(x/b_)
|
||
ELIF nextPh(@-) THEN
|
||
FMT(b/b@2) addWav(x/b)
|
||
ELIF nextPh(#@) THEN
|
||
FMT(b/b@) addWav(x/b)
|
||
ELIF nextPh(#a) THEN
|
||
FMT(b/ba) addWav(x/b)
|
||
ELIF nextPh(#e) THEN
|
||
FMT(b/be) addWav(x/b)
|
||
ELIF nextPh(#i) THEN
|
||
FMT(b/bi) addWav(x/b)
|
||
ELIF nextPh(#o) THEN
|
||
FMT(b/bo) addWav(x/b)
|
||
ELIF nextPh(#u) THEN
|
||
FMT(b/bu) addWav(x/b)
|
||
ENDIF
|
||
|
||
FMT(b/b) addWav(x/b)
|
||
endphoneme
|
||
|
||
|
||
phoneme d
|
||
vcd alv stp
|
||
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
|
||
|
||
IF PreVoicing THEN
|
||
FMT(d/xd)
|
||
ENDIF
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(d/d_) addWav(x/d_)
|
||
// ELIF nextPh(r) THEN
|
||
// FMT(d/dr) addWav(x/d)
|
||
ENDIF
|
||
|
||
FMT(d/d) addWav(x/d)
|
||
endphoneme
|
||
|
||
|
||
phoneme d[
|
||
vcd dnt stp
|
||
voicingswitch t[
|
||
lengthmod 5
|
||
Vowelin f1=2 f2=1500 -300 300 f3=-150 80
|
||
Vowelout f1=2 f2=1500 -300 300 f3=-150 80
|
||
|
||
IF PreVoicing THEN
|
||
FMT(d/xd)
|
||
ENDIF
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(d/d_) addWav(x/d_)
|
||
ELIF nextPh(r) THEN
|
||
FMT(d/dr) addWav(x/d_dnt, 100)
|
||
ENDIF
|
||
|
||
FMT(d/d) addWav(x/d_dnt, 100)
|
||
endphoneme
|
||
|
||
|
||
phoneme dZ // **j**udge
|
||
vcd pla afr sib
|
||
voicingswitch tS
|
||
lengthmod 5
|
||
Vowelin f1=2 f2=2300 200 400 f3=100 80
|
||
Vowelout f1=2 f2=2300 250 300 f3=100 80 brk
|
||
|
||
IF PreVoicing THEN
|
||
FMT(dzh/xdzh)
|
||
ENDIF
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(dzh/dzh_) addWav(x/dzh_)
|
||
ENDIF
|
||
FMT(dzh/dzh) addWav(x/dzh)
|
||
endphoneme
|
||
|
||
|
||
phoneme dZ;
|
||
vcd alp sib afr
|
||
voicingswitch tS;
|
||
ipa dʑ
|
||
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
|
||
|
||
IF PreVoicing THEN
|
||
FMT(dzh/xdzh)
|
||
ENDIF
|
||
|
||
IF KlattSynth THEN
|
||
IF nextPh(isPause2) THEN
|
||
FMT(dzh/dzh_) addWav(x/dzh_)
|
||
ENDIF
|
||
FMT(dzh/dzh) addWav(x/dz_pzd)
|
||
ENDIF
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(dzh/dzh_) addWav(x/dzh_)
|
||
ENDIF
|
||
FMT(dzh/dzh) addWav(x/dz_pzd)
|
||
endphoneme
|
||
|
||
|
||
phoneme J
|
||
vcd pal afr sib pzd
|
||
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 PreVoicing THEN
|
||
FMT(dzh/xdz_pzd)
|
||
ENDIF
|
||
|
||
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
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(dzh/dz_pzd_) addWav(x/dzh, 35)
|
||
ENDIF
|
||
FMT(dzh/dz_pzd) addWav(x/dzh, 45)
|
||
endphoneme
|
||
|
||
|
||
phoneme g
|
||
vcd vel stp
|
||
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
|
||
|
||
IF PreVoicing THEN
|
||
FMT(g/xg)
|
||
ENDIF
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(g/g_) addWav(x/g_)
|
||
ENDIF
|
||
FMT(g/g) addWav(x/g2, 150)
|
||
endphoneme
|
||
|
||
|
||
|
||
//*******************************************************************
|
||
// VOICED fricatives
|
||
//*******************************************************************
|
||
|
||
|
||
phoneme B
|
||
vcd blb frc
|
||
voicingswitch f
|
||
lengthmod 6
|
||
Vowelin f1=2 f2=1000 -300 -200 f3=-100 100
|
||
Vowelout f1=2 f2=1000 -500 -300 f3=-100 60 len=50
|
||
|
||
IF KlattSynth THEN
|
||
IF nextPh(isPause2) THEN
|
||
FMT(klatt/v_) addWav(vocw/v)
|
||
ENDIF
|
||
FMT(klatt/bh) addWav(vocw/v)
|
||
ENDIF
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(voc/v_) addWav(vocw/v)
|
||
ENDIF
|
||
FMT(voc/bh) addWav(vocw/v)
|
||
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 v# // approximant, not fricative
|
||
vcd lbd frc
|
||
ipa ʋ
|
||
lengthmod 6
|
||
voicingswitch f
|
||
Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
|
||
Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
|
||
IF nextPh(isPause2) THEN
|
||
FMT(voc/v#_)
|
||
ENDIF
|
||
FMT(voc/v#)
|
||
endphoneme
|
||
|
||
|
||
phoneme D // **th**is
|
||
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
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(voc/dh_) addWav(vocw/dh)
|
||
ENDIF
|
||
FMT(voc/dh) addWav(vocw/dh)
|
||
endphoneme
|
||
|
||
|
||
phoneme z
|
||
vcd alv frc sib
|
||
voicingswitch s
|
||
lengthmod 6
|
||
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
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(voc/z_) addWav(ufric/s_, 70)
|
||
ENDIF
|
||
FMT(voc/z) addWav(ufric/s_, 85)
|
||
endphoneme
|
||
|
||
|
||
phoneme Z // plea**s**ure
|
||
vcd pla frc sib
|
||
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_, 60) addWav(vocw/zh, 70)
|
||
ENDIF
|
||
FMT(klatt/zh) addWav(vocw/zh, 130)
|
||
ENDIF
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(voc/zh_, 60) addWav(vocw/zh, 70)
|
||
ENDIF
|
||
FMT(voc/zh) addWav(vocw/zh, 130)
|
||
endphoneme
|
||
|
||
|
||
phoneme z.
|
||
vcd pla frc sib
|
||
ipa ʐ
|
||
voicingswitch s.
|
||
lengthmod 6
|
||
Vowelin f1=0 f2=1800 -100 300 f3=-300 80
|
||
Vowelout f1=2 f2=1800 -100 300 f3=-300 80 brk
|
||
|
||
IF KlattSynth THEN
|
||
IF nextPh(isPause2) THEN
|
||
FMT(klatt/zh_) addWav(vocw/zh_rfx)
|
||
ENDIF
|
||
FMT(klatt/zh) addWav(vocw/zh_rfx)
|
||
ENDIF
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(voc/zh_) addWav(vocw/zh_rfx)
|
||
ENDIF
|
||
FMT(voc/zh) addWav(vocw/zh_rfx)
|
||
endphoneme
|
||
|
||
|
||
phoneme z;
|
||
vcd alp sib frc
|
||
ipa ʑ
|
||
voicingswitch s;
|
||
lengthmod 6
|
||
Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
|
||
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(voc/z_pzd_) addWav(ufric/s_pzd_, 80)
|
||
ENDIF
|
||
FMT(voc/z_pzd) addWav(ufric/s_pzd, 80)
|
||
endphoneme
|
||
|
||
|
||
phoneme Z;
|
||
vcd alp sib frc
|
||
voicingswitch S;
|
||
ipa ʑ
|
||
lengthmod 6
|
||
Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
|
||
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(voc/z_pzd_) addWav(ufric/sh_pzd_)
|
||
ENDIF
|
||
FMT(voc/z_pzd) addWav(ufric/sh_pzd, 80)
|
||
endphoneme
|
||
|
||
|
||
phoneme J^ // palatal fricative (Kirshenbaum C<vcd>)
|
||
vcd pal frc pzd
|
||
ipa ʝ
|
||
voicingswitch C
|
||
lengthmod 6
|
||
Vowelin f1=1 f2=2700 400 600 f3=200 70
|
||
Vowelout f1=1 f2=2700 400 600 f3=200 70 len=100
|
||
|
||
FMT(voc/j) addWav(ufric/ch, 25)
|
||
endphoneme
|
||
|
||
|
||
phoneme Q
|
||
vcd vel frc
|
||
voicingswitch x
|
||
lengthmod 6
|
||
Vowelin f1=2 f2=2300 200 400 f3=-100 80
|
||
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
|
||
|
||
IF KlattSynth THEN
|
||
IF nextPh(isPause2) THEN
|
||
FMT(klatt/qqh_) addWav(vocw/Q_)
|
||
ENDIF
|
||
FMT(klatt/qqh) addWav(vocw/Q)
|
||
ENDIF
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(voc/Q_) addWav(vocw/Q_)
|
||
ENDIF
|
||
FMT(voc/Q) addWav(vocw/Q)
|
||
endphoneme
|
||
|
||
|
||
phoneme Q^
|
||
vcd vel frc
|
||
lengthmod 6
|
||
Vowelin f1=2 f2=2700 400 600 f3=200 80
|
||
Vowelout f1=2 f2=2700 40 600 f3=200 80 brk
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(voc/Q_) addWav(vocw/Q_)
|
||
ENDIF
|
||
FMT(voc/Q) addWav(vocw/Q)
|
||
endphoneme
|
||
|
||
|
||
phoneme Q"
|
||
vcd uvl frc
|
||
ipa ʁ
|
||
lengthmod 6
|
||
|
||
IF nextPh(isPause2) THEN
|
||
FMT(voc/Q_ulv) addWav(ufric/xx, 60)
|
||
ENDIF
|
||
FMT(voc/Q_ulv) addWav(ufric/xx, 80)
|
||
endphoneme
|
||
|
||
|
||
|
||
|
||
//*******************************************************************
|
||
// UNVOICED STOPS
|
||
//*******************************************************************
|
||
|
||
|
||
phoneme p
|
||
vls blb stp
|
||
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_)
|
||
ELIF nextPh(r) THEN
|
||
WAV(ustop/pr, 70)
|
||
ELIF nextPh(R) OR nextPh(R2) THEN
|
||
WAV(ustop/pr)
|
||
ELIF nextPh(@-) THEN
|
||
WAV(ustop/p_unasp)
|
||
ELIF nextPh(l) THEN
|
||
WAV(ustop/pl)
|
||
ENDIF
|
||
WAV(ustop/p)
|
||
endphoneme
|
||
|
||
|
||
phoneme t
|
||
vls alv stp
|
||
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_)
|
||
ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
|
||
WAV(ustop/tr)
|
||
ELIF nextPh(@-) THEN
|
||
WAV(ustop/t_dnt, 50)
|
||
ENDIF
|
||
WAV(ustop/t, 90)
|
||
endphoneme
|
||
|
||
|
||
phoneme t[ // dental variant of /t/
|
||
vls dnt stp
|
||
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
|
||
|
||
IF nextPh(isPause2) THEN
|
||
WAV(ustop/t_dnt, 35)
|
||
ENDIF
|
||
WAV(ustop/t_hi, 70)
|
||
endphoneme
|
||
|
||
|
||
phoneme tS // **ch**urch
|
||
vls pla afr sib
|
||
voicingswitch dZ
|
||
lengthmod 2
|
||
Vowelin f1=0 f2=2300 200 400 f3=-100 80
|
||
|
||
IF nextPh(isPause2) THEN
|
||
WAV(ustop/tsh_)
|
||
ENDIF
|
||
WAV(ustop/tsh)
|
||
endphoneme
|
||
|
||
|
||
phoneme tS;
|
||
vls alp sib afr
|
||
voicingswitch dZ;
|
||
ipa tɕ
|
||
lengthmod 2
|
||
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
|
||
|
||
IF nextPh(isPause2) THEN
|
||
WAV(ustop/ts_pzd)
|
||
ENDIF
|
||
WAV(ustop/ts_pzd)
|
||
endphoneme
|
||
|
||
|
||
phoneme c
|
||
vls pal stp pzd
|
||
voicingswitch J
|
||
lengthmod 2
|
||
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
|
||
Vowelout f1=1 f2=2700 400 600 f3=200 70 len=50 colr=1
|
||
|
||
IF nextPh(isPause2) THEN
|
||
WAV(ustop/t_pzd, 30)
|
||
ENDIF
|
||
WAV(ustop/c, 150)
|
||
endphoneme
|
||
|
||
|
||
phoneme k
|
||
vls vel stp
|
||
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
|
||
|
||
IF nextPh(isPause2) THEN
|
||
WAV(ustop/k_)
|
||
ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
|
||
WAV(ustop/kr)
|
||
ELIF nextPh(#i) OR nextPh(;) THEN
|
||
WAV(ustop/ki)
|
||
ELIF nextPh(l) THEN
|
||
WAV(ustop/kl)
|
||
ELIF nextPh(@-) THEN
|
||
WAV(ustop/k_unasp, 70)
|
||
ENDIF
|
||
WAV(ustop/k)
|
||
endphoneme
|
||
|
||
|
||
phoneme q
|
||
vls uvl stp
|
||
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
|
||
|
||
IF nextPh(isPause2) THEN
|
||
WAV(ustop/q, 40)
|
||
ELIF nextPh(#u) THEN
|
||
WAV(ustop/q_u, 80)
|
||
ENDIF
|
||
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
|
||
|
||
IF nextPh(isPause) THEN
|
||
WAV(ufric/f_)
|
||
ENDIF
|
||
WAV(ufric/f)
|
||
endphoneme
|
||
|
||
|
||
phoneme T // **th**in
|
||
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
|
||
|
||
IF nextPh(isPause) THEN
|
||
WAV(ufric/th_)
|
||
ENDIF
|
||
WAV(ufric/th)
|
||
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 S // **sh**op
|
||
vls pla frc sib
|
||
voicingswitch Z
|
||
lengthmod 3
|
||
Vowelin f1=0 f2=2100 100 300 f3=-100 80
|
||
Vowelout f1=0 f2=2100 100 300 f3=-100 80
|
||
|
||
IF nextPh(isPause) THEN
|
||
WAV(ufric/sh_)
|
||
ENDIF
|
||
WAV(ufric/sh)
|
||
endphoneme
|
||
|
||
|
||
phoneme s.
|
||
vls pla frc sib
|
||
ipa ʂ
|
||
voicingswitch z.
|
||
lengthmod 3
|
||
Vowelin f1=0 f2=1800 -100 300 f3=-300 80
|
||
Vowelout f1=0 f2=1800 -100 300 f3=-300 80
|
||
|
||
IF nextPh(isPause) THEN
|
||
WAV(ufric/sh_rfx, 60)
|
||
ENDIF
|
||
WAV(ufric/sh_rfx, 90)
|
||
endphoneme
|
||
|
||
|
||
phoneme s;
|
||
vls pal frc sib pzd
|
||
ipa ʂ
|
||
voicingswitch z;
|
||
lengthmod 3
|
||
Vowelin f1=1 f2=2700 400 600 f3=200 70 rate len=70
|
||
Vowelout f1=1 f2=2700 400 600 f3=200 70 rate len=70
|
||
|
||
IF nextPh(isPause) THEN
|
||
WAV(ufric/s_pzd_)
|
||
ENDIF
|
||
WAV(ufric/s_pzd)
|
||
endphoneme
|
||
|
||
|
||
phoneme S;
|
||
vls alp sib frc
|
||
voicingswitch Z;
|
||
ipa ɕ
|
||
lengthmod 3
|
||
Vowelin f1=1 f2=2700 400 600 f3=200 70 rate len=70
|
||
Vowelout f1=1 f2=2700 400 600 f3=200 70 rate
|
||
|
||
IF nextPh(isPause) THEN
|
||
WAV(ufric/sh_pzd_)
|
||
ENDIF
|
||
WAV(ufric/sh_pzd)
|
||
endphoneme
|
||
|
||
|
||
phoneme l# // Lateral fricative (eg. Welsh "ll")
|
||
vls alv frc
|
||
ipa ɬ
|
||
lengthmod 3
|
||
|
||
NextVowelStarts
|
||
VowelStart(l/l@)
|
||
VowelStart(l/la)
|
||
VowelStart(l/le)
|
||
VowelStart(l/li, -10)
|
||
VowelStart(l/lo)
|
||
VowelStart(l/lu)
|
||
EndSwitch
|
||
|
||
IF prevPh(isVowel) THEN
|
||
VowelEnding(l/xl, -40)
|
||
ENDIF
|
||
|
||
WAV(ufric/l#, 60)
|
||
endphoneme
|
||
|
||
|
||
phoneme C // German i**ch**
|
||
vls pal frc
|
||
lengthmod 3
|
||
Vowelin f1=0 f2=2700 400 600 f3=200 70
|
||
Vowelout f1=0 f2=2700 400 600 f3=200 70 rms=20
|
||
|
||
IF nextPh(isPause) THEN
|
||
WAV(ufric/ch_)
|
||
ENDIF
|
||
WAV(ufric/ch)
|
||
endphoneme
|
||
|
||
|
||
phoneme x // German bu**ch**
|
||
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
|
||
|
||
IF nextPh(isPause) THEN
|
||
WAV(ufric/x_, 60)
|
||
ENDIF
|
||
WAV(ufric/x_hr, 20)
|
||
endphoneme
|
||
|
||
|
||
phoneme X
|
||
vls uvl frc
|
||
voicingswitch Q"
|
||
lengthmod 3
|
||
|
||
IF nextPh(isPause) THEN
|
||
WAV(ufric/xx, 70)
|
||
ENDIF
|
||
WAV(ufric/xx,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
|
||
|
||
|
||
//*******************************************************************
|
||
// ADDITIONAL PHONEME TABLES
|
||
// These are grouped by extended table and table name
|
||
//*******************************************************************
|
||
|
||
// *** Tables extending base1 ***
|
||
|
||
phonemetable consonants base1
|
||
include ph_consonants
|
||
|
||
phonemetable base2 base1
|
||
include ph_base2
|
||
|
||
phonemetable ak base1
|
||
include ph_akan
|
||
|
||
phonemetable am base1
|
||
include ph_amhari
|
||
|
||
phonemetable ar base1
|
||
include ph_arabic
|
||
|
||
phonemetable ba base1
|
||
include ph_bashkir
|
||
|
||
phonemetable cmn base1
|
||
include ph_cmn
|
||
|
||
phonemetable cy base1
|
||
include ph_welsh
|
||
|
||
phonemetable da base1
|
||
include ph_danish
|
||
|
||
phonemetable en base1
|
||
include ph_english
|
||
|
||
phonemetable eo base1
|
||
include ph_esperanto
|
||
|
||
phonemetable et base1
|
||
include ph_estonian
|
||
|
||
phonemetable fa base1
|
||
include ph_farsi
|
||
|
||
phonemetable fi base1
|
||
include ph_finnish
|
||
|
||
phonemetable smj base1
|
||
include ph_lule_saami
|
||
|
||
phonemetable fr base1
|
||
include ph_french
|
||
|
||
phonemetable ga base1
|
||
include ph_irish
|
||
|
||
phonemetable gn base1
|
||
include ph_guarani
|
||
|
||
phonemetable hak base1
|
||
include ph_hakka
|
||
|
||
phonemetable haw base1
|
||
include ph_hawaiian
|
||
|
||
phonemetable he base1
|
||
|
||
phonemetable hi_base base1
|
||
include ph_hindi_base
|
||
|
||
phonemetable hy base1
|
||
include ph_armenian
|
||
|
||
phonemetable hu base1
|
||
include ph_hungarian
|
||
|
||
phonemetable is base1
|
||
include ph_icelandic
|
||
|
||
phonemetable ja base1
|
||
include ph_japanese
|
||
|
||
phonemetable ka base1
|
||
include ph_georgian
|
||
|
||
phonemetable ky base1
|
||
include ph_kyrgyz
|
||
|
||
phonemetable kl base1
|
||
include ph_greenlandic
|
||
|
||
phonemetable ko base1
|
||
include ph_korean
|
||
|
||
phonemetable la base1
|
||
include ph_latin
|
||
|
||
phonemetable lt base1
|
||
include ph_lithuanian
|
||
|
||
phonemetable lv base1
|
||
include ph_latvian
|
||
|
||
phonemetable my base1
|
||
include ph_myanmar
|
||
|
||
phonemetable mt base1
|
||
include ph_maltese
|
||
|
||
phonemetable no base1
|
||
include ph_norwegian
|
||
|
||
phonemetable om base1
|
||
include ph_oromo
|
||
|
||
phonemetable pl base1
|
||
include ph_polish
|
||
|
||
phonemetable prs base1
|
||
include ph_dari
|
||
|
||
phonemetable qu base1
|
||
include ph_quechua
|
||
|
||
phonemetable quc base1
|
||
|
||
phonemetable ru base1
|
||
include ph_russian
|
||
|
||
phonemetable shn base1
|
||
include ph_shan
|
||
|
||
phonemetable sq base1
|
||
include ph_albanian
|
||
|
||
phonemetable sv base1
|
||
include ph_swedish
|
||
|
||
phonemetable sw base1
|
||
include ph_swahili
|
||
|
||
phonemetable tn base1
|
||
include ph_setswana
|
||
|
||
phonemetable tt base1
|
||
include ph_tatar
|
||
|
||
phonemetable vi base1
|
||
include ph_vietnam
|
||
|
||
phonemetable wo base1
|
||
include ph_wolof
|
||
|
||
phonemetable yue base1
|
||
include ph_yue
|
||
|
||
// *** Tables extending base2 ***
|
||
|
||
phonemetable chr base2
|
||
include ph_cherokee
|
||
|
||
phonemetable el base2
|
||
include ph_greek
|
||
|
||
phonemetable es base2
|
||
include ph_spanish
|
||
|
||
phonemetable eu base2
|
||
include ph_basque
|
||
|
||
phonemetable grc base2
|
||
include ph_greek_ancient
|
||
|
||
phonemetable id base2
|
||
include ph_indonesian
|
||
|
||
phonemetable it base2
|
||
include ph_italian
|
||
|
||
phonemetable ku base2
|
||
include ph_kurdish
|
||
|
||
phonemetable mi base2
|
||
include ph_maori
|
||
|
||
phonemetable nci base2
|
||
include ph_nahuatl
|
||
|
||
phonemetable pt base2
|
||
include ph_pt_brazil
|
||
|
||
phonemetable piqd base2
|
||
include ph_klingon
|
||
|
||
phonemetable ro base2
|
||
include ph_romanian
|
||
|
||
phonemetable rw base2
|
||
include ph_kinyarwanda
|
||
|
||
phonemetable tk base2
|
||
include ph_turkmen
|
||
|
||
phonemetable tr base2
|
||
include ph_turkish
|
||
|
||
// *** Tables extending en ***
|
||
|
||
phonemetable en-n en
|
||
include ph_english_n
|
||
|
||
phonemetable en-rp en
|
||
include ph_english_rp
|
||
|
||
phonemetable en-sc en
|
||
include ph_english_sc
|
||
|
||
phonemetable en-us en
|
||
include ph_english_us
|
||
|
||
phonemetable en-wi en
|
||
include ph_english_wi
|
||
|
||
phonemetable en-wm en
|
||
include ph_english_wm
|
||
|
||
// *** Hidden dependencies ***
|
||
// Tables which include/import phonemes from other (in comment) tables
|
||
// TODO these may be needed to redesign
|
||
|
||
phonemetable af base1 // form en
|
||
include ph_afrikaans
|
||
|
||
phonemetable de base1 // from en-us
|
||
include ph_german
|
||
|
||
phonemetable kk base1 // from sq
|
||
include ph_kazakh
|
||
|
||
phonemetable nl base1 // from af
|
||
include ph_dutch
|
||
|
||
phonemetable nso base1 // from af
|
||
include ph_northern-sotho
|
||
|
||
// *** Tables extending other language tables ***
|
||
|
||
phonemetable ia eo
|
||
include ph_interlingua
|
||
|
||
phonemetable jbo eo
|
||
include ph_lojban
|
||
|
||
phonemetable py eo
|
||
include ph_pyash
|
||
|
||
phonemetable qya la
|
||
include ph_quenya
|
||
|
||
phonemetable sjn la
|
||
include ph_sindarin
|
||
|
||
phonemetable es-la es
|
||
include ph_spanish_la
|
||
|
||
phonemetable ca es
|
||
include ph_catalan
|
||
|
||
phonemetable an es
|
||
include ph_aragon
|
||
|
||
phonemetable ht fr
|
||
include ph_haitian
|
||
|
||
phonemetable hi hi_base
|
||
include ph_hindi
|
||
|
||
phonemetable bo hi
|
||
include ph_tibetan
|
||
|
||
phonemetable gd base1 // hidden dependency, imports from hi
|
||
include ph_s_gaelic
|
||
|
||
// hi_base
|
||
phonemetable ne hi_base
|
||
include ph_nepali
|
||
|
||
phonemetable ur hi_base
|
||
include ph_urdu
|
||
|
||
phonemetable pa hi_base
|
||
include ph_punjabi
|
||
|
||
phonemetable ta hi_base
|
||
include ph_tamil
|
||
|
||
phonemetable kn hi_base
|
||
include ph_kannada
|
||
|
||
phonemetable ml hi_base
|
||
include ph_malayalam
|
||
|
||
phonemetable gu hi_base
|
||
include ph_gujarati
|
||
|
||
phonemetable mr hi_base
|
||
include ph_marathi
|
||
|
||
phonemetable kok hi_base
|
||
include ph_konkani
|
||
|
||
phonemetable te hi_base
|
||
include ph_telugu
|
||
|
||
phonemetable si hi_base
|
||
include ph_sinhala
|
||
|
||
phonemetable bn hi_base
|
||
include ph_bengali
|
||
|
||
phonemetable as bn
|
||
include ph_assamese
|
||
|
||
phonemetable or bn
|
||
include ph_oriya
|
||
|
||
phonemetable bpy bn
|
||
include ph_manipuri
|
||
|
||
phonemetable sk pl
|
||
include ph_slovak
|
||
|
||
phonemetable bg pl
|
||
include ph_bulgarian
|
||
|
||
phonemetable sl pl
|
||
include ph_slovenian
|
||
|
||
phonemetable th shn
|
||
|
||
phonemetable cs sk
|
||
include ph_czech
|
||
|
||
phonemetable hr sk
|
||
include ph_croatian
|
||
|
||
phonemetable mk hr
|
||
include ph_macedonian
|
||
|
||
phonemetable sr hr
|
||
include ph_serbian
|
||
|
||
phonemetable ru-lv ru
|
||
include ph_russian_lv
|
||
|
||
phonemetable uk ru
|
||
|
||
phonemetable az tr
|
||
include ph_azerbaijani
|
||
|
||
phonemetable cv tr
|
||
include ph_chuvash
|
||
|
||
phonemetable ug tr
|
||
include ph_uyghur
|
||
|
||
phonemetable pt-pt pt
|
||
include ph_portugal
|
||
|
||
phonemetable vi-hue vi
|
||
include ph_vietnam_hue
|
||
|
||
phonemetable vi-sgn vi
|
||
include ph_vietnam_sgn
|
||
|
||
phonemetable sd ur
|
||
include ph_sindhi
|
||
|
||
phonemetable nog kk
|
||
|
||
phonemetable uz kk
|
||
include ph_uzbek
|
||
|
||
phonemetable qdb en
|
||
include ph_langbelta
|