123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- import os
- # import sys
- import gradio as gr
- from tts_webui.history_tab.open_folder import open_folder
- from tts_webui.rvc_tab.download_uvr5 import download_uvr5
- # from tts_webui.rvc_tab.hide_argv import hide_argv
- # import rvc_pkg
- # rvc_dir = os.path.dirname(rvc_pkg.__file__)
- # sys.path.append(rvc_dir)
- # with hide_argv():
- # from rvc_pkg.infer.modules.uvr5.modules import uvr
- # sys.path.remove(rvc_dir)
- # os.environ["TEMP"] = os.path.join(now_dir, "temp", "rvc")
- # os.makedirs(os.environ["TEMP"], exist_ok=True)
- from rvc.modules.uvr5.modules import UVR
- from pathlib import Path
- now_dir = os.getcwd()
- temp_dir = Path(os.path.join(now_dir, "temp", "rvc"))
- UVR5_MODEL_LIST = [
- "HP2_all_vocals.pth",
- "HP3_all_vocals.pth",
- "HP5_only_main_vocal.pth",
- "VR-DeEchoAggressive.pth",
- "VR-DeEchoDeReverb.pth",
- "VR-DeEchoNormal.pth",
- # "onnx_dereverb_By_FoxJoy/vocals.onnx",
- ]
- uvr = None
- # fix issue with / in ENV \\ from os.path.join for VR-* models
- # os.path.join(os.getenv("weight_uvr5_root"), model_name),
- def uvr_wrapper(model_name, agg, input_file):
- download_uvr5(model_name)
- model_name = model_name.replace(".pth", "")
- global uvr
- if uvr is None:
- uvr = UVR()
- results = uvr.uvr_wrapper(
- audio_path=Path(input_file),
- agg=agg,
- model_name=model_name,
- temp_dir=temp_dir,
- )
- wav_instrument, wav_vocals, sample_rate, _agg = results[0]
- return (sample_rate, wav_instrument), (sample_rate, wav_vocals)
- def uvr5_ui():
- with gr.Column():
- input_file = gr.Audio(label="Input Audio", type="filepath")
- with gr.Column():
- with gr.Row():
- model_radio = gr.Radio(
- label="Model",
- choices=UVR5_MODEL_LIST, # type: ignore
- value=UVR5_MODEL_LIST[0],
- )
- agg = gr.Slider(
- minimum=0,
- maximum=20,
- step=1,
- label="future-proofing",
- value=10,
- )
- with gr.Row():
- convert_button = gr.Button("Convert", variant="primary")
- open_folder_button = gr.Button(value="Open outputs folder", variant="secondary")
- open_folder_button.click(lambda: open_folder("outputs-rvc"))
- output_instrument = gr.Audio(label="Instrument")
- output_vocals = gr.Audio(label="Vocals")
- convert_button.click(
- uvr_wrapper,
- [model_radio, agg, input_file],
- [output_instrument, output_vocals],
- api_name="uvr_convert",
- )
- def uvr5_tab():
- # disabled for now
- return
- # with gr.TabItem("UVR5 (initial demo version)"):
- # uvr5_ui()
- if __name__ == "__main__":
- with gr.Blocks(
- title="TTS Generation WebUI (Bark, MusicGen + AudioGen, Tortoise, RVC)",
- ) as demo:
- uvr5_tab()
- demo.launch(
- server_port=7866,
- enable_queue=True,
- )
|