From 51ba95dab48e2750930ba100abeadee2f9c05d80 Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Sun, 1 Jan 2017 09:59:41 +0000 Subject: [PATCH] jp: basic Hiragana support (the "fifty sounds") --- dictsource/jp_list | 1 + dictsource/jp_rules | 162 ++++++++++++++++++++++++ espeak-ng-data/voices/jpx/jp | 6 + phsource/ph_ipa | 236 ++++++++++++++++++++++++++++++++++- phsource/phonemes | 6 +- 5 files changed, 407 insertions(+), 4 deletions(-) create mode 100644 dictsource/jp_list create mode 100644 dictsource/jp_rules create mode 100644 espeak-ng-data/voices/jpx/jp diff --git a/dictsource/jp_list b/dictsource/jp_list new file mode 100644 index 00000000..50badbed --- /dev/null +++ b/dictsource/jp_list @@ -0,0 +1 @@ +// Japanese diff --git a/dictsource/jp_rules b/dictsource/jp_rules new file mode 100644 index 00000000..429e3f7c --- /dev/null +++ b/dictsource/jp_rules @@ -0,0 +1,162 @@ +// Japanese +// +// Copyright (C) 2017 Reece H. Dunn +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, see: . + +// Hiragana + +.group あ + あ a_" // a + +.group い + い i // i + +.group う + う M_Bo // u + +.group え + え e_o // e + +.group お + お o_o // o + +.group か + か ka_" // ka + +.group き + き ki // ki + +.group く + く kM_Bo // ku + +.group け + け ke_o // ke + +.group こ + こ ko_o // ko + +.group さ + さ sa_" // sa + +.group し + し s\\i // shi + +.group す + す sM_Bo // su + +.group せ + せ se_o // se + +.group そ + そ so_o // so + +.group た + た ta_" // ta + +.group ち + ち t_s\\i // chi + +.group つ + つ t_sM_Bo // tsu + +.group て + て te_o // te + +.group と + と to_o // to + +.group な + な na_" // na + +.group に + に ni // ni + +.group ぬ + ぬ nM_Bo // nu + +.group ね + ね ne_o // ne + +.group の + の no_o // no + +.group は + は ha_" // ha + +.group ひ + ひ Ci // hi + +.group ふ + ふ p\\M_Bo // fu + +.group へ + へ he_o // he + +.group ほ + ほ ho_o // ho + +.group ま + ま ma_" // ma + +.group み + み mi // mi + +.group む + む mM_Bo // mu + +.group め + め me_o // me + +.group も + も mo_o // mo + +.group や + や ja_" // ya + +.group ゆ + ゆ jM_Bo // yu + +.group よ + よ jo_o // yo + +.group ら + ら r`a_" // ra + +.group り + り r`i // ri + +.group る + る rM_Bo // ru + +.group れ + れ re_o // re + +.group ろ + ろ ro_o // ro + +.group わ + わ wa_" // wa + +.group ゐ + ゐ i // wi (archaic) + +.group ゑ + ゑ we_o // we (archaic) + +.group を + を o_o // wo + +.group ん + ん n // n diff --git a/espeak-ng-data/voices/jpx/jp b/espeak-ng-data/voices/jpx/jp new file mode 100644 index 00000000..930bd401 --- /dev/null +++ b/espeak-ng-data/voices/jpx/jp @@ -0,0 +1,6 @@ +language jp +name japanese +phonemes ipa +gender male + +intonation 4 diff --git a/phsource/ph_ipa b/phsource/ph_ipa index 50718613..8b70d815 100644 --- a/phsource/ph_ipa +++ b/phsource/ph_ipa @@ -1,7 +1,241 @@ // International Phonetic Alphabet: Narrow Transcription // -// Copyright (C) 2016 Reece H. Dunn +// Copyright (C) 2017 Reece H. Dunn // +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, see: . + // This is using the X-SAMPA transcriptions // (http://www.phon.ucl.ac.uk/home/sampa/x-sampa.htm). +// Vowels ///////////////////////////////////////////////////////////////////// + +// Close Vowels + +phoneme i + vowel starttype #i endtype #i + length 160 + + FMT(vowel/i) +endphoneme + +phoneme M_Bo // M_B_o + vowel starttype #u endtype #u + ipa ɯᵝ + length 160 + + FMT(vowel/u_bck) +endphoneme + +// Mid Vowels + +phoneme e_o + vowel starttype #e endtype #e + ipa e̞ + length 160 + + FMT(vowel/e_8) +endphoneme + +phoneme o_o + vowel starttype #o endtype #o + ipa o̞ + length 160 + + FMT(vowel/oo_3) +endphoneme + +// Open Vowels + +phoneme a_" + vowel starttype #a endtype #a + ipa ä + length 160 + + FMT(vowel/a) +endphoneme + +// Consonants ---------- + +phoneme m + vcd blb nasal + Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk + lengthmod 4 + + NextVowelStarts + VowelStart(m/m@) + VowelStart(m/ma) + VowelStart(m/me) + VowelStart(m/mi) + VowelStart(m/mo) + VowelStart(m/mu) + EndSwitch + + IF nextPh(isNotVowel) THEN + FMT(m/m_) + ENDIF +endphoneme + +phoneme n + vcd alv nasal + Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk + lengthmod 4 + + NextVowelStarts + VowelStart(n/n@) + VowelStart(n/na) + VowelStart(n/ne) + VowelStart(n/ni) + VowelStart(n/no) + VowelStart(n/nu) + EndSwitch + + IF nextPh(isNotVowel) THEN + FMT(n/n_) + ENDIF +endphoneme + +// Plosives + +phoneme t + vls alv stop + lengthmod 2 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + + WAV(ustop/t, 90) +endphoneme + +phoneme k + vls vel stop + lengthmod 2 + Vowelin f1=0 f2=2300 200 300 f3=-200 80 + Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20 + + WAV(ustop/k) +endphoneme + +// Sibilant Affricates + +phoneme t_s + vls alv afr sibilant + lengthmod 2 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + WAV(ustop/ts, 70) +endphoneme + +phoneme t_s\\ + vls pal afr sibilant palatal + ipa tɕ + lengthmod 2 + Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70 + + WAV(ustop/ts_pzd) +endphoneme + +// Sibilant Fricatives + +phoneme s + vls alv frc sibilant + lengthmod 3 + Vowelin f1=0 f2=1700 -300 300 f3=-100 80 + Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 + + WAV(ufric/s) +endphoneme + +phoneme s\\ + vls pal frc sibilant palatal + 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 + + WAV(ufric/sh_pzd) +endphoneme + +// Fricatives + +phoneme p\\ + vls blb frc + ipa ɸ + Vowelout f1=0 f2=1000 -500 -350 f3=-200 80 + lengthmod 2 + WAV(ufric/f) +endphoneme + +phoneme C + vls pal frc palatal + ipa ç + lengthmod 3 + Vowelin f1=0 f2=2700 400 600 f3=200 70 + Vowelout f1=0 f2=2700 400 600 f3=200 70 rms=20 + + WAV(ufric/ch) +endphoneme + +// Approximant + +phoneme j + liquid palatal starttype #i + lengthmod 7 + + NextVowelStarts + VowelStart(j/j@) + VowelStart(j/ja) + VowelStart(j/je) + VowelStart(j/ji) + VowelStart(j/jo) + VowelStart(j/ju) + EndSwitch + + IF nextPh(isNotVowel) THEN + Vowelout len=70 + FMT(j/j_) + ENDIF +endphoneme + +// Flap or Tap + +phoneme r` + liquid rfx + ipa ɽ + 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 + + FMT(r3/@tap_rfx) +endphoneme + +// Coarticulated + +phoneme w + liquid + lengthmod 7 + starttype #u + + NextVowelStarts + VowelStart(w/w@) + VowelStart(w/wa) + VowelStart(w/we) + VowelStart(w/wi) + VowelStart(w/wo) + VowelStart(w/wu) + EndSwitch + + IF nextPh(isNotVowel) THEN + Vowelout len=50 + FMT(w/w_) + ENDIF +endphoneme diff --git a/phsource/phonemes b/phsource/phonemes index 9e60056f..a184fdae 100644 --- a/phsource/phonemes +++ b/phsource/phonemes @@ -1669,6 +1669,9 @@ endphoneme // ADDITIONAL PHONEME TABLES //******************************************************************* +phonemetable ipa base +include ph_ipa + phonemetable consonants base include ph_consonants @@ -1979,6 +1982,3 @@ include ph_guarani phonemetable ky base include ph_kyrgyz - -phonemetable ipa base -include ph_ipa