diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..44505cfd2545ba70372e604943bea03df4bc0c1f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +__pycache__ +.gradio diff --git a/app.py b/app.py new file mode 100644 index 0000000000000000000000000000000000000000..c666e2c464d36ccc577bb3007015753c75655747 --- /dev/null +++ b/app.py @@ -0,0 +1,316 @@ +import os +import torch +import librosa +import numpy as np +import gradio as gr +import pyopenjtalk +from util import preprocess_input, postprocess_phn, get_tokenizer, load_pitch_dict, get_pinyin + +from espnet_model_zoo.downloader import ModelDownloader +from espnet2.bin.svs_inference import SingingGenerate + + +singer_embeddings = { + "Model①(Chinese)-zh": { + "singer1 (male)": 1, + "singer2 (female)": 12, + "singer3 (male)": 23, + "singer4 (female)": 29, + "singer5 (male)": 18, + "singer6 (female)": 8, + "singer7 (male)": 25, + "singer8 (female)": 5, + "singer9 (male)": 10, + "singer10 (female)": 15, + }, + "Model②(Multilingual)-zh": { + "singer1 (male)": "resource/singer/singer_embedding_ace-1.npy", + "singer2 (female)": "resource/singer/singer_embedding_ace-2.npy", + "singer3 (male)": "resource/singer/singer_embedding_ace-3.npy", + "singer4 (female)": "resource/singer/singer_embedding_ace-8.npy", + "singer5 (male)": "resource/singer/singer_embedding_ace-7.npy", + "singer6 (female)": "resource/singer/singer_embedding_itako.npy", + "singer7 (male)": "resource/singer/singer_embedding_ofuton.npy", + "singer8 (female)": "resource/singer/singer_embedding_kising_orange.npy", + "singer9 (male)": "resource/singer/singer_embedding_m4singer_Tenor-1.npy", + "singer10 (female)": "resource/singer/singer_embedding_m4singer_Alto-4.npy", + }, + "Model②(Multilingual)-jp": { + "singer1 (male)": "resource/singer/singer_embedding_ace-1.npy", + "singer2 (female)": "resource/singer/singer_embedding_ace-2.npy", + "singer3 (male)": "resource/singer/singer_embedding_ace-3.npy", + "singer4 (female)": "resource/singer/singer_embedding_ace-8.npy", + "singer5 (male)": "resource/singer/singer_embedding_ace-7.npy", + "singer6 (female)": "resource/singer/singer_embedding_itako.npy", + "singer7 (male)": "resource/singer/singer_embedding_ofuton.npy", + "singer8 (female)": "resource/singer/singer_embedding_kising_orange.npy", + "singer9 (male)": "resource/singer/singer_embedding_m4singer_Tenor-1.npy", + "singer10 (female)": "resource/singer/singer_embedding_m4singer_Alto-4.npy", + } +} + +model_dict = { + "Model①(Chinese)-zh": "espnet/aceopencpop_svs_visinger2_40singer_pretrain", + "Model②(Multilingual)-zh": "espnet/mixdata_svs_visinger2_spkembed_lang_pretrained", + "Model②(Multilingual)-jp": "espnet/mixdata_svs_visinger2_spkembed_lang_pretrained", +} + +total_singers = list(singer_embeddings["Model②(Multilingual)-zh"].keys()) + +langs = { + "zh": 2, + "jp": 1, +} + +def gen_song(model_name, spk, texts, durs, pitchs): + fs = 44100 + tempo = 120 + lang = model_name.split("-")[-1] + PRETRAIN_MODEL = model_dict[model_name] + if texts is None: + return (fs, np.array([0.0])), "Error: No Text provided!" + if durs is None: + return (fs, np.array([0.0])), "Error: No Dur provided!" + if pitchs is None: + return (fs, np.array([0.0])), "Error: No Pitch provided!" + + # preprocess + if lang == "zh": + texts = preprocess_input(texts, "") + text_list = get_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): + return (fs, np.array([0.0])), f"Error: len in text({len(text_list)}) mismatch with duration({len(dur_list)})!" + if len(text_list) != len(pitch_list): + 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(model_name, lang) + sybs = [] + for text in text_list: + if text == "AP" or text == "SP": + rev = [text] + elif text == "-" or text == "——": + rev = [text] + else: + rev = tokenizer(text) + if rev == False: + return (fs, np.array([0.0])), f"Error: text `{text}` is invalid!" + rev = postprocess_phn(rev, model_name, lang) + phns = "_".join(rev) + sybs.append(phns) + + pitch_dict = load_pitch_dict() + + labels = [] + notes = [] + st = 0 + pre_phn = "" + for phns, dur, pitch in zip(sybs, dur_list, pitch_list): + if phns == "-" or phns == "——": + phns = pre_phn + if pitch not in pitch_dict: + return (fs, np.array([0.0])), f"Error: pitch `{pitch}` is invalid!" + pitch = pitch_dict[pitch] + phn_list = phns.split("_") + lyric = "".join(phn_list) + dur = float(dur) + note = [st, st + dur, lyric, pitch, phns] + st += dur + notes.append(note) + for phn in phn_list: + labels.append(phn) + pre_phn = labels[-1] + + phns_str = " ".join(labels) + batch = { + "score": ( + int(tempo), + notes, + ), + "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) + svs = SingingGenerate( + train_config = pretrain_downloaded["train_config"], + model_file = pretrain_downloaded["model_file"], + device = device + ) + if model_name == "Model①(Chinese)-zh": + sid = np.array([singer_embeddings[model_name][spk]]) + output_dict = svs(batch, sids=sid) + else: + lid = np.array([langs[lang]]) + spk_embed = np.load(singer_embeddings[model_name][spk]) + output_dict = svs(batch, lids=lid, spembs=spk_embed) + wav_info = output_dict["wav"].cpu().numpy() + + # mos prediction with sr=16k + predictor = torch.hub.load("South-Twilight/SingMOS:v0.2.0", "singing_ssl_mos", trust_repo=True) + wav_mos = librosa.resample(wav_info, orig_sr=fs, target_sr=16000) + wav_mos = torch.from_numpy(wav_mos).unsqueeze(0) + len_mos = torch.tensor([wav_mos.shape[1]]) + score = predictor(wav_mos, len_mos) + return (fs, wav_info), "success!", round(score.item(), 2) + + +# SP: silence, AP: aspirate. +examples = [ + ["Model①(Chinese)-zh", "singer1 (male)", "雨 淋 湿 了 SP 天 空 AP\n毁 的 SP 很 讲 究 AP", "0.23 0.16 0.36 0.16 0.07 0.28 0.5 0.21\n0.3 0.12 0.12 0.25 0.5 0.48 0.34", "60 62 62 62 0 62 58 0\n58 58 0 58 58 63 0"], + ["Model①(Chinese)-zh", "singer3 (male)", "雨 淋 湿 了 SP 天 空 AP\n毁 的 SP 很 讲 究 AP", "0.23 0.16 0.36 0.16 0.07 0.28 0.5 0.21\n0.3 0.12 0.12 0.25 0.5 0.48 0.34", "C4 D4 D4 D4 rest D4 A#3 rest\nA#3 A#3 rest A#3 A#3 D#4 rest"], # midi note + ["Model①(Chinese)-zh", "singer3 (male)", "雨 淋 湿 了 SP 天 空 AP\n毁 的 SP 很 讲 究 AP", "0.23 0.16 0.36 0.16 0.07 0.28 0.5 0.21\n0.3 0.12 0.12 0.25 0.5 0.48 0.34", "C#4 D#4 D#4 D#4 rest D#4 B3 rest\nB3 B3 rest B3 B3 E4 rest"], # up 1 key + ["Model①(Chinese)-zh", "singer3 (male)", "雨 淋 湿 了 SP 大 地 AP\n毁 的 SP 很 讲 究 AP", "0.23 0.16 0.36 0.16 0.07 0.28 0.5 0.21\n0.3 0.12 0.12 0.25 0.5 0.48 0.34", "C4 D4 D4 D4 rest D4 A#3 rest\nA#3 A#3 rest A#3 A#3 D#4 rest"], # lyrics + ["Model②(Multilingual)-zh", "singer3 (male)", "你 说 你 不 SP 懂\n 为 何 在 这 时 牵 手 AP", "0.11 0.33 0.29 0.13 0.15 0.48\n0.24 0.18 0.34 0.15 0.27 0.28 0.63 0.44", "63 63 63 63 0 63\n62 62 62 63 65 63 62 0"], + ["Model②(Multilingual)-zh", "singer3 (male)", "你 说 你 不 SP 懂\n 为 何 在 这 时 牵 手 AP", "0.23 0.66 0.58 0.27 0.3 0.97\n0.48 0.36 0.69 0.3 0.53 0.56 1.27 0.89", "63 63 63 63 0 63\n62 62 62 63 65 63 62 0"], # double duration + ["Model①(Chinese)-zh", "singer3 (male)", "雨 淋 湿 了 SP 天 空 AP\n毁 的 SP 很 讲 究 AP\n你 说 你 不 SP 懂\n 为 何 在 这 时 牵 手 AP", "0.23 0.16 0.36 0.16 0.07 0.28 0.5 0.21\n0.3 0.12 0.12 0.25 0.5 0.48 0.34\n0.11 0.33 0.29 0.13 0.15 0.48\n0.24 0.18 0.34 0.15 0.27 0.28 0.63 0.44", "60 62 62 62 0 62 58 0\n58 58 0 58 58 63 0\n63 63 63 63 0 63\n62 62 62 63 65 63 62 0"], # long + ["Model①(Chinese)-zh", "singer3 (male)", "修 炼 爱 情 的 心 酸 SP AP", "0.42 0.21 0.19 0.28 0.22 0.33 1.53 0.1 0.29", "68 70 68 66 63 68 68 0 0"], + ["Model①(Chinese)-zh", "singer3 (male)", "学 会 放 好 以 前 的 渴 望 SP AP", "0.3 0.22 0.29 0.27 0.25 0.44 0.54 0.29 1.03 0.08 0.39", "68 70 68 66 61 68 68 65 66 0 0"], + ["Model①(Chinese)-zh", "singer3 (male)", "SP 我 不 - 是 一 定 要 你 回 - 来 SP", "0.37 0.45 0.47 0.17 0.52 0.28 0.46 0.31 0.44 0.45 0.2 2.54 0.19", "0 51 60 61 59 59 57 57 59 60 61 59 0"], # slur + ["Model①(Chinese)-zh", "singer4 (female)", "AP 我 多 想 再 见 你\n哪 怕 匆 - 匆 一 AP 眼 就 别 离 AP", "0.13 0.24 0.68 0.78 0.86 0.4 0.94 0.54 0.3 0.56 0.16 0.86 0.26 0.22 0.28 0.78 0.68 1.5 0.32", "0 57 66 63 63 63 63 60 61 61 63 66 66 0 61 61 59 58 0"], + ["Model②(Multilingual)-jp", "singer8 (female)", "い じ ん さ ん に つ れ ら れ て", "0.6 0.3 0.3 0.3 0.3 0.6 0.6 0.3 0.3 0.6 0.23", "60 60 60 56 56 56 55 55 55 53 56"], + ["Model②(Multilingual)-jp", "singer8 (female)", "い じ ん さ ん に つ れ ら れ て", "0.6 0.3 0.3 0.3 0.3 0.6 0.6 0.3 0.3 0.6 0.23", "62 62 62 58 58 58 57 57 57 55 58"], # pitch + ["Model②(Multilingual)-jp", "singer8 (female)", "い じ ん さ ん に つ れ ら れ て", "1.2 0.6 0.6 0.6 0.6 1.2 1.2 0.6 0.6 1.2 0.45", "60 60 60 56 56 56 55 55 55 53 56"], # double dur + ["Model②(Multilingual)-jp", "singer8 (female)", "い じ ん さ ん に つ れ ら れ て", "0.3 0.15 0.15 0.15 0.15 0.3 0.3 0.15 0.15 0.3 0.11", "60 60 60 56 56 56 55 55 55 53 56"], # half dur + ["Model②(Multilingual)-jp", "singer8 (female)", "きっ と と べ ば そ ら ま で と ど く 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"], + ["Model②(Multilingual)-jp", "singer8 (female)", "じゃ の め で お む か え う れ し い な", "0.43 0.14 0.43 0.14 0.43 0.14 0.43 0.14 0.43 0.14 0.43 0.14 0.65", "60 60 60 62 64 67 69 69 64 64 64 62 60"], + ["Model②(Multilingual)-jp", "singer10 (female)", "お と め わ ら い か ふぁ い や ら い か ん な い す ぶ ろ うぃ ん ぶ ろ うぃ ん い ん ざ うぃ ん", "0.15 0.15 0.15 0.15 0.3 0.15 0.3 0.15 0.15 0.3 0.07 0.07 0.15 0.15 0.15 0.15 0.15 0.15 0.45 0.07 0.07 0.07 0.38 0.07 0.07 0.15 0.15 0.3 0.15 0.15", "67 67 67 67 67 67 69 67 67 69 67 67 64 64 64 64 64 64 62 64 64 62 62 64 64 62 62 59 59 59"], +] + +with gr.Blocks() as demo: + gr.Markdown( + """ +

