From 976848d6be582ffb59d40bfcbb20b0a3b6c22d1a Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sun, 1 Jan 2017 12:02:30 +0000 Subject: [PATCH] jp: voiced Hiragana support --- dictsource/jp_rules | 59 +++++++++++++++++++++++++++- phsource/ph_ipa | 93 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 149 insertions(+), 3 deletions(-) diff --git a/dictsource/jp_rules b/dictsource/jp_rules index 429e3f7c..6cd88f80 100644 --- a/dictsource/jp_rules +++ b/dictsource/jp_rules @@ -15,6 +15,35 @@ // You should have received a copy of the GNU General Public License // along with this program; if not, see: . +.replace + // Decompose combined Unicode Hiragana glyphs (base + sound mark) + が が // ga: U+304C => U+304B U+3099 + ぎ ぎ // gi: U+304E => U+304D U+3099 + ぐ ぐ // gu: U+3050 => U+304F U+3099 + げ げ // ge: U+3052 => U+3051 U+3099 + ご ご // go: U+3054 => U+3053 U+3099 + ざ ざ // za: U+3056 => U+3055 U+3099 + じ じ // ji: U+3058 => U+3057 U+3099 + ず ず // zu: U+305A => U+3059 U+3099 + ぜ ぜ // ze: U+305C => U+305B U+3099 + ぞ ぞ // zo: U+305E => U+305D U+3099 + だ だ // da: U+3060 => U+305F U+3099 + ぢ ぢ // ji: U+3062 => U+3061 U+3099 (obsolete) + づ づ // zu: U+3064 => U+3063 U+3099 + で で // de: U+3066 => U+3065 U+3099 + ど ど // do: U+3068 => U+3067 U+3099 + ば ば // ba: U+3070 => U+305F U+3099 + ぱ ぱ // pa: U+3071 => U+305F U+309A + び び // bi: U+3073 => U+3072 U+3099 + ぴ ぴ // pi: U+3074 => U+3072 U+309A + ぶ ぶ // bu: U+3076 => U+3075 U+3099 + ぷ ぷ // pu: U+3077 => U+3075 U+309A + べ べ // be: U+3079 => U+3078 U+3099 + ぺ ぺ // pe: U+307A => U+3078 U+309A + ぼ ぼ // bo: U+307C => U+307B U+3099 + ぽ ぽ // po: U+307D => U+307B U+309A + ゔ ゔ // vu: U+3094 => U+3046 U+3099 (obsolete) + // Hiragana .group あ @@ -25,6 +54,7 @@ .group う う M_Bo // u + ゔ vM_Bo // vu .group え え e_o // e @@ -34,48 +64,63 @@ .group か か ka_" // ka + が ga_" // ga .group き き ki // ki + ぎ gi // gi .group く く kM_Bo // ku + ぐ gM_Bo // gu .group け け ke_o // ke + げ ge_o // ge .group こ こ ko_o // ko + ご go_o // go .group さ さ sa_" // sa + ざ za_" // za .group し し s\\i // shi + じ d_z\\i // ji .group す す sM_Bo // su + ず zM_Bo // zu .group せ せ se_o // se + ぜ ze_o // ze .group そ そ so_o // so + ぞ zo_o // zo .group た た ta_" // ta + だ da_" // da .group ち ち t_s\\i // chi + ぢ d_z\\i // ji .group つ つ t_sM_Bo // tsu + づ zM_Bo // zu .group て て te_o // te + で de_o // de .group と と to_o // to + ど do_o // do .group な な na_" // na @@ -94,18 +139,28 @@ .group は は ha_" // ha + ば ba_" // ba + ぱ pa_" // pa .group ひ ひ Ci // hi + び bi // bi + ぴ pi // pi .group ふ ふ p\\M_Bo // fu + ぶ bM_Bo // bu + ぷ pM_Bo // pu .group へ へ he_o // he + べ be_o // be + ぺ pe_o // pe .group ほ ほ ho_o // ho + ぼ bo_o // bo + ぽ po_o // po .group ま ま ma_" // ma @@ -150,10 +205,10 @@ わ wa_" // wa .group ゐ - ゐ i // wi (archaic) + ゐ i // wi (obsolete) .group ゑ - ゑ we_o // we (archaic) + ゑ we_o // we (obsolete) .group を を o_o // wo diff --git a/phsource/ph_ipa b/phsource/ph_ipa index 8b70d815..c85e647c 100644 --- a/phsource/ph_ipa +++ b/phsource/ph_ipa @@ -65,7 +65,7 @@ phoneme a_" FMT(vowel/a) endphoneme -// Consonants ---------- +// Consonants ///////////////////////////////////////////////////////////////// phoneme m vcd blb nasal @@ -107,8 +107,46 @@ endphoneme // Plosives +phoneme p + vls blb stop + 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 + + WAV(ustop/p) +endphoneme + +phoneme b + vcd blb stop + voicingswitch p + Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk + lengthmod 5 + + 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 t vls alv stop + 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 @@ -116,8 +154,19 @@ phoneme t WAV(ustop/t, 90) endphoneme +phoneme d + vcd alv stop + 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 + + FMT(d/d) addWav(x/d) +endphoneme + phoneme k vls vel stop + 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 @@ -125,10 +174,21 @@ phoneme k WAV(ustop/k) endphoneme +phoneme g + vcd vel stop + 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 + + FMT(g/g) addWav(x/g2, 150) +endphoneme + // Sibilant Affricates phoneme t_s vls alv afr sibilant + ipa ts lengthmod 2 Vowelin f1=0 f2=1700 -300 300 f3=-100 80 Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 @@ -137,6 +197,7 @@ endphoneme phoneme t_s\\ vls pal afr sibilant palatal + voicingswitch d_z\\ ipa tɕ lengthmod 2 Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 @@ -144,10 +205,22 @@ phoneme t_s\\ WAV(ustop/ts_pzd) endphoneme +phoneme d_z\\ + vcd pla afr sibilant palatal + voicingswitch t_s\\ + 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 + + FMT(dzh/dzh) addWav(x/dz_pzd) +endphoneme + // Sibilant Fricatives phoneme s vls alv frc sibilant + 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 @@ -155,6 +228,15 @@ phoneme s WAV(ufric/s) endphoneme +phoneme z + vcd alv frc sibilant + voicingswitch s + lengthmod 6 + Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50 + + FMT(voc/z) addWav(ufric/s_, 85) +endphoneme + phoneme s\\ vls pal frc sibilant palatal ipa ɕ @@ -175,6 +257,15 @@ phoneme p\\ WAV(ufric/f) endphoneme +phoneme v + vcd lbd frc + lengthmod 6 + Vowelin f1=0 f2=1000 -300 -200 f3=-300 100 + Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 + + FMT(voc/v) addWav(vocw/v) +endphoneme + phoneme C vls pal frc palatal ipa ç