123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473 |
- //*******************************************************************
- // 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
|