diff --git a/app.py b/app.py
index 520ee2b16c9f096ab902586156fd149832ce78b0..fdbf0e026c48a475a0361a01e5afef71228d3f63 100644
--- a/app.py
+++ b/app.py
@@ -1,34 +1,31 @@
+import os
import numpy as np
import gradio as gr
+import pyopenjtalk
from pypinyin import lazy_pinyin
-
-from pinyin_dict import PINYIN_DICT
+from util import preprocess_input, get_tokenizer, load_pitch_dict
from espnet_model_zoo.downloader import ModelDownloader
from espnet2.fileio.read_text import read_label
from espnet2.bin.svs_inference import SingingGenerate
-spks = {
- "singer1 (man)": 1,
- "singer2 (man)": 2,
- "singer3 (female)": 5,
- "singer4 (female)": 9,
- "singer5 (man)": 18,
- "singer6 (female)": 15,
- "singer7 (man)": 23,
- "singer8 (man)": 25,
- "singer9 (female)": 29,
- "singer10 (man)": 27,
+singer_embeddings = {
+ "singer1 (female)": "resource/singer/singer_embedding_opencpop.npy",
}
-def gen_song(lang, tempo, texts, durs, pitchs, spk):
- if lang == "zh":
- PRETRAIN_MODEL = "espnet/aceopencpop_svs_visinger2_40singer_pretrain"
- fs = 44100
- text_list = lazy_pinyin(texts)
+langs = {
+ "zh": 2,
+ "jp": 1,
+}
- # preprocess
+def gen_song(lang, tempo, texts, durs, pitchs, spk):
+ fs = 44100
+ # PRETRAIN_MODEL = "espnet/aceopencpop_svs_visinger2_40singer_pretrain"
+ # pretrain_downloaded = {
+ # "train_config": "/data7/tyx/espnet/egs2/mixed/svs1/exp/svs_train_visinger2_spk_embed_lang_raw_phn_None_mix_all/config.yaml",
+ # "model_file": "/data7/tyx/espnet/egs2/mixed/svs1/exp/svs_train_visinger2_spk_embed_lang_raw_phn_None_mix_all/500epoch.pth",
+ # }
if texts is None:
return (fs, np.array([0.0])), "Error: No Text provided!"
if durs is None:
@@ -36,7 +33,16 @@ def gen_song(lang, tempo, texts, durs, pitchs, spk):
if pitchs is None:
return (fs, np.array([0.0])), "Error: No Pitch provided!"
+ # preprocess
+ if lang == "zh":
+ texts = preprocess_input(texts, "")
+ text_list = lazy_pinyin(texts)
+ elif lang == "jp":
+ texts = preprocess_input(texts, " ")
+ text_list = texts.strip().split()
+ durs = preprocess_input(durs, " ")
dur_list = durs.strip().split()
+ pitchs = preprocess_input(pitchs, " ")
pitch_list = pitchs.strip().split()
if len(text_list) != len(dur_list):
@@ -45,23 +51,20 @@ def gen_song(lang, tempo, texts, durs, pitchs, spk):
return (fs, np.array([0.0])), f"Error: len in text({len(text_list)}) mismatch with pitch({len(pitch_list)})!"
## text to phoneme
+ tokenizer = get_tokenizer(lang)
sybs = []
- if lang == "zh":
- pinyin_dict = PINYIN_DICT
- for text in text_list:
- text = text.lower()
- if text not in pinyin_dict:
- return (fs, np.array([0.0])), f"Error: pinyin `{text}` is invalid!"
- phns = "_".join(pinyin_dict[text])
- sybs.append(phns)
-
- ## pitch
- pitch_dict = {}
- with open("./midi-note.scp", "r", encoding="utf-8") as f:
- for line in f:
- items = line.strip().split()
- pitch_dict[items[0]] = int(items[1])
- pitch_dict[items[1]] = int(items[1])
+ for text in text_list:
+ if text == "AP" or text == "SP":
+ rev = [text]
+ else:
+ rev = tokenizer(text)
+ rev = [phn + f"@{lang}" for phn in rev]
+ if rev == False:
+ return (fs, np.array([0.0])), f"Error: text `{text}` is invalid!"
+ phns = "_".join(rev)
+ sybs.append(phns)
+
+ pitch_dict = load_pitch_dict()
labels = []
notes = []
@@ -87,19 +90,24 @@ def gen_song(lang, tempo, texts, durs, pitchs, spk):
),
"text": phns_str,
}
-
+ print(batch)
+ return (fs, np.array([0.0])), "success!"
+
# Infer
device = "cpu"
# device = "cuda" if torch.cuda.is_available() else "cpu"
- d = ModelDownloader()
- pretrain_downloaded = d.download_and_unpack(PRETRAIN_MODEL)
+ # d = ModelDownloader()
+ # pretrain_downloaded = d.download_and_unpack(PRETRAIN_MODEL)
svs = SingingGenerate(
train_config = pretrain_downloaded["train_config"],
model_file = pretrain_downloaded["model_file"],
device = device
)
- sid = spks[spk]
- output_dict = svs(batch, sids=np.array([sid]))
+ # sid = spks[spk]
+ lid = langs[lang]
+ spk_embed = np.load(singer_embeddings[spk])
+ # output_dict = svs(batch, sids=np.array([sid]))
+ output_dict = svs(batch, lids=np.array([lid]), spembs=spk_embed)
wav_info = output_dict["wav"].cpu().numpy()
return (fs, wav_info), "success!"
@@ -107,19 +115,24 @@ def gen_song(lang, tempo, texts, durs, pitchs, spk):
title = "Demo of Singing Voice Synthesis in Muskits-ESPnet"
description = """
-This is the demo page of our toolkit Muskits-ESPnet: A Comprehensive Toolkit for Singing Voice Synthesis in New Paradigm.
-
-
-
How to use:
-
- - Choose language ID. Language id
- - Input tempo in integer
- - Input text, duration, pitch of equal length
- - Choose ons singer
- - Click submit button
-
-
-
+
+
This is the demo page of our toolkit Muskits-ESPnet: A Comprehensive Toolkit for Singing Voice Synthesis in New Paradigm.
+
Singing Voice Synthesis (SVS) takes a music score as input and generates singing vocal with the voice of a specific singer.
+ Music score contains information about tempo (singing speed), lyrics, as well as duration and pitch of each word in lyrics.
+
+
+
+
How to use:
+
+ - Choose language ID: "zh" indicates lyrics input in Chinese, and "jp" indicates lyrics input in Japanese.
+ - Input tempo: tempo is a positive integer, typically ranging between 60 and 180, representing the number of beats per minute.
+ - Input lyrics, duration, pitch in equal length: lyrics should match the language setting. Each word of input should be split with " " (blankspace) or "\\n" (newline) without quotes. Examples are provided.
+ - Choose one singer
+ - Click submit button
+
+
+
Notice: Values outside this range may result in suboptimal generation quality!
+
"""
article = """
@@ -133,7 +146,7 @@ article = """
@inproceedings{wu2024muskits,
title = {{Muskits-ESPnet}: A Comprehensive Toolkit for Singing Voice Synthesis in New Paradigm},
author = {Yuning Wu and Jiatong Shi and Yifeng Yu and Yuxun Tang and Tao Qian and Yueqian Lin and Jionghao Han and Xinyi Bai and Shinji Watanabe and Qin Jin},
- booktitle={Proc. ACM Multimedia},
+ booktitle={Proceedings of the 32st ACM International Conference on Multimedia},
year={2024},
}
@@ -144,15 +157,16 @@ article = """
# SP: silence, AP: aspirate.
examples = [
- ["zh", 89, "雨淋湿了SP天空AP", "0.23 0.16 0.36 0.16 0.07 0.28 0.50 0.21", "60 62 62 62 0 62 58 0", "singer1 (man)"],
- ["zh", 89, "雨淋湿了SP天空AP", "0.23 0.16 0.36 0.16 0.07 0.28 0.50 0.21", "C4 D4 D4 D4 rest D4 A#3 rest", "singer2 (man)"],
- ["zh", 89, "雨淋湿了SP天空AP", "0.23 0.16 0.36 0.16 0.07 0.28 0.50 0.21", "C4 D4 D4 D4 rest D4 Bb3 rest", "singer3 (female)"],
+ ["zh", 89, "雨 淋 湿 了 SP 天 空 AP\n毁 的 SP 很 讲 究 AP", "0.23 0.16 0.36 0.16 0.07 0.28 0.5 0.21 0.3 0.12 0.12 0.25 0.5 0.48 0.34", "60 62 62 62 0 62 58 0 58 58 0 58 58 63 0", "singer1 (female)"],
+ # ["zh", 89, "雨 淋 湿 了 SP 天 空 AP", "0.23 0.16 0.36 0.16 0.07 0.28 0.50 0.21", "C4 D4 D4 D4 rest D4 A#3 rest", "singer2 (male)"],
+ # ["zh", 89, "雨 淋 湿 了 SP 天 空 AP", "0.23 0.16 0.36 0.16 0.07 0.28 0.50 0.21", "C4 D4 D4 D4 rest D4 Bb3 rest", "singer3 (female)"],
+ ["jp", 152, "きっ と と べ ば そ ら ま で と ど く AP", "0.39 2.76 0.2 0.2 0.39 0.39 0.2 0.2 0.39 0.2 0.2 0.59 1.08", "64 71 68 69 71 71 69 68 66 68 69 68 0", "singer1 (female)"],
]
-gr.Interface(
+app = gr.Interface(
fn=gen_song,
inputs=[
- gr.Radio(label="language", choices=["zh"], value="zh"),
+ gr.Radio(label="language", choices=["zh", "jp"], value="zh"),
gr.Textbox(label="Tempo"),
gr.Textbox(label="Text"),
gr.Textbox(label="Duration"),
@@ -160,18 +174,9 @@ gr.Interface(
gr.Radio(
label="Singer",
choices=[
- "singer1 (man)",
- "singer2 (man)",
- "singer3 (female)",
- "singer4 (female)",
- "singer5 (man)",
- "singer6 (female)",
- "singer7 (man)",
- "singer8 (man)",
- "singer9 (female)",
- "singer10 (man)",
+ "singer1 (female)",
],
- value="singer1 (man)"
+ value="singer1 (female)"
),
],
outputs=[
@@ -182,4 +187,6 @@ gr.Interface(
description=description,
article=article,
examples=examples,
-).launch()
+)
+
+app.launch()
diff --git a/resource/Muskits_ESPnet_logo.png b/resource/Muskits_ESPnet_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..04cb70a4d348dbdce041c97cc68f09eb3e6a6ed2
Binary files /dev/null and b/resource/Muskits_ESPnet_logo.png differ
diff --git a/resource/all_plans.json b/resource/all_plans.json
new file mode 100644
index 0000000000000000000000000000000000000000..94af8af22ad17cadfaf4505caae44c71fff6561e
--- /dev/null
+++ b/resource/all_plans.json
@@ -0,0 +1,7660 @@
+{
+ "jp_word2romaji":
+ {
+ "うぁ": "wa",
+ "うぉ": "wo",
+ "ぁ": "a",
+ "ぃ": "i",
+ "ぅ": "u",
+ "ぇ": "e",
+ "ぉ": "o",
+ "ゃ": "ya",
+ "ゅ": "yu",
+ "ょ": "yo",
+ "ウァ": "wa",
+ "ウォ": "wo",
+ "ァ": "a",
+ "ィ": "i",
+ "ゥ": "u",
+ "ェ": "e",
+ "ォ": "o",
+ "ャ": "ya",
+ "ュ": "yu",
+ "ョ": "yo",
+ "ウァ": "wa",
+ "ウォ": "wo",
+ "ァ": "a",
+ "ィ": "i",
+ "ゥ": "u",
+ "ェ": "e",
+ "ォ": "o",
+ "ャ": "ya",
+ "ュ": "yu",
+ "ョ": "yo",
+ "よ": "yo",
+ "びゅ": "byu",
+ "ら": "ra",
+ "ジャ": "ja",
+ "り": "ri",
+ "キャ": "kya",
+ "ツェ": "tse",
+ "る": "ru",
+ "キュ": "kyu",
+ "フェ": "fe",
+ "れ": "re",
+ "びょ": "byo",
+ "ジュ": "ju",
+ "ろ": "ro",
+ "キュ": "kyu",
+ "リェ": "rye",
+ "ツォ": "tso",
+ "リャ": "rya",
+ "キョ": "kyo",
+ "フォ": "fo",
+ "わ": "wa",
+ "コ゚": "ngo",
+ "ジョ": "jo",
+ "リュ": "ryu",
+ "キョ": "kyo",
+ "リョ": "ryo",
+ "を": "wo",
+ "ク゚": "ngu",
+ "ん": "N",
+ "キ゚ャ": "ngya",
+ "キ゚ェ": "ngye",
+ "ガ": "ga",
+ "ふぁ": "fa",
+ "クァ": "kwa",
+ "キ゚ュ": "ngyu",
+ "ブ": "bu",
+ "ふぃ": "fi",
+ "キ゚ャ": "ngya",
+ "プ": "pu",
+ "クィ": "kwi",
+ "ア": "a",
+ "ふぅ": "fu",
+ "ズィ": "zi",
+ "きゃ": "kya",
+ "じゃ": "ja",
+ "ズィ": "zi",
+ "イ": "i",
+ "キ゚ョ": "ngyo",
+ "キ゚ュ": "ngyu",
+ "ブュ": "vyu",
+ "スィ": "si",
+ "ふぇ": "fe",
+ "ウ": "u",
+ "きゅ": "kyu",
+ "じゅ": "ju",
+ "イェ": "ye",
+ "イェ": "ye",
+ "キ゚ョ": "ngyo",
+ "エ": "e",
+ "きょ": "kyo",
+ "ふぉ": "fo",
+ "じょ": "jo",
+ "オ": "o",
+ "カ": "ka",
+ "ガ": "ga",
+ "キ": "ki",
+ "ピャ": "pya",
+ "ギ": "gi",
+ "ク": "ku",
+ "ミャ": "mya",
+ "グ": "gu",
+ "リャ": "rya",
+ "ケ": "ke",
+ "ピュ": "pyu",
+ "ゲ": "ge",
+ "ミュ": "myu",
+ "コ": "ko",
+ "リュ": "ryu",
+ "ゴ": "go",
+ "ピョ": "pyo",
+ "サ": "sa",
+ "ミョ": "myo",
+ "ザ": "za",
+ "ドゥ": "du",
+ "リョ": "ryo",
+ "シ": "shi",
+ "くぁ": "kwa",
+ "ジ": "ji",
+ "ス": "su",
+ "ズ": "zu",
+ "セ": "se",
+ "くぃ": "kwi",
+ "ゼ": "ze",
+ "ずぃ": "zi",
+ "ソ": "so",
+ "ジ": "ji",
+ "ゾ": "zo",
+ "タ": "ta",
+ "ダ": "da",
+ "いぇ": "ye",
+ "チ": "chi",
+ "ヲ": "wo",
+ "くぇ": "kwe",
+ "ッ": "cl",
+ "ツ": "tsu",
+ "クァ": "kwa",
+ "くぉ": "kwo",
+ "クィ": "kwi",
+ "テ": "te",
+ "ティ": "ti",
+ "デ": "de",
+ "ぴゃ": "pya",
+ "ト": "to",
+ "き゚": "ngi",
+ "ド": "do",
+ "みゃ": "mya",
+ "ギャ": "gya",
+ "りゃ": "rya",
+ "ナ": "na",
+ "ぴゅ": "pyu",
+ "ニ": "ni",
+ "テェ": "tye",
+ "ヴぁ": "va",
+ "ア": "a",
+ "ヌ": "nu",
+ "ネ": "ne",
+ "イ": "i",
+ "りゅ": "ryu",
+ "テャ": "tya",
+ "ギュ": "gyu",
+ "ぴょ": "pyo",
+ "ノ": "no",
+ "ヴぃ": "vi",
+ "ハ": "ha",
+ "バ": "ba",
+ "みゅ": "myu",
+ "ギョ": "gyo",
+ "りょ": "ryo",
+ "カ": "ka",
+ "パ": "pa",
+ "ヒ": "hi",
+ "キ": "ki",
+ "みょ": "myo",
+ "ビ": "bi",
+ "ニェ": "nye",
+ "ビャ": "bya",
+ "ピ": "pi",
+ "ウ": "u",
+ "テュ": "tyu",
+ "フ": "hu",
+ "ビュ": "byu",
+ "ク": "ku",
+ "ヴぇ": "ve",
+ "サ": "sa",
+ "ブ": "bu",
+ "プ": "pu",
+ "シ": "shi",
+ "エ": "e",
+ "ヘ": "he",
+ "ス": "su",
+ "ケ": "ke",
+ "ベ": "be",
+ "ヴぉ": "vo",
+ "セ": "se",
+ "ペ": "pe",
+ "ジェ": "je",
+ "ビェ": "bye",
+ "ホ": "ho",
+ "タ": "ta",
+ "オ": "o",
+ "ボ": "bo",
+ "チ": "chi",
+ "コ": "ko",
+ "ポ": "po",
+ "ツ": "tsu",
+ "ギ": "gi",
+ "マ": "ma",
+ "テ": "te",
+ "ソ": "so",
+ "ミ": "mi",
+ "ト": "to",
+ "ジャ": "ja",
+ "グァ": "gwa",
+ "ナ": "na",
+ "ム": "mu",
+ "メ": "me",
+ "ニ": "ni",
+ "ベ": "be",
+ "モ": "mo",
+ "ヌ": "nu",
+ "ジュ": "ju",
+ "ペ": "pe",
+ "グィ": "gwi",
+ "ネ": "ne",
+ "ヤ": "ya",
+ "ぎゃ": "gya",
+ "ディ": "di",
+ "ノ": "no",
+ "ハ": "ha",
+ "ジョ": "jo",
+ "ウィ": "wi",
+ "ヒ": "hi",
+ "にぇ": "nye",
+ "ティ": "ti",
+ "ユ": "yu",
+ "ぎゅ": "gyu",
+ "ヨ": "yo",
+ "フ": "hu",
+ "ヘ": "he",
+ "ラ": "ra",
+ "ウェ": "we",
+ "ホ": "ho",
+ "こ゚": "ngo",
+ "マ": "ma",
+ "リ": "ri",
+ "ル": "ru",
+ "ミ": "mi",
+ "ぎょ": "gyo",
+ "レ": "re",
+ "ム": "mu",
+ "テェ": "tye",
+ "ロ": "ro",
+ "グォ": "gwo",
+ "メ": "me",
+ "デェ": "de",
+ "カ゚": "nga",
+ "モ": "mo",
+ "ワ": "wa",
+ "ヤ": "ya",
+ "フャ": "fya",
+ "ビョ": "byo",
+ "ユ": "yu",
+ "デャ": "dya",
+ "ッ": "cl",
+ "ヨ": "yo",
+ "ヲ": "wo",
+ "ラ": "ra",
+ "フュ": "fyu",
+ "リ": "ri",
+ "ン": "N",
+ "ヴ": "vu",
+ "ル": "ru",
+ "カ゚": "nga",
+ "デュ": "dyu",
+ "レ": "re",
+ "フョ": "fyo",
+ "ロ": "ro",
+ "デョ": "tyo",
+ "ワ": "wa",
+ "ン": "N",
+ "ピェ": "pye",
+ "ぐぁ": "gwa",
+ "き゚ゃ": "ngya",
+ "ぐぃ": "gwi",
+ "ピャ": "pya",
+ "ズ": "zu",
+ "てぃ": "ti",
+ "ピュ": "pyu",
+ "き゚ゅ": "ngyu",
+ "ぐぇ": "gwe",
+ "ピョ": "pyo",
+ "てぇ": "tye",
+ "ぐぉ": "gwo",
+ "き゚ょ": "ngyo",
+ "ふゃ": "fya",
+ "トゥ": "tu",
+ "ふゅ": "fyu",
+ "チェ": "che",
+ "ふょ": "fyo",
+ "ケ゚": "nge",
+ "グ": "gu",
+ "ヴァ": "va",
+ "ボ": "bo",
+ "ウィ": "wi",
+ "ポ": "po",
+ "ヴィ": "vi",
+ "ちぇ": "che",
+ "ディ": "di",
+ "ウェ": "we",
+ "ヴェ": "ve",
+ "ヴォ": "vo",
+ "デェ": "dye",
+ "ヒェ": "hye",
+ "キ゚": "ngi",
+ "ニャ": "nya",
+ "ヴャ": "vya",
+ "ニュ": "nyu",
+ "ブュ": "vyu",
+ "ニョ": "nyo",
+ "ヴゃ": "vya",
+ "ヴゅ": "vyu",
+ "うぃ": "wi",
+ "ヴ": "vu",
+ "ヴょ": "vyo",
+ "ゼ": "ze",
+ "でぃ": "di",
+ "うぇ": "we",
+ "でぇ": "dye",
+ "ひぇ": "hye",
+ "にゃ": "nya",
+ "く゚": "ngu",
+ "にゅ": "nyu",
+ "シェ": "she",
+ "キ゚ェ": "ngye",
+ "コォ": "kwo",
+ "ミェ": "mye",
+ "テャ": "tya",
+ "にょ": "nyo",
+ "ミャ": "mya",
+ "テュ": "tyu",
+ "ミュ": "myu",
+ "ミョ": "myo",
+ "ゲ": "ge",
+ "ド": "do",
+ "しぇ": "she",
+ "ぢぇ": "dye",
+ "てゃ": "tya",
+ "ヴァ": "va",
+ "トゥ": "tu",
+ "てゅ": "tyu",
+ "ヴィ": "vi",
+ "ヒェ": "hye",
+ "チャ": "cha",
+ "てょ": "tyo",
+ "ビェ": "bye",
+ "ク゚": "ngu",
+ "ヒャ": "hya",
+ "チュ": "chu",
+ "ヒュ": "hyu",
+ "ヴェ": "ve",
+ "ヒョ": "hyo",
+ "チョ": "cho",
+ "キ゚": "ngi",
+ "ヴォ": "vo",
+ "ゾ": "zo",
+ "バ": "ba",
+ "パ": "pa",
+ "とぅ": "tu",
+ "ちゃ": "cha",
+ "びぇ": "bye",
+ "ちゅ": "chu",
+ "キェ": "kye",
+ "ジェ": "je",
+ "ニェ": "nye",
+ "ちょ": "cho",
+ "デャ": "dya",
+ "ニャ": "nya",
+ "ヒャ": "hya",
+ "ニュ": "nyu",
+ "デュ": "dyu",
+ "グァ": "gwa",
+ "ニョ": "nyo",
+ "ヒュ": "hyu",
+ "グィ": "gwi",
+ "デョ": "tyo",
+ "コ゚": "ngo",
+ "ヒョ": "hyo",
+ "グォ": "gwo",
+ "ゴ": "go",
+ "きぇ": "kye",
+ "じぇ": "je",
+ "あ": "a",
+ "でゃ": "dya",
+ "ファ": "fa",
+ "ひゃ": "hya",
+ "い": "i",
+ "フィ": "fi",
+ "か゚": "nga",
+ "ドゥ": "du",
+ "でゅ": "dyu",
+ "う": "u",
+ "フゥ": "fu",
+ "チェ": "che",
+ "ひゅ": "hyu",
+ "シャ": "sha",
+ "フェ": "fe",
+ "き゚ぇ": "ngye",
+ "え": "e",
+ "コォ": "kwo",
+ "フォ": "fo",
+ "チャ": "cha",
+ "ピェ": "pye",
+ "ひょ": "hyo",
+ "シュ": "shu",
+ "か": "ka",
+ "フャ": "fya",
+ "ミェ": "mye",
+ "が": "ga",
+ "リェ": "rye",
+ "お": "o",
+ "き": "ki",
+ "チュ": "chu",
+ "フュ": "fyu",
+ "ぎ": "gi",
+ "ショ": "sho",
+ "ケ゚": "nge",
+ "く": "ku",
+ "チョ": "cho",
+ "フョ": "fyo",
+ "ぐ": "gu",
+ "け": "ke",
+ "げ": "ge",
+ "こ": "ko",
+ "ご": "go",
+ "さ": "sa",
+ "ざ": "za",
+ "し": "shi",
+ "じ": "ji",
+ "す": "su",
+ "ず": "zu",
+ "せ": "se",
+ "ダ": "da",
+ "ぜ": "ze",
+ "ビ": "bi",
+ "そ": "so",
+ "ぞ": "zo",
+ "ピ": "pi",
+ "ツァ": "tsa",
+ "た": "ta",
+ "どぅ": "du",
+ "だ": "da",
+ "スィ": "si",
+ "ち": "chi",
+ "しゃ": "sha",
+ "ツィ": "tsi",
+ "っ": "cl",
+ "ぴぇ": "pye",
+ "つ": "tsu",
+ "しゅ": "shu",
+ "みぇ": "mye",
+ "て": "te",
+ "け゚": "nge",
+ "りぇ": "rye",
+ "で": "de",
+ "ギェ": "gye",
+ "シェ": "she",
+ "と": "to",
+ "しょ": "sho",
+ "ツェ": "tse",
+ "ど": "do",
+ "ぢょ": "dyo",
+ "ギェ": "gye",
+ "な": "na",
+ "シャ": "sha",
+ "に": "ni",
+ "ビャ": "bya",
+ "ぬ": "nu",
+ "ツォ": "tso",
+ "ギャ": "gya",
+ "ね": "ne",
+ "シュ": "shu",
+ "ショ": "sho",
+ "の": "no",
+ "は": "ha",
+ "ビュ": "byu",
+ "ヴャ": "vya",
+ "ば": "ba",
+ "ギュ": "gyu",
+ "ぱ": "pa",
+ "ひ": "hi",
+ "ビョ": "byo",
+ "ギョ": "gyo",
+ "び": "bi",
+ "ぴ": "pi",
+ "ふ": "hu",
+ "ぶ": "bu",
+ "ぷ": "pu",
+ "へ": "he",
+ "つぁ": "tsa",
+ "べ": "be",
+ "ぺ": "pe",
+ "すぃ": "si",
+ "ほ": "ho",
+ "ザ": "za",
+ "つぃ": "tsi",
+ "ぼ": "bo",
+ "ぽ": "po",
+ "ま": "ma",
+ "み": "mi",
+ "む": "mu",
+ "ぎぇ": "gye",
+ "め": "me",
+ "ファ": "fa",
+ "も": "mo",
+ "つぇ": "tse",
+ "ツァ": "tsa",
+ "や": "ya",
+ "ツィ": "tsi",
+ "フィ": "fi",
+ "びゃ": "bya",
+ "つぉ": "tso",
+ "ゆ": "yu",
+ "キェ": "kye",
+ "キャ": "kya",
+ "フゥ": "fu",
+ "づ": "zu"
+ },
+ "plans":
+ [
+ {
+ "language": "zh",
+ "syllable_alias":
+ {
+ "lue": "lve",
+ "m": "mm",
+ "n": "nn",
+ "yvan": "yuan",
+ "yv": "yu",
+ "qvan": "quan",
+ "xv": "xu",
+ "qv": "qu",
+ "jve": "jue",
+ "xvn": "xun",
+ "qve": "que",
+ "xvan": "xuan",
+ "qvn": "qun",
+ "jvn": "jun",
+ "xve": "xue",
+ "yve": "yue",
+ "yvn": "yun",
+ "jvan": "juan"
+ },
+ "dict":
+ {
+ "zi":
+ [
+ "z",
+ "ii"
+ ],
+ "ci":
+ [
+ "c",
+ "ii"
+ ],
+ "si":
+ [
+ "s",
+ "ii"
+ ],
+ "ii":
+ [
+ "ii"
+ ],
+ "zhi":
+ [
+ "zh",
+ "iii"
+ ],
+ "chi":
+ [
+ "ch",
+ "iii"
+ ],
+ "shi":
+ [
+ "sh",
+ "iii"
+ ],
+ "ri":
+ [
+ "r",
+ "iii"
+ ],
+ "iii":
+ [
+ "iii"
+ ],
+ "bi":
+ [
+ "b",
+ "i"
+ ],
+ "pi":
+ [
+ "p",
+ "i"
+ ],
+ "mi":
+ [
+ "m",
+ "i"
+ ],
+ "fi":
+ [
+ "f",
+ "i"
+ ],
+ "di":
+ [
+ "d",
+ "i"
+ ],
+ "ti":
+ [
+ "t",
+ "i"
+ ],
+ "ni":
+ [
+ "n",
+ "i"
+ ],
+ "li":
+ [
+ "l",
+ "i"
+ ],
+ "zyi":
+ [
+ "z",
+ "i"
+ ],
+ "cyi":
+ [
+ "c",
+ "i"
+ ],
+ "syi":
+ [
+ "s",
+ "i"
+ ],
+ "zhyi":
+ [
+ "zh",
+ "i"
+ ],
+ "chyi":
+ [
+ "ch",
+ "i"
+ ],
+ "shyi":
+ [
+ "sh",
+ "i"
+ ],
+ "ji":
+ [
+ "j",
+ "i"
+ ],
+ "qi":
+ [
+ "q",
+ "i"
+ ],
+ "xi":
+ [
+ "x",
+ "i"
+ ],
+ "gi":
+ [
+ "g",
+ "i"
+ ],
+ "ki":
+ [
+ "k",
+ "i"
+ ],
+ "hi":
+ [
+ "h",
+ "i"
+ ],
+ "ryi":
+ [
+ "r",
+ "i"
+ ],
+ "yi":
+ [
+ "y",
+ "i"
+ ],
+ "i":
+ [
+ "i"
+ ],
+ "bu":
+ [
+ "b",
+ "u"
+ ],
+ "pu":
+ [
+ "p",
+ "u"
+ ],
+ "mu":
+ [
+ "m",
+ "u"
+ ],
+ "fu":
+ [
+ "f",
+ "u"
+ ],
+ "du":
+ [
+ "d",
+ "u"
+ ],
+ "tu":
+ [
+ "t",
+ "u"
+ ],
+ "nu":
+ [
+ "n",
+ "u"
+ ],
+ "lu":
+ [
+ "l",
+ "u"
+ ],
+ "zu":
+ [
+ "z",
+ "u"
+ ],
+ "cu":
+ [
+ "c",
+ "u"
+ ],
+ "su":
+ [
+ "s",
+ "u"
+ ],
+ "zhu":
+ [
+ "zh",
+ "u"
+ ],
+ "chu":
+ [
+ "ch",
+ "u"
+ ],
+ "shu":
+ [
+ "sh",
+ "u"
+ ],
+ "gu":
+ [
+ "g",
+ "u"
+ ],
+ "ku":
+ [
+ "k",
+ "u"
+ ],
+ "hu":
+ [
+ "h",
+ "u"
+ ],
+ "ru":
+ [
+ "r",
+ "u"
+ ],
+ "wu":
+ [
+ "w",
+ "u"
+ ],
+ "u":
+ [
+ "u"
+ ],
+ "bv":
+ [
+ "b",
+ "v"
+ ],
+ "pv":
+ [
+ "p",
+ "v"
+ ],
+ "mv":
+ [
+ "m",
+ "v"
+ ],
+ "fv":
+ [
+ "f",
+ "v"
+ ],
+ "dv":
+ [
+ "d",
+ "v"
+ ],
+ "tv":
+ [
+ "t",
+ "v"
+ ],
+ "nv":
+ [
+ "n",
+ "v"
+ ],
+ "lv":
+ [
+ "l",
+ "v"
+ ],
+ "zv":
+ [
+ "z",
+ "v"
+ ],
+ "cv":
+ [
+ "c",
+ "v"
+ ],
+ "sv":
+ [
+ "s",
+ "v"
+ ],
+ "zhv":
+ [
+ "zh",
+ "v"
+ ],
+ "chv":
+ [
+ "ch",
+ "v"
+ ],
+ "shv":
+ [
+ "sh",
+ "v"
+ ],
+ "ju":
+ [
+ "j",
+ "v"
+ ],
+ "qu":
+ [
+ "q",
+ "v"
+ ],
+ "xu":
+ [
+ "x",
+ "v"
+ ],
+ "gv":
+ [
+ "g",
+ "v"
+ ],
+ "kv":
+ [
+ "k",
+ "v"
+ ],
+ "hv":
+ [
+ "h",
+ "v"
+ ],
+ "rv":
+ [
+ "r",
+ "v"
+ ],
+ "yu":
+ [
+ "y",
+ "v"
+ ],
+ "v":
+ [
+ "v"
+ ],
+ "ba":
+ [
+ "b",
+ "a"
+ ],
+ "pa":
+ [
+ "p",
+ "a"
+ ],
+ "ma":
+ [
+ "m",
+ "a"
+ ],
+ "fa":
+ [
+ "f",
+ "a"
+ ],
+ "da":
+ [
+ "d",
+ "a"
+ ],
+ "ta":
+ [
+ "t",
+ "a"
+ ],
+ "na":
+ [
+ "n",
+ "a"
+ ],
+ "la":
+ [
+ "l",
+ "a"
+ ],
+ "za":
+ [
+ "z",
+ "a"
+ ],
+ "ca":
+ [
+ "c",
+ "a"
+ ],
+ "sa":
+ [
+ "s",
+ "a"
+ ],
+ "zha":
+ [
+ "zh",
+ "a"
+ ],
+ "cha":
+ [
+ "ch",
+ "a"
+ ],
+ "sha":
+ [
+ "sh",
+ "a"
+ ],
+ "ga":
+ [
+ "g",
+ "a"
+ ],
+ "ka":
+ [
+ "k",
+ "a"
+ ],
+ "ha":
+ [
+ "h",
+ "a"
+ ],
+ "ra":
+ [
+ "r",
+ "a"
+ ],
+ "a":
+ [
+ "a"
+ ],
+ "bia":
+ [
+ "b",
+ "ia"
+ ],
+ "pia":
+ [
+ "p",
+ "ia"
+ ],
+ "mia":
+ [
+ "m",
+ "ia"
+ ],
+ "fia":
+ [
+ "f",
+ "ia"
+ ],
+ "dia":
+ [
+ "d",
+ "ia"
+ ],
+ "tia":
+ [
+ "t",
+ "ia"
+ ],
+ "nia":
+ [
+ "n",
+ "ia"
+ ],
+ "lia":
+ [
+ "l",
+ "ia"
+ ],
+ "zia":
+ [
+ "z",
+ "ia"
+ ],
+ "cia":
+ [
+ "c",
+ "ia"
+ ],
+ "sia":
+ [
+ "s",
+ "ia"
+ ],
+ "jia":
+ [
+ "j",
+ "ia"
+ ],
+ "qia":
+ [
+ "q",
+ "ia"
+ ],
+ "xia":
+ [
+ "x",
+ "ia"
+ ],
+ "gia":
+ [
+ "g",
+ "ia"
+ ],
+ "kia":
+ [
+ "k",
+ "ia"
+ ],
+ "hia":
+ [
+ "h",
+ "ia"
+ ],
+ "ya":
+ [
+ "y",
+ "ia"
+ ],
+ "ia":
+ [
+ "ia"
+ ],
+ "bua":
+ [
+ "b",
+ "ua"
+ ],
+ "pua":
+ [
+ "p",
+ "ua"
+ ],
+ "mua":
+ [
+ "m",
+ "ua"
+ ],
+ "fua":
+ [
+ "f",
+ "ua"
+ ],
+ "dua":
+ [
+ "d",
+ "ua"
+ ],
+ "tua":
+ [
+ "t",
+ "ua"
+ ],
+ "nua":
+ [
+ "n",
+ "ua"
+ ],
+ "lua":
+ [
+ "l",
+ "ua"
+ ],
+ "zua":
+ [
+ "z",
+ "ua"
+ ],
+ "cua":
+ [
+ "c",
+ "ua"
+ ],
+ "sua":
+ [
+ "s",
+ "ua"
+ ],
+ "zhua":
+ [
+ "zh",
+ "ua"
+ ],
+ "chua":
+ [
+ "ch",
+ "ua"
+ ],
+ "shua":
+ [
+ "sh",
+ "ua"
+ ],
+ "gua":
+ [
+ "g",
+ "ua"
+ ],
+ "kua":
+ [
+ "k",
+ "ua"
+ ],
+ "hua":
+ [
+ "h",
+ "ua"
+ ],
+ "rua":
+ [
+ "r",
+ "ua"
+ ],
+ "wa":
+ [
+ "w",
+ "ua"
+ ],
+ "ua":
+ [
+ "ua"
+ ],
+ "beh":
+ [
+ "b",
+ "eh"
+ ],
+ "peh":
+ [
+ "p",
+ "eh"
+ ],
+ "meh":
+ [
+ "m",
+ "eh"
+ ],
+ "feh":
+ [
+ "f",
+ "eh"
+ ],
+ "deh":
+ [
+ "d",
+ "eh"
+ ],
+ "teh":
+ [
+ "t",
+ "eh"
+ ],
+ "neh":
+ [
+ "n",
+ "eh"
+ ],
+ "leh":
+ [
+ "l",
+ "eh"
+ ],
+ "zeh":
+ [
+ "z",
+ "eh"
+ ],
+ "ceh":
+ [
+ "c",
+ "eh"
+ ],
+ "seh":
+ [
+ "s",
+ "eh"
+ ],
+ "zheh":
+ [
+ "zh",
+ "eh"
+ ],
+ "cheh":
+ [
+ "ch",
+ "eh"
+ ],
+ "sheh":
+ [
+ "sh",
+ "eh"
+ ],
+ "geh":
+ [
+ "g",
+ "eh"
+ ],
+ "keh":
+ [
+ "k",
+ "eh"
+ ],
+ "heh":
+ [
+ "h",
+ "eh"
+ ],
+ "reh":
+ [
+ "r",
+ "eh"
+ ],
+ "eh":
+ [
+ "eh"
+ ],
+ "be":
+ [
+ "b",
+ "e"
+ ],
+ "pe":
+ [
+ "p",
+ "e"
+ ],
+ "me":
+ [
+ "m",
+ "e"
+ ],
+ "fe":
+ [
+ "f",
+ "e"
+ ],
+ "de":
+ [
+ "d",
+ "e"
+ ],
+ "te":
+ [
+ "t",
+ "e"
+ ],
+ "ne":
+ [
+ "n",
+ "e"
+ ],
+ "le":
+ [
+ "l",
+ "e"
+ ],
+ "ze":
+ [
+ "z",
+ "e"
+ ],
+ "ce":
+ [
+ "c",
+ "e"
+ ],
+ "se":
+ [
+ "s",
+ "e"
+ ],
+ "zhe":
+ [
+ "zh",
+ "e"
+ ],
+ "che":
+ [
+ "ch",
+ "e"
+ ],
+ "she":
+ [
+ "sh",
+ "e"
+ ],
+ "ge":
+ [
+ "g",
+ "e"
+ ],
+ "ke":
+ [
+ "k",
+ "e"
+ ],
+ "he":
+ [
+ "h",
+ "e"
+ ],
+ "re":
+ [
+ "r",
+ "e"
+ ],
+ "e":
+ [
+ "e"
+ ],
+ "bo":
+ [
+ "b",
+ "uo"
+ ],
+ "po":
+ [
+ "p",
+ "uo"
+ ],
+ "mo":
+ [
+ "m",
+ "uo"
+ ],
+ "fo":
+ [
+ "f",
+ "uo"
+ ],
+ "duo":
+ [
+ "d",
+ "uo"
+ ],
+ "tuo":
+ [
+ "t",
+ "uo"
+ ],
+ "nuo":
+ [
+ "n",
+ "uo"
+ ],
+ "luo":
+ [
+ "l",
+ "uo"
+ ],
+ "zuo":
+ [
+ "z",
+ "uo"
+ ],
+ "cuo":
+ [
+ "c",
+ "uo"
+ ],
+ "suo":
+ [
+ "s",
+ "uo"
+ ],
+ "zhuo":
+ [
+ "zh",
+ "uo"
+ ],
+ "chuo":
+ [
+ "ch",
+ "uo"
+ ],
+ "shuo":
+ [
+ "sh",
+ "uo"
+ ],
+ "guo":
+ [
+ "g",
+ "uo"
+ ],
+ "kuo":
+ [
+ "k",
+ "uo"
+ ],
+ "huo":
+ [
+ "h",
+ "uo"
+ ],
+ "ruo":
+ [
+ "r",
+ "uo"
+ ],
+ "wo":
+ [
+ "w",
+ "uo"
+ ],
+ "uo":
+ [
+ "uo"
+ ],
+ "no":
+ [
+ "n",
+ "o"
+ ],
+ "lo":
+ [
+ "l",
+ "o"
+ ],
+ "so":
+ [
+ "s",
+ "o"
+ ],
+ "go":
+ [
+ "g",
+ "o"
+ ],
+ "ko":
+ [
+ "k",
+ "o"
+ ],
+ "ho":
+ [
+ "h",
+ "o"
+ ],
+ "o":
+ [
+ "o"
+ ],
+ "yo":
+ [
+ "y",
+ "io"
+ ],
+ "io":
+ [
+ "io"
+ ],
+ "bae":
+ [
+ "b",
+ "ae"
+ ],
+ "pae":
+ [
+ "p",
+ "ae"
+ ],
+ "mae":
+ [
+ "m",
+ "ae"
+ ],
+ "fae":
+ [
+ "f",
+ "ae"
+ ],
+ "dae":
+ [
+ "d",
+ "ae"
+ ],
+ "tae":
+ [
+ "t",
+ "ae"
+ ],
+ "nae":
+ [
+ "n",
+ "ae"
+ ],
+ "lae":
+ [
+ "l",
+ "ae"
+ ],
+ "zae":
+ [
+ "z",
+ "ae"
+ ],
+ "cae":
+ [
+ "c",
+ "ae"
+ ],
+ "sae":
+ [
+ "s",
+ "ae"
+ ],
+ "zhae":
+ [
+ "zh",
+ "ae"
+ ],
+ "chae":
+ [
+ "ch",
+ "ae"
+ ],
+ "shae":
+ [
+ "sh",
+ "ae"
+ ],
+ "gae":
+ [
+ "g",
+ "ae"
+ ],
+ "kae":
+ [
+ "k",
+ "ae"
+ ],
+ "hae":
+ [
+ "h",
+ "ae"
+ ],
+ "rae":
+ [
+ "r",
+ "ae"
+ ],
+ "ae":
+ [
+ "ae"
+ ],
+ "bie":
+ [
+ "b",
+ "ie"
+ ],
+ "pie":
+ [
+ "p",
+ "ie"
+ ],
+ "mie":
+ [
+ "m",
+ "ie"
+ ],
+ "fie":
+ [
+ "f",
+ "ie"
+ ],
+ "die":
+ [
+ "d",
+ "ie"
+ ],
+ "tie":
+ [
+ "t",
+ "ie"
+ ],
+ "nie":
+ [
+ "n",
+ "ie"
+ ],
+ "lie":
+ [
+ "l",
+ "ie"
+ ],
+ "zie":
+ [
+ "z",
+ "ie"
+ ],
+ "cie":
+ [
+ "c",
+ "ie"
+ ],
+ "sie":
+ [
+ "s",
+ "ie"
+ ],
+ "zhie":
+ [
+ "zh",
+ "ie"
+ ],
+ "chie":
+ [
+ "ch",
+ "ie"
+ ],
+ "shie":
+ [
+ "sh",
+ "ie"
+ ],
+ "jie":
+ [
+ "j",
+ "ie"
+ ],
+ "qie":
+ [
+ "q",
+ "ie"
+ ],
+ "xie":
+ [
+ "x",
+ "ie"
+ ],
+ "gie":
+ [
+ "g",
+ "ie"
+ ],
+ "kie":
+ [
+ "k",
+ "ie"
+ ],
+ "hie":
+ [
+ "h",
+ "ie"
+ ],
+ "rie":
+ [
+ "r",
+ "ie"
+ ],
+ "ye":
+ [
+ "y",
+ "ie"
+ ],
+ "ie":
+ [
+ "ie"
+ ],
+ "ruae":
+ [
+ "r",
+ "uae"
+ ],
+ "wae":
+ [
+ "w",
+ "uae"
+ ],
+ "uae":
+ [
+ "uae"
+ ],
+ "bve":
+ [
+ "b",
+ "ve"
+ ],
+ "pve":
+ [
+ "p",
+ "ve"
+ ],
+ "mve":
+ [
+ "m",
+ "ve"
+ ],
+ "fve":
+ [
+ "f",
+ "ve"
+ ],
+ "dve":
+ [
+ "d",
+ "ve"
+ ],
+ "tve":
+ [
+ "t",
+ "ve"
+ ],
+ "nve":
+ [
+ "n",
+ "ve"
+ ],
+ "lve":
+ [
+ "l",
+ "ve"
+ ],
+ "chue":
+ [
+ "ch",
+ "ve"
+ ],
+ "jue":
+ [
+ "j",
+ "ve"
+ ],
+ "que":
+ [
+ "q",
+ "ve"
+ ],
+ "xue":
+ [
+ "x",
+ "ve"
+ ],
+ "gve":
+ [
+ "g",
+ "ve"
+ ],
+ "kve":
+ [
+ "k",
+ "ve"
+ ],
+ "hve":
+ [
+ "h",
+ "ve"
+ ],
+ "rue":
+ [
+ "r",
+ "ve"
+ ],
+ "yue":
+ [
+ "y",
+ "ve"
+ ],
+ "ve":
+ [
+ "ve"
+ ],
+ "bai":
+ [
+ "b",
+ "ai"
+ ],
+ "pai":
+ [
+ "p",
+ "ai"
+ ],
+ "mai":
+ [
+ "m",
+ "ai"
+ ],
+ "fai":
+ [
+ "f",
+ "ai"
+ ],
+ "dai":
+ [
+ "d",
+ "ai"
+ ],
+ "tai":
+ [
+ "t",
+ "ai"
+ ],
+ "nai":
+ [
+ "n",
+ "ai"
+ ],
+ "lai":
+ [
+ "l",
+ "ai"
+ ],
+ "zai":
+ [
+ "z",
+ "ai"
+ ],
+ "cai":
+ [
+ "c",
+ "ai"
+ ],
+ "sai":
+ [
+ "s",
+ "ai"
+ ],
+ "zhai":
+ [
+ "zh",
+ "ai"
+ ],
+ "chai":
+ [
+ "ch",
+ "ai"
+ ],
+ "shai":
+ [
+ "sh",
+ "ai"
+ ],
+ "gai":
+ [
+ "g",
+ "ai"
+ ],
+ "kai":
+ [
+ "k",
+ "ai"
+ ],
+ "hai":
+ [
+ "h",
+ "ai"
+ ],
+ "rai":
+ [
+ "r",
+ "ai"
+ ],
+ "ai":
+ [
+ "ai"
+ ],
+ "yai":
+ [
+ "y",
+ "iai"
+ ],
+ "iai":
+ [
+ "iai"
+ ],
+ "buai":
+ [
+ "b",
+ "uai"
+ ],
+ "puai":
+ [
+ "p",
+ "uai"
+ ],
+ "muai":
+ [
+ "m",
+ "uai"
+ ],
+ "fuai":
+ [
+ "f",
+ "uai"
+ ],
+ "duai":
+ [
+ "d",
+ "uai"
+ ],
+ "tuai":
+ [
+ "t",
+ "uai"
+ ],
+ "nuai":
+ [
+ "n",
+ "uai"
+ ],
+ "luai":
+ [
+ "l",
+ "uai"
+ ],
+ "zuai":
+ [
+ "z",
+ "uai"
+ ],
+ "cuai":
+ [
+ "c",
+ "uai"
+ ],
+ "suai":
+ [
+ "s",
+ "uai"
+ ],
+ "zhuai":
+ [
+ "zh",
+ "uai"
+ ],
+ "chuai":
+ [
+ "ch",
+ "uai"
+ ],
+ "shuai":
+ [
+ "sh",
+ "uai"
+ ],
+ "guai":
+ [
+ "g",
+ "uai"
+ ],
+ "kuai":
+ [
+ "k",
+ "uai"
+ ],
+ "huai":
+ [
+ "h",
+ "uai"
+ ],
+ "ruai":
+ [
+ "r",
+ "uai"
+ ],
+ "wai":
+ [
+ "w",
+ "uai"
+ ],
+ "uai":
+ [
+ "uai"
+ ],
+ "bei":
+ [
+ "b",
+ "ei"
+ ],
+ "pei":
+ [
+ "p",
+ "ei"
+ ],
+ "mei":
+ [
+ "m",
+ "ei"
+ ],
+ "fei":
+ [
+ "f",
+ "ei"
+ ],
+ "dei":
+ [
+ "d",
+ "ei"
+ ],
+ "tei":
+ [
+ "t",
+ "ei"
+ ],
+ "nei":
+ [
+ "n",
+ "ei"
+ ],
+ "lei":
+ [
+ "l",
+ "ei"
+ ],
+ "zei":
+ [
+ "z",
+ "ei"
+ ],
+ "cei":
+ [
+ "c",
+ "ei"
+ ],
+ "sei":
+ [
+ "s",
+ "ei"
+ ],
+ "zhei":
+ [
+ "zh",
+ "ei"
+ ],
+ "chei":
+ [
+ "ch",
+ "ei"
+ ],
+ "shei":
+ [
+ "sh",
+ "ei"
+ ],
+ "gei":
+ [
+ "g",
+ "ei"
+ ],
+ "kei":
+ [
+ "k",
+ "ei"
+ ],
+ "hei":
+ [
+ "h",
+ "ei"
+ ],
+ "rei":
+ [
+ "r",
+ "ei"
+ ],
+ "ei":
+ [
+ "ei"
+ ],
+ "yei":
+ [
+ "y",
+ "iei"
+ ],
+ "iei":
+ [
+ "iei"
+ ],
+ "bui":
+ [
+ "b",
+ "uei"
+ ],
+ "pui":
+ [
+ "p",
+ "uei"
+ ],
+ "mui":
+ [
+ "m",
+ "uei"
+ ],
+ "fui":
+ [
+ "f",
+ "uei"
+ ],
+ "dui":
+ [
+ "d",
+ "uei"
+ ],
+ "tui":
+ [
+ "t",
+ "uei"
+ ],
+ "nui":
+ [
+ "n",
+ "uei"
+ ],
+ "lui":
+ [
+ "l",
+ "uei"
+ ],
+ "zui":
+ [
+ "z",
+ "uei"
+ ],
+ "cui":
+ [
+ "c",
+ "uei"
+ ],
+ "sui":
+ [
+ "s",
+ "uei"
+ ],
+ "zhui":
+ [
+ "zh",
+ "uei"
+ ],
+ "chui":
+ [
+ "ch",
+ "uei"
+ ],
+ "shui":
+ [
+ "sh",
+ "uei"
+ ],
+ "gui":
+ [
+ "g",
+ "uei"
+ ],
+ "kui":
+ [
+ "k",
+ "uei"
+ ],
+ "hui":
+ [
+ "h",
+ "uei"
+ ],
+ "rui":
+ [
+ "r",
+ "uei"
+ ],
+ "wei":
+ [
+ "w",
+ "uei"
+ ],
+ "uei":
+ [
+ "uei"
+ ],
+ "bao":
+ [
+ "b",
+ "ao"
+ ],
+ "pao":
+ [
+ "p",
+ "ao"
+ ],
+ "mao":
+ [
+ "m",
+ "ao"
+ ],
+ "fao":
+ [
+ "f",
+ "ao"
+ ],
+ "dao":
+ [
+ "d",
+ "ao"
+ ],
+ "tao":
+ [
+ "t",
+ "ao"
+ ],
+ "nao":
+ [
+ "n",
+ "ao"
+ ],
+ "lao":
+ [
+ "l",
+ "ao"
+ ],
+ "zao":
+ [
+ "z",
+ "ao"
+ ],
+ "cao":
+ [
+ "c",
+ "ao"
+ ],
+ "sao":
+ [
+ "s",
+ "ao"
+ ],
+ "zhao":
+ [
+ "zh",
+ "ao"
+ ],
+ "chao":
+ [
+ "ch",
+ "ao"
+ ],
+ "shao":
+ [
+ "sh",
+ "ao"
+ ],
+ "gao":
+ [
+ "g",
+ "ao"
+ ],
+ "kao":
+ [
+ "k",
+ "ao"
+ ],
+ "hao":
+ [
+ "h",
+ "ao"
+ ],
+ "rao":
+ [
+ "r",
+ "ao"
+ ],
+ "ao":
+ [
+ "ao"
+ ],
+ "biao":
+ [
+ "b",
+ "iao"
+ ],
+ "piao":
+ [
+ "p",
+ "iao"
+ ],
+ "miao":
+ [
+ "m",
+ "iao"
+ ],
+ "fiao":
+ [
+ "f",
+ "iao"
+ ],
+ "diao":
+ [
+ "d",
+ "iao"
+ ],
+ "tiao":
+ [
+ "t",
+ "iao"
+ ],
+ "niao":
+ [
+ "n",
+ "iao"
+ ],
+ "liao":
+ [
+ "l",
+ "iao"
+ ],
+ "ziao":
+ [
+ "z",
+ "iao"
+ ],
+ "ciao":
+ [
+ "c",
+ "iao"
+ ],
+ "siao":
+ [
+ "s",
+ "iao"
+ ],
+ "jiao":
+ [
+ "j",
+ "iao"
+ ],
+ "qiao":
+ [
+ "q",
+ "iao"
+ ],
+ "xiao":
+ [
+ "x",
+ "iao"
+ ],
+ "giao":
+ [
+ "g",
+ "iao"
+ ],
+ "kiao":
+ [
+ "k",
+ "iao"
+ ],
+ "hiao":
+ [
+ "h",
+ "iao"
+ ],
+ "yao":
+ [
+ "y",
+ "iao"
+ ],
+ "iao":
+ [
+ "iao"
+ ],
+ "wao":
+ [
+ "w",
+ "uao"
+ ],
+ "uao":
+ [
+ "uao"
+ ],
+ "bou":
+ [
+ "b",
+ "ou"
+ ],
+ "pou":
+ [
+ "p",
+ "ou"
+ ],
+ "mou":
+ [
+ "m",
+ "ou"
+ ],
+ "fou":
+ [
+ "f",
+ "ou"
+ ],
+ "dou":
+ [
+ "d",
+ "ou"
+ ],
+ "tou":
+ [
+ "t",
+ "ou"
+ ],
+ "nou":
+ [
+ "n",
+ "ou"
+ ],
+ "lou":
+ [
+ "l",
+ "ou"
+ ],
+ "zou":
+ [
+ "z",
+ "ou"
+ ],
+ "cou":
+ [
+ "c",
+ "ou"
+ ],
+ "sou":
+ [
+ "s",
+ "ou"
+ ],
+ "zhou":
+ [
+ "zh",
+ "ou"
+ ],
+ "chou":
+ [
+ "ch",
+ "ou"
+ ],
+ "shou":
+ [
+ "sh",
+ "ou"
+ ],
+ "gou":
+ [
+ "g",
+ "ou"
+ ],
+ "kou":
+ [
+ "k",
+ "ou"
+ ],
+ "hou":
+ [
+ "h",
+ "ou"
+ ],
+ "rou":
+ [
+ "r",
+ "ou"
+ ],
+ "ou":
+ [
+ "ou"
+ ],
+ "biu":
+ [
+ "b",
+ "iou"
+ ],
+ "piu":
+ [
+ "p",
+ "iou"
+ ],
+ "miu":
+ [
+ "m",
+ "iou"
+ ],
+ "fiu":
+ [
+ "f",
+ "iou"
+ ],
+ "diu":
+ [
+ "d",
+ "iou"
+ ],
+ "tiu":
+ [
+ "t",
+ "iou"
+ ],
+ "niu":
+ [
+ "n",
+ "iou"
+ ],
+ "liu":
+ [
+ "l",
+ "iou"
+ ],
+ "jiu":
+ [
+ "j",
+ "iou"
+ ],
+ "qiu":
+ [
+ "q",
+ "iou"
+ ],
+ "xiu":
+ [
+ "x",
+ "iou"
+ ],
+ "kiu":
+ [
+ "k",
+ "iou"
+ ],
+ "you":
+ [
+ "y",
+ "iou"
+ ],
+ "iou":
+ [
+ "iou"
+ ],
+ "wou":
+ [
+ "w",
+ "uou"
+ ],
+ "uou":
+ [
+ "uou"
+ ],
+ "ban":
+ [
+ "b",
+ "an"
+ ],
+ "pan":
+ [
+ "p",
+ "an"
+ ],
+ "man":
+ [
+ "m",
+ "an"
+ ],
+ "fan":
+ [
+ "f",
+ "an"
+ ],
+ "dan":
+ [
+ "d",
+ "an"
+ ],
+ "tan":
+ [
+ "t",
+ "an"
+ ],
+ "nan":
+ [
+ "n",
+ "an"
+ ],
+ "lan":
+ [
+ "l",
+ "an"
+ ],
+ "zan":
+ [
+ "z",
+ "an"
+ ],
+ "can":
+ [
+ "c",
+ "an"
+ ],
+ "san":
+ [
+ "s",
+ "an"
+ ],
+ "zhan":
+ [
+ "zh",
+ "an"
+ ],
+ "chan":
+ [
+ "ch",
+ "an"
+ ],
+ "shan":
+ [
+ "sh",
+ "an"
+ ],
+ "gan":
+ [
+ "g",
+ "an"
+ ],
+ "kan":
+ [
+ "k",
+ "an"
+ ],
+ "han":
+ [
+ "h",
+ "an"
+ ],
+ "ran":
+ [
+ "r",
+ "an"
+ ],
+ "an":
+ [
+ "an"
+ ],
+ "buan":
+ [
+ "b",
+ "uan"
+ ],
+ "puan":
+ [
+ "p",
+ "uan"
+ ],
+ "muan":
+ [
+ "m",
+ "uan"
+ ],
+ "fuan":
+ [
+ "f",
+ "uan"
+ ],
+ "duan":
+ [
+ "d",
+ "uan"
+ ],
+ "tuan":
+ [
+ "t",
+ "uan"
+ ],
+ "nuan":
+ [
+ "n",
+ "uan"
+ ],
+ "luan":
+ [
+ "l",
+ "uan"
+ ],
+ "zuan":
+ [
+ "z",
+ "uan"
+ ],
+ "cuan":
+ [
+ "c",
+ "uan"
+ ],
+ "suan":
+ [
+ "s",
+ "uan"
+ ],
+ "zhuan":
+ [
+ "zh",
+ "uan"
+ ],
+ "chuan":
+ [
+ "ch",
+ "uan"
+ ],
+ "shuan":
+ [
+ "sh",
+ "uan"
+ ],
+ "guan":
+ [
+ "g",
+ "uan"
+ ],
+ "kuan":
+ [
+ "k",
+ "uan"
+ ],
+ "huan":
+ [
+ "h",
+ "uan"
+ ],
+ "ruan":
+ [
+ "r",
+ "uan"
+ ],
+ "wan":
+ [
+ "w",
+ "uan"
+ ],
+ "uan":
+ [
+ "uan"
+ ],
+ "kaen":
+ [
+ "k",
+ "aen"
+ ],
+ "haen":
+ [
+ "h",
+ "aen"
+ ],
+ "aen":
+ [
+ "aen"
+ ],
+ "bian":
+ [
+ "b",
+ "ian"
+ ],
+ "pian":
+ [
+ "p",
+ "ian"
+ ],
+ "mian":
+ [
+ "m",
+ "ian"
+ ],
+ "fian":
+ [
+ "f",
+ "ian"
+ ],
+ "dian":
+ [
+ "d",
+ "ian"
+ ],
+ "tian":
+ [
+ "t",
+ "ian"
+ ],
+ "nian":
+ [
+ "n",
+ "ian"
+ ],
+ "lian":
+ [
+ "l",
+ "ian"
+ ],
+ "zian":
+ [
+ "z",
+ "ian"
+ ],
+ "cian":
+ [
+ "c",
+ "ian"
+ ],
+ "sian":
+ [
+ "s",
+ "ian"
+ ],
+ "zhian":
+ [
+ "zh",
+ "ian"
+ ],
+ "jian":
+ [
+ "j",
+ "ian"
+ ],
+ "qian":
+ [
+ "q",
+ "ian"
+ ],
+ "xian":
+ [
+ "x",
+ "ian"
+ ],
+ "kian":
+ [
+ "k",
+ "ian"
+ ],
+ "yan":
+ [
+ "y",
+ "ian"
+ ],
+ "ian":
+ [
+ "ian"
+ ],
+ "juan":
+ [
+ "j",
+ "van"
+ ],
+ "quan":
+ [
+ "q",
+ "van"
+ ],
+ "xuan":
+ [
+ "x",
+ "van"
+ ],
+ "yuan":
+ [
+ "y",
+ "van"
+ ],
+ "van":
+ [
+ "van"
+ ],
+ "ben":
+ [
+ "b",
+ "en"
+ ],
+ "pen":
+ [
+ "p",
+ "en"
+ ],
+ "men":
+ [
+ "m",
+ "en"
+ ],
+ "fen":
+ [
+ "f",
+ "en"
+ ],
+ "den":
+ [
+ "d",
+ "en"
+ ],
+ "ten":
+ [
+ "t",
+ "en"
+ ],
+ "nen":
+ [
+ "n",
+ "en"
+ ],
+ "len":
+ [
+ "l",
+ "en"
+ ],
+ "zen":
+ [
+ "z",
+ "en"
+ ],
+ "cen":
+ [
+ "c",
+ "en"
+ ],
+ "sen":
+ [
+ "s",
+ "en"
+ ],
+ "zhen":
+ [
+ "zh",
+ "en"
+ ],
+ "chen":
+ [
+ "ch",
+ "en"
+ ],
+ "shen":
+ [
+ "sh",
+ "en"
+ ],
+ "xen":
+ [
+ "x",
+ "en"
+ ],
+ "gen":
+ [
+ "g",
+ "en"
+ ],
+ "ken":
+ [
+ "k",
+ "en"
+ ],
+ "hen":
+ [
+ "h",
+ "en"
+ ],
+ "ren":
+ [
+ "r",
+ "en"
+ ],
+ "en":
+ [
+ "en"
+ ],
+ "bun":
+ [
+ "b",
+ "uen"
+ ],
+ "pun":
+ [
+ "p",
+ "uen"
+ ],
+ "mun":
+ [
+ "m",
+ "uen"
+ ],
+ "fun":
+ [
+ "f",
+ "uen"
+ ],
+ "dun":
+ [
+ "d",
+ "uen"
+ ],
+ "tun":
+ [
+ "t",
+ "uen"
+ ],
+ "nun":
+ [
+ "n",
+ "uen"
+ ],
+ "lun":
+ [
+ "l",
+ "uen"
+ ],
+ "zun":
+ [
+ "z",
+ "uen"
+ ],
+ "cun":
+ [
+ "c",
+ "uen"
+ ],
+ "sun":
+ [
+ "s",
+ "uen"
+ ],
+ "zhun":
+ [
+ "zh",
+ "uen"
+ ],
+ "chun":
+ [
+ "ch",
+ "uen"
+ ],
+ "shun":
+ [
+ "sh",
+ "uen"
+ ],
+ "gun":
+ [
+ "g",
+ "uen"
+ ],
+ "kun":
+ [
+ "k",
+ "uen"
+ ],
+ "hun":
+ [
+ "h",
+ "uen"
+ ],
+ "run":
+ [
+ "r",
+ "uen"
+ ],
+ "wen":
+ [
+ "w",
+ "uen"
+ ],
+ "uen":
+ [
+ "uen"
+ ],
+ "bin":
+ [
+ "b",
+ "in"
+ ],
+ "pin":
+ [
+ "p",
+ "in"
+ ],
+ "min":
+ [
+ "m",
+ "in"
+ ],
+ "fin":
+ [
+ "f",
+ "in"
+ ],
+ "din":
+ [
+ "d",
+ "in"
+ ],
+ "tin":
+ [
+ "t",
+ "in"
+ ],
+ "nin":
+ [
+ "n",
+ "in"
+ ],
+ "lin":
+ [
+ "l",
+ "in"
+ ],
+ "zin":
+ [
+ "z",
+ "in"
+ ],
+ "cin":
+ [
+ "c",
+ "in"
+ ],
+ "sin":
+ [
+ "s",
+ "in"
+ ],
+ "jin":
+ [
+ "j",
+ "in"
+ ],
+ "qin":
+ [
+ "q",
+ "in"
+ ],
+ "xin":
+ [
+ "x",
+ "in"
+ ],
+ "yin":
+ [
+ "y",
+ "in"
+ ],
+ "in":
+ [
+ "in"
+ ],
+ "jun":
+ [
+ "j",
+ "vn"
+ ],
+ "qun":
+ [
+ "q",
+ "vn"
+ ],
+ "xun":
+ [
+ "x",
+ "vn"
+ ],
+ "yun":
+ [
+ "y",
+ "vn"
+ ],
+ "vn":
+ [
+ "vn"
+ ],
+ "bang":
+ [
+ "b",
+ "ang"
+ ],
+ "pang":
+ [
+ "p",
+ "ang"
+ ],
+ "mang":
+ [
+ "m",
+ "ang"
+ ],
+ "fang":
+ [
+ "f",
+ "ang"
+ ],
+ "dang":
+ [
+ "d",
+ "ang"
+ ],
+ "tang":
+ [
+ "t",
+ "ang"
+ ],
+ "nang":
+ [
+ "n",
+ "ang"
+ ],
+ "lang":
+ [
+ "l",
+ "ang"
+ ],
+ "zang":
+ [
+ "z",
+ "ang"
+ ],
+ "cang":
+ [
+ "c",
+ "ang"
+ ],
+ "sang":
+ [
+ "s",
+ "ang"
+ ],
+ "zhang":
+ [
+ "zh",
+ "ang"
+ ],
+ "chang":
+ [
+ "ch",
+ "ang"
+ ],
+ "shang":
+ [
+ "sh",
+ "ang"
+ ],
+ "gang":
+ [
+ "g",
+ "ang"
+ ],
+ "kang":
+ [
+ "k",
+ "ang"
+ ],
+ "hang":
+ [
+ "h",
+ "ang"
+ ],
+ "rang":
+ [
+ "r",
+ "ang"
+ ],
+ "ang":
+ [
+ "ang"
+ ],
+ "biang":
+ [
+ "b",
+ "iang"
+ ],
+ "piang":
+ [
+ "p",
+ "iang"
+ ],
+ "miang":
+ [
+ "m",
+ "iang"
+ ],
+ "fiang":
+ [
+ "f",
+ "iang"
+ ],
+ "diang":
+ [
+ "d",
+ "iang"
+ ],
+ "tiang":
+ [
+ "t",
+ "iang"
+ ],
+ "niang":
+ [
+ "n",
+ "iang"
+ ],
+ "liang":
+ [
+ "l",
+ "iang"
+ ],
+ "ziang":
+ [
+ "z",
+ "iang"
+ ],
+ "ciang":
+ [
+ "c",
+ "iang"
+ ],
+ "siang":
+ [
+ "s",
+ "iang"
+ ],
+ "jiang":
+ [
+ "j",
+ "iang"
+ ],
+ "qiang":
+ [
+ "q",
+ "iang"
+ ],
+ "xiang":
+ [
+ "x",
+ "iang"
+ ],
+ "yang":
+ [
+ "y",
+ "iang"
+ ],
+ "iang":
+ [
+ "iang"
+ ],
+ "luang":
+ [
+ "l",
+ "uang"
+ ],
+ "zuang":
+ [
+ "z",
+ "uang"
+ ],
+ "cuang":
+ [
+ "c",
+ "uang"
+ ],
+ "suang":
+ [
+ "s",
+ "uang"
+ ],
+ "zhuang":
+ [
+ "zh",
+ "uang"
+ ],
+ "chuang":
+ [
+ "ch",
+ "uang"
+ ],
+ "shuang":
+ [
+ "sh",
+ "uang"
+ ],
+ "guang":
+ [
+ "g",
+ "uang"
+ ],
+ "kuang":
+ [
+ "k",
+ "uang"
+ ],
+ "huang":
+ [
+ "h",
+ "uang"
+ ],
+ "ruang":
+ [
+ "r",
+ "uang"
+ ],
+ "wang":
+ [
+ "w",
+ "uang"
+ ],
+ "uang":
+ [
+ "uang"
+ ],
+ "beng":
+ [
+ "b",
+ "eng"
+ ],
+ "peng":
+ [
+ "p",
+ "eng"
+ ],
+ "meng":
+ [
+ "m",
+ "eng"
+ ],
+ "feng":
+ [
+ "f",
+ "eng"
+ ],
+ "deng":
+ [
+ "d",
+ "eng"
+ ],
+ "teng":
+ [
+ "t",
+ "eng"
+ ],
+ "neng":
+ [
+ "n",
+ "eng"
+ ],
+ "leng":
+ [
+ "l",
+ "eng"
+ ],
+ "zeng":
+ [
+ "z",
+ "eng"
+ ],
+ "ceng":
+ [
+ "c",
+ "eng"
+ ],
+ "seng":
+ [
+ "s",
+ "eng"
+ ],
+ "zheng":
+ [
+ "zh",
+ "eng"
+ ],
+ "cheng":
+ [
+ "ch",
+ "eng"
+ ],
+ "sheng":
+ [
+ "sh",
+ "eng"
+ ],
+ "geng":
+ [
+ "g",
+ "eng"
+ ],
+ "keng":
+ [
+ "k",
+ "eng"
+ ],
+ "heng":
+ [
+ "h",
+ "eng"
+ ],
+ "reng":
+ [
+ "r",
+ "eng"
+ ],
+ "eng":
+ [
+ "eng"
+ ],
+ "weng":
+ [
+ "w",
+ "ueng"
+ ],
+ "ueng":
+ [
+ "ueng"
+ ],
+ "bing":
+ [
+ "b",
+ "ing"
+ ],
+ "ping":
+ [
+ "p",
+ "ing"
+ ],
+ "ming":
+ [
+ "m",
+ "ing"
+ ],
+ "fing":
+ [
+ "f",
+ "ing"
+ ],
+ "ding":
+ [
+ "d",
+ "ing"
+ ],
+ "ting":
+ [
+ "t",
+ "ing"
+ ],
+ "ning":
+ [
+ "n",
+ "ing"
+ ],
+ "ling":
+ [
+ "l",
+ "ing"
+ ],
+ "zing":
+ [
+ "z",
+ "ing"
+ ],
+ "cing":
+ [
+ "c",
+ "ing"
+ ],
+ "sing":
+ [
+ "s",
+ "ing"
+ ],
+ "jing":
+ [
+ "j",
+ "ing"
+ ],
+ "qing":
+ [
+ "q",
+ "ing"
+ ],
+ "xing":
+ [
+ "x",
+ "ing"
+ ],
+ "ging":
+ [
+ "g",
+ "ing"
+ ],
+ "king":
+ [
+ "k",
+ "ing"
+ ],
+ "hing":
+ [
+ "h",
+ "ing"
+ ],
+ "ying":
+ [
+ "y",
+ "ing"
+ ],
+ "ing":
+ [
+ "ing"
+ ],
+ "bong":
+ [
+ "b",
+ "ong"
+ ],
+ "pong":
+ [
+ "p",
+ "ong"
+ ],
+ "mong":
+ [
+ "m",
+ "ong"
+ ],
+ "fong":
+ [
+ "f",
+ "ong"
+ ],
+ "dong":
+ [
+ "d",
+ "ong"
+ ],
+ "tong":
+ [
+ "t",
+ "ong"
+ ],
+ "nong":
+ [
+ "n",
+ "ong"
+ ],
+ "long":
+ [
+ "l",
+ "ong"
+ ],
+ "zong":
+ [
+ "z",
+ "ong"
+ ],
+ "cong":
+ [
+ "c",
+ "ong"
+ ],
+ "song":
+ [
+ "s",
+ "ong"
+ ],
+ "zhong":
+ [
+ "zh",
+ "ong"
+ ],
+ "chong":
+ [
+ "ch",
+ "ong"
+ ],
+ "shong":
+ [
+ "sh",
+ "ong"
+ ],
+ "gong":
+ [
+ "g",
+ "ong"
+ ],
+ "kong":
+ [
+ "k",
+ "ong"
+ ],
+ "hong":
+ [
+ "h",
+ "ong"
+ ],
+ "rong":
+ [
+ "r",
+ "ong"
+ ],
+ "ong":
+ [
+ "ong"
+ ],
+ "jiong":
+ [
+ "j",
+ "iong"
+ ],
+ "qiong":
+ [
+ "q",
+ "iong"
+ ],
+ "xiong":
+ [
+ "x",
+ "iong"
+ ],
+ "yong":
+ [
+ "y",
+ "iong"
+ ],
+ "iong":
+ [
+ "iong"
+ ],
+ "bar":
+ [
+ "b",
+ "ar"
+ ],
+ "par":
+ [
+ "p",
+ "ar"
+ ],
+ "mar":
+ [
+ "m",
+ "ar"
+ ],
+ "far":
+ [
+ "f",
+ "ar"
+ ],
+ "dar":
+ [
+ "d",
+ "ar"
+ ],
+ "tar":
+ [
+ "t",
+ "ar"
+ ],
+ "nar":
+ [
+ "n",
+ "ar"
+ ],
+ "lar":
+ [
+ "l",
+ "ar"
+ ],
+ "zar":
+ [
+ "z",
+ "ar"
+ ],
+ "car":
+ [
+ "c",
+ "ar"
+ ],
+ "sar":
+ [
+ "s",
+ "ar"
+ ],
+ "zhar":
+ [
+ "zh",
+ "ar"
+ ],
+ "char":
+ [
+ "ch",
+ "ar"
+ ],
+ "shar":
+ [
+ "sh",
+ "ar"
+ ],
+ "gar":
+ [
+ "g",
+ "ar"
+ ],
+ "kar":
+ [
+ "k",
+ "ar"
+ ],
+ "har":
+ [
+ "h",
+ "ar"
+ ],
+ "rar":
+ [
+ "r",
+ "ar"
+ ],
+ "ar":
+ [
+ "ar"
+ ],
+ "biar":
+ [
+ "b",
+ "iar"
+ ],
+ "piar":
+ [
+ "p",
+ "iar"
+ ],
+ "miar":
+ [
+ "m",
+ "iar"
+ ],
+ "fiar":
+ [
+ "f",
+ "iar"
+ ],
+ "diar":
+ [
+ "d",
+ "iar"
+ ],
+ "tiar":
+ [
+ "t",
+ "iar"
+ ],
+ "niar":
+ [
+ "n",
+ "iar"
+ ],
+ "liar":
+ [
+ "l",
+ "iar"
+ ],
+ "jiar":
+ [
+ "j",
+ "iar"
+ ],
+ "qiar":
+ [
+ "q",
+ "iar"
+ ],
+ "xiar":
+ [
+ "x",
+ "iar"
+ ],
+ "yar":
+ [
+ "y",
+ "iar"
+ ],
+ "iar":
+ [
+ "iar"
+ ],
+ "juar":
+ [
+ "j",
+ "var"
+ ],
+ "quar":
+ [
+ "q",
+ "var"
+ ],
+ "xuar":
+ [
+ "x",
+ "var"
+ ],
+ "yuar":
+ [
+ "y",
+ "var"
+ ],
+ "var":
+ [
+ "var"
+ ],
+ "duar":
+ [
+ "d",
+ "uar"
+ ],
+ "tuar":
+ [
+ "t",
+ "uar"
+ ],
+ "nuar":
+ [
+ "n",
+ "uar"
+ ],
+ "luar":
+ [
+ "l",
+ "uar"
+ ],
+ "zuar":
+ [
+ "z",
+ "uar"
+ ],
+ "cuar":
+ [
+ "c",
+ "uar"
+ ],
+ "suar":
+ [
+ "s",
+ "uar"
+ ],
+ "zhuar":
+ [
+ "zh",
+ "uar"
+ ],
+ "chuar":
+ [
+ "ch",
+ "uar"
+ ],
+ "shuar":
+ [
+ "sh",
+ "uar"
+ ],
+ "guar":
+ [
+ "g",
+ "uar"
+ ],
+ "kuar":
+ [
+ "k",
+ "uar"
+ ],
+ "huar":
+ [
+ "h",
+ "uar"
+ ],
+ "ruar":
+ [
+ "r",
+ "uar"
+ ],
+ "war":
+ [
+ "w",
+ "uar"
+ ],
+ "uar":
+ [
+ "uar"
+ ],
+ "baor":
+ [
+ "b",
+ "aor"
+ ],
+ "paor":
+ [
+ "p",
+ "aor"
+ ],
+ "maor":
+ [
+ "m",
+ "aor"
+ ],
+ "faor":
+ [
+ "f",
+ "aor"
+ ],
+ "daor":
+ [
+ "d",
+ "aor"
+ ],
+ "taor":
+ [
+ "t",
+ "aor"
+ ],
+ "naor":
+ [
+ "n",
+ "aor"
+ ],
+ "laor":
+ [
+ "l",
+ "aor"
+ ],
+ "zaor":
+ [
+ "z",
+ "aor"
+ ],
+ "caor":
+ [
+ "c",
+ "aor"
+ ],
+ "saor":
+ [
+ "s",
+ "aor"
+ ],
+ "zhaor":
+ [
+ "zh",
+ "aor"
+ ],
+ "chaor":
+ [
+ "ch",
+ "aor"
+ ],
+ "shaor":
+ [
+ "sh",
+ "aor"
+ ],
+ "gaor":
+ [
+ "g",
+ "aor"
+ ],
+ "kaor":
+ [
+ "k",
+ "aor"
+ ],
+ "haor":
+ [
+ "h",
+ "aor"
+ ],
+ "raor":
+ [
+ "r",
+ "aor"
+ ],
+ "aor":
+ [
+ "aor"
+ ],
+ "biaor":
+ [
+ "b",
+ "iaor"
+ ],
+ "piaor":
+ [
+ "p",
+ "iaor"
+ ],
+ "miaor":
+ [
+ "m",
+ "iaor"
+ ],
+ "fiaor":
+ [
+ "f",
+ "iaor"
+ ],
+ "diaor":
+ [
+ "d",
+ "iaor"
+ ],
+ "tiaor":
+ [
+ "t",
+ "iaor"
+ ],
+ "niaor":
+ [
+ "n",
+ "iaor"
+ ],
+ "liaor":
+ [
+ "l",
+ "iaor"
+ ],
+ "jiaor":
+ [
+ "j",
+ "iaor"
+ ],
+ "qiaor":
+ [
+ "q",
+ "iaor"
+ ],
+ "xiaor":
+ [
+ "x",
+ "iaor"
+ ],
+ "yaor":
+ [
+ "y",
+ "iaor"
+ ],
+ "iaor":
+ [
+ "iaor"
+ ],
+ "beer":
+ [
+ "b",
+ "eer"
+ ],
+ "peer":
+ [
+ "p",
+ "eer"
+ ],
+ "meer":
+ [
+ "m",
+ "eer"
+ ],
+ "feer":
+ [
+ "f",
+ "eer"
+ ],
+ "deer":
+ [
+ "d",
+ "eer"
+ ],
+ "teer":
+ [
+ "t",
+ "eer"
+ ],
+ "neer":
+ [
+ "n",
+ "eer"
+ ],
+ "leer":
+ [
+ "l",
+ "eer"
+ ],
+ "zeer":
+ [
+ "z",
+ "eer"
+ ],
+ "ceer":
+ [
+ "c",
+ "eer"
+ ],
+ "seer":
+ [
+ "s",
+ "eer"
+ ],
+ "zheer":
+ [
+ "zh",
+ "eer"
+ ],
+ "cheer":
+ [
+ "ch",
+ "eer"
+ ],
+ "sheer":
+ [
+ "sh",
+ "eer"
+ ],
+ "geer":
+ [
+ "g",
+ "eer"
+ ],
+ "keer":
+ [
+ "k",
+ "eer"
+ ],
+ "heer":
+ [
+ "h",
+ "eer"
+ ],
+ "reer":
+ [
+ "r",
+ "eer"
+ ],
+ "eer":
+ [
+ "eer"
+ ],
+ "bier":
+ [
+ "b",
+ "ier"
+ ],
+ "pier":
+ [
+ "p",
+ "ier"
+ ],
+ "mier":
+ [
+ "m",
+ "ier"
+ ],
+ "fier":
+ [
+ "f",
+ "ier"
+ ],
+ "dier":
+ [
+ "d",
+ "ier"
+ ],
+ "tier":
+ [
+ "t",
+ "ier"
+ ],
+ "nier":
+ [
+ "n",
+ "ier"
+ ],
+ "lier":
+ [
+ "l",
+ "ier"
+ ],
+ "jier":
+ [
+ "j",
+ "ier"
+ ],
+ "qier":
+ [
+ "q",
+ "ier"
+ ],
+ "xier":
+ [
+ "x",
+ "ier"
+ ],
+ "yer":
+ [
+ "y",
+ "ier"
+ ],
+ "ier":
+ [
+ "ier"
+ ],
+ "nver":
+ [
+ "n",
+ "ver"
+ ],
+ "lver":
+ [
+ "l",
+ "ver"
+ ],
+ "juer":
+ [
+ "j",
+ "ver"
+ ],
+ "quer":
+ [
+ "q",
+ "ver"
+ ],
+ "xuer":
+ [
+ "x",
+ "ver"
+ ],
+ "yuer":
+ [
+ "y",
+ "ver"
+ ],
+ "ver":
+ [
+ "ver"
+ ],
+ "bour":
+ [
+ "b",
+ "our"
+ ],
+ "pour":
+ [
+ "p",
+ "our"
+ ],
+ "mour":
+ [
+ "m",
+ "our"
+ ],
+ "four":
+ [
+ "f",
+ "our"
+ ],
+ "dour":
+ [
+ "d",
+ "our"
+ ],
+ "tour":
+ [
+ "t",
+ "our"
+ ],
+ "nour":
+ [
+ "n",
+ "our"
+ ],
+ "lour":
+ [
+ "l",
+ "our"
+ ],
+ "zour":
+ [
+ "z",
+ "our"
+ ],
+ "cour":
+ [
+ "c",
+ "our"
+ ],
+ "sour":
+ [
+ "s",
+ "our"
+ ],
+ "zhour":
+ [
+ "zh",
+ "our"
+ ],
+ "chour":
+ [
+ "ch",
+ "our"
+ ],
+ "shour":
+ [
+ "sh",
+ "our"
+ ],
+ "gour":
+ [
+ "g",
+ "our"
+ ],
+ "kour":
+ [
+ "k",
+ "our"
+ ],
+ "hour":
+ [
+ "h",
+ "our"
+ ],
+ "rour":
+ [
+ "r",
+ "our"
+ ],
+ "our":
+ [
+ "our"
+ ],
+ "biur":
+ [
+ "b",
+ "iour"
+ ],
+ "piur":
+ [
+ "p",
+ "iour"
+ ],
+ "miur":
+ [
+ "m",
+ "iour"
+ ],
+ "fiur":
+ [
+ "f",
+ "iour"
+ ],
+ "diur":
+ [
+ "d",
+ "iour"
+ ],
+ "tiur":
+ [
+ "t",
+ "iour"
+ ],
+ "niur":
+ [
+ "n",
+ "iour"
+ ],
+ "liur":
+ [
+ "l",
+ "iour"
+ ],
+ "jiur":
+ [
+ "j",
+ "iour"
+ ],
+ "qiur":
+ [
+ "q",
+ "iour"
+ ],
+ "xiur":
+ [
+ "x",
+ "iour"
+ ],
+ "your":
+ [
+ "y",
+ "iour"
+ ],
+ "iour":
+ [
+ "iour"
+ ],
+ "bor":
+ [
+ "b",
+ "uor"
+ ],
+ "por":
+ [
+ "p",
+ "uor"
+ ],
+ "mor":
+ [
+ "m",
+ "uor"
+ ],
+ "for":
+ [
+ "f",
+ "uor"
+ ],
+ "duor":
+ [
+ "d",
+ "uor"
+ ],
+ "tuor":
+ [
+ "t",
+ "uor"
+ ],
+ "nuor":
+ [
+ "n",
+ "uor"
+ ],
+ "luor":
+ [
+ "l",
+ "uor"
+ ],
+ "zuor":
+ [
+ "z",
+ "uor"
+ ],
+ "cuor":
+ [
+ "c",
+ "uor"
+ ],
+ "suor":
+ [
+ "s",
+ "uor"
+ ],
+ "zhuor":
+ [
+ "zh",
+ "uor"
+ ],
+ "chuor":
+ [
+ "ch",
+ "uor"
+ ],
+ "shuor":
+ [
+ "sh",
+ "uor"
+ ],
+ "guor":
+ [
+ "g",
+ "uor"
+ ],
+ "kuor":
+ [
+ "k",
+ "uor"
+ ],
+ "huor":
+ [
+ "h",
+ "uor"
+ ],
+ "ruor":
+ [
+ "r",
+ "uor"
+ ],
+ "wor":
+ [
+ "w",
+ "uor"
+ ],
+ "uor":
+ [
+ "uor"
+ ],
+ "ber":
+ [
+ "b",
+ "er"
+ ],
+ "per":
+ [
+ "p",
+ "er"
+ ],
+ "mer":
+ [
+ "m",
+ "er"
+ ],
+ "fer":
+ [
+ "f",
+ "er"
+ ],
+ "der":
+ [
+ "d",
+ "er"
+ ],
+ "ter":
+ [
+ "t",
+ "er"
+ ],
+ "ner":
+ [
+ "n",
+ "er"
+ ],
+ "ler":
+ [
+ "l",
+ "er"
+ ],
+ "zer":
+ [
+ "z",
+ "er"
+ ],
+ "cer":
+ [
+ "c",
+ "er"
+ ],
+ "ser":
+ [
+ "s",
+ "er"
+ ],
+ "zher":
+ [
+ "zh",
+ "er"
+ ],
+ "cher":
+ [
+ "ch",
+ "er"
+ ],
+ "sher":
+ [
+ "sh",
+ "er"
+ ],
+ "ger":
+ [
+ "g",
+ "er"
+ ],
+ "ker":
+ [
+ "k",
+ "er"
+ ],
+ "her":
+ [
+ "h",
+ "er"
+ ],
+ "rer":
+ [
+ "r",
+ "er"
+ ],
+ "er":
+ [
+ "er"
+ ],
+ "bir":
+ [
+ "b",
+ "ir"
+ ],
+ "pir":
+ [
+ "p",
+ "ir"
+ ],
+ "mir":
+ [
+ "m",
+ "ir"
+ ],
+ "fir":
+ [
+ "f",
+ "ir"
+ ],
+ "dir":
+ [
+ "d",
+ "ir"
+ ],
+ "tir":
+ [
+ "t",
+ "ir"
+ ],
+ "nir":
+ [
+ "n",
+ "ir"
+ ],
+ "lir":
+ [
+ "l",
+ "ir"
+ ],
+ "jir":
+ [
+ "j",
+ "ir"
+ ],
+ "qir":
+ [
+ "q",
+ "ir"
+ ],
+ "xir":
+ [
+ "x",
+ "ir"
+ ],
+ "yir":
+ [
+ "y",
+ "ir"
+ ],
+ "ir":
+ [
+ "ir"
+ ],
+ "nvr":
+ [
+ "n",
+ "vr"
+ ],
+ "lvr":
+ [
+ "l",
+ "vr"
+ ],
+ "jur":
+ [
+ "j",
+ "vr"
+ ],
+ "qur":
+ [
+ "q",
+ "vr"
+ ],
+ "xur":
+ [
+ "x",
+ "vr"
+ ],
+ "yur":
+ [
+ "y",
+ "vr"
+ ],
+ "vr":
+ [
+ "vr"
+ ],
+ "duer":
+ [
+ "d",
+ "uer"
+ ],
+ "tuer":
+ [
+ "t",
+ "uer"
+ ],
+ "nuer":
+ [
+ "n",
+ "uer"
+ ],
+ "luer":
+ [
+ "l",
+ "uer"
+ ],
+ "zuer":
+ [
+ "z",
+ "uer"
+ ],
+ "cuer":
+ [
+ "c",
+ "uer"
+ ],
+ "suer":
+ [
+ "s",
+ "uer"
+ ],
+ "zhuer":
+ [
+ "zh",
+ "uer"
+ ],
+ "chuer":
+ [
+ "ch",
+ "uer"
+ ],
+ "shuer":
+ [
+ "sh",
+ "uer"
+ ],
+ "guer":
+ [
+ "g",
+ "uer"
+ ],
+ "kuer":
+ [
+ "k",
+ "uer"
+ ],
+ "huer":
+ [
+ "h",
+ "uer"
+ ],
+ "ruer":
+ [
+ "r",
+ "uer"
+ ],
+ "wer":
+ [
+ "w",
+ "uer"
+ ],
+ "uer":
+ [
+ "uer"
+ ],
+ "bur":
+ [
+ "b",
+ "ur"
+ ],
+ "pur":
+ [
+ "p",
+ "ur"
+ ],
+ "mur":
+ [
+ "m",
+ "ur"
+ ],
+ "fur":
+ [
+ "f",
+ "ur"
+ ],
+ "dur":
+ [
+ "d",
+ "ur"
+ ],
+ "tur":
+ [
+ "t",
+ "ur"
+ ],
+ "nur":
+ [
+ "n",
+ "ur"
+ ],
+ "lur":
+ [
+ "l",
+ "ur"
+ ],
+ "zur":
+ [
+ "z",
+ "ur"
+ ],
+ "cur":
+ [
+ "c",
+ "ur"
+ ],
+ "sur":
+ [
+ "s",
+ "ur"
+ ],
+ "zhur":
+ [
+ "zh",
+ "ur"
+ ],
+ "chur":
+ [
+ "ch",
+ "ur"
+ ],
+ "shur":
+ [
+ "sh",
+ "ur"
+ ],
+ "gur":
+ [
+ "g",
+ "ur"
+ ],
+ "kur":
+ [
+ "k",
+ "ur"
+ ],
+ "hur":
+ [
+ "h",
+ "ur"
+ ],
+ "rur":
+ [
+ "r",
+ "ur"
+ ],
+ "wur":
+ [
+ "w",
+ "ur"
+ ],
+ "ur":
+ [
+ "ur"
+ ],
+ "bangr":
+ [
+ "b",
+ "angr"
+ ],
+ "pangr":
+ [
+ "p",
+ "angr"
+ ],
+ "mangr":
+ [
+ "m",
+ "angr"
+ ],
+ "fangr":
+ [
+ "f",
+ "angr"
+ ],
+ "dangr":
+ [
+ "d",
+ "angr"
+ ],
+ "tangr":
+ [
+ "t",
+ "angr"
+ ],
+ "nangr":
+ [
+ "n",
+ "angr"
+ ],
+ "langr":
+ [
+ "l",
+ "angr"
+ ],
+ "zangr":
+ [
+ "z",
+ "angr"
+ ],
+ "cangr":
+ [
+ "c",
+ "angr"
+ ],
+ "sangr":
+ [
+ "s",
+ "angr"
+ ],
+ "zhangr":
+ [
+ "zh",
+ "angr"
+ ],
+ "changr":
+ [
+ "ch",
+ "angr"
+ ],
+ "shangr":
+ [
+ "sh",
+ "angr"
+ ],
+ "gangr":
+ [
+ "g",
+ "angr"
+ ],
+ "kangr":
+ [
+ "k",
+ "angr"
+ ],
+ "hangr":
+ [
+ "h",
+ "angr"
+ ],
+ "rangr":
+ [
+ "r",
+ "angr"
+ ],
+ "angr":
+ [
+ "angr"
+ ],
+ "biangr":
+ [
+ "b",
+ "iangr"
+ ],
+ "niangr":
+ [
+ "n",
+ "iangr"
+ ],
+ "liangr":
+ [
+ "l",
+ "iangr"
+ ],
+ "jiangr":
+ [
+ "j",
+ "iangr"
+ ],
+ "qiangr":
+ [
+ "q",
+ "iangr"
+ ],
+ "xiangr":
+ [
+ "x",
+ "iangr"
+ ],
+ "yangr":
+ [
+ "y",
+ "iangr"
+ ],
+ "iangr":
+ [
+ "iangr"
+ ],
+ "zhuangr":
+ [
+ "zh",
+ "uangr"
+ ],
+ "chuangr":
+ [
+ "ch",
+ "uangr"
+ ],
+ "shuangr":
+ [
+ "sh",
+ "uangr"
+ ],
+ "guangr":
+ [
+ "g",
+ "uangr"
+ ],
+ "kuangr":
+ [
+ "k",
+ "uangr"
+ ],
+ "huangr":
+ [
+ "h",
+ "uangr"
+ ],
+ "ruangr":
+ [
+ "r",
+ "uangr"
+ ],
+ "wangr":
+ [
+ "w",
+ "uangr"
+ ],
+ "uangr":
+ [
+ "uangr"
+ ],
+ "bengr":
+ [
+ "b",
+ "engr"
+ ],
+ "pengr":
+ [
+ "p",
+ "engr"
+ ],
+ "mengr":
+ [
+ "m",
+ "engr"
+ ],
+ "fengr":
+ [
+ "f",
+ "engr"
+ ],
+ "dengr":
+ [
+ "d",
+ "engr"
+ ],
+ "tengr":
+ [
+ "t",
+ "engr"
+ ],
+ "nengr":
+ [
+ "n",
+ "engr"
+ ],
+ "lengr":
+ [
+ "l",
+ "engr"
+ ],
+ "zengr":
+ [
+ "z",
+ "engr"
+ ],
+ "cengr":
+ [
+ "c",
+ "engr"
+ ],
+ "sengr":
+ [
+ "s",
+ "engr"
+ ],
+ "zhengr":
+ [
+ "zh",
+ "engr"
+ ],
+ "chengr":
+ [
+ "ch",
+ "engr"
+ ],
+ "shengr":
+ [
+ "sh",
+ "engr"
+ ],
+ "gengr":
+ [
+ "g",
+ "engr"
+ ],
+ "kengr":
+ [
+ "k",
+ "engr"
+ ],
+ "hengr":
+ [
+ "h",
+ "engr"
+ ],
+ "rengr":
+ [
+ "r",
+ "engr"
+ ],
+ "engr":
+ [
+ "engr"
+ ],
+ "bingr":
+ [
+ "b",
+ "ingr"
+ ],
+ "pingr":
+ [
+ "p",
+ "ingr"
+ ],
+ "mingr":
+ [
+ "m",
+ "ingr"
+ ],
+ "fingr":
+ [
+ "f",
+ "ingr"
+ ],
+ "dingr":
+ [
+ "d",
+ "ingr"
+ ],
+ "tingr":
+ [
+ "t",
+ "ingr"
+ ],
+ "ningr":
+ [
+ "n",
+ "ingr"
+ ],
+ "lingr":
+ [
+ "l",
+ "ingr"
+ ],
+ "jingr":
+ [
+ "j",
+ "ingr"
+ ],
+ "qingr":
+ [
+ "q",
+ "ingr"
+ ],
+ "xingr":
+ [
+ "x",
+ "ingr"
+ ],
+ "yingr":
+ [
+ "y",
+ "ingr"
+ ],
+ "ingr":
+ [
+ "ingr"
+ ],
+ "wengr":
+ [
+ "w",
+ "uengr"
+ ],
+ "uengr":
+ [
+ "uengr"
+ ],
+ "dongr":
+ [
+ "d",
+ "ongr"
+ ],
+ "tongr":
+ [
+ "t",
+ "ongr"
+ ],
+ "nongr":
+ [
+ "n",
+ "ongr"
+ ],
+ "longr":
+ [
+ "l",
+ "ongr"
+ ],
+ "zongr":
+ [
+ "z",
+ "ongr"
+ ],
+ "congr":
+ [
+ "c",
+ "ongr"
+ ],
+ "songr":
+ [
+ "s",
+ "ongr"
+ ],
+ "zhongr":
+ [
+ "zh",
+ "ongr"
+ ],
+ "chongr":
+ [
+ "ch",
+ "ongr"
+ ],
+ "shongr":
+ [
+ "sh",
+ "ongr"
+ ],
+ "gongr":
+ [
+ "g",
+ "ongr"
+ ],
+ "kongr":
+ [
+ "k",
+ "ongr"
+ ],
+ "hongr":
+ [
+ "h",
+ "ongr"
+ ],
+ "rongr":
+ [
+ "r",
+ "ongr"
+ ],
+ "ongr":
+ [
+ "ongr"
+ ],
+ "jiongr":
+ [
+ "j",
+ "iongr"
+ ],
+ "qiongr":
+ [
+ "q",
+ "iongr"
+ ],
+ "xiongr":
+ [
+ "x",
+ "iongr"
+ ],
+ "yongr":
+ [
+ "y",
+ "iongr"
+ ],
+ "iongr":
+ [
+ "iongr"
+ ],
+ "mm":
+ [
+ "mm"
+ ],
+ "nn":
+ [
+ "nn"
+ ],
+ "ng":
+ [
+ "ng"
+ ]
+ },
+ "phon_class":
+ {
+ "head":
+ [
+ "b",
+ "z",
+ "l",
+ "sh",
+ "p",
+ "d",
+ "m",
+ "x",
+ "s",
+ "y",
+ "r",
+ "f",
+ "n",
+ "h",
+ "c",
+ "j",
+ "zh",
+ "ch",
+ "t",
+ "g",
+ "q",
+ "w",
+ "k"
+ ],
+ "tail":
+ [
+ "ia",
+ "i",
+ "ua",
+ "ei",
+ "van",
+ "iang",
+ "a",
+ "iong",
+ "uar",
+ "angr",
+ "nn",
+ "uengr",
+ "ng",
+ "ao",
+ "uo",
+ "iou",
+ "en",
+ "uang",
+ "er",
+ "eh",
+ "ier",
+ "v",
+ "ae",
+ "aor",
+ "vr",
+ "ing",
+ "iao",
+ "in",
+ "our",
+ "uei",
+ "ir",
+ "eer",
+ "iii",
+ "ong",
+ "ver",
+ "iour",
+ "iai",
+ "u",
+ "io",
+ "ie",
+ "aen",
+ "ueng",
+ "ur",
+ "engr",
+ "ingr",
+ "ongr",
+ "eng",
+ "ou",
+ "uen",
+ "o",
+ "uae",
+ "e",
+ "uao",
+ "ar",
+ "ve",
+ "iangr",
+ "ii",
+ "var",
+ "iar",
+ "iongr",
+ "uer",
+ "iei",
+ "iaor",
+ "uou",
+ "uan",
+ "ang",
+ "ai",
+ "uor",
+ "uangr",
+ "mm",
+ "an",
+ "uai",
+ "ian",
+ "vn"
+ ]
+ }
+ },
+ {
+ "language": "jp",
+ "syllable_alias":
+ {
+ "n": "nv",
+ "m": "mv",
+ "N": "nv",
+ "M": "mv",
+ "la": "ra",
+ "A": "ax",
+ "I": "ix",
+ "U": "ux",
+ "E": "ex",
+ "O": "ox",
+ "t": "cl",
+ "jya": "ja",
+ "jyu": "ju",
+ "jye": "je",
+ "jyo": "jo",
+ "sya": "sha",
+ "syu": "shu",
+ "sye": "she",
+ "syo": "sho",
+ "cya": "cha",
+ "cyu": "chu",
+ "cye": "che",
+ "cyo": "cho",
+ "kA": "kax",
+ "kE": "kex",
+ "kO": "kox",
+ "sA": "sax",
+ "sI": "six",
+ "sU": "sux",
+ "sE": "sex",
+ "sO": "sox",
+ "tA": "tax",
+ "tU": "tux",
+ "tE": "tex",
+ "tO": "tox",
+ "nA": "nax",
+ "nU": "nux",
+ "nE": "nex",
+ "nO": "nox",
+ "hA": "hax",
+ "hU": "hux",
+ "hE": "hex",
+ "hO": "hox",
+ "mA": "max",
+ "mU": "mux",
+ "mE": "mex",
+ "mO": "mox",
+ "yA": "yax",
+ "yU": "yux",
+ "yE": "yex",
+ "yO": "yox",
+ "rA": "rax",
+ "rU": "rux",
+ "rE": "rex",
+ "rO": "rox",
+ "rrA": "rrax",
+ "rrI": "rrix",
+ "rrU": "rrux",
+ "rrE": "rrex",
+ "rrO": "rrox",
+ "wA": "wax",
+ "wI": "wix",
+ "wE": "wex",
+ "wO": "wox",
+ "gA": "gax",
+ "gE": "gex",
+ "gO": "gox",
+ "zA": "zax",
+ "zI": "zix",
+ "zU": "zux",
+ "zE": "zex",
+ "zO": "zox",
+ "jA": "jax",
+ "jyA": "jax",
+ "jI": "jix",
+ "jU": "jux",
+ "jyU": "jux",
+ "jE": "jex",
+ "jyE": "jex",
+ "jO": "jox",
+ "jyO": "jox",
+ "dA": "dax",
+ "dU": "dux",
+ "dE": "dex",
+ "dO": "dox",
+ "bA": "bax",
+ "bU": "bux",
+ "bE": "bex",
+ "bO": "box",
+ "pA": "pax",
+ "pU": "pux",
+ "pE": "pex",
+ "pO": "pox",
+ "fA": "fax",
+ "fU": "fux",
+ "fE": "fex",
+ "fO": "fox",
+ "vA": "vax",
+ "vU": "vux",
+ "vE": "vex",
+ "vO": "vox",
+ "tsA": "tsax",
+ "tsI": "tsix",
+ "tsU": "tsux",
+ "tsE": "tsex",
+ "tsO": "tsox",
+ "ngA": "ngax",
+ "ngU": "ngux",
+ "ngE": "ngex",
+ "ngO": "ngox",
+ "shA": "shax",
+ "syA": "shax",
+ "shI": "shix",
+ "shU": "shux",
+ "syU": "shux",
+ "shE": "shex",
+ "syE": "shex",
+ "shO": "shox",
+ "syO": "shox",
+ "chA": "chax",
+ "cyA": "chax",
+ "chI": "chix",
+ "chU": "chux",
+ "cyU": "chux",
+ "chE": "chex",
+ "cyE": "chex",
+ "chO": "chox",
+ "cyO": "chox",
+ "kyA": "kyax",
+ "kI": "kix",
+ "kyU": "kyux",
+ "kyE": "kyex",
+ "kyO": "kyox",
+ "tyA": "tyax",
+ "tI": "tix",
+ "tyU": "tyux",
+ "tyE": "tyex",
+ "tyO": "tyox",
+ "myA": "myax",
+ "mI": "mix",
+ "myU": "myux",
+ "myE": "myex",
+ "myO": "myox",
+ "nyA": "nyax",
+ "nI": "nix",
+ "nyU": "nyux",
+ "nyE": "nyex",
+ "nyO": "nyox",
+ "hyA": "hyax",
+ "hI": "hix",
+ "hyU": "hyux",
+ "hyE": "hyex",
+ "hyO": "hyox",
+ "ryA": "ryax",
+ "rI": "rix",
+ "ryU": "ryux",
+ "ryE": "ryex",
+ "ryO": "ryox",
+ "gyA": "gyax",
+ "gI": "gix",
+ "gyU": "gyux",
+ "gyE": "gyex",
+ "gyO": "gyox",
+ "byA": "byax",
+ "bI": "bix",
+ "byU": "byux",
+ "byE": "byex",
+ "byO": "byox",
+ "pyA": "pyax",
+ "pI": "pix",
+ "pyU": "pyux",
+ "pyE": "pyex",
+ "pyO": "pyox",
+ "ngyA": "ngyax",
+ "ngI": "ngix",
+ "ngyU": "ngyux",
+ "ngyE": "ngyex",
+ "ngyO": "ngyox",
+ "fyA": "fyax",
+ "fI": "fix",
+ "fyU": "fyux",
+ "fyE": "fyex",
+ "fyO": "fyox",
+ "vyA": "vyax",
+ "vI": "vix",
+ "vyU": "vyux",
+ "vyE": "vyex",
+ "vyO": "vyox",
+ "kwA": "kwax",
+ "kwI": "kwix",
+ "kU": "kux",
+ "kwE": "kwex",
+ "kwO": "kwox",
+ "gwA": "gwax",
+ "gwI": "gwix",
+ "gU": "gux",
+ "gwE": "gwex",
+ "gwO": "gwox"
+ },
+ "dict":
+ {
+ "a":
+ [
+ "a"
+ ],
+ "i":
+ [
+ "i"
+ ],
+ "u":
+ [
+ "u"
+ ],
+ "e":
+ [
+ "e"
+ ],
+ "o":
+ [
+ "o"
+ ],
+ "ax":
+ [
+ "ax"
+ ],
+ "ix":
+ [
+ "ix"
+ ],
+ "ux":
+ [
+ "ux"
+ ],
+ "ex":
+ [
+ "ex"
+ ],
+ "ox":
+ [
+ "ox"
+ ],
+ "nv":
+ [
+ "nv"
+ ],
+ "mv":
+ [
+ "mv"
+ ],
+ "cl":
+ [
+ "cl"
+ ],
+ "ka":
+ [
+ "k",
+ "a"
+ ],
+ "ke":
+ [
+ "k",
+ "e"
+ ],
+ "ko":
+ [
+ "k",
+ "o"
+ ],
+ "kax":
+ [
+ "k",
+ "ax"
+ ],
+ "kex":
+ [
+ "k",
+ "ex"
+ ],
+ "kox":
+ [
+ "k",
+ "ox"
+ ],
+ "sa":
+ [
+ "s",
+ "a"
+ ],
+ "si":
+ [
+ "s",
+ "i"
+ ],
+ "su":
+ [
+ "s",
+ "u"
+ ],
+ "se":
+ [
+ "s",
+ "e"
+ ],
+ "so":
+ [
+ "s",
+ "o"
+ ],
+ "sax":
+ [
+ "s",
+ "ax"
+ ],
+ "six":
+ [
+ "s",
+ "ix"
+ ],
+ "sux":
+ [
+ "s",
+ "ux"
+ ],
+ "sex":
+ [
+ "s",
+ "ex"
+ ],
+ "sox":
+ [
+ "s",
+ "ox"
+ ],
+ "ta":
+ [
+ "t",
+ "a"
+ ],
+ "tu":
+ [
+ "t",
+ "u"
+ ],
+ "te":
+ [
+ "t",
+ "e"
+ ],
+ "to":
+ [
+ "t",
+ "o"
+ ],
+ "tax":
+ [
+ "t",
+ "ax"
+ ],
+ "tux":
+ [
+ "t",
+ "ux"
+ ],
+ "tex":
+ [
+ "t",
+ "ex"
+ ],
+ "tox":
+ [
+ "t",
+ "ox"
+ ],
+ "na":
+ [
+ "n",
+ "a"
+ ],
+ "nu":
+ [
+ "n",
+ "u"
+ ],
+ "ne":
+ [
+ "n",
+ "e"
+ ],
+ "no":
+ [
+ "n",
+ "o"
+ ],
+ "nax":
+ [
+ "n",
+ "ax"
+ ],
+ "nux":
+ [
+ "n",
+ "ux"
+ ],
+ "nex":
+ [
+ "n",
+ "ex"
+ ],
+ "nox":
+ [
+ "n",
+ "ox"
+ ],
+ "ha":
+ [
+ "h",
+ "a"
+ ],
+ "hu":
+ [
+ "h",
+ "u"
+ ],
+ "he":
+ [
+ "h",
+ "e"
+ ],
+ "ho":
+ [
+ "h",
+ "o"
+ ],
+ "hax":
+ [
+ "h",
+ "ax"
+ ],
+ "hux":
+ [
+ "h",
+ "ux"
+ ],
+ "hex":
+ [
+ "h",
+ "ex"
+ ],
+ "hox":
+ [
+ "h",
+ "ox"
+ ],
+ "ma":
+ [
+ "m",
+ "a"
+ ],
+ "mu":
+ [
+ "m",
+ "u"
+ ],
+ "me":
+ [
+ "m",
+ "e"
+ ],
+ "mo":
+ [
+ "m",
+ "o"
+ ],
+ "max":
+ [
+ "m",
+ "ax"
+ ],
+ "mux":
+ [
+ "m",
+ "ux"
+ ],
+ "mex":
+ [
+ "m",
+ "ex"
+ ],
+ "mox":
+ [
+ "m",
+ "ox"
+ ],
+ "ya":
+ [
+ "y",
+ "a"
+ ],
+ "yu":
+ [
+ "y",
+ "u"
+ ],
+ "ye":
+ [
+ "y",
+ "e"
+ ],
+ "yo":
+ [
+ "y",
+ "o"
+ ],
+ "yax":
+ [
+ "y",
+ "ax"
+ ],
+ "yux":
+ [
+ "y",
+ "ux"
+ ],
+ "yex":
+ [
+ "y",
+ "ex"
+ ],
+ "yox":
+ [
+ "y",
+ "ox"
+ ],
+ "ra":
+ [
+ "r",
+ "a"
+ ],
+ "ru":
+ [
+ "r",
+ "u"
+ ],
+ "re":
+ [
+ "r",
+ "e"
+ ],
+ "ro":
+ [
+ "r",
+ "o"
+ ],
+ "rax":
+ [
+ "r",
+ "ax"
+ ],
+ "rux":
+ [
+ "r",
+ "ux"
+ ],
+ "rex":
+ [
+ "r",
+ "ex"
+ ],
+ "rox":
+ [
+ "r",
+ "ox"
+ ],
+ "rra":
+ [
+ "rr",
+ "a"
+ ],
+ "rri":
+ [
+ "rr",
+ "i"
+ ],
+ "rru":
+ [
+ "rr",
+ "u"
+ ],
+ "rre":
+ [
+ "rr",
+ "e"
+ ],
+ "rro":
+ [
+ "rr",
+ "o"
+ ],
+ "rrax":
+ [
+ "rr",
+ "ax"
+ ],
+ "rrix":
+ [
+ "rr",
+ "ix"
+ ],
+ "rrux":
+ [
+ "rr",
+ "ux"
+ ],
+ "rrex":
+ [
+ "rr",
+ "ex"
+ ],
+ "rrox":
+ [
+ "rr",
+ "ox"
+ ],
+ "wa":
+ [
+ "w",
+ "a"
+ ],
+ "wi":
+ [
+ "w",
+ "i"
+ ],
+ "we":
+ [
+ "w",
+ "e"
+ ],
+ "wo":
+ [
+ "w",
+ "o"
+ ],
+ "wax":
+ [
+ "w",
+ "ax"
+ ],
+ "wix":
+ [
+ "w",
+ "ix"
+ ],
+ "wex":
+ [
+ "w",
+ "ex"
+ ],
+ "wox":
+ [
+ "w",
+ "ox"
+ ],
+ "ga":
+ [
+ "g",
+ "a"
+ ],
+ "ge":
+ [
+ "g",
+ "e"
+ ],
+ "go":
+ [
+ "g",
+ "o"
+ ],
+ "gax":
+ [
+ "g",
+ "ax"
+ ],
+ "gex":
+ [
+ "g",
+ "ex"
+ ],
+ "gox":
+ [
+ "g",
+ "ox"
+ ],
+ "za":
+ [
+ "z",
+ "a"
+ ],
+ "zi":
+ [
+ "z",
+ "i"
+ ],
+ "zu":
+ [
+ "z",
+ "u"
+ ],
+ "ze":
+ [
+ "z",
+ "e"
+ ],
+ "zo":
+ [
+ "z",
+ "o"
+ ],
+ "zax":
+ [
+ "z",
+ "ax"
+ ],
+ "zix":
+ [
+ "z",
+ "ix"
+ ],
+ "zux":
+ [
+ "z",
+ "ux"
+ ],
+ "zex":
+ [
+ "z",
+ "ex"
+ ],
+ "zox":
+ [
+ "z",
+ "ox"
+ ],
+ "ja":
+ [
+ "j",
+ "a"
+ ],
+ "ji":
+ [
+ "j",
+ "i"
+ ],
+ "ju":
+ [
+ "j",
+ "u"
+ ],
+ "je":
+ [
+ "j",
+ "e"
+ ],
+ "jo":
+ [
+ "j",
+ "o"
+ ],
+ "jax":
+ [
+ "j",
+ "ax"
+ ],
+ "jix":
+ [
+ "j",
+ "ix"
+ ],
+ "jux":
+ [
+ "j",
+ "ux"
+ ],
+ "jex":
+ [
+ "j",
+ "ex"
+ ],
+ "jox":
+ [
+ "j",
+ "ox"
+ ],
+ "da":
+ [
+ "d",
+ "a"
+ ],
+ "du":
+ [
+ "d",
+ "u"
+ ],
+ "de":
+ [
+ "d",
+ "e"
+ ],
+ "do":
+ [
+ "d",
+ "o"
+ ],
+ "dax":
+ [
+ "d",
+ "ax"
+ ],
+ "dux":
+ [
+ "d",
+ "ux"
+ ],
+ "dex":
+ [
+ "d",
+ "ex"
+ ],
+ "dox":
+ [
+ "d",
+ "ox"
+ ],
+ "ba":
+ [
+ "b",
+ "a"
+ ],
+ "bu":
+ [
+ "b",
+ "u"
+ ],
+ "be":
+ [
+ "b",
+ "e"
+ ],
+ "bo":
+ [
+ "b",
+ "o"
+ ],
+ "bax":
+ [
+ "b",
+ "ax"
+ ],
+ "bux":
+ [
+ "b",
+ "ux"
+ ],
+ "bex":
+ [
+ "b",
+ "ex"
+ ],
+ "box":
+ [
+ "b",
+ "ox"
+ ],
+ "pa":
+ [
+ "p",
+ "a"
+ ],
+ "pu":
+ [
+ "p",
+ "u"
+ ],
+ "pe":
+ [
+ "p",
+ "e"
+ ],
+ "po":
+ [
+ "p",
+ "o"
+ ],
+ "pax":
+ [
+ "p",
+ "ax"
+ ],
+ "pux":
+ [
+ "p",
+ "ux"
+ ],
+ "pex":
+ [
+ "p",
+ "ex"
+ ],
+ "pox":
+ [
+ "p",
+ "ox"
+ ],
+ "fa":
+ [
+ "f",
+ "a"
+ ],
+ "fu":
+ [
+ "f",
+ "u"
+ ],
+ "fe":
+ [
+ "f",
+ "e"
+ ],
+ "fo":
+ [
+ "f",
+ "o"
+ ],
+ "fax":
+ [
+ "f",
+ "ax"
+ ],
+ "fux":
+ [
+ "f",
+ "ux"
+ ],
+ "fex":
+ [
+ "f",
+ "ex"
+ ],
+ "fox":
+ [
+ "f",
+ "ox"
+ ],
+ "va":
+ [
+ "v",
+ "a"
+ ],
+ "vu":
+ [
+ "v",
+ "u"
+ ],
+ "ve":
+ [
+ "v",
+ "e"
+ ],
+ "vo":
+ [
+ "v",
+ "o"
+ ],
+ "vax":
+ [
+ "v",
+ "ax"
+ ],
+ "vux":
+ [
+ "v",
+ "ux"
+ ],
+ "vex":
+ [
+ "v",
+ "ex"
+ ],
+ "vox":
+ [
+ "v",
+ "ox"
+ ],
+ "tsa":
+ [
+ "ts",
+ "a"
+ ],
+ "tsi":
+ [
+ "ts",
+ "i"
+ ],
+ "tsu":
+ [
+ "ts",
+ "u"
+ ],
+ "tse":
+ [
+ "ts",
+ "e"
+ ],
+ "tso":
+ [
+ "ts",
+ "o"
+ ],
+ "tsax":
+ [
+ "ts",
+ "ax"
+ ],
+ "tsix":
+ [
+ "ts",
+ "ix"
+ ],
+ "tsux":
+ [
+ "ts",
+ "ux"
+ ],
+ "tsex":
+ [
+ "ts",
+ "ex"
+ ],
+ "tsox":
+ [
+ "ts",
+ "ox"
+ ],
+ "nga":
+ [
+ "ng",
+ "a"
+ ],
+ "ngu":
+ [
+ "ng",
+ "u"
+ ],
+ "nge":
+ [
+ "ng",
+ "e"
+ ],
+ "ngo":
+ [
+ "ng",
+ "o"
+ ],
+ "ngax":
+ [
+ "ng",
+ "ax"
+ ],
+ "ngux":
+ [
+ "ng",
+ "ux"
+ ],
+ "ngex":
+ [
+ "ng",
+ "ex"
+ ],
+ "ngox":
+ [
+ "ng",
+ "ox"
+ ],
+ "sha":
+ [
+ "sh",
+ "a"
+ ],
+ "shi":
+ [
+ "sh",
+ "i"
+ ],
+ "shu":
+ [
+ "sh",
+ "u"
+ ],
+ "she":
+ [
+ "sh",
+ "e"
+ ],
+ "sho":
+ [
+ "sh",
+ "o"
+ ],
+ "shax":
+ [
+ "sh",
+ "ax"
+ ],
+ "shix":
+ [
+ "sh",
+ "ix"
+ ],
+ "shux":
+ [
+ "sh",
+ "ux"
+ ],
+ "shex":
+ [
+ "sh",
+ "ex"
+ ],
+ "shox":
+ [
+ "sh",
+ "ox"
+ ],
+ "cha":
+ [
+ "ch",
+ "a"
+ ],
+ "chi":
+ [
+ "ch",
+ "i"
+ ],
+ "chu":
+ [
+ "ch",
+ "u"
+ ],
+ "che":
+ [
+ "ch",
+ "e"
+ ],
+ "cho":
+ [
+ "ch",
+ "o"
+ ],
+ "chax":
+ [
+ "ch",
+ "ax"
+ ],
+ "chix":
+ [
+ "ch",
+ "ix"
+ ],
+ "chux":
+ [
+ "ch",
+ "ux"
+ ],
+ "chex":
+ [
+ "ch",
+ "ex"
+ ],
+ "chox":
+ [
+ "ch",
+ "ox"
+ ],
+ "kya":
+ [
+ "ky",
+ "a"
+ ],
+ "ki":
+ [
+ "ky",
+ "i"
+ ],
+ "kyu":
+ [
+ "ky",
+ "u"
+ ],
+ "kye":
+ [
+ "ky",
+ "e"
+ ],
+ "kyo":
+ [
+ "ky",
+ "o"
+ ],
+ "kyax":
+ [
+ "ky",
+ "ax"
+ ],
+ "kix":
+ [
+ "ky",
+ "ix"
+ ],
+ "kyux":
+ [
+ "ky",
+ "ux"
+ ],
+ "kyex":
+ [
+ "ky",
+ "ex"
+ ],
+ "kyox":
+ [
+ "ky",
+ "ox"
+ ],
+ "tya":
+ [
+ "ty",
+ "a"
+ ],
+ "ti":
+ [
+ "ty",
+ "i"
+ ],
+ "tyu":
+ [
+ "ty",
+ "u"
+ ],
+ "tye":
+ [
+ "ty",
+ "e"
+ ],
+ "tyo":
+ [
+ "ty",
+ "o"
+ ],
+ "tyax":
+ [
+ "ty",
+ "ax"
+ ],
+ "tix":
+ [
+ "ty",
+ "ix"
+ ],
+ "tyux":
+ [
+ "ty",
+ "ux"
+ ],
+ "tyex":
+ [
+ "ty",
+ "ex"
+ ],
+ "tyox":
+ [
+ "ty",
+ "ox"
+ ],
+ "mya":
+ [
+ "my",
+ "a"
+ ],
+ "mi":
+ [
+ "my",
+ "i"
+ ],
+ "myu":
+ [
+ "my",
+ "u"
+ ],
+ "mye":
+ [
+ "my",
+ "e"
+ ],
+ "myo":
+ [
+ "my",
+ "o"
+ ],
+ "myax":
+ [
+ "my",
+ "ax"
+ ],
+ "mix":
+ [
+ "my",
+ "ix"
+ ],
+ "myux":
+ [
+ "my",
+ "ux"
+ ],
+ "myex":
+ [
+ "my",
+ "ex"
+ ],
+ "myox":
+ [
+ "my",
+ "ox"
+ ],
+ "nya":
+ [
+ "ny",
+ "a"
+ ],
+ "ni":
+ [
+ "ny",
+ "i"
+ ],
+ "nyu":
+ [
+ "ny",
+ "u"
+ ],
+ "nye":
+ [
+ "ny",
+ "e"
+ ],
+ "nyo":
+ [
+ "ny",
+ "o"
+ ],
+ "nyax":
+ [
+ "ny",
+ "ax"
+ ],
+ "nix":
+ [
+ "ny",
+ "ix"
+ ],
+ "nyux":
+ [
+ "ny",
+ "ux"
+ ],
+ "nyex":
+ [
+ "ny",
+ "ex"
+ ],
+ "nyox":
+ [
+ "ny",
+ "ox"
+ ],
+ "hya":
+ [
+ "hy",
+ "a"
+ ],
+ "hi":
+ [
+ "hy",
+ "i"
+ ],
+ "hyu":
+ [
+ "hy",
+ "u"
+ ],
+ "hye":
+ [
+ "hy",
+ "e"
+ ],
+ "hyo":
+ [
+ "hy",
+ "o"
+ ],
+ "hyax":
+ [
+ "hy",
+ "ax"
+ ],
+ "hix":
+ [
+ "hy",
+ "ix"
+ ],
+ "hyux":
+ [
+ "hy",
+ "ux"
+ ],
+ "hyex":
+ [
+ "hy",
+ "ex"
+ ],
+ "hyox":
+ [
+ "hy",
+ "ox"
+ ],
+ "rya":
+ [
+ "ry",
+ "a"
+ ],
+ "ri":
+ [
+ "ry",
+ "i"
+ ],
+ "ryu":
+ [
+ "ry",
+ "u"
+ ],
+ "rye":
+ [
+ "ry",
+ "e"
+ ],
+ "ryo":
+ [
+ "ry",
+ "o"
+ ],
+ "ryax":
+ [
+ "ry",
+ "ax"
+ ],
+ "rix":
+ [
+ "ry",
+ "ix"
+ ],
+ "ryux":
+ [
+ "ry",
+ "ux"
+ ],
+ "ryex":
+ [
+ "ry",
+ "ex"
+ ],
+ "ryox":
+ [
+ "ry",
+ "ox"
+ ],
+ "gya":
+ [
+ "gy",
+ "a"
+ ],
+ "gi":
+ [
+ "gy",
+ "i"
+ ],
+ "gyu":
+ [
+ "gy",
+ "u"
+ ],
+ "gye":
+ [
+ "gy",
+ "e"
+ ],
+ "gyo":
+ [
+ "gy",
+ "o"
+ ],
+ "gyax":
+ [
+ "gy",
+ "ax"
+ ],
+ "gix":
+ [
+ "gy",
+ "ix"
+ ],
+ "gyux":
+ [
+ "gy",
+ "ux"
+ ],
+ "gyex":
+ [
+ "gy",
+ "ex"
+ ],
+ "gyox":
+ [
+ "gy",
+ "ox"
+ ],
+ "bya":
+ [
+ "by",
+ "a"
+ ],
+ "bi":
+ [
+ "by",
+ "i"
+ ],
+ "byu":
+ [
+ "by",
+ "u"
+ ],
+ "bye":
+ [
+ "by",
+ "e"
+ ],
+ "byo":
+ [
+ "by",
+ "o"
+ ],
+ "byax":
+ [
+ "by",
+ "ax"
+ ],
+ "bix":
+ [
+ "by",
+ "ix"
+ ],
+ "byux":
+ [
+ "by",
+ "ux"
+ ],
+ "byex":
+ [
+ "by",
+ "ex"
+ ],
+ "byox":
+ [
+ "by",
+ "ox"
+ ],
+ "pya":
+ [
+ "py",
+ "a"
+ ],
+ "pi":
+ [
+ "py",
+ "i"
+ ],
+ "pyu":
+ [
+ "py",
+ "u"
+ ],
+ "pye":
+ [
+ "py",
+ "e"
+ ],
+ "pyo":
+ [
+ "py",
+ "o"
+ ],
+ "pyax":
+ [
+ "py",
+ "ax"
+ ],
+ "pix":
+ [
+ "py",
+ "ix"
+ ],
+ "pyux":
+ [
+ "py",
+ "ux"
+ ],
+ "pyex":
+ [
+ "py",
+ "ex"
+ ],
+ "pyox":
+ [
+ "py",
+ "ox"
+ ],
+ "dya":
+ [
+ "dy",
+ "a"
+ ],
+ "di":
+ [
+ "dy",
+ "i"
+ ],
+ "dyu":
+ [
+ "dy",
+ "u"
+ ],
+ "dye":
+ [
+ "dy",
+ "e"
+ ],
+ "dyo":
+ [
+ "dy",
+ "o"
+ ],
+ "dyax":
+ [
+ "dy",
+ "ax"
+ ],
+ "dix":
+ [
+ "dy",
+ "ix"
+ ],
+ "dyux":
+ [
+ "dy",
+ "ux"
+ ],
+ "dyex":
+ [
+ "dy",
+ "ex"
+ ],
+ "dyox":
+ [
+ "dy",
+ "ox"
+ ],
+ "ngya":
+ [
+ "ngy",
+ "a"
+ ],
+ "ngi":
+ [
+ "ngy",
+ "i"
+ ],
+ "ngyu":
+ [
+ "ngy",
+ "u"
+ ],
+ "ngye":
+ [
+ "ngy",
+ "e"
+ ],
+ "ngyo":
+ [
+ "ngy",
+ "o"
+ ],
+ "ngyax":
+ [
+ "ngy",
+ "ax"
+ ],
+ "ngix":
+ [
+ "ngy",
+ "ix"
+ ],
+ "ngyux":
+ [
+ "ngy",
+ "ux"
+ ],
+ "ngyex":
+ [
+ "ngy",
+ "ex"
+ ],
+ "ngyox":
+ [
+ "ngy",
+ "ox"
+ ],
+ "fya":
+ [
+ "fy",
+ "a"
+ ],
+ "fi":
+ [
+ "fy",
+ "i"
+ ],
+ "fyu":
+ [
+ "fy",
+ "u"
+ ],
+ "fye":
+ [
+ "fy",
+ "e"
+ ],
+ "fyo":
+ [
+ "fy",
+ "o"
+ ],
+ "fyax":
+ [
+ "fy",
+ "ax"
+ ],
+ "fix":
+ [
+ "fy",
+ "ix"
+ ],
+ "fyux":
+ [
+ "fy",
+ "ux"
+ ],
+ "fyex":
+ [
+ "fy",
+ "ex"
+ ],
+ "fyox":
+ [
+ "fy",
+ "ox"
+ ],
+ "vya":
+ [
+ "vy",
+ "a"
+ ],
+ "vi":
+ [
+ "vy",
+ "i"
+ ],
+ "vyu":
+ [
+ "vy",
+ "u"
+ ],
+ "vye":
+ [
+ "vy",
+ "e"
+ ],
+ "vyo":
+ [
+ "vy",
+ "o"
+ ],
+ "vyax":
+ [
+ "vy",
+ "ax"
+ ],
+ "vix":
+ [
+ "vy",
+ "ix"
+ ],
+ "vyux":
+ [
+ "vy",
+ "ux"
+ ],
+ "vyex":
+ [
+ "vy",
+ "ex"
+ ],
+ "vyox":
+ [
+ "vy",
+ "ox"
+ ],
+ "kwa":
+ [
+ "kw",
+ "a"
+ ],
+ "kwi":
+ [
+ "kw",
+ "i"
+ ],
+ "ku":
+ [
+ "kw",
+ "u"
+ ],
+ "kwe":
+ [
+ "kw",
+ "e"
+ ],
+ "kwo":
+ [
+ "kw",
+ "o"
+ ],
+ "kwax":
+ [
+ "kw",
+ "ax"
+ ],
+ "kwix":
+ [
+ "kw",
+ "ix"
+ ],
+ "kux":
+ [
+ "kw",
+ "ux"
+ ],
+ "kwex":
+ [
+ "kw",
+ "ex"
+ ],
+ "kwox":
+ [
+ "kw",
+ "ox"
+ ],
+ "gwa":
+ [
+ "gw",
+ "a"
+ ],
+ "gwi":
+ [
+ "gw",
+ "i"
+ ],
+ "gu":
+ [
+ "gw",
+ "u"
+ ],
+ "gwe":
+ [
+ "gw",
+ "e"
+ ],
+ "gwo":
+ [
+ "gw",
+ "o"
+ ],
+ "gwax":
+ [
+ "gw",
+ "ax"
+ ],
+ "gwix":
+ [
+ "gw",
+ "ix"
+ ],
+ "gux":
+ [
+ "gw",
+ "ux"
+ ],
+ "gwex":
+ [
+ "gw",
+ "ex"
+ ],
+ "gwox":
+ [
+ "gw",
+ "ox"
+ ]
+ },
+ "phon_class":
+ {
+ "head":
+ [
+ "k",
+ "s",
+ "sh",
+ "t",
+ "ch",
+ "ts",
+ "n",
+ "h",
+ "f",
+ "m",
+ "y",
+ "r",
+ "rr",
+ "w",
+ "g",
+ "z",
+ "j",
+ "d",
+ "b",
+ "p",
+ "ky",
+ "ty",
+ "ny",
+ "hy",
+ "my",
+ "ry",
+ "by",
+ "gy",
+ "py",
+ "dy",
+ "vy",
+ "fy",
+ "kw",
+ "gw",
+ "ng",
+ "ngy",
+ "v"
+ ],
+ "tail":
+ [
+ "a",
+ "i",
+ "u",
+ "e",
+ "o",
+ "nv",
+ "mv",
+ "ax",
+ "ix",
+ "ux",
+ "ex",
+ "ox",
+ "cl"
+ ]
+ }
+ },
+ {
+ "language": "eng",
+ "dict":
+ {},
+ "phon_class":
+ {
+ "tail":
+ [
+ "aa",
+ "ae",
+ "ah",
+ "ao",
+ "aw",
+ "ay",
+ "eh",
+ "er",
+ "ey",
+ "ih",
+ "iy",
+ "ow",
+ "oy",
+ "uh",
+ "uw",
+ "mv",
+ "nv",
+ "ngv"
+ ],
+ "head":
+ [
+ "b",
+ "ch",
+ "d",
+ "dh",
+ "f",
+ "g",
+ "hh",
+ "jh",
+ "k",
+ "l",
+ "m",
+ "n",
+ "ng",
+ "p",
+ "r",
+ "s",
+ "sh",
+ "t",
+ "th",
+ "v",
+ "w",
+ "y",
+ "z",
+ "zh",
+ "dx",
+ "dr",
+ "tr"
+ ]
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/midi-note.scp b/resource/midi-note.scp
similarity index 100%
rename from midi-note.scp
rename to resource/midi-note.scp
diff --git a/pinyin_dict.py b/resource/pinyin_dict.py
similarity index 99%
rename from pinyin_dict.py
rename to resource/pinyin_dict.py
index 9cc7844e18aa651f66585255cf9c91d3f827ce00..535e11160d5d28a92be7b508ddb01ab5f6b008d1 100644
--- a/pinyin_dict.py
+++ b/resource/pinyin_dict.py
@@ -419,7 +419,5 @@ PINYIN_DICT = {
"zui": ("z", "ui"),
"zun": ("z", "un"),
"zuo": ("z", "uo"),
- "sp": ("SP",),
- "ap": ("AP",),
}
diff --git a/resource/singer/singer_embedding_ace-1.npy b/resource/singer/singer_embedding_ace-1.npy
new file mode 100644
index 0000000000000000000000000000000000000000..8cac8c825028aaa87c3bc2c14132a01767a1706b
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-1.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac07d73eb172609c87329b35af91f0d27c1c20c30dcd90f23f1d4eb8c6450ca6
+size 896
diff --git a/resource/singer/singer_embedding_ace-10.npy b/resource/singer/singer_embedding_ace-10.npy
new file mode 100644
index 0000000000000000000000000000000000000000..4cee8aa64984095b5d1fa58bc6350fe0faeb76ee
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-10.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e6b4da3cb369b0d4f2bcdb76986e6fbfb3ebba727a8e5a899227d6b70f73769d
+size 896
diff --git a/resource/singer/singer_embedding_ace-11.npy b/resource/singer/singer_embedding_ace-11.npy
new file mode 100644
index 0000000000000000000000000000000000000000..26d5dcb8407d8351ff1505c8a7be280c49fc7ef3
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-11.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf65222a416d9786feea3ac91672683727973aa7f7a89b533117a2bdf5dd706b
+size 896
diff --git a/resource/singer/singer_embedding_ace-12.npy b/resource/singer/singer_embedding_ace-12.npy
new file mode 100644
index 0000000000000000000000000000000000000000..0547486b9c77ebf82fb9345de718d035c989cbc4
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-12.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4f07e7da7629c222318beaafee2b43f913be6f5137842f7d771225bb76268c7f
+size 896
diff --git a/resource/singer/singer_embedding_ace-13.npy b/resource/singer/singer_embedding_ace-13.npy
new file mode 100644
index 0000000000000000000000000000000000000000..cd59cd3b06b84f0999d56d4a242747334d33951a
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-13.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:edfc4aba22a1adb4680a70ab872d2522a12587180d91176d64b03bdb4f181dfd
+size 896
diff --git a/resource/singer/singer_embedding_ace-14.npy b/resource/singer/singer_embedding_ace-14.npy
new file mode 100644
index 0000000000000000000000000000000000000000..1f9b3b6b6f21478600890a7fa173402fe3040c7d
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-14.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6f43b58502afc550af2eff7c358e370b72433163b319b97b4c3b3d3eff9557ce
+size 896
diff --git a/resource/singer/singer_embedding_ace-15.npy b/resource/singer/singer_embedding_ace-15.npy
new file mode 100644
index 0000000000000000000000000000000000000000..627b1c0827f5741a144112c0075cfe6f2ebeb27c
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-15.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ee8771b428b1f2bd5f680d54287eff436b3a9b84c6dd15797502942fe22ad18b
+size 896
diff --git a/resource/singer/singer_embedding_ace-16.npy b/resource/singer/singer_embedding_ace-16.npy
new file mode 100644
index 0000000000000000000000000000000000000000..5eb17b643e43a610c9fd8273936e83561145cad3
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-16.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:edea4a167679d619d66fc972a273b310290f9e5eac75a7857e81a7f25286b67b
+size 896
diff --git a/resource/singer/singer_embedding_ace-17.npy b/resource/singer/singer_embedding_ace-17.npy
new file mode 100644
index 0000000000000000000000000000000000000000..ff48761e29d91c8e37a0e5e0cb8c1ef1c844d9c1
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-17.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2bffeb7f3364168310939320f885d3ccf1502915365873050602eac7b557b12f
+size 896
diff --git a/resource/singer/singer_embedding_ace-18.npy b/resource/singer/singer_embedding_ace-18.npy
new file mode 100644
index 0000000000000000000000000000000000000000..4e34fac0d424f032c6350d0fa3518295cea121c4
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-18.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7e3ffe2c7f0e583f97d58c13bc7318e64f1a33c0549e171f01d90c1fc0659a10
+size 896
diff --git a/resource/singer/singer_embedding_ace-19.npy b/resource/singer/singer_embedding_ace-19.npy
new file mode 100644
index 0000000000000000000000000000000000000000..14b81c6211e6f448e1904fbb591f4d7d40276e74
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-19.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32d8abcf1ce64bdbe38c959a43103da2f08b7e0399de1de44ab0ba64caf63deb
+size 896
diff --git a/resource/singer/singer_embedding_ace-2.npy b/resource/singer/singer_embedding_ace-2.npy
new file mode 100644
index 0000000000000000000000000000000000000000..dcdbee9182f8819a5fd2e024223f760583fd7df5
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-2.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11410fa00026e13862d6636e77e3f8932b6f1986ceec3039dc5ebfcfb865cd8e
+size 896
diff --git a/resource/singer/singer_embedding_ace-20.npy b/resource/singer/singer_embedding_ace-20.npy
new file mode 100644
index 0000000000000000000000000000000000000000..dc8c78905e98a4544b007080d9d53a744665a1f3
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-20.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:911d7f112b52b8644742d18c97346a5d10731dc2f001c3523297e01641e22b21
+size 896
diff --git a/resource/singer/singer_embedding_ace-21.npy b/resource/singer/singer_embedding_ace-21.npy
new file mode 100644
index 0000000000000000000000000000000000000000..956c198c8752d3fce406498449992933d3217cca
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-21.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c62c1b06d0448bdc3709d994bb54593a41d27356f1cabd6ec5818cf523ee66f
+size 896
diff --git a/resource/singer/singer_embedding_ace-22.npy b/resource/singer/singer_embedding_ace-22.npy
new file mode 100644
index 0000000000000000000000000000000000000000..0d3393aa172cdb220c64c9b7743d4f565e73fc67
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-22.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db4b2821e3a955da34a3369f36f7eac366fd7c7e742f43676d753ca5f60ba7fa
+size 896
diff --git a/resource/singer/singer_embedding_ace-23.npy b/resource/singer/singer_embedding_ace-23.npy
new file mode 100644
index 0000000000000000000000000000000000000000..ec1c5e1f401a33ac9a8457c8184d85028d01cb45
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-23.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a9e98c6885c860bd9393c6829a430c9956dd6d0a7e286dc0e19e58a8cdb26ddc
+size 896
diff --git a/resource/singer/singer_embedding_ace-24.npy b/resource/singer/singer_embedding_ace-24.npy
new file mode 100644
index 0000000000000000000000000000000000000000..027cc86074acd0370b0119ff8faa949d6e90a4c2
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-24.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5753ebb8bed09c7d03565166282c38def512c9a686f8cc6ce672b0ad71d7fd7c
+size 896
diff --git a/resource/singer/singer_embedding_ace-25.npy b/resource/singer/singer_embedding_ace-25.npy
new file mode 100644
index 0000000000000000000000000000000000000000..26e3da922373c0c838fcaf34495f666c4cf94cdd
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-25.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cfdeb67333e1c316bc50ef9ce05cd4e894f9ad3af307a5c41e5cf2314a021fc3
+size 896
diff --git a/resource/singer/singer_embedding_ace-26.npy b/resource/singer/singer_embedding_ace-26.npy
new file mode 100644
index 0000000000000000000000000000000000000000..3be92b7c11fb35cf2c80c280ad5434173f7f8819
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-26.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea4a02e11fa0287f247f057396e70bde203883c00f0fbb266bc28ecff44a1533
+size 896
diff --git a/resource/singer/singer_embedding_ace-27.npy b/resource/singer/singer_embedding_ace-27.npy
new file mode 100644
index 0000000000000000000000000000000000000000..4e1c60038ba1c85c6361895e3fd9976d5dda0c09
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-27.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eecbf3c017c1b6cffbc5ae393a6f78544154ab1e88f714904f56889a1065a74f
+size 896
diff --git a/resource/singer/singer_embedding_ace-28.npy b/resource/singer/singer_embedding_ace-28.npy
new file mode 100644
index 0000000000000000000000000000000000000000..cbc368d28d91140746f7fe40c5811c99b521c803
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-28.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3f23bf949e26a7486aa0d8905b79bd80af6ab77afa1f7f5e6c8d6ac074558ff
+size 896
diff --git a/resource/singer/singer_embedding_ace-29.npy b/resource/singer/singer_embedding_ace-29.npy
new file mode 100644
index 0000000000000000000000000000000000000000..26de40079258f04bd2b46e5b64c1abc05d261beb
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-29.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b6807858aff6652a354e2945ca36de2cce5f766d09e0a14efcca6cc5576a2bd
+size 896
diff --git a/resource/singer/singer_embedding_ace-3.npy b/resource/singer/singer_embedding_ace-3.npy
new file mode 100644
index 0000000000000000000000000000000000000000..9190428c77ef58f8b384413c3948eb525d5e54d8
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-3.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ab0dd74df2d47ee5de50eab7adc0a771b52e1cb10ebabdf47620001027a6f113
+size 896
diff --git a/resource/singer/singer_embedding_ace-30.npy b/resource/singer/singer_embedding_ace-30.npy
new file mode 100644
index 0000000000000000000000000000000000000000..04e0b2a628ed2d8381f6fcfcea678f40856334b5
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-30.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d0f99a41d7b459e5e96bea65ac793d68d62e92c75c42e0bfb0e04d8c0313ad3
+size 896
diff --git a/resource/singer/singer_embedding_ace-4.npy b/resource/singer/singer_embedding_ace-4.npy
new file mode 100644
index 0000000000000000000000000000000000000000..8966263705a3b71088313051a1f59d7bf88ef7d6
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-4.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3c0361d54e0df795e1d60b8d10d32e459aadcd0a867ba1888c36a9c6f09b2eb2
+size 896
diff --git a/resource/singer/singer_embedding_ace-5.npy b/resource/singer/singer_embedding_ace-5.npy
new file mode 100644
index 0000000000000000000000000000000000000000..fbf7c53738748b6cb29cce2da06df2f3ba5742b9
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-5.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:50a9b21470c213422954ce1ce3f1cc8d5c295862896acc9fb772fa5c54f8bb57
+size 896
diff --git a/resource/singer/singer_embedding_ace-6.npy b/resource/singer/singer_embedding_ace-6.npy
new file mode 100644
index 0000000000000000000000000000000000000000..36a01af033d94867b60b2190a06a9a482296a827
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-6.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c3a7de10b1f824cc6ed4f4c203a434fa0990bc6cf58e9e1c73c3103b92041a0c
+size 896
diff --git a/resource/singer/singer_embedding_ace-7.npy b/resource/singer/singer_embedding_ace-7.npy
new file mode 100644
index 0000000000000000000000000000000000000000..c3bf0f54621e48db4608986d07136a4cc336b5ca
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-7.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce7059ef8ae835777f53e3c89af722773f0e5792eeced0a4c131c1aeeeb342f1
+size 896
diff --git a/resource/singer/singer_embedding_ace-8.npy b/resource/singer/singer_embedding_ace-8.npy
new file mode 100644
index 0000000000000000000000000000000000000000..d875affae5430910142e8e0e8a36c520d9c4fe6f
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-8.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b27ddeda52d4e2298d95c77ae85d22d35ac83393f3b00417d21041be38ebacf3
+size 896
diff --git a/resource/singer/singer_embedding_ace-9.npy b/resource/singer/singer_embedding_ace-9.npy
new file mode 100644
index 0000000000000000000000000000000000000000..9bb3146a5f1004876b6e34860a09aac25ca24149
--- /dev/null
+++ b/resource/singer/singer_embedding_ace-9.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:17547452ee7b536dbf3ccda567cd0230bf53f103c27d66687a1ca8959782b45c
+size 896
diff --git a/resource/singer/singer_embedding_ameboshi.npy b/resource/singer/singer_embedding_ameboshi.npy
new file mode 100644
index 0000000000000000000000000000000000000000..4361351c1f1fddb78e02029596975f5186aa4def
--- /dev/null
+++ b/resource/singer/singer_embedding_ameboshi.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:58f65d89d76060bb5406cdde4001bde87c29b0ef3fefd3a2072ab937a379cc9c
+size 896
diff --git a/resource/singer/singer_embedding_itako.npy b/resource/singer/singer_embedding_itako.npy
new file mode 100644
index 0000000000000000000000000000000000000000..38e86f185d8373f6ee8afcd407f0f54bc909d866
--- /dev/null
+++ b/resource/singer/singer_embedding_itako.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c94e137f090bb8376114a3aadf42423db4e59d0236a46049f8cee9c387fd5fd6
+size 896
diff --git a/resource/singer/singer_embedding_kiritan.npy b/resource/singer/singer_embedding_kiritan.npy
new file mode 100644
index 0000000000000000000000000000000000000000..082d27b47386a2f2776d36aba352cd050dee1343
--- /dev/null
+++ b/resource/singer/singer_embedding_kiritan.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:68583154587392d29729c270bc82778c203bbfe2f2101f5ec5bc68c8aa40bd22
+size 896
diff --git a/resource/singer/singer_embedding_kising_barber.npy b/resource/singer/singer_embedding_kising_barber.npy
new file mode 100644
index 0000000000000000000000000000000000000000..47ca062f396b91d8ab9e65bd674308575851a322
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_barber.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5643c312089790dc95d97e4a8b24f152d7e4caa703170143f1c1f9ecb0179564
+size 896
diff --git a/resource/singer/singer_embedding_kising_blanca.npy b/resource/singer/singer_embedding_kising_blanca.npy
new file mode 100644
index 0000000000000000000000000000000000000000..b515da7afe05a322623091556cb52dd880d3c11f
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_blanca.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fec31eacdb733f13185daf155f75d73f0fdcf1eda1cce92d02b93d02878da3e0
+size 896
diff --git a/resource/singer/singer_embedding_kising_changge.npy b/resource/singer/singer_embedding_kising_changge.npy
new file mode 100644
index 0000000000000000000000000000000000000000..7270ee423b0e1bd8e4e28142d2c8ccbe8295868c
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_changge.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f0ad51d26b771f2460b146a8984bab73f929e943ce15932c287f6252a241026a
+size 896
diff --git a/resource/singer/singer_embedding_kising_chuci.npy b/resource/singer/singer_embedding_kising_chuci.npy
new file mode 100644
index 0000000000000000000000000000000000000000..9ac48548572c5902ba383dfd6b8746824fe79663
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_chuci.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:764e6424b167dd4ff798f7c608985de31e6dadea68ee578b5dd66eba938cc835
+size 896
diff --git a/resource/singer/singer_embedding_kising_chuming.npy b/resource/singer/singer_embedding_kising_chuming.npy
new file mode 100644
index 0000000000000000000000000000000000000000..9046cc0f1326c1610e22c06b977c0a1ee45b1b87
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_chuming.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c4d1847080412e765208bdc09db64cf1e117e998e410e3afe6c061171afcab92
+size 896
diff --git a/resource/singer/singer_embedding_kising_crimson.npy b/resource/singer/singer_embedding_kising_crimson.npy
new file mode 100644
index 0000000000000000000000000000000000000000..15b811bd9b00bdd3e94a04de742e76864b3af6f2
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_crimson.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c6a67b36899aa0f4c62144fa63fc719e2448618fc730a0073ad66b16ee59593
+size 896
diff --git a/resource/singer/singer_embedding_kising_david.npy b/resource/singer/singer_embedding_kising_david.npy
new file mode 100644
index 0000000000000000000000000000000000000000..0ab8bd4fe897c3befcf4067f8279bc2da82011a1
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_david.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eef8cd6416850059b5e8fc7c11a8fc2fb2165ea59177623133e33a30497a41b0
+size 896
diff --git a/resource/singer/singer_embedding_kising_dvaid.npy b/resource/singer/singer_embedding_kising_dvaid.npy
new file mode 100644
index 0000000000000000000000000000000000000000..385e7af35a0f77a8801cc714f6eadd2a02473207
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_dvaid.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8ae99f524321f6836c71e83115308ba1117f7235b352f8c2135489bcd54dde5f
+size 896
diff --git a/resource/singer/singer_embedding_kising_ghost.npy b/resource/singer/singer_embedding_kising_ghost.npy
new file mode 100644
index 0000000000000000000000000000000000000000..432854818b4bd08652e296608781e0560595b619
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_ghost.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ed8b0f26a4bf60b5dea57c2bad28c1757052d04fcb131b64515da95cd2addcfa
+size 896
diff --git a/resource/singer/singer_embedding_kising_growl.npy b/resource/singer/singer_embedding_kising_growl.npy
new file mode 100644
index 0000000000000000000000000000000000000000..b6a3ff959182f5075a3dddf1eec9f9816326fd65
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_growl.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ca44c134bf0fcbc808743e6da1e441782ffd4043e5aeea29e3dd8fc74cfe37f1
+size 896
diff --git a/resource/singer/singer_embedding_kising_hiragi-yuki.npy b/resource/singer/singer_embedding_kising_hiragi-yuki.npy
new file mode 100644
index 0000000000000000000000000000000000000000..5476919ef80b47f708cd46eaeb4ef5d5dd4e295b
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_hiragi-yuki.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8fbb4a7243b36a2c5ebdcd2d6b42b1280b552a159303c976f4c9d28fe3c0a431
+size 896
diff --git a/resource/singer/singer_embedding_kising_huolian.npy b/resource/singer/singer_embedding_kising_huolian.npy
new file mode 100644
index 0000000000000000000000000000000000000000..9af80a47745b78657107fcf28f21ff56939c8924
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_huolian.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db470188fcc158e1a410fd7854884b51e142070adbce3f8be09a3055bf575886
+size 896
diff --git a/resource/singer/singer_embedding_kising_kuro.npy b/resource/singer/singer_embedding_kising_kuro.npy
new file mode 100644
index 0000000000000000000000000000000000000000..2499486f94182b1d69b115681efe4ba035f7edec
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_kuro.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da512576e570782b32ea6b1dce8a6c6a209ba95d9b984466068f8dcb5e9b75ac
+size 896
diff --git a/resource/singer/singer_embedding_kising_lien.npy b/resource/singer/singer_embedding_kising_lien.npy
new file mode 100644
index 0000000000000000000000000000000000000000..3b015053c6f63d4e6f253232b0eac423e6313683
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_lien.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b4ad7d66f0b1666320454076613114fe513a3b8916b7bbe1f2cbbd79df474142
+size 896
diff --git a/resource/singer/singer_embedding_kising_liyuan.npy b/resource/singer/singer_embedding_kising_liyuan.npy
new file mode 100644
index 0000000000000000000000000000000000000000..b6cb8e84ce04d104cf83540fbff5ec6352318b29
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_liyuan.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:60ee99331c7e744ef3cf6b5eae3962de88e72210543e20df295f8646f5b41fe3
+size 896
diff --git a/resource/singer/singer_embedding_kising_luanming.npy b/resource/singer/singer_embedding_kising_luanming.npy
new file mode 100644
index 0000000000000000000000000000000000000000..4bf854f4df0afafd5e7c1313caace20807982c14
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_luanming.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1fe80bdcfb2850a70b42c8879492594969ad46957309de7f3fb868631295b82d
+size 896
diff --git a/resource/singer/singer_embedding_kising_luotianyi.npy b/resource/singer/singer_embedding_kising_luotianyi.npy
new file mode 100644
index 0000000000000000000000000000000000000000..577dc86809c487d1e584a078edf20e47839b2877
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_luotianyi.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a7ee6bf0c810cfcfd0a49aa6071722dedb854b015de65a03893012962749a07b
+size 896
diff --git a/resource/singer/singer_embedding_kising_namine.npy b/resource/singer/singer_embedding_kising_namine.npy
new file mode 100644
index 0000000000000000000000000000000000000000..5cfb7df855eeda7f2f0c6049c0b257f268a4dbce
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_namine.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:20fb013581df4990732d41bff0e7a49c71aa91ed1032eba21680a68353b57209
+size 896
diff --git a/resource/singer/singer_embedding_kising_orange.npy b/resource/singer/singer_embedding_kising_orange.npy
new file mode 100644
index 0000000000000000000000000000000000000000..72213b29cf07d23adcbfeba2a9640c123c4720ed
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_orange.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:626472a91f1c8d8e8cd31c037cf41340e0bd1b456db13190b51d9df40a7aae22
+size 896
diff --git a/resource/singer/singer_embedding_kising_qifu.npy b/resource/singer/singer_embedding_kising_qifu.npy
new file mode 100644
index 0000000000000000000000000000000000000000..1510439c331f9353ae7b8f4270e62e63cca20434
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_qifu.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b096f372cca49b8da8ce696332096c0c43729096bd9360955e5b8c0c2b450b41
+size 896
diff --git a/resource/singer/singer_embedding_kising_qili.npy b/resource/singer/singer_embedding_kising_qili.npy
new file mode 100644
index 0000000000000000000000000000000000000000..59909fc2d615f05d00fac9e10b857941a97d4c82
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_qili.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:800faefe155653698024fb12ebad9947bd2c12d2e1375d10305b513c5434a1a1
+size 896
diff --git a/resource/singer/singer_embedding_kising_qixuan.npy b/resource/singer/singer_embedding_kising_qixuan.npy
new file mode 100644
index 0000000000000000000000000000000000000000..dce2b5389666444f57b284e860a3ff7b41ac2cc2
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_qixuan.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2dc5e6f0b53821d42a40175aad83d7607fca325c6b9977478f19a7c79bc6849d
+size 896
diff --git a/resource/singer/singer_embedding_kising_quehe.npy b/resource/singer/singer_embedding_kising_quehe.npy
new file mode 100644
index 0000000000000000000000000000000000000000..1389db8f3ce534cd7a491797c4433bf7b59c15bb
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_quehe.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a7e5da1976a8d0cd8107134323695a0071ed88b62902b77d06df84b5ebd0bd69
+size 896
diff --git a/resource/singer/singer_embedding_kising_ranhuhu.npy b/resource/singer/singer_embedding_kising_ranhuhu.npy
new file mode 100644
index 0000000000000000000000000000000000000000..560673c71a19e383789bafd5169c5e693eed5a57
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_ranhuhu.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a0f1ef3bde76873774fa7d23a2969d61b4402eed6115fd212a2e84e1b02a06d
+size 896
diff --git a/resource/singer/singer_embedding_kising_steel.npy b/resource/singer/singer_embedding_kising_steel.npy
new file mode 100644
index 0000000000000000000000000000000000000000..ac1919b4a26dd6d4742bd62184bdb6ef84eac4d4
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_steel.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:61fd4b7a8ba1c4429eee0799c9f6c3f0d5c205c1c4f9c3e7a0e480f58fb624fe
+size 896
diff --git a/resource/singer/singer_embedding_kising_tangerine.npy b/resource/singer/singer_embedding_kising_tangerine.npy
new file mode 100644
index 0000000000000000000000000000000000000000..d26bb2a5e322dc87f9fe02af2a90487c386a4407
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_tangerine.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c88593dd381495d105c5b01c8feac135c0769516bfb6f4c85129548c4d182270
+size 896
diff --git a/resource/singer/singer_embedding_kising_tarara.npy b/resource/singer/singer_embedding_kising_tarara.npy
new file mode 100644
index 0000000000000000000000000000000000000000..b3a933da93b4e2521de5ad539d0487d45d6844a5
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_tarara.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:527638c4594291d1a7c61c6ab120c9ea2361f3791dbed9b154cf158252283a57
+size 896
diff --git a/resource/singer/singer_embedding_kising_tuyuan.npy b/resource/singer/singer_embedding_kising_tuyuan.npy
new file mode 100644
index 0000000000000000000000000000000000000000..4eb7d1422b0b92da8b61d5e6aab5541c2a6417ca
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_tuyuan.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4e67fe1b5dc03f5356e94198770a227fe42acee268e06d9ecc2fb0db6a3beb37
+size 896
diff --git a/resource/singer/singer_embedding_kising_wenli.npy b/resource/singer/singer_embedding_kising_wenli.npy
new file mode 100644
index 0000000000000000000000000000000000000000..ec809527acc1a13d613ddfd76b8cf2af0e8a7915
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_wenli.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:54e4aeb3a6454154ce50a3640a8a756d87552071917b55717cb2221dca53e60e
+size 896
diff --git a/resource/singer/singer_embedding_kising_xiaomo.npy b/resource/singer/singer_embedding_kising_xiaomo.npy
new file mode 100644
index 0000000000000000000000000000000000000000..66d5343a1546765a6093028d5efb8c6857bda19a
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_xiaomo.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69f4f9d4226815128904903be4fa24dff59341eba0fd680ed3fac1cbcf8993bb
+size 896
diff --git a/resource/singer/singer_embedding_kising_xiaoye.npy b/resource/singer/singer_embedding_kising_xiaoye.npy
new file mode 100644
index 0000000000000000000000000000000000000000..76aa224eb28ff08a6cf30c582493279809ee9ea8
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_xiaoye.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2bc68835f84f7a7fbc0ad5d44a2c6e591d7cd61c9f017992b2dfb177fed79b70
+size 896
diff --git a/resource/singer/singer_embedding_kising_yanhe.npy b/resource/singer/singer_embedding_kising_yanhe.npy
new file mode 100644
index 0000000000000000000000000000000000000000..5538f79e27ab54b1df690c613dbe2b71e4a27f28
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_yanhe.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b5afd01f34fff00d1d09a28f891b9d868587cee2d5bf04655e324d3d8dbef113
+size 896
diff --git a/resource/singer/singer_embedding_kising_yuezhengling.npy b/resource/singer/singer_embedding_kising_yuezhengling.npy
new file mode 100644
index 0000000000000000000000000000000000000000..b679fdf53336a82ea681635042cdb04c7154de7b
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_yuezhengling.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:16951a3b739b247884b912aea85d86b6205082731ec29df0353145b31edfd161
+size 896
diff --git a/resource/singer/singer_embedding_kising_yunhao.npy b/resource/singer/singer_embedding_kising_yunhao.npy
new file mode 100644
index 0000000000000000000000000000000000000000..7ddac6a6e078d75618a12e0c2c3d235fbb71da60
--- /dev/null
+++ b/resource/singer/singer_embedding_kising_yunhao.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:059b743aa833ac1b202912abf939e555e2e8d23153cfa3fa07a2390b1f279a82
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Alto-1.npy b/resource/singer/singer_embedding_m4singer_Alto-1.npy
new file mode 100644
index 0000000000000000000000000000000000000000..714e488f95eb59f01299821e45a03be548797b14
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Alto-1.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d40442ac0b1411f76793c47725ed05467388d4c2d61a0745f6ce64621b7a222b
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Alto-2.npy b/resource/singer/singer_embedding_m4singer_Alto-2.npy
new file mode 100644
index 0000000000000000000000000000000000000000..63e81d5dcb80be9668bf990775682dba60cbbb1e
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Alto-2.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:439ef471f24de4c30f66eed18dd05a1aba94e7a84c22926a1470b377f7906726
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Alto-3.npy b/resource/singer/singer_embedding_m4singer_Alto-3.npy
new file mode 100644
index 0000000000000000000000000000000000000000..74fae714511da2780a30caf312d72b01f907aa67
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Alto-3.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5cade75d36c57f28cf8219e864ca24c57740f1ac62b1443c6f55ad540ec762c6
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Alto-4.npy b/resource/singer/singer_embedding_m4singer_Alto-4.npy
new file mode 100644
index 0000000000000000000000000000000000000000..ddc86f52a13c7a62d34cb86425272d78c78ef112
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Alto-4.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b14f6db3e6269af78c48aa874b4f5b5abd093d4a9230cccc6f08ab39d7275fb6
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Alto-5.npy b/resource/singer/singer_embedding_m4singer_Alto-5.npy
new file mode 100644
index 0000000000000000000000000000000000000000..cb6cd907062f0f4acd21b39a913872d3047719b9
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Alto-5.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:de676a2e1ee142f63f95114f959b0359f289e17848521f84b6da3b317d4fd2a9
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Alto-6.npy b/resource/singer/singer_embedding_m4singer_Alto-6.npy
new file mode 100644
index 0000000000000000000000000000000000000000..0b4c8f9361c75e77300be2d458414a98ede86db7
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Alto-6.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6deebbac4fe82d4f246e4b0ae2d9fa099d523b09698457adc4c93f798146db90
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Alto-7.npy b/resource/singer/singer_embedding_m4singer_Alto-7.npy
new file mode 100644
index 0000000000000000000000000000000000000000..f9f285bece119ba556b33e4acacd9407a1ec4778
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Alto-7.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02c72eb52c9b133b981b539f91e6877029696116aec6e2a4de83c94958524eb0
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Bass-1.npy b/resource/singer/singer_embedding_m4singer_Bass-1.npy
new file mode 100644
index 0000000000000000000000000000000000000000..29c2f95361c9f354b0db2f571853abbb6beb2362
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Bass-1.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5b357faf4103f610841feead877340693c158c60d1e99f6bbdc258767b355650
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Bass-2.npy b/resource/singer/singer_embedding_m4singer_Bass-2.npy
new file mode 100644
index 0000000000000000000000000000000000000000..bb663c22609590e48a9db78e5f8e2b3fd1b8161f
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Bass-2.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3524ae6d6e0ef5af5cab27b9e689c60432a20b45ee10a6d31e715fd49ab35829
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Bass-3.npy b/resource/singer/singer_embedding_m4singer_Bass-3.npy
new file mode 100644
index 0000000000000000000000000000000000000000..23bbff0f5cad5aa6fb3004ad1c4a9f0d5cb2636a
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Bass-3.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:953945e3b63f244f33b51115499bccb7c3bcc035cfff6a512452e95d317e5e2e
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Soprano-1.npy b/resource/singer/singer_embedding_m4singer_Soprano-1.npy
new file mode 100644
index 0000000000000000000000000000000000000000..e89646d16b273ade15a7dee7ce779bc56ffd3d1f
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Soprano-1.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fcbcfe6e253b752042b3e87de9beb73f03a25cf345c5974edb4135ba47809d9b
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Soprano-2.npy b/resource/singer/singer_embedding_m4singer_Soprano-2.npy
new file mode 100644
index 0000000000000000000000000000000000000000..263d0085d4d4fada8e7746afaf08a69a8e8fecb7
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Soprano-2.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:568557ef9e3ecff541fae420c3f82dca816cde867106f0a815376ec3dfc2145e
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Soprano-3.npy b/resource/singer/singer_embedding_m4singer_Soprano-3.npy
new file mode 100644
index 0000000000000000000000000000000000000000..a7a4822c5a67cb3cd5d913aeb39742faf3a4d6c4
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Soprano-3.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db710202bc0366452f461a5d576fe8e6bc6e6670cde11019cc01eddede206adb
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Tenor-1.npy b/resource/singer/singer_embedding_m4singer_Tenor-1.npy
new file mode 100644
index 0000000000000000000000000000000000000000..11a85412fd8fc9cd04c8f14dadb8be906cd221f8
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Tenor-1.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c915ea538a48e745dbac223168d8360214c6f0478757559e449632f284618273
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Tenor-2.npy b/resource/singer/singer_embedding_m4singer_Tenor-2.npy
new file mode 100644
index 0000000000000000000000000000000000000000..46165b9ab095f27de2a1119cdf116e2b9f020b3b
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Tenor-2.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:50896c8db7ff5ba5438e177162b72bc051ed2a911ea7788bba0c524fc65e3483
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Tenor-3.npy b/resource/singer/singer_embedding_m4singer_Tenor-3.npy
new file mode 100644
index 0000000000000000000000000000000000000000..29db55073e877b28c9b8f765359347ce98fcb423
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Tenor-3.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96dc2c331b58eb665ad97eca7c9aee528959fed18836c935aa006b93d8213ff7
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Tenor-4.npy b/resource/singer/singer_embedding_m4singer_Tenor-4.npy
new file mode 100644
index 0000000000000000000000000000000000000000..9ca9bccdc82ea5eb6db45e343b2ae72f99aeff1d
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Tenor-4.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5323f344ad67a4af08e899d6e97f6ed6a6fe6b7ecbc09168dd5725f70e343a27
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Tenor-5.npy b/resource/singer/singer_embedding_m4singer_Tenor-5.npy
new file mode 100644
index 0000000000000000000000000000000000000000..d81c50c746cf3a6b8c145f172c167f9b050c6eed
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Tenor-5.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fa66a06aff190245faffdc5344c121cd0c89732d9b99e7460fa74db7f07f2302
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Tenor-6.npy b/resource/singer/singer_embedding_m4singer_Tenor-6.npy
new file mode 100644
index 0000000000000000000000000000000000000000..2e54c93e26a0eb9ec32c3bcaa064cac95e19ea32
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Tenor-6.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d2b9509ffef7270415477ad4d40e7a1672f2704eece64a8f4695afa6b260954
+size 896
diff --git a/resource/singer/singer_embedding_m4singer_Tenor-7.npy b/resource/singer/singer_embedding_m4singer_Tenor-7.npy
new file mode 100644
index 0000000000000000000000000000000000000000..2f328eb884f8cbf0fcf46a506f353bb402db620c
--- /dev/null
+++ b/resource/singer/singer_embedding_m4singer_Tenor-7.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7fc46db43827bdae7175f44ea90e76b6d35abdb7dec4d337dd8f4aa4730fe6d8
+size 896
diff --git a/resource/singer/singer_embedding_namine.npy b/resource/singer/singer_embedding_namine.npy
new file mode 100644
index 0000000000000000000000000000000000000000..4b000fec9163d4f5e33cb7df907c5b6dd409ab3e
--- /dev/null
+++ b/resource/singer/singer_embedding_namine.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69d0e1931ea19f8d6ce503659ecdfa1c121c77495983f5a9e0c4fca67a1db542
+size 896
diff --git a/resource/singer/singer_embedding_ofuton.npy b/resource/singer/singer_embedding_ofuton.npy
new file mode 100644
index 0000000000000000000000000000000000000000..41b1721d3fdd1b6555ca9171123c2789f6c5e417
--- /dev/null
+++ b/resource/singer/singer_embedding_ofuton.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83f6f423343adc25ada7dba7d22f7c90ac1419e7b119d9a23a3eba473e662454
+size 896
diff --git a/resource/singer/singer_embedding_oniku.npy b/resource/singer/singer_embedding_oniku.npy
new file mode 100644
index 0000000000000000000000000000000000000000..9059d646b682d5274d4ac29af1c7a6af4926bb58
--- /dev/null
+++ b/resource/singer/singer_embedding_oniku.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2febfc827d6a36af1da2272651b77d5c543ed589c2b8a4368f7406c11e23edd1
+size 896
diff --git a/resource/singer/singer_embedding_opencpop.npy b/resource/singer/singer_embedding_opencpop.npy
new file mode 100644
index 0000000000000000000000000000000000000000..569f54c0c375722f86f9ffd47d77f3574fd44f51
--- /dev/null
+++ b/resource/singer/singer_embedding_opencpop.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2f7a4f3dd8c861e984ce3f35a7987f9008bc7fc1359135caea8435279c2cc025
+size 896
diff --git a/resource/singer/singer_embedding_pjs.npy b/resource/singer/singer_embedding_pjs.npy
new file mode 100644
index 0000000000000000000000000000000000000000..61116dbcf2663dedddc044b93b0b16cce36e2668
--- /dev/null
+++ b/resource/singer/singer_embedding_pjs.npy
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7f93e09d5d2aeeab0be6d9c22db5a2407e88e8ade4fb140f7d322d99674a0cd0
+size 896
diff --git a/util.py b/util.py
index ea526bc8b0415706da7c093741d05fe12615ac9d..44a6c4553427bcad5b4b5fa25f03dc50875442d7 100644
--- a/util.py
+++ b/util.py
@@ -1,5 +1,59 @@
+import os
+import json
+import warnings
+from typing import List
-def split_pinyin(pinyin: str, pinyin_dict: dict) -> tuple[str]:
+import pyopenjtalk
+
+
+def preprocess_input(src_str, seg_syb=" "):
+ src_str = src_str.replace("\n", seg_syb)
+ src_str = src_str.replace(" ", seg_syb)
+ return src_str
+
+
+def pyopenjtalk_g2p(text) -> List[str]:
+ with warnings.catch_warnings(record=True) as w:
+ warnings.simplefilter("always")
+ # phones is a str object separated by space
+ phones = pyopenjtalk.g2p(text, kana=False)
+ if len(w) > 0:
+ for warning in w:
+ if "No phoneme" in str(warning.message):
+ return False
+
+ phones = phones.split(" ")
+ return phones
+
+
+def split_pinyin(pinyin: str, zh_plan: dict) -> tuple[str]:
# load pinyin dict from local/pinyin.dict
pinyin = pinyin.lower()
- return pinyin_dict[pinyin]
+ if pinyin in zh_plan["dict"]:
+ return zh_plan["dict"][pinyin]
+ elif pinyin in zh_plan["syllable_alias"]:
+ return zh_plan["dict"][zh_plan["syllable_alias"][pinyin]]
+ else:
+ return False
+
+
+def get_tokenizer(lang):
+ if lang == "zh":
+ with open(os.path.join("resource/all_plans.json"), "r") as f:
+ all_plan_dict = json.load(f)
+ for plan in all_plan_dict["plans"]:
+ if plan["language"] == "zh":
+ zh_plan = plan
+ return lambda text: split_pinyin(text, zh_plan)
+ elif lang == "jp":
+ return pyopenjtalk_g2p
+
+def load_pitch_dict(file_path = "resource/midi-note.scp"):
+ pitch_dict = {}
+ with open(file_path, "r", encoding="utf-8") as f:
+ for line in f:
+ items = line.strip().split()
+ pitch_dict[items[0]] = int(items[1])
+ pitch_dict[items[1]] = int(items[1])
+ return pitch_dict
+