Demo of Singing Voice Synthesis in Muskits-ESPnet

+ +
+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 usually includes lyrics, as well as duration and pitch of each word in lyrics, + +

How to use:

+
    +
  1. Choose Model-Language: +
      +
    • "zh" indicates lyrics input in Chinese, and "jp" indicates lyrics input in Japanese.
    • +
    • For example, "Model②(Mulitlingual)-zh" means model "Model②(Multilingual)" with lyrics input in Chinese.
    • +
    +
  2. +
  3. [Optional] Choose Singer: Choose one singer you like from the drop-down list.
  4. +
  5. Input lyrics: +
      +
    • Lyrics use Chinese characters when the language is 'zh' and hiragana when the language is 'jp'.
    • +
    • Special characters such as 'AP' (breath), 'SP' (silence), and '-' (slur, only for Chinese lyrics) can also be used.
    • +
    • Lyrics sequence should be separated by either a space (' ') or a newline ('\\n'), without the quotation marks.
    • +
    +
  6. +
  7. Input durations: +
      +
    • Durations use float number as input.
    • +
    • Length of duration sequence should be same as lyric sequence, with each duration corresponding to the respective lyric.
    • +
    • Durations sequence should be separated by either a space (' ') or a newline ('\\n'), without the quotation marks.
    • +
    +
  8. +
  9. Input pitches: +
      +
    • Pitches use MIDI note or MIDI note number as input. Specially, "69" in MIDI note number represents "A4" in MIDI note.
    • +
    • Length of pitch sequence should be same as lyric sequence, with each pitch corresponding to the respective lyric.
    • +
    • Pitches sequence should be separated by either a space (' ') or a newline ('\\n'), without the quotation marks.
    • +
    +
  10. +
  11. Hit "Generate" and listen to the result!
  12. +
