diff --git a/dictsource/chr_rules b/dictsource/chr_rules index 63ef3340..3f7a5377 100644 --- a/dictsource/chr_rules +++ b/dictsource/chr_rules @@ -42,109 +42,109 @@ //CED pg ix .group a //long - a A:: - L02) a A~: + a 0: + L02) a 0~: //final word vowels are short, nasal, and have a highfall tone - a (_ A~43 - L02) a (_ A~43 - axb (_ A~1 - axc (_ A~2 - axd (_ A~3 - axf (_ A~4 + a (_ 0~43 + L02) a (_ 0~43 + axb (_ 0~1 + axc (_ 0~2 + axd (_ 0~3 + axf (_ 0~4 - a (L03_ A~43 - a (L03L03_ A~43 - a (L03L03L03_ A~43 + a (L03_ 0~43 + a (L03L03_ 0~43 + a (L03L03L03_ 0~43 - a (L03L01 A: - a (L03L03L01 A: - a (L03L03L03L01 A: + a (L03L01 0 + a (L03L03L01 0 + a (L03L03L03L01 0 - L02) a (L03L01 A~ - L02) a (L03L03L01 A~ - L02) a (L03L03L03L01 A~ + L02) a (L03L01 0~ + L02) a (L03L03L01 0~ + L02) a (L03L03L03L01 0~ //short followed by s has an h sound added, see CED pg x, footnote. - as (L01 A:hs - as (L03L01 A:hs - as (L03L03L01 A:hs - as (L03L03L03L01 A:hs + as (L01 0h`s + as (L03L01 0h`s + as (L03L03L01 0h`s + as (L03L03L03L01 0h`s - L02) as (L01 A~hs - L02) as (L03L01 A~hs - L02) as (L03L03L01 A~hs - L02) as (L03L03L03L01 A~hs + L02) as (L01 0~h`s + L02) as (L03L01 0~h`s + L02) as (L03L03L01 0~h`s + L02) as (L03L03L03L01 0~h`s .group e - e E: - L02) e E~: + e e: + L02) e e~: - e (L03_ E43 - e (L03L03_ E43 - e (L03L03L03_ E43 - e (L03L03L03L03_ E43 + e (L03_ e43 + e (L03L03_ e43 + e (L03L03L03_ e43 + e (L03L03L03L03_ e43 //final word vowels are short, nasal, and have a highfall tone - e (_ E~43 - L02) e (_ E~43 - exb (_ E~1 - exc (_ E~2 - exd (_ E~3 - exf (_ E~4 + e (_ e~43 + L02) e (_ e~43 + exb (_ e~1 + exc (_ e~2 + exd (_ e~3 + exf (_ e~4 - e (L03L01 E - e (L03L03L01 E - e (L03L03L03L01 E + e (L03L01 e + e (L03L03L01 e + e (L03L03L03L01 e - L02) e (L03L01 E~ - L02) e (L03L03L01 E~ - L02) e (L03L03L03L01 E~ + L02) e (L03L01 e~ + L02) e (L03L03L01 e~ + L02) e (L03L03L03L01 e~ - es (L01 Ehs - es (L03L01 Ehs - es (L03L03L01 Ehs - es (L03L03L03L01 Ehs + es (L01 eh`s + es (L03L01 eh`s + es (L03L03L01 eh`s + es (L03L03L03L01 eh`s - L02) es (L01 E~hs - L02) es (L03L01 E~hs - L02) es (L03L03L01 E~hs - L02) es (L03L03L03L01 E~hs + L02) es (L01 e~h`s + L02) es (L03L01 e~h`s + L02) es (L03L03L01 e~h`s + L02) es (L03L03L03L01 e~h`s .group i - i I: - L02) i I~: + i i: + L02) i i~: //final word vowels are short, nasal, and have a highfall tone - i (_ I~43 - L02) i (_ I~43 - ixb (_ I~1 - ixc (_ I~2 - ixd (_ I~3 - ixf (_ I~4 + i (_ i~43 + L02) i (_ i~43 + ixb (_ i~1 + ixc (_ i~2 + ixd (_ i~3 + ixf (_ i~4 - i (L03_ I43 - i (L03L03_ I43 - i (L03L03L03_ I43 + i (L03_ i43 + i (L03L03_ i43 + i (L03L03L03_ i43 - i (L03L01 I - i (L03L03L01 I - i (L03L03L03L01 I + i (L03L01 i + i (L03L03L01 i + i (L03L03L03L01 i - L02) i (L03L01 I~ - L02) i (L03L03L01 I~ - L02) i (L03L03L03L01 I~ + L02) i (L03L01 i~ + L02) i (L03L03L01 i~ + L02) i (L03L03L03L01 i~ - is (L01 Ihs - is (L03L01 Ihs - is (L03L03L01 Ihs - is (L03L03L03L01 Ihs + is (L01 ih`s + is (L03L01 ih`s + is (L03L03L01 ih`s + is (L03L03L03L01 ih`s - L02) is (L01 I~hs - L02) is (L03L01 I~hs - L02) is (L03L03L01 I~hs - L02) is (L03L03L03L01 I~hs + L02) is (L01 i~h`s + L02) is (L03L01 i~h`s + L02) is (L03L03L01 i~h`s + L02) is (L03L03L03L01 i~h`s .group o o o: @@ -171,13 +171,13 @@ L02) o (L03L03L01 o~ L02) o (L03L03L03L01 o~ - os (L01 ohs - os (L03L01 ohs - os (L03L03L01 ohs + os (L01 oh`s + os (L03L01 oh`s + os (L03L03L01 oh`s - L02) os (L01 o~hs - L02) os (L03L01 o~hs - L02) os (L03L03L01 o~hs + L02) os (L01 o~h`s + L02) os (L03L01 o~h`s + L02) os (L03L03L01 o~h`s .group u u u: @@ -204,74 +204,74 @@ L02) u (L03L03L01 u~ L02) u (L03L03L03L01 u~ - us (L01 uhs - us (L03L01 uhs - us (L03L03L01 uhs + us (L01 uh`s + us (L03L01 uh`s + us (L03L03L01 uh`s - L02) us (L01 u~hs - L02) us (L03L01 u~hs - L02) us (L03L03L01 u~hs + L02) us (L01 u~h`s + L02) us (L03L01 u~h`s + L02) us (L03L03L01 u~h`s .group v - v W~: + v V~: - v (L03_ W~43 - v (L03L03_ W~43 - v (L03L03L03_ W~43 + v (L03_ V~43 + v (L03L03_ V~43 + v (L03L03L03_ V~43 - v (_ W~43 - vxb (_ W~1 - vxc (_ W~2 - vxd (_ W~3 - vxf (_ W~4 + v (_ V~43 + vxb (_ V~1 + vxc (_ V~2 + vxd (_ V~3 + vxf (_ V~4 - v (L03L01 W~ - v (L03L03L01 W~ - v (L03L03L03L01 W~ + v (L03L01 V~ + v (L03L03L01 V~ + v (L03L03L03L01 V~ - vs (L01 W~hs - vs (L03L01 W~hs - vs (L03L03L01 W~hs + vs (L01 V~h`s + vs (L03L01 V~h`s + vs (L03L03L01 V~h`s .group ạ - ạ A: - L02) ạ A~ - ạ (_ A~43 - ạs A~hs - L02) ạs A~hs + ạ 0 + L02) ạ 0~ + ạ (_ 0~43 + ạs 0~h`s + L02) ạs 0~h`s .group ẹ - ẹ E - L02) ẹ E~ - ẹ (_ E~43 - ẹs Ehs - L02) ẹs E~hs + ẹ e + L02) ẹ e~ + ẹ (_ e~43 + ẹs eh`s + L02) ẹs e~h`s .group ị - ị I - L02) ị I~ - ị (_ I~43 - ịs Ihs - L02) ịs I~hs + ị i + L02) ị i~ + ị (_ i~43 + ịs ih`s + L02) ịs i~h`s .group ọ ọ o L02) ọ o~ ọ (_ o~43 - ọs ohs - L02) ọs o~hs + ọs oh`s + L02) ọs o~h`s .group ụ ụ u L02) ụ u~ ụ (_ u~43 - ụs uhs - L02) ụs u~hs + ụs uh`s + L02) ụs u~h`s .group ṿ - ṿ W~ - ṿ W~43 - ṿs W~hs + ṿ V~ + ṿ V~43 + ṿs V~h`s .group ch ch tS diff --git a/espeak-ng-data/lang/iro/chr b/espeak-ng-data/lang/iro/chr index ec91aca6..d0ef6f2e 100644 --- a/espeak-ng-data/lang/iro/chr +++ b/espeak-ng-data/lang/iro/chr @@ -1,21 +1,28 @@ name Cherokee //https://github.com/espeak-ng/espeak-ng/blob/master/docs/voices.md -language chr 5 +language chr-US-Qaaa-x-west 5 maintainer Michael Conrad status testing + +pitch 90 160 + voicing 100 -speed 73 -words 0 1 + +consonants 100 100 + +speed 100 + +words 2 1 + phonemes chr + //stress on all syllables to simulate stress on no syllables stressRule 9 -intonation 3 +stressLength 225 225 225 225 225 225 225 225 //all vowels the same length regardless of stress +stressAmp 20 20 20 20 20 20 20 20 //all vowels the same strength regardless of marked stress + +intonation 1 //pitch 30 90 -pitch 90 160 tunes chrs chrc chrq chre -stressAmp 8 8 8 8 8 8 8 8 //stress all vowels the same -stressLength 180 180 180 180 180 180 180 180 //stress all vowels the same - -consonants 150 150 \ No newline at end of file diff --git a/phsource/envelope/chr_fall21 b/phsource/envelope/chr_fall21 new file mode 100644 index 00000000..c992a07d --- /dev/null +++ b/phsource/envelope/chr_fall21 @@ -0,0 +1,6 @@ +ENVELOPE +0 100 +25 78 +50 50 +75 22 +100 0 \ No newline at end of file diff --git a/phsource/envelope/chr_fall32 b/phsource/envelope/chr_fall32 new file mode 100644 index 00000000..7d7a62e4 --- /dev/null +++ b/phsource/envelope/chr_fall32 @@ -0,0 +1,6 @@ +ENVELOPE +0 100 +25 92 +50 72 +75 36 +100 0 \ No newline at end of file diff --git a/phsource/envelope/chr_fall43 b/phsource/envelope/chr_fall43 new file mode 100644 index 00000000..26df6206 --- /dev/null +++ b/phsource/envelope/chr_fall43 @@ -0,0 +1,7 @@ +ENVELOPE +0 100 +20 98 +40 89 +60 75 +80 36 +100 0 \ No newline at end of file diff --git a/phsource/envelope/chr_level2 b/phsource/envelope/chr_level2 new file mode 100644 index 00000000..6639c431 --- /dev/null +++ b/phsource/envelope/chr_level2 @@ -0,0 +1,6 @@ +ENVELOPE +0 100 +25 50 +50 25 +75 13 +100 0 \ No newline at end of file diff --git a/phsource/envelope/chr_level3 b/phsource/envelope/chr_level3 new file mode 100644 index 00000000..8e56a9d2 --- /dev/null +++ b/phsource/envelope/chr_level3 @@ -0,0 +1,6 @@ +ENVELOPE +0 0 +25 25 +50 50 +75 75 +100 100 \ No newline at end of file diff --git a/phsource/envelope/chr_rise23 b/phsource/envelope/chr_rise23 new file mode 100644 index 00000000..6461300d --- /dev/null +++ b/phsource/envelope/chr_rise23 @@ -0,0 +1,6 @@ +ENVELOPE +0 0 +25 8 +50 33 +75 58 +100 100 \ No newline at end of file diff --git a/phsource/envelope/chr_rise4 b/phsource/envelope/chr_rise4 new file mode 100644 index 00000000..4fc67b13 --- /dev/null +++ b/phsource/envelope/chr_rise4 @@ -0,0 +1,6 @@ +ENVELOPE +0 0 +25 22 +50 50 +75 72 +100 100 \ No newline at end of file diff --git a/phsource/ph_cherokee b/phsource/ph_cherokee index ac4cca01..19769939 100644 --- a/phsource/ph_cherokee +++ b/phsource/ph_cherokee @@ -39,123 +39,153 @@ phoneme 1 // low fall (¹), long vowels only stress ipa ˨˩ - Tone(28, 7, envelope/p_fall, NULL) //need a pitch contour of 106-88 for a + Tone(28, 7, envelope/chr_fall21, NULL) //need a pitch contour of 106-88 for a endphoneme - phoneme 2 // low (²) stress ipa ˨ - Tone(26, 16, envelope/p_fall, NULL) //need a pitch contour of 104-96 for a + Tone(27, 16, envelope/chr_level2, NULL) //need a pitch contour of 104-96 for a endphoneme phoneme 23 // rising (²³) stress ipa ˨˧ - Tone(15, 29, envelope/p_rise, NULL) //need a pitch contour of 97-109 for a + Tone(16, 30, envelope/chr_rise23, NULL) //need a pitch contour of 97-109 for a endphoneme phoneme 32 // falling (³²) stress ipa ˧˨ - Tone(46, 16, envelope/p_fall, NULL) //need a pitch contour of 122-97 for a + 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, 34, 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, 50, envelope/p_rise, NULL) //need a pitch contour of 109-127 for a + 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(45, 0, envelope/p_fall, NULL) + Tone(44, 0, envelope/chr_fall43, NULL) endphoneme -//******************************************************************* -// LANGUAGE SPECIFIC CONSONANTS (PLOSIVES/STOPS) -//******************************************************************* -//none. - -//******************************************************************* -// LANGUAGE SPECIFIC VOWELS -//******************************************************************* - //from phonemes phoneme : // lengthen previous vowel by "length" virtual - length 175 + length 300 endphoneme -// ạ, a -//from ph_en -phoneme A: - vwl starttype #a endtype #a - length 175 - FMT(vowel/aa_2) +phoneme 0 + vwl starttype #o endtype #o + length 300 + FMT(vowel/0_3) endphoneme -// ạ, a, end of word vowel -//from ph_english -phoneme A~ - vwl starttype #a endtype #a - length 175 - FMT(vnasal/aa_n2) +phoneme 0` + vwl starttype #o endtype #o + length 100 + FMT(vowel/0_3) endphoneme -// e, ẹ -//from ph_base2 -phoneme E - vwl starttype #e endtype #e - length 175 - FMT(vowel/ee_1) +phoneme 0~ + vwl starttype #o endtype #o + length 300 + FMT(vnasal/aa_n4) endphoneme -// e, ẹ, final word vowel -//from ph_konkani -phoneme E~ - vwl starttype #e endtype #e - length 175 +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 -// i, ị -//from ph_en -phoneme I - vwl starttype #i endtype #i - length 175 - FMT(vowel/ii_2) +phoneme e~` + vwl starttype #e endtype #e + length 100 + FMT(vnasal/ee_n2) endphoneme -// i, ị, final word vowel -//from ph_konkani -phoneme I~ - vwl starttype #i endtype #i - length 175 - FMT(vnasal/ii_n) +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, ọ -//from ph_base2 phoneme o vwl starttype #o endtype #o - length 175 + 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 175 + length 300 + FMT(vnasal/o_n) +endphoneme + +phoneme o~` + vwl starttype #o endtype #o + + length 100 FMT(vnasal/o_n) endphoneme @@ -163,59 +193,210 @@ endphoneme //from ph_base2 phoneme u vwl starttype #u endtype #u - length 175 + 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 175 + length 300 + FMT(vnasal/u_n) +endphoneme + +phoneme u~` + vwl starttype #u endtype #u + length 100 FMT(vnasal/u_n) endphoneme //ṿ, v -//from ph_french -phoneme W~ - vwl starttype #@ endtype #@ - length 175 - FMT(vnasal/W_n) +phoneme V~ + vwl lng starttype #@ endtype #@ + length 300 + FMT(vnasal/V_n, 100) endphoneme -// fix specific consonents to last long enough to be heard -phoneme lxx - import_phoneme base2/l - length 75 - Tone(105, 93, envelope/p_fall, NULL) +phoneme V~` + vwl lng starttype #@ endtype #@ + length 100 + FMT(vnasal/V_n) endphoneme -phoneme mxx - import_phoneme base2/m - length 75 - Tone(105, 93, envelope/p_fall, NULL) +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 nxx - import_phoneme base2/n - length 75 - Tone(105, 93, envelope/p_fall, NULL) +phoneme h` + vls glt apr + ipa h + length 10 + WAV(h/h_) // no vowel following endphoneme -phoneme wxx - import_phoneme base2/w - length 175 - Tone(105, 93, envelope/p_fall, NULL) +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 jxx - import_phoneme base1/j - length 75 - Tone(105, 93, envelope/p_fall, NULL) +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 hxx - import_phoneme base1/h - length 75 - Tone(105, 93, envelope/p_fall, NULL) - //lengthmod 1 -endphoneme \ No newline at end of file +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(@-) THEN + WAV(ustop/t_dnt, 50) + ELSE + WAV(ustop/t_dnt, 100) + ENDIF +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