CoolFace
Apppublic

wonkitty/apple_oh

sourceHugging Faceupdated 3y agoView on Hugging Face
0likes
app.py149 linesDownload Raw Back to tools
1import logging2import os3 4# os.system("wget -P cvec/ https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/hubert_base.pt")5import gradio as gr6from dotenv import load_dotenv7 8from configs.config import Config9from i18n import I18nAuto10from infer.modules.vc.pipeline import Pipeline11VC = Pipeline12 13logging.getLogger("numba").setLevel(logging.WARNING)14logging.getLogger("markdown_it").setLevel(logging.WARNING)15logging.getLogger("urllib3").setLevel(logging.WARNING)16logging.getLogger("matplotlib").setLevel(logging.WARNING)17logger = logging.getLogger(__name__)18 19i18n = I18nAuto()20#(i18n)21 22load_dotenv()23config = Config()24vc = VC(config)25 26weight_root = os.getenv("weight_root")27weight_uvr5_root = os.getenv("weight_uvr5_root")28index_root = os.getenv("index_root")29names = []30hubert_model = None31for name in os.listdir(weight_root):32    if name.endswith(".pth"):33        names.append(name)34index_paths = []35for root, dirs, files in os.walk(index_root, topdown=False):36    for name in files:37        if name.endswith(".index") and "trained" not in name:38            index_paths.append("%s/%s" % (root, name))39 40 41app = gr.Blocks()42with app:43    with gr.Tabs():44        with gr.TabItem("在线demo"):45            gr.Markdown(46                value="""47                RVC 在线demo48                """49            )50            sid = gr.Dropdown(label=i18n("推理音色"), choices=sorted(names))51            with gr.Column():52                spk_item = gr.Slider(53                    minimum=0,54                    maximum=2333,55                    step=1,56                    label=i18n("请选择说话人id"),57                    value=0,58                    visible=False,59                    interactive=True,60                )61            sid.change(fn=vc.get_vc, inputs=[sid], outputs=[spk_item])62            gr.Markdown(63                value=i18n("男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ")64            )65            vc_input3 = gr.Audio(label="上传音频(长度小于90秒)")66            vc_transform0 = gr.Number(label=i18n("变调(整数, 半音数量, 升八度12降八度-12)"), value=0)67            f0method0 = gr.Radio(68                label=i18n("选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU"),69                choices=["pm", "harvest", "crepe", "rmvpe"],70                value="pm",71                interactive=True,72            )73            filter_radius0 = gr.Slider(74                minimum=0,75                maximum=7,76                label=i18n(">=3则使用对harvest音高识别的结果使用中值滤波,数值为滤波半径,使用可以削弱哑音"),77                value=3,78                step=1,79                interactive=True,80            )81            with gr.Column():82                file_index1 = gr.Textbox(83                    label=i18n("特征检索库文件路径,为空则使用下拉的选择结果"),84                    value="",85                    interactive=False,86                    visible=False,87                )88            file_index2 = gr.Dropdown(89                label=i18n("自动检测index路径,下拉式选择(dropdown)"),90                choices=sorted(index_paths),91                interactive=True,92            )93            index_rate1 = gr.Slider(94                minimum=0,95                maximum=1,96                label=i18n("检索特征占比"),97                value=0.88,98                interactive=True,99            )100            resample_sr0 = gr.Slider(101                minimum=0,102                maximum=48000,103                label=i18n("后处理重采样至最终采样率,0为不进行重采样"),104                value=0,105                step=1,106                interactive=True,107            )108            rms_mix_rate0 = gr.Slider(109                minimum=0,110                maximum=1,111                label=i18n("输入源音量包络替换输出音量包络融合比例,越靠近1越使用输出包络"),112                value=1,113                interactive=True,114            )115            protect0 = gr.Slider(116                minimum=0,117                maximum=0.5,118                label=i18n("保护清辅音和呼吸声,防止电音撕裂等artifact,拉满0.5不开启,调低加大保护力度但可能降低索引效果"),119                value=0.33,120                step=0.01,121                interactive=True,122            )123            f0_file = gr.File(label=i18n("F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调"))124            but0 = gr.Button(i18n("转换"), variant="primary")125            vc_output1 = gr.Textbox(label=i18n("输出信息"))126            vc_output2 = gr.Audio(label=i18n("输出音频(右下角三个点,点了可以下载)"))127            but0.click(128                vc.vc_single,129                [130                    spk_item,131                    vc_input3,132                    vc_transform0,133                    f0_file,134                    f0method0,135                    file_index1,136                    file_index2,137                    # file_big_npy1,138                    index_rate1,139                    filter_radius0,140                    resample_sr0,141                    rms_mix_rate0,142                    protect0,143                ],144                [vc_output1, vc_output2],145            )146 147 148app.launch()149