+
+ +

Notice:

+ +""" + ) + # Row-1 + with gr.Row(): + with gr.Column(variant="panel"): + model_name = gr.Radio( + label="Model-Language", + choices=[ + "Model①(Chinese)-zh", + "Model②(Multilingual)-zh", + "Model②(Multilingual)-jp", + ], + ) + + with gr.Column(variant="panel"): + singer = gr.Dropdown( + label="Singer", + choices=total_singers, + ) + + # def set_model(model_name_str: str): + # """ + # gets value from `model_name`. either + # uses cached list of speakers for the given model name + # or loads the addon and checks what are the speakers. + # """ + # speakers = list(singer_embeddings[model_name_str].keys()) + # value = speakers[0] + # return gr.update( + # choices=speakers, value=value, visible=True, interactive=True + # ) + + # model_name.change(set_model, inputs=model_name, outputs=singer) + + # Row-2 + with gr.Row(): + with gr.Column(variant="panel"): + lyrics = gr.Textbox(label="Lyrics") + duration = gr.Textbox(label="Duration") + pitch = gr.Textbox(label="Pitch") + generate = gr.Button("Generate") + with gr.Column(variant="panel"): + gened_song = gr.Audio(label="Generated Song", type="numpy") + run_status = gr.Textbox(label="Running Status") + pred_mos = gr.Textbox(label=" Pseudo MOS") + + gr.Examples( + examples=examples, + inputs=[model_name, singer, lyrics, duration, pitch], + outputs=[singer], + label="Examples", + examples_per_page=20, + ) + + gr.Markdown(""" +
+ +

