Spaces:
Runtime error
Runtime error
Upload 3 files
Browse files- app.py +75 -14
- inference_main.py +2 -2
app.py
CHANGED
@@ -39,8 +39,10 @@ def vc_fn(sid, input_audio, vc_transform):
|
|
39 |
app = gr.Blocks()
|
40 |
with app:
|
41 |
with gr.Tabs():
|
42 |
-
with gr.TabItem("
|
43 |
gr.Markdown(value="""
|
|
|
|
|
44 |
## 这是 sovits 3.0 48kHz AI岁己“歌声”音色转换的在线demo
|
45 |
|
46 |
#### 目前模型训练状态:700000steps / 640epochs
|
@@ -49,25 +51,84 @@ with app:
|
|
49 |
|
50 |
#### 如果要在本地推理请使用 git lfs clone 本仓库,安装 requirements.txt 后运行 app.py 即可
|
51 |
|
52 |
-
#### 更建议参考仓库[README.md上的推理部分](https://github.com/innnky/so-vits-svc/tree/main#%E6%8E%A8%E7%90%86),在本地使用 inference_main.py
|
53 |
-
|
54 |
-
#### 3060Ti 8G可推理一条20(建议) - 30s的音频,过长音频可分割后批量处理
|
55 |
-
|
56 |
-
### 亿点点注意事项:
|
57 |
-
|
58 |
-
#### 输入的音频一定要是纯净的干音,不要把歌曲直接扔进来
|
59 |
|
60 |
-
####
|
61 |
-
|
62 |
-
#### 对陈述语气没多大作用,实在没干音库的话,你可以自己唱然后升十几个调慢慢试效果
|
63 |
-
|
64 |
-
#### 因为训练集来自于录播,所以音色偏本音,前期变调用于匹配音域,后期可以升一个调匹配一下岁己的歌音
|
65 |
""")
|
66 |
sid = gr.Dropdown(label="音色", choices=["岁己(本音)"], value="岁己(本音)")
|
67 |
vc_input3 = gr.Audio(label="输入音频(长度请控制在30s左右,过长可能会爆内存)")
|
68 |
vc_transform = gr.Number(label="变调(整数,可以正负,半音数量,升高八度就是12)", value=0)
|
69 |
vc_submit = gr.Button("转换", variant="primary")
|
70 |
vc_output1 = gr.Textbox(label="输出日志")
|
71 |
-
vc_output2 = gr.Audio(label="
|
72 |
vc_submit.click(vc_fn, [sid, vc_input3, vc_transform], [vc_output1, vc_output2])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
app.launch()
|
|
|
39 |
app = gr.Blocks()
|
40 |
with app:
|
41 |
with gr.Tabs():
|
42 |
+
with gr.TabItem("歌声音色转换"):
|
43 |
gr.Markdown(value="""
|
44 |
+
# 强烈建议☝️先看一遍使用说明
|
45 |
+
|
46 |
## 这是 sovits 3.0 48kHz AI岁己“歌声”音色转换的在线demo
|
47 |
|
48 |
#### 目前模型训练状态:700000steps / 640epochs
|
|
|
51 |
|
52 |
#### 如果要在本地推理请使用 git lfs clone 本仓库,安装 requirements.txt 后运行 app.py 即可
|
53 |
|
54 |
+
#### 更建议参考仓库[README.md上的推理部分](https://github.com/innnky/so-vits-svc/tree/main#%E6%8E%A8%E7%90%86),在本地使用 inference_main.py 处理,速度可以比 Hugging Face 快上十几倍
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
56 |
+
#### 本地推理会调用GPU(cuda),3060Ti 8G可推理一条20(建议) - 30s的音频,过长音频可分割后批量处理
|
|
|
|
|
|
|
|
|
57 |
""")
|
58 |
sid = gr.Dropdown(label="音色", choices=["岁己(本音)"], value="岁己(本音)")
|
59 |
vc_input3 = gr.Audio(label="输入音频(长度请控制在30s左右,过长可能会爆内存)")
|
60 |
vc_transform = gr.Number(label="变调(整数,可以正负,半音数量,升高八度就是12)", value=0)
|
61 |
vc_submit = gr.Button("转换", variant="primary")
|
62 |
vc_output1 = gr.Textbox(label="输出日志")
|
63 |
+
vc_output2 = gr.Audio(label="输出音频(最右侧三个点可以下载)")
|
64 |
vc_submit.click(vc_fn, [sid, vc_input3, vc_transform], [vc_output1, vc_output2])
|
65 |
+
with gr.TabItem("亿点点使用说明➕保姆级本地部署教程"):
|
66 |
+
gr.Markdown(value="""
|
67 |
+
# 强烈建议👇先看一遍使用说明
|
68 |
+
|
69 |
+
### 输入的音频一定要是纯净的干音,不要把歌曲直接扔进来
|
70 |
+
|
71 |
+
### 长音不太稳,音域不算宽,选曲限制比较大,推荐多试试变调
|
72 |
+
|
73 |
+
### 对陈述语气没多大作用,实在没干音库的话,你可以自己唱然后升十几个调慢慢试效果
|
74 |
+
|
75 |
+
### 因为训练集来自于录播,所以音色偏本音,前期变调用于匹配音域,后期可以升一个调匹配一下岁己的歌音
|
76 |
+
|
77 |
+
# 在本地部署并使用 inference_main.py 处理的保姆级教程:
|
78 |
+
|
79 |
+
### 0. 创建一个存放文件的目录,例如 D:\\SUI\\
|
80 |
+
|
81 |
+
### 1. 安装所需的软件
|
82 |
+
|
83 |
+
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 都行,其余可无脑下一步
|
84 |
+
|
85 |
+
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\\
|
86 |
+
|
87 |
+
### 2. 在开始菜单中运行 Anaconda Powershell Prompt 并配置环境(除了工作目录,复制粘贴回车即可)
|
88 |
+
|
89 |
+
```
|
90 |
+
# 切换工作目录
|
91 |
+
cd D:\\SUI\\
|
92 |
+
# 拉取仓库
|
93 |
+
.\\git\\bin\\git lfs clone https://huggingface.co/spaces/Miuzarte/SUI-svc-3.0
|
94 |
+
|
95 |
+
# 创建环境
|
96 |
+
conda create -n sovits python=3.8 -y
|
97 |
+
# 更换国内豆瓣源
|
98 |
+
conda config --set show_channel_urls yes
|
99 |
+
conda config --remove-key channels
|
100 |
+
conda config --add channels https://pypi.douban.com/anaconda/cloud/conda-forge/
|
101 |
+
conda config --add channels https://pypi.douban.com/anaconda/cloud/msys2/
|
102 |
+
conda config --add channels https://pypi.douban.com/anaconda/cloud/bioconda/
|
103 |
+
conda config --add channels https://pypi.douban.com/anaconda/cloud/menpo/
|
104 |
+
conda config --add channels https://pypi.douban.com/anaconda/cloud/pytorch/
|
105 |
+
pip config set global.index-url https://pypi.doubanio.com/simple
|
106 |
+
|
107 |
+
# 下面这一条给 NVIDIA 用户
|
108 |
+
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -y
|
109 |
+
# 安装其余依赖
|
110 |
+
pip install -r requirements.txt -y
|
111 |
+
```
|
112 |
+
|
113 |
+
至此环境配置完成,关闭该终端窗口(方便我写下一步)
|
114 |
+
|
115 |
+
### 3. 歌声音色转换
|
116 |
+
|
117 |
+
1. 运行 Anaconda Powershell Prompt 切换工作目录并激活环境
|
118 |
+
|
119 |
+
```
|
120 |
+
cd D:\\SUI\\
|
121 |
+
conda activate sovits
|
122 |
+
```
|
123 |
+
|
124 |
+
2. 在 SUI-svc-3.0\\raw\\ 文件夹中放入需要转换的音频(wav格式),8G显存的情况下不建议每条音频超过30s(不包括无声部分),过长会爆显存导致处理时间超级加倍甚至直接报错
|
125 |
+
|
126 |
+
3. 编辑 SUI-svc-3.0\\inference_main.py 的第23行(可参考第24行注释的格式),以及26行的变调,修改完保存时注意编码应为 UTF-8
|
127 |
+
|
128 |
+
4. 在终端中运行 inference_main.py 开始推理,音频将输出至 SUI-svc-3.0\\results\\ 文件夹
|
129 |
+
|
130 |
+
```
|
131 |
+
python inference_main.py
|
132 |
+
```
|
133 |
+
""")
|
134 |
app.launch()
|
inference_main.py
CHANGED
@@ -14,13 +14,13 @@ from inference.infer_tool import Svc
|
|
14 |
logging.getLogger('numba').setLevel(logging.WARNING)
|
15 |
chunks_dict = infer_tool.read_temp("inference/chunks_temp.json")
|
16 |
|
17 |
-
model_path = "logs/48k/
|
18 |
config_path = "configs/suiji.json"
|
19 |
svc_model = Svc(model_path, config_path)
|
20 |
infer_tool.mkdir(["raw", "results"])
|
21 |
|
22 |
# 支持多个wav文件,放在raw文件夹下
|
23 |
-
clean_names = [
|
24 |
# 例如:clean_names = ["千千阙歌_1", "千千阙歌_2", "千千阙歌_3", "千千阙歌_4", "千千阙歌_5", "千千阙歌_6", "千千阙歌_7", "千千阙歌_8"]
|
25 |
# 中文字符过多会报编码错误,分两批就好
|
26 |
trans = [0] # 音高调整,支持正负(半音)
|
|
|
14 |
logging.getLogger('numba').setLevel(logging.WARNING)
|
15 |
chunks_dict = infer_tool.read_temp("inference/chunks_temp.json")
|
16 |
|
17 |
+
model_path = "logs/48k/suiji.pth"
|
18 |
config_path = "configs/suiji.json"
|
19 |
svc_model = Svc(model_path, config_path)
|
20 |
infer_tool.mkdir(["raw", "results"])
|
21 |
|
22 |
# 支持多个wav文件,放在raw文件夹下
|
23 |
+
clean_names = []
|
24 |
# 例如:clean_names = ["千千阙歌_1", "千千阙歌_2", "千千阙歌_3", "千千阙歌_4", "千千阙歌_5", "千千阙歌_6", "千千阙歌_7", "千千阙歌_8"]
|
25 |
# 中文字符过多会报编码错误,分两批就好
|
26 |
trans = [0] # 音高调整,支持正负(半音)
|