// 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 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 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 fo base1 include ph_faroese 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 lb base1 include ph_luxembourgish 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 ti base1 include ph_tigrinya phonemetable tn base1 include ph_setswana phonemetable tt base1 include ph_tatar phonemetable uk base1 include ph_ukrainian phonemetable vi base1 include ph_vietnam phonemetable yue base1 include ph_yue // *** Tables extending base2 *** phonemetable be base2 include ph_belarusian 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 mto base2 include ph_mixe_mto 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 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-us-nyc en include ph_english_us_nyc 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 ca-nw ca include ph_catalan_nw phonemetable ca-va ca include ph_catalan_va phonemetable ca-ba ca include ph_catalan_ba phonemetable an es include ph_aragon phonemetable ht fr include ph_haitian phonemetable hi hi_base include ph_hindi 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 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 phonemetable ms id phonemetable kaa kk include ph_karakalpak