References: Muskits-ESPnet paper | +espnet | +Model①(Chinese) | +Model②(Multilingual)

+ +
+""" + ) + + generate.click( + fn=gen_song, + inputs=[model_name, singer, lyrics, duration, pitch], + outputs=[gened_song, run_status, pred_mos], + ) + +demo.launch() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..c7d620f846c886aa0f2e406e6233d66dcc38bd8a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,10 @@ +git+https://github.com/South-Twilight/espnet +torch +numpy +librosa +espnet_model_zoo +importlib +pathlib +pypinyin +torchaudio +pyopenjtalk 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/__init__.py b/resource/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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/resource/midi-note.scp b/resource/midi-note.scp new file mode 100644 index 0000000000000000000000000000000000000000..45113e930ae15c3145cf22df63108ffdea719743 --- /dev/null +++ b/resource/midi-note.scp @@ -0,0 +1,152 @@ +G9 127 +F#9 126 +Gb9 126 +F9 125 +E9 124 +D#9 123 +Eb9 123 +D9 122 +C#9 121 +Db9 121 +C9 120 +B8 119 +A#8 118 +Bb8 118 +A8 117 +G#8 116 +Ab8 116 +G8 115 +F#8 114 +Gb8 114 +F8 113 +E8 112 +D#8 111 +Eb8 111 +D8 110 +C#8 109 +Db8 109 +C8 108 +B7 107 +A#7 106 +Bb7 106 +A7 105 +G#7 104 +Ab7 104 +G7 103 +F#7 102 +Gb7 102 +F7 101 +E7 100 +D#7 99 +Eb7 99 +D7 98 +C#7 97 +Db7 97 +C7 96 +B6 95 +A#6 94 +Bb6 94 +A6 93 +G#6 92 +Ab6 92 +G6 91 +F#6 90 +Gb6 90 +F6 89 +E6 88 +D#6 87 +Eb6 87 +D6 86 +C#6 85 +Db6 85 +C6 84 +B5 83 +A#5 82 +Bb5 82 +A5 81 +G#5 80 +Ab5 80 +G5 79 +F#5 78 +Gb5 78 +F5 77 +E5 76 +D#5 75 +Eb5 75 +D5 74 +C#5 73 +Db5 73 +C5 72 +B4 71 +A#4 70 +Bb4 70 +A4 69 +G#4 68 +Ab4 68 +G4 67 +F#4 66 +Gb4 66 +F4 65 +E4 64 +D#4 63 +Eb4 63 +D4 62 +C#4 61 +Db4 61 +C4 60 +B3 59 +A#3 58 +Bb3 58 +A3 57 +G#3 56 +Ab3 56 +G3 55 +F#3 54 +Gb3 54 +F3 53 +E3 52 +D#3 51 +Eb3 51 +D3 50 +C#3 49 +Db3 49 +C3 48 +B2 47 +A#2 46 +Bb2 46 +A2 45 +G#2 44 +Ab2 44 +G2 43 +F#2 42 +Gb2 42 +F2 41 +E2 40 +D#2 39 +Eb2 39 +D2 38 +C#2 37 +Db2 37 +C2 36 +B1 35 +A#1 34 +Bb1 34 +A1 33 +G#1 32 +Ab1 32 +G1 31 +F#1 30 +Gb1 30 +F1 29 +E1 28 +D#1 27 +Eb1 27 +D1 26 +C#1 25 +Db1 25 +C1 24 +B0 23 +A#0 22 +Bb0 22 +A0 21 +rest 0 diff --git a/resource/pinyin_dict.py b/resource/pinyin_dict.py new file mode 100644 index 0000000000000000000000000000000000000000..535e11160d5d28a92be7b508ddb01ab5f6b008d1 --- /dev/null +++ b/resource/pinyin_dict.py @@ -0,0 +1,423 @@ +# Adapted from Opencpop's pinyin to phoneme mapping table: +# https://wenet.org.cn/opencpop/resources/annotationformat/ +PINYIN_DICT = { + "a": ("a",), + "ai": ("ai",), + "an": ("an",), + "ang": ("ang",), + "ao": ("ao",), + "ba": ("b", "a"), + "bai": ("b", "ai"), + "ban": ("b", "an"), + "bang": ("b", "ang"), + "bao": ("b", "ao"), + "bei": ("b", "ei"), + "ben": ("b", "en"), + "beng": ("b", "eng"), + "bi": ("b", "i"), + "bian": ("b", "ian"), + "biao": ("b", "iao"), + "bie": ("b", "ie"), + "bin": ("b", "in"), + "bing": ("b", "ing"), + "bo": ("b", "o"), + "bu": ("b", "u"), + "ca": ("c", "a"), + "cai": ("c", "ai"), + "can": ("c", "an"), + "cang": ("c", "ang"), + "cao": ("c", "ao"), + "ce": ("c", "e"), + "cei": ("c", "ei"), + "cen": ("c", "en"), + "ceng": ("c", "eng"), + "cha": ("ch", "a"), + "chai": ("ch", "ai"), + "chan": ("ch", "an"), + "chang": ("ch", "ang"), + "chao": ("ch", "ao"), + "che": ("ch", "e"), + "chen": ("ch", "en"), + "cheng": ("ch", "eng"), + "chi": ("ch", "i"), + "chong": ("ch", "ong"), + "chou": ("ch", "ou"), + "chu": ("ch", "u"), + "chua": ("ch", "ua"), + "chuai": ("ch", "uai"), + "chuan": ("ch", "uan"), + "chuang": ("ch", "uang"), + "chui": ("ch", "ui"), + "chun": ("ch", "un"), + "chuo": ("ch", "uo"), + "ci": ("c", "i"), + "cong": ("c", "ong"), + "cou": ("c", "ou"), + "cu": ("c", "u"), + "cuan": ("c", "uan"), + "cui": ("c", "ui"), + "cun": ("c", "un"), + "cuo": ("c", "uo"), + "da": ("d", "a"), + "dai": ("d", "ai"), + "dan": ("d", "an"), + "dang": ("d", "ang"), + "dao": ("d", "ao"), + "de": ("d", "e"), + "dei": ("d", "ei"), + "den": ("d", "en"), + "deng": ("d", "eng"), + "di": ("d", "i"), + "dia": ("d", "ia"), + "dian": ("d", "ian"), + "diao": ("d", "iao"), + "die": ("d", "ie"), + "ding": ("d", "ing"), + "diu": ("d", "iu"), + "dong": ("d", "ong"), + "dou": ("d", "ou"), + "du": ("d", "u"), + "duan": ("d", "uan"), + "dui": ("d", "ui"), + "dun": ("d", "un"), + "duo": ("d", "uo"), + "e": ("e",), + "ei": ("ei",), + "en": ("en",), + "eng": ("eng",), + "er": ("er",), + "fa": ("f", "a"), + "fan": ("f", "an"), + "fang": ("f", "ang"), + "fei": ("f", "ei"), + "fen": ("f", "en"), + "feng": ("f", "eng"), + "fo": ("f", "o"), + "fou": ("f", "ou"), + "fu": ("f", "u"), + "ga": ("g", "a"), + "gai": ("g", "ai"), + "gan": ("g", "an"), + "gang": ("g", "ang"), + "gao": ("g", "ao"), + "ge": ("g", "e"), + "gei": ("g", "ei"), + "gen": ("g", "en"), + "geng": ("g", "eng"), + "gong": ("g", "ong"), + "gou": ("g", "ou"), + "gu": ("g", "u"), + "gua": ("g", "ua"), + "guai": ("g", "uai"), + "guan": ("g", "uan"), + "guang": ("g", "uang"), + "gui": ("g", "ui"), + "gun": ("g", "un"), + "guo": ("g", "uo"), + "ha": ("h", "a"), + "hai": ("h", "ai"), + "han": ("h", "an"), + "hang": ("h", "ang"), + "hao": ("h", "ao"), + "he": ("h", "e"), + "hei": ("h", "ei"), + "hen": ("h", "en"), + "heng": ("h", "eng"), + "hm": ("h", "m"), + "hng": ("h", "ng"), + "hong": ("h", "ong"), + "hou": ("h", "ou"), + "hu": ("h", "u"), + "hua": ("h", "ua"), + "huai": ("h", "uai"), + "huan": ("h", "uan"), + "huang": ("h", "uang"), + "hui": ("h", "ui"), + "hun": ("h", "un"), + "huo": ("h", "uo"), + "ji": ("j", "i"), + "jia": ("j", "ia"), + "jian": ("j", "ian"), + "jiang": ("j", "iang"), + "jiao": ("j", "iao"), + "jie": ("j", "ie"), + "jin": ("j", "in"), + "jing": ("j", "ing"), + "jiong": ("j", "iong"), + "jiu": ("j", "iu"), + "ju": ("j", "v"), + "juan": ("j", "van"), + "jue": ("j", "ve"), + "jun": ("j", "vn"), + "ka": ("k", "a"), + "kai": ("k", "ai"), + "kan": ("k", "an"), + "kang": ("k", "ang"), + "kao": ("k", "ao"), + "ke": ("k", "e"), + "kei": ("k", "ei"), + "ken": ("k", "en"), + "keng": ("k", "eng"), + "kong": ("k", "ong"), + "kou": ("k", "ou"), + "ku": ("k", "u"), + "kua": ("k", "ua"), + "kuai": ("k", "uai"), + "kuan": ("k", "uan"), + "kuang": ("k", "uang"), + "kui": ("k", "ui"), + "kun": ("k", "un"), + "kuo": ("k", "uo"), + "la": ("l", "a"), + "lai": ("l", "ai"), + "lan": ("l", "an"), + "lang": ("l", "ang"), + "lao": ("l", "ao"), + "le": ("l", "e"), + "lei": ("l", "ei"), + "leng": ("l", "eng"), + "li": ("l", "i"), + "lia": ("l", "ia"), + "lian": ("l", "ian"), + "liang": ("l", "iang"), + "liao": ("l", "iao"), + "lie": ("l", "ie"), + "lin": ("l", "in"), + "ling": ("l", "ing"), + "liu": ("l", "iu"), + "lo": ("l", "o"), + "long": ("l", "ong"), + "lou": ("l", "ou"), + "lu": ("l", "u"), + "luan": ("l", "uan"), + "lun": ("l", "un"), + "luo": ("l", "uo"), + "lv": ("l", "v"), + "lve": ("l", "ve"), + "m": ("m",), + "ma": ("m", "a"), + "mai": ("m", "ai"), + "man": ("m", "an"), + "mang": ("m", "ang"), + "mao": ("m", "ao"), + "me": ("m", "e"), + "mei": ("m", "ei"), + "men": ("m", "en"), + "meng": ("m", "eng"), + "mi": ("m", "i"), + "mian": ("m", "ian"), + "miao": ("m", "iao"), + "mie": ("m", "ie"), + "min": ("m", "in"), + "ming": ("m", "ing"), + "miu": ("m", "iu"), + "mo": ("m", "o"), + "mou": ("m", "ou"), + "mu": ("m", "u"), + "n": ("n",), + "na": ("n", "a"), + "nai": ("n", "ai"), + "nan": ("n", "an"), + "nang": ("n", "ang"), + "nao": ("n", "ao"), + "ne": ("n", "e"), + "nei": ("n", "ei"), + "nen": ("n", "en"), + "neng": ("n", "eng"), + "ng": ("n", "g"), + "ni": ("n", "i"), + "nian": ("n", "ian"), + "niang": ("n", "iang"), + "niao": ("n", "iao"), + "nie": ("n", "ie"), + "nin": ("n", "in"), + "ning": ("n", "ing"), + "niu": ("n", "iu"), + "nong": ("n", "ong"), + "nou": ("n", "ou"), + "nu": ("n", "u"), + "nuan": ("n", "uan"), + "nun": ("n", "un"), + "nuo": ("n", "uo"), + "nv": ("n", "v"), + "nve": ("n", "ve"), + "o": ("o",), + "ou": ("ou",), + "pa": ("p", "a"), + "pai": ("p", "ai"), + "pan": ("p", "an"), + "pang": ("p", "ang"), + "pao": ("p", "ao"), + "pei": ("p", "ei"), + "pen": ("p", "en"), + "peng": ("p", "eng"), + "pi": ("p", "i"), + "pian": ("p", "ian"), + "piao": ("p", "iao"), + "pie": ("p", "ie"), + "pin": ("p", "in"), + "ping": ("p", "ing"), + "po": ("p", "o"), + "pou": ("p", "ou"), + "pu": ("p", "u"), + "qi": ("q", "i"), + "qia": ("q", "ia"), + "qian": ("q", "ian"), + "qiang": ("q", "iang"), + "qiao": ("q", "iao"), + "qie": ("q", "ie"), + "qin": ("q", "in"), + "qing": ("q", "ing"), + "qiong": ("q", "iong"), + "qiu": ("q", "iu"), + "qu": ("q", "v"), + "quan": ("q", "van"), + "que": ("q", "ve"), + "qun": ("q", "vn"), + "ran": ("r", "an"), + "rang": ("r", "ang"), + "rao": ("r", "ao"), + "re": ("r", "e"), + "ren": ("r", "en"), + "reng": ("r", "eng"), + "ri": ("r", "i"), + "rong": ("r", "ong"), + "rou": ("r", "ou"), + "ru": ("r", "u"), + "rua": ("r", "ua"), + "ruan": ("r", "uan"), + "rui": ("r", "ui"), + "run": ("r", "un"), + "ruo": ("r", "uo"), + "sa": ("s", "a"), + "sai": ("s", "ai"), + "san": ("s", "an"), + "sang": ("s", "ang"), + "sao": ("s", "ao"), + "se": ("s", "e"), + "sen": ("s", "en"), + "seng": ("s", "eng"), + "sha": ("sh", "a"), + "shai": ("sh", "ai"), + "shan": ("sh", "an"), + "shang": ("sh", "ang"), + "shao": ("sh", "ao"), + "she": ("sh", "e"), + "shei": ("sh", "ei"), + "shen": ("sh", "en"), + "sheng": ("sh", "eng"), + "shi": ("sh", "i"), + "shou": ("sh", "ou"), + "shu": ("sh", "u"), + "shua": ("sh", "ua"), + "shuai": ("sh", "uai"), + "shuan": ("sh", "uan"), + "shuang": ("sh", "uang"), + "shui": ("sh", "ui"), + "shun": ("sh", "un"), + "shuo": ("sh", "uo"), + "si": ("s", "i"), + "song": ("s", "ong"), + "sou": ("s", "ou"), + "su": ("s", "u"), + "suan": ("s", "uan"), + "sui": ("s", "ui"), + "sun": ("s", "un"), + "suo": ("s", "uo"), + "ta": ("t", "a"), + "tai": ("t", "ai"), + "tan": ("t", "an"), + "tang": ("t", "ang"), + "tao": ("t", "ao"), + "te": ("t", "e"), + "tei": ("t", "ei"), + "teng": ("t", "eng"), + "ti": ("t", "i"), + "tian": ("t", "ian"), + "tiao": ("t", "iao"), + "tie": ("t", "ie"), + "ting": ("t", "ing"), + "tong": ("t", "ong"), + "tou": ("t", "ou"), + "tu": ("t", "u"), + "tuan": ("t", "uan"), + "tui": ("t", "ui"), + "tun": ("t", "un"), + "tuo": ("t", "uo"), + "wa": ("w", "a"), + "wai": ("w", "ai"), + "wan": ("w", "an"), + "wang": ("w", "ang"), + "wei": ("w", "ei"), + "wen": ("w", "en"), + "weng": ("w", "eng"), + "wo": ("w", "o"), + "wu": ("w", "u"), + "xi": ("x", "i"), + "xia": ("x", "ia"), + "xian": ("x", "ian"), + "xiang": ("x", "iang"), + "xiao": ("x", "iao"), + "xie": ("x", "ie"), + "xin": ("x", "in"), + "xing": ("x", "ing"), + "xiong": ("x", "iong"), + "xiu": ("x", "iu"), + "xu": ("x", "v"), + "xuan": ("x", "van"), + "xue": ("x", "ve"), + "xun": ("x", "vn"), + "ya": ("y", "a"), + "yan": ("y", "an"), + "yang": ("y", "ang"), + "yao": ("y", "ao"), + "ye": ("y", "e"), + "yi": ("y", "i"), + "yin": ("y", "in"), + "ying": ("y", "ing"), + "yo": ("y", "o"), + "yong": ("y", "ong"), + "you": ("y", "ou"), + "yu": ("y", "v"), + "yuan": ("y", "van"), + "yue": ("y", "ve"), + "yun": ("y", "vn"), + "za": ("z", "a"), + "zai": ("z", "ai"), + "zan": ("z", "an"), + "zang": ("z", "ang"), + "zao": ("z", "ao"), + "ze": ("z", "e"), + "zei": ("z", "ei"), + "zen": ("z", "en"), + "zeng": ("z", "eng"), + "zha": ("zh", "a"), + "zhai": ("zh", "ai"), + "zhan": ("zh", "an"), + "zhang": ("zh", "ang"), + "zhao": ("zh", "ao"), + "zhe": ("zh", "e"), + "zhei": ("zh", "ei"), + "zhen": ("zh", "en"), + "zheng": ("zh", "eng"), + "zhi": ("zh", "i"), + "zhong": ("zh", "ong"), + "zhou": ("zh", "ou"), + "zhu": ("zh", "u"), + "zhua": ("zh", "ua"), + "zhuai": ("zh", "uai"), + "zhuan": ("zh", "uan"), + "zhuang": ("zh", "uang"), + "zhui": ("zh", "ui"), + "zhun": ("zh", "un"), + "zhuo": ("zh", "uo"), + "zi": ("z", "i"), + "zong": ("z", "ong"), + "zou": ("z", "ou"), + "zu": ("z", "u"), + "zuan": ("z", "uan"), + "zui": ("z", "ui"), + "zun": ("z", "un"), + "zuo": ("z", "uo"), +} + 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 new file mode 100644 index 0000000000000000000000000000000000000000..c436a905f95dde58dc893f3b88588d712f340e9f --- /dev/null +++ b/util.py @@ -0,0 +1,93 @@ +import os +import json +import warnings +from typing import List +import re + +import pyopenjtalk +from resource.pinyin_dict import PINYIN_DICT +from pypinyin import lazy_pinyin + +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 postprocess_phn(phns, model_name, lang): + if "Chinese" in model_name: + return phns + return [phn + "@" + lang for phn in phns] + + +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_ace(pinyin: str, zh_plan: dict) -> tuple[str]: + # load pinyin dict from local/pinyin.dict + pinyin = pinyin.lower() + 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 split_pinyin_py(pinyin: str) -> tuple[str]: + pinyin = pinyin.lower() + if pinyin in PINYIN_DICT: + return PINYIN_DICT[pinyin] + else: + return False + + +def get_tokenizer(model, lang): + if lang == "zh": + if "Chinese" in model: + print("hello") + return lambda text: split_pinyin_py(text) + else: + 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_ace(text, zh_plan) + elif lang == "jp": + return pyopenjtalk_g2p + + +def get_pinyin(texts): + pinyin_list = lazy_pinyin(texts) + text_list = [] + for text in pinyin_list: + if text[0] == "S" or text[0] == "A" or text[0] == '-': + sp_strs = re.findall(r'-|AP|SP', text) + for phn in sp_strs: + text_list.append(phn) + else: + text_list.append(text) + return text_list + + +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 +