From 9f8bd84c5eacef592794555022e7c1b365c823e6 Mon Sep 17 00:00:00 2001 From: Mangio621 Date: Fri, 16 Jun 2023 22:48:38 +1000 Subject: [PATCH] Working on inference presets --- README.md | 6 -- infer-web.py | 142 +++++++++++++++++++++++++++++++++++++++++ inference-presets.json | 20 ++++++ 3 files changed, 162 insertions(+), 6 deletions(-) create mode 100644 inference-presets.json diff --git a/README.md b/README.md index a34ea76..9ec3b7f 100644 --- a/README.md +++ b/README.md @@ -37,13 +37,7 @@ Special thanks to discord user @kalomaze#2983 for creating a temporary colab not > The original RVC [Demo Video](https://www.bilibili.com/video/BV1pm4y1z7Gm/) here! -<<<<<<< HEAD > Realtime Voice Conversion Software using RVC : [w-okada/voice-changer](https://github.com/w-okada/voice-changer) -======= -:fire: 使用了RVC变声器训练的人声转木吉他模型在线demo:fire: :https://huggingface.co/spaces/lj1995/vocal2guitar - -:fire: RVC人声转吉他效果展示视频:fire: :https://www.bilibili.com/video/BV19W4y1D7tT/ ->>>>>>> upstream/main > The dataset for the pre-training model uses nearly 50 hours of high quality VCTK open source dataset. diff --git a/infer-web.py b/infer-web.py index aa336c9..ef35f4d 100644 --- a/infer-web.py +++ b/infer-web.py @@ -6,6 +6,7 @@ from time import sleep from subprocess import Popen import faiss from random import shuffle +import json now_dir = os.getcwd() sys.path.append(now_dir) @@ -1476,6 +1477,16 @@ if(config.is_cli): #region RVC WebUI App +def get_presets(): + data = None + with open('../inference-presets.json', 'r') as file: + data = json.load(file) + preset_names = [] + for preset in data['presets']: + preset_names.append(preset['name']) + + return preset_names + with gr.Blocks(theme=gr.themes.Soft()) as app: gr.HTML("

The Mangio-RVC-Fork 💻

") gr.Markdown( @@ -1485,6 +1496,15 @@ with gr.Blocks(theme=gr.themes.Soft()) as app: ) with gr.Tabs(): with gr.TabItem(i18n("模型推理")): + # Inference Preset Row + # with gr.Row(): + # mangio_preset = gr.Dropdown(label="Inference Preset", choices=sorted(get_presets())) + # mangio_preset_name_save = gr.Textbox( + # label="Your preset name" + # ) + # mangio_preset_save_btn = gr.Button('Save Preset', variant="primary") + + # Other RVC stuff with gr.Row(): sid0 = gr.Dropdown(label=i18n("推理音色"), choices=sorted(names)) refresh_button = gr.Button(i18n("刷新音色列表和索引路径"), variant="primary") @@ -2182,6 +2202,128 @@ with gr.Blocks(theme=gr.themes.Soft()) as app: except: gr.Markdown(traceback.format_exc()) + + #region Mangio Preset Handler Region + def save_preset( + preset_name, + sid0, + vc_transform, + input_audio, + f0method, + crepe_hop_length, + filter_radius, + file_index1, + file_index2, + index_rate, + resample_sr, + rms_mix_rate, + protect, + f0_file + ): + data = None + with open('../inference-presets.json', 'r') as file: + data = json.load(file) + preset_json = { + 'name': preset_name, + 'model': sid0, + 'transpose': vc_transform, + 'audio_file': input_audio, + 'f0_method': f0method, + 'crepe_hop_length': crepe_hop_length, + 'median_filtering': filter_radius, + 'feature_path': file_index1, + 'auto_feature_path': file_index2, + 'search_feature_ratio': index_rate, + 'resample': resample_sr, + 'volume_envelope': rms_mix_rate, + 'protect_voiceless': protect, + 'f0_file_path': f0_file + } + data['presets'].append(preset_json) + with open('../inference-presets.json', 'w') as file: + json.dump(data, file) + file.flush() + print("Saved Preset %s into inference-presets.json!" % preset_name) + + + def on_preset_changed(preset_name): + print("Changed Preset to %s!" % preset_name) + data = None + with open('../inference-presets.json', 'r') as file: + data = json.load(file) + + print("Searching for " + preset_name) + returning_preset = None + for preset in data['presets']: + if(preset['name'] == preset_name): + print("Found a preset") + returning_preset = preset + # return all new input values + return ( + # returning_preset['model'], + # returning_preset['transpose'], + # returning_preset['audio_file'], + # returning_preset['f0_method'], + # returning_preset['crepe_hop_length'], + # returning_preset['median_filtering'], + # returning_preset['feature_path'], + # returning_preset['auto_feature_path'], + # returning_preset['search_feature_ratio'], + # returning_preset['resample'], + # returning_preset['volume_envelope'], + # returning_preset['protect_voiceless'], + # returning_preset['f0_file_path'] + ) + + # Preset State Changes + + # This click calls save_preset that saves the preset into inference-presets.json with the preset name + # mangio_preset_save_btn.click( + # fn=save_preset, + # inputs=[ + # mangio_preset_name_save, + # sid0, + # vc_transform0, + # input_audio0, + # f0method0, + # crepe_hop_length, + # filter_radius0, + # file_index1, + # file_index2, + # index_rate1, + # resample_sr0, + # rms_mix_rate0, + # protect0, + # f0_file + # ], + # outputs=[] + # ) + + # mangio_preset.change( + # on_preset_changed, + # inputs=[ + # # Pass inputs here + # mangio_preset + # ], + # outputs=[ + # # Pass Outputs here. These refer to the gradio elements that we want to directly change + # # sid0, + # # vc_transform0, + # # input_audio0, + # # f0method0, + # # crepe_hop_length, + # # filter_radius0, + # # file_index1, + # # file_index2, + # # index_rate1, + # # resample_sr0, + # # rms_mix_rate0, + # # protect0, + # # f0_file + # ] + # ) + #endregion + # with gr.TabItem(i18n("招募音高曲线前端编辑器")): # gr.Markdown(value=i18n("加开发群联系我xxxxx")) # with gr.TabItem(i18n("点击查看交流、问题反馈群号")): diff --git a/inference-presets.json b/inference-presets.json new file mode 100644 index 0000000..55ddab7 --- /dev/null +++ b/inference-presets.json @@ -0,0 +1,20 @@ +{ + "presets": [ + { + "name": "Default Preset", + "model": "", + "transpose": 0, + "audio_file": "", + "f0_method": "pm", + "crepe_hop_length": 160, + "median_filtering": 3, + "feature_path": "", + "auto_feature_path": "", + "search_feature_ratio": 0.88, + "resample": 0, + "volume_envelope": 1, + "protect_voiceless": 0.33, + "f0_file_path": "" + } + ] +} \ No newline at end of file