Spaces:
Runtime error
Runtime error
import io | |
import gradio as gr | |
import librosa | |
import numpy as np | |
import soundfile | |
import torch | |
from inference.infer_tool import Svc | |
import logging | |
logging.getLogger('numba').setLevel(logging.WARNING) | |
model_name = "logs/48k/G_1M111000_sing.pth" | |
config_name = "configs/config.json" | |
svc_model = Svc(model_name, config_name) | |
def vc_fn(input_audio, vc_transform): | |
if input_audio is None: | |
return None | |
sampling_rate, audio = input_audio | |
# print(audio.shape,sampling_rate) | |
duration = audio.shape[0] / sampling_rate | |
audio = (audio / np.iinfo(audio.dtype).max).astype(np.float32) | |
if len(audio.shape) > 1: | |
audio = librosa.to_mono(audio.transpose(1, 0)) | |
if sampling_rate != 16000: | |
audio = librosa.resample(audio, orig_sr=sampling_rate, target_sr=16000) | |
print(audio.shape) | |
out_wav_path = io.BytesIO() | |
soundfile.write(out_wav_path, audio, 16000, format="wav") | |
out_wav_path.seek(0) | |
out_audio, out_sr = svc_model.infer("suiji", vc_transform, out_wav_path) | |
_audio = out_audio.cpu().numpy() | |
return (48000, _audio) | |
app = gr.Blocks() | |
with app: | |
with gr.Tabs(): | |
with gr.TabItem("歌声音色转换"): | |
gr.Markdown(value=""" | |
# 强烈建议☝️先看一遍使用说明 | |
## 这是 sovits 3.0 48kHz AI岁己歌声音色转换的在线demo | |
### 目前模型训练状态:1000000steps底模 + 111000steps | |
### 推理出来有概率会给吸气音上电,需要后期小修一下,大概可能也许是因为炼太久糊了 | |
### 仓库内模型所用于训练的数据: | |
| G_1000000.pth | G_1M111000_sing.pth(现任) | G_1M100000_sing.pth(待产) | G_1M100000_sing1.pth(待产) | | |
| :----: | :----: | :----: | :----: | | |
| 12月录播(除电台)、出道至今22条歌投、10条歌切、圣诞音声(27.5小时) | G_1000000.pth作为底模_2022年所有唱歌投稿、唱歌切片、圣诞音声(3.9小时) | G_1000000.pth作为底模_(使用效果更好的UVR5模型去除BGM)出道至今所有唱歌投稿、唱歌切片、圣诞音声 | 先用1月录播(除电台)训练一个底模,再用出道至今所有唱歌投稿、唱歌切片、圣诞音声进行训练 | | |
### 仓库内G.pth、D.pth都有,欢迎作为底模用于进一步训练,如果要训练自己的数据请访问:[项目Github仓库](https://github.com/innnky/so-vits-svc/tree/main)、[教程《svc相关》](https://www.yuque.com/jiuwei-nui3d/qng6eg)(想进里面那个群求助的话建议先把QQ资料性别改成女然后头像该换的换) | |
### 建议参考上方“使用说明”下的教程,在本地使用 inference_main.py 处理,我都写成这样了再小白应该都能搞定(不怕麻烦的话) | |
### 本地推理可调用GPU(NVIDIA),3060Ti 8G可推理一条20(建议) - 30s的音频,过长音频可分割后批量处理,就算用CPU推理也比 Hugging Face 快不少 | |
### 有空可能会折腾一下导出onnx,抛弃这堆较为臃肿的Python依赖 | |
""") | |
vc_input3 = gr.Audio(label="输入音频(长度请控制在30s左右,过长可能会爆内存)") | |
vc_transform = gr.Number(label="变调(整数,可以正负,半音数量,升高八度就是12)", value=0) | |
vc_submit = gr.Button("转换", variant="primary") | |
vc_output2 = gr.Audio(label="输出音频(最右侧三个点可以下载)") | |
vc_submit.click(vc_fn, [vc_input3, vc_transform], [vc_output2]) | |
with gr.TabItem("亿点点使用说明➕保姆级本地部署教程"): | |
gr.Markdown(value=""" | |
# 强烈建议👇先看一遍使用说明 | |
### 输入的音频一定要是纯净的干音,不要把歌曲直接扔进来 | |
### 混响和和声也不能有,UVR分离出人声之后需要注意一下 | |
### 对陈述语气没多大作用,实在没干音库的话,你可以自己唱然后升十几个调慢慢试效果 | |
### 数据集几乎全是杂谈的G_1000000.pth:长音不稳,音域不宽,选曲限制较大,可以多试试变调,没什么必要去用 | |
### 现任的G_1M111000_sing.pth:有概率会给吸气音上电,需要后期小修一下 | |
# 在本地部署并使用 inference_main.py 处理的保姆级教程: | |
### 0. 创建一个存放文件的目录,例如 D:\\SUI\\ | |
### 1. 安装所需的软件 | |
1. [miniconda-Python3.8](https://docs.conda.io/en/latest/miniconda.html#windows-installers)(未测试其他Python版本)[点这里可以直接下载](https://repo.anaconda.com/miniconda/Miniconda3-py38_22.11.1-1-Windows-x86_64.exe),Just Me 与 All Users 都行,其余可无脑下一步 | |
2. [git](https://git-scm.com/download/win)(建议使用便携版)[点这里可以直接下载(便携版v2.39.0.2)](https://github.com/git-for-windows/git/releases/download/v2.39.0.windows.2/PortableGit-2.39.0.2-64-bit.7z.exe),路径填 D:\\SUI\\git\\ | |
### 2. 在开始菜单中运行 Anaconda Powershell Prompt 并配置环境(除了工作目录,复制粘贴回车即可) | |
``` | |
# 切换工作目录 | |
cd D:\\SUI\\ | |
# 拉取仓库 | |
.\\git\\bin\\git lfs clone https://huggingface.co/spaces/Miuzarte/SUI-svc-3.0 | |
# 切换工作目录至仓库内 | |
cd D:\\SUI\\SUI-svc-3.0\\ | |
# 创建并激活环境(如果conda报SSL相关错误请关闭科学上网) | |
conda create -n sovits python=3.8 -y | |
conda activate sovits | |
# 更换国内清华源 | |
conda config --set show_channel_urls yes | |
conda config --remove-key channels | |
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ | |
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/ | |
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/ | |
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ | |
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ | |
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ | |
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ | |
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple | |
``` | |
``` | |
# CPU(x86)推理要安装的依赖:(如果pip报SSL相关错误请关闭科学上网) | |
pip install -r requirements_cpu.txt | |
``` | |
``` | |
# GPU(NVIDIA)推理要安装的依赖:(如果pip报SSL相关错误请关闭科学上网) | |
pip install -r requirements_gpu.txt | |
pip install https://download.pytorch.org/whl/cu113/torch-1.12.1%2Bcu113-cp38-cp38-win_amd64.whl | |
pip install https://download.pytorch.org/whl/cu113/torchvision-0.13.1%2Bcu113-cp38-cp38-win_amd64.whl | |
pip install https://download.pytorch.org/whl/cu113/torchaudio-0.12.1%2Bcu113-cp38-cp38-win_amd64.whl | |
``` | |
至此环境配置完成,关闭该终端窗口(方便我写下一步) | |
### 3. 歌声音色转换 | |
1. 运行 Anaconda Powershell Prompt 切换工作目录并激活环境 | |
``` | |
cd D:\\SUI\\SUI-svc-3.0\\ | |
conda activate sovits | |
``` | |
2. 如果想要像本demo一样用网页的GUI处理,这条之后的可以跳过了 | |
``` | |
python app.py | |
# 运行完成后日志会输出应用所在的端口,默认7860(不排除该端口被占用后程序选择了其他端口),则浏览器访问 127.0.0.1:7860 | |
``` | |
3. 在 SUI-svc-3.0\\raw\\ 文件夹中放入需要转换的音频(wav格式),8G显存的情况下建议每条音频的长度控制在20(建议) - 30s(不包括无声部分),过长会爆显存导致处理时间超级加倍甚至直接报错 | |
4. 编辑 SUI-svc-3.0\\inference_main.py 的第23行(可参考第24行注释的格式),以及26行的变调,修改完保存时注意编码应为 UTF-8 | |
5. 在终端中运行 inference_main.py 开始推理,音频将输出至 SUI-svc-3.0\\results\\ 文件夹 | |
``` | |
python inference_main.py | |
``` | |
""") | |
app.launch() |