引言:
近年来,随着人工智能技术的不断发展,语音技术已经成为了热门领域。尽管已有不少技术实现了一定程度的成功,但传统语音合成技术的问题依然存在。传统方法对于训练数据的需求量大、效果受到声音质量和口音差异的影响。因此,在语音技术领域中,一种受到广泛关注的新技术GPT-SoVITS-WebUI应运而生。GPT-SoVITS是花儿不哭大佬研发的低成本AI音色克隆软件,作为一种新兴的网络界面工具,具有自主学习、高效合成、支持多语言等特点,在语音领域中受到极高的关注和重视。它不仅能够迅速训练高质量的文本到语音模型,更能够克服声音质量和口音差异的影响,在语音合成中发挥既有的功效。同时,GPT-SoVITS-WebUI具有零次学习和少量次学习的TTS功能,可以实现自然语言转换,进一步提高了语音合成的性能。这一特性可为语音技术的开发者和爱好者带来更多的机会,实现多样化的语音应用,创造更加便捷的用户体验。综上所述,GPT-SoVITS-WebUI是一种非常先进的语音技术,具有广泛的应用前景和潜力。创作不易,要是对您有用请加个关注或点个赞,非常感谢了!
开源地址:
https://github.com/RVC-Boss/GPT-SoVITS
以下依据官方文档整理而得:
特点:
-
零样本 TTS:输入 5 秒的人声样本,体验即时文本到语音转换。
-
小镜头 TTS:只需 1 分钟的训练数据即可微调模型,以提高语音相似度和真实感。
-
跨语言支持:使用与训练数据集不同的语言进行推理,目前支持英语、日语和中文。
-
WebUI工具:集成工具包括语音伴奏分离、自动训练集分割、中文ASR和文本标注,帮助初学者创建训练数据集和GPT/SoVITS模型。
-
详细说明:教程中文版 User guide (EN)
安装
对于中国地区的用户,您可以点击此处使用AutoDL Cloud Docker在线体验全部功能。
经测试的环境
- Python 3.9、PyTorch 2.0.1、CUDA 11
- Python 3.10.13、PyTorch 2.1.2、CUDA 12.3
- Python 3.9、PyTorch 2.3.0.dev20240122、macOS 14.3(Apple 芯片)
注意:numba==0.56.4 需要 py<3.11
window系统
如果你是 Windows 用户(使用 win>=10 测试),你可以直接下载预打包的发行版,双击 go-webui.bat 启动 GPT-SoVITS-WebUI。
Linux操作系统
conda create -n GPTSoVits python=3.9conda activate GPTSoVitsbash install.sh
macOS操作系统
只有满足以下条件的 Mac 才能训练模型:
- 搭载 Apple 芯片的 Mac 电脑
- macOS 12.3 或更高版本
- 通过运行
xcode-select --install
所有 Mac 都可以使用 CPU 进行推理,这已被证明优于 GPU 推理。
首先,通过运行 或 确保已安装 FFmpeg,然后使用以下命令进行安装:brew install ffmpeg
conda install ffmpeg
conda create -n GPTSoVits python=3.9conda activate GPTSoVitspip3 install --pre torch torchaudio --index-url https://download.pytorch.org/whl/nightly/cpupip install -r requirements.txt
注意:仅当安装了 PyTorch Nightly 时,训练模型才有效。
手动安装
安装依赖项
pip install -r requirements.txt
安装 FFmpeg
Conda 用户
conda install ffmpeg
Ubuntu/Debian 用户
sudo apt install ffmpegsudo apt install libsox-devconda install -c conda-forge 'ffmpeg<7'
Windows 用户
下载并放置ffmpeg.exe和ffprobe.exe GPT-SoVITS 根目录。
使用 Docker
docker-compose.yaml 配置
- 关于镜像标签:由于代码库更新速度快,镜像打包测试过程较慢,请在 Docker Hub 上查看当前打包的最新镜像,并根据自己的情况进行选择,或者根据自己的需求使用 Dockerfile 在本地构建。
- 环境变量:
- is_half:控制半精度/双精度。如果在“SSL 提取”步骤中未正确生成目录 4-cnhubert/5-wav32k 下的内容,则通常是原因。根据您的实际情况调整为“真”或“假”。
- 卷配置,容器内应用的根目录设置为 /workspace。默认的 docker-compose.yaml 列出了一些上传/下载内容的实际示例。
- shm_size:Windows 上 Docker Desktop 默认可用内存太小,可能导致操作异常。根据自己的情况进行调整。
- 在部署部分,GPU相关设置应根据您的系统和实际情况谨慎调整。
使用 docker compose 运行
docker compose -f "docker-compose.yaml" up -d
使用 docker 命令运行
如上所述,根据您的实际情况修改相应的参数,然后运行以下命令:
docker run --rm -it --gpus=all --env=is_half=False --volume=G:/GPT-SoVITS-DockerTest/output:/workspace/output --v
预训练模型
从 GPT-SoVITS 模型下载预训练模型并将它们放在 中。GPT_SoVITS/pretrained_models
对于UVR5(人声/伴奏分离和混响去除),请从UVR5 Weights下载模型并将其放置在 .tools/uvr5/uvr5_weights
中国地区的用户可以通过输入下面的链接并点击“下载副本”来下载这两个模型
-
GPT-SoVITS 模型
-
UVR5砝码
对于中文 ASR(另外),请从 Damo ASR 模型、Damo VAD 模型和 Damo Punc 模型下载模型,并将其放在 中。tools/damo_asr/models
数据集格式
TTS 注解 .list 文件格式:
<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>vocal_path|speaker_name|language|text</code></span></span></span></span>
语言词典:
- 'zh': 中文
- 'ja': 日语
- 'en': English
例:
<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>D:/GPT-SoVITS/xxx/xxx.wav|xxx|en|I like playing Genshin.</code></span></span></span></span>
待办事项列表
-
高优先级:
- 日语和英语本地化。
- 用户指南。
- 日语和英语数据集微调训练。
-
特征:
- 零样本语音转换(5s)/小样本语音转换(1min)。
- TTS语速控制。
- 增强的 TTS 情绪控制。
- 尝试将 SoVITS 令牌输入更改为词汇的概率分布。
- 改进英文和日文文本前端。
- 开发小型和大型 TTS 模型。
- Colab 脚本。
- 尝试扩展训练数据集(2k 小时 -> 10k 小时)。
- 更好的 Sovits基本型号(增强的音频质量)
- 模型组合
(可选)如果需要,这里将提供命令行操作模式
使用命令行打开 UVR5 的 WebUI
<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>python tools/uvr5/webui.py "<infer_device>" <is_half> <webui_port_uvr5></code></span></span></span></span>
如果打不开浏览器,按照下面的格式进行UVR处理,这是使用mdxnet进行音频处理
<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>python mdxnet.py --model --input_root --output_vocal --output_ins --agg_level --format --device --is_half_precision </code></span></span></span></span>
这是使用命令行完成数据集的音频分割的方式
<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>python audio_slicer.py / --input_path "<path_to_original_audio_file_or_directory>" / --output_root "<directory_where_subdivided_audio_clips_will_be_saved>" / --threshold <volume_threshold> / --min_length <minimum_duration_of_each_subclip> / --min_interval <shortest_time_gap_between_adjacent_subclips> --hop_size <step_size_for_computing_volume_curve></code></span></span></span></span>
这是使用命令行完成数据集 ASR 处理的方式(仅限中文)
<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>python tools/damo_asr/cmd-asr.py "<Path to the directory containing input audio files>"</code></span></span></span></span>
ASR处理通过Faster_Whisper进行(ASR标记,中文除外)
(没有进度条,GPU性能可能会导致时间延迟)
<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>python ./tools/damo_asr/WhisperASR.py -i <input> -o <output> -f <file_name.list> -l <language></code></span></span></span></span>
已启用自定义列表保存路径