//******************************************************************* // TONES //******************************************************************* //******************************************************************* // REFERENCE MATERIALS //******************************************************************* // Collaborative Documentation and Revitalization of Cherokee Tone // https://scholarspace.manoa.hawaii.edu/bitstream/handle/10125/24630/herrick.pdf // Tones fall within a range of 80–140 H (pg 21, footnote) // the mid tone (2) starts at 104 Hz (P1) and falls approximately 2 Hz at of the next four points ending at 96 Hz at P5. // // Building Tone Resources for Second Language Learners from Phonetic Documentation // https://scholarspace.manoa.hawaii.edu/bitstream/10125/24737/hirata-edds_herrick.pdf // // Pitch contours taken from Praat chart, pg 295 // // (¹) low fall: 106, 102, 97, 92, 88 // (²) low/mid: 104, 100, 98, 97, 96 // (³) high: 108, 109, 110, 111, 112 // (⁴) super high: 109, 113, 118, 122, 127 // (²³) rising: 97, 98, 101, 104, 109 // (³²) falling: 122, 120, 115, 106, 97 // A REFERENCE GRAMMAR OF OKLAHOMA CHEROKEE (2008) // Short vowels preceding /h/ are devoiced, pg 45 (how to do this espeak-ng?) // Word final vowels are nasalized // Vowels are nasalized after a nasal consonant // Vowels are either long or short; a long vowel takes // approximately twice as long to pronounce as its // short counterpart., pg 46 //int pitch1 = 0; //int pitch2 = 0; //int pitch_env = 0; //int amp_env = 0; //IF (pitch1 >= pitch2) the pitch values get swapped (???) phoneme 1 // low fall (¹), long vowels only stress ipa ˨˩ Tone(28, 7, envelope/chr_fall21, NULL) //need a pitch contour of 106-88 for a endphoneme phoneme 2 // low (²) stress ipa ˨ Tone(27, 16, envelope/chr_level2, NULL) //need a pitch contour of 104-96 for a endphoneme phoneme 23 // rising (²³) stress ipa ˨˧ Tone(16, 30, envelope/chr_rise23, NULL) //need a pitch contour of 97-109 for a endphoneme phoneme 32 // falling (³²) stress ipa ˧˨ Tone(45, 15, envelope/chr_fall32, NULL) //need a pitch contour of 122-97 for a endphoneme phoneme 3 // high (³) stress ipa ˧ //Tone(109, 116, envelope/p_rise, NULL) //need a pitch contour of 108-112 for a Tone(29, 35, envelope/chr_level3, NULL) //need a pitch contour of 108-112 for a endphoneme phoneme 4 // extra high rise (⁴) stress ipa ˧˦ Tone(29, 52, envelope/chr_rise4, NULL) //need a pitch contour of 109-127 for a endphoneme phoneme 43 // extra high fall (⁴³) - end of word tone stress ipa ˦˧ //need a pitch contour of 122-75 for a~ Tone(44, 0, envelope/chr_fall43, NULL) endphoneme //from phonemes phoneme : // lengthen previous vowel by "length" virtual length 300 endphoneme phoneme 0 vwl starttype #o endtype #o length 300 FMT(vowel/0_3) endphoneme phoneme 0` vwl starttype #o endtype #o length 100 FMT(vowel/0_3) endphoneme phoneme 0~ vwl starttype #o endtype #o length 300 FMT(vnasal/aa_n4) endphoneme phoneme 0~` vwl starttype #o endtype #o length 100 FMT(vnasal/aa_n4) endphoneme phoneme e vwl starttype #e endtype #e length 300 FMT(vowel/e_mid) endphoneme phoneme e` vwl starttype #e endtype #e length 100 FMT(vowel/e_mid) endphoneme phoneme e~ vwl starttype #e endtype #e length 300 FMT(vnasal/ee_n2) endphoneme phoneme e~` vwl starttype #e endtype #e length 100 FMT(vnasal/ee_n2) endphoneme phoneme i vwl starttype #i endtype #i length 300 //IfNextVowelAppend(;) FMT(vowel/i) endphoneme phoneme i` vwl starttype #i endtype #i length 100 //IfNextVowelAppend(;) FMT(vowel/i) endphoneme phoneme i~ vwl starttype #i endtype #i length 300 //IfNextVowelAppend(;) FMT(vnasal/i_n) endphoneme phoneme i~` vwl starttype #i endtype #i length 100 //IfNextVowelAppend(;) FMT(vnasal/i_n) endphoneme // o, ọ phoneme o vwl starttype #o endtype #o length 300 FMT(vowel/o) endphoneme phoneme o` vwl starttype #o endtype #o length 100 FMT(vowel/o) endphoneme // o, ọ, final word vowel phoneme o~ vwl starttype #o endtype #o length 300 FMT(vnasal/o_n) endphoneme phoneme o~` vwl starttype #o endtype #o length 100 FMT(vnasal/o_n) endphoneme // u, ụ //from ph_base2 phoneme u vwl starttype #u endtype #u length 300 FMT(vowel/u_bck) endphoneme phoneme u` vwl starttype #u endtype #u length 100 FMT(vowel/u_bck) endphoneme // u, ụ, final word vowel phoneme u~ vwl starttype #u endtype #u length 300 FMT(vnasal/u_n) endphoneme phoneme u~` vwl starttype #u endtype #u length 100 FMT(vnasal/u_n) endphoneme //ṿ, v phoneme V~ vwl lng starttype #@ endtype #@ // vwl lng starttype #@ endtype #@ // length 300 // FMT(vnasal/V_n, 100) ChangePhoneme(&~) endphoneme phoneme &~ vwl starttype #@ endtype #@ ipa ɐU+0303 length 180 IF thisPh(isFinalVowel) THEN FMT(vnasal/a#_n2) ELSE FMT(vnasal/a#_n) ENDIF endphoneme phoneme V~` vwl lng starttype #@ endtype #@ length 100 FMT(vnasal/V_n) endphoneme phoneme h vls glt apr ipa h IF prevPhW(isVowel) AND nextPhW(isNotVowel) THEN length 25 lengthmod 1 ENDIF IF nextPhW(#@) THEN length 50 WAV(h/h@, 70) ELIF nextPhW(#a) THEN WAV(h/ha) ELIF nextPhW(#e) THEN length 60 WAV(h/he, 75) ELIF nextPhW(#i) THEN length 75 WAV(h/hi) ELIF nextPhW(#o) THEN length 75 WAV(h/ho) ELIF nextPhW(#u) THEN length 80 WAV(h/hu) ELSE length 60 WAV(h/h_) // no vowel following ENDIF endphoneme phoneme h` vls glt apr ipa h length 10 WAV(h/h_) // no vowel following 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 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 //addWav(ustop/k_) FMT(g/g_) addWav(ustop/k_) //addWav(x/g_) ELSE //addWav(ustop/k_asp) FMT(g/g) addWav(ustop/k_asp) //addWav(x/g) ENDIF 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 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 dZ // **j**udge ipa dZ 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/xdz_pzd, 250) ENDIF IF nextPh(isPause2) THEN FMT(dzh/dz_pzd_, 250) addWav(x/dz_pzd_, 250) ENDIF FMT(dzh/dz_pzd, 250) addWav(x/dz_pzd, 250) endphoneme phoneme n vcd alv nas Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk Vowelin rate 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 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 w liquid lengthmod 7 starttype #u IF nextPh(isVowel) THEN NextVowelStarts VowelStart(w/w2) 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/w2) ELSEIF prevPhW(h) THEN // none, [hw] ELSE FMT(w/w2) //FMT(w/_w) ENDIF ELSE // no vowel follows Vowelout len=50 IF prevPh(#i) THEN FMT(w/iw_) ENDIF FMT(w/w_) ENDIF endphoneme