文章目录
一、关于 GPT-SoVITS
功能:
- 零样本文本到语音(TTS):输入5秒人声样本,体验即时语音合成转换。
- 少样本 TTS:仅用1分钟的训练数据微调模型,以提高语音相似性和真实感。
- 跨语言支持:不同于训练集的语言推理,目前支持英语、日语和中文。
- WebUI 工具:集成工具包括语音伴奏分离、自动训练集分割、中文ASR和文本标注,帮助初学者创建训练数据集和GPT/SoVITS模型。
演示视频 :https://www.bilibili.com/video/BV12g4y1m7Uw
未见过的说话者 few-shot 微调演示:
二、安装
中国地区的用户可以点击这里 使用AutoDL Cloud Docker在线体验全部功能。
测试通过的环境
- Python 3.9,PyTorch2.0.1,CUDA 11
- Python3.10.13,PyTorch2.1.2,CUDA 12.3
- Python 3.9, Pytorch2.2.2,macOS14.4.1(苹果芯片)
- Python 3.9,PyTorch 2.2.2,CPU 设备
注: numba==0.56.4 需要 python<3.11
1、Windows
如果您是Windows用户(使用win>=10测试),您可以下载集成的包并双击go-webui. bat以启动GPT-SoVITS-WebUI。
中国地区的用户可以通过单击链接下载该软件包,然后选择“下载副本”(如果下载时遇到错误,请退出。)
2、Linux
conda create -n GPTSoVits python=3.9 conda activate GPTSoVits bash install.sh
3、macOS
注:在 Mac 上使用 GPU 训练的模型效果显著低于其他设备训练的模型,所以我们暂时使用 CPU 进行训练。
xcode-select --install
brew install ffmpeg
- 完成上述步骤后,运行以下的命令来安装本项目:
conda create -n GPTSoVits python=3.9 conda activate GPTSoVits pip install -r requirements.txt
4、手动安装
4.1 安装依赖
pip install -r requirements.txt
4.2 安装 FFmpeg
Conda 用户
conda install ffmpeg
Ubuntu/Debian 用户
sudo apt install ffmpeg sudo apt install libsox-dev conda install -c conda-forge 'ffmpeg<7'
Windows 用户
下载并将ffmpeg. exe和ffprobe.exe放在GPT-SoVITS根目录中。
MacOS 用户
brew install ffmpeg
5、在 Docker 中使用
5.1 docker-compose.yaml 设置
- 关于镜像标签:由于代码库中的快速更新以及打包和测试镜像的缓慢过程,请查看Docker Hub以获取当前打包的最新镜像,并根据您的情况选择,或者根据您自己的需要使用Dockerfile在本地构建。
- 环境变量:
is_half
:控制半精度/双精度。如果在“SSL提取”步骤中没有正确生成4-cnhubert/5-wav32k
目录下的内容,这通常是原因。根据您的实际情况调整为True或False。
- 卷配置,容器内的应用程序根目录设置为
/workspace
. 默认docker-comp.yaml
列出了一些上传/下载内容的实际示例。 shm_size
:Windows上Docker Desktop 的默认可用内存太小,会导致操作异常。根据自己的情况进行调整。- 在部署部分,GPU相关设置应根据您的系统和实际情况谨慎调整。
5.2 通过 docker compose 运行
docker compose -f "docker-compose.yaml" up -d
5.3 通过 docker 命令运行
同上,根据您自己的实际情况修改对应的参数,然后运行如下命令:
docker run --rm -it --gpus=all --env=is_half=False --volume=G:\GPT-SoVITS-DockerTest\output:/workspace/output --volume=G:\GPT-SoVITS-DockerTest\logs:/workspace/logs --volume=G:\GPT-SoVITS-DockerTest\SoVITS_weights:/workspace/SoVITS_weights --workdir=/workspace -p 9880:9880 -p 9871:9871 -p 9872:9872 -p 9873:9873 -p 9874:9874 --shm-size="16G" -d breakstring/gpt-sovits:xxxxx
三、预训练模型
从GPT-SoVITS模型下载预训练模型并将其放入GPT_SoVITS/pretrained_models
。
对于UVR5(人声/伴奏分离和混响消除,另外),从 UVR5权重下载模型,并将它们放在tools/uvr5/uvr5_weights
。
中国地区的用户可以通过进入下面的链接并单击“下载副本”来下载这两种型号(如果在下载时遇到错误,请退出。)
对于中文ASR(另外),从Damo ASR模型、Damo VAD模型和Damo Punc模型下载模型,并将它们放置在tools/asr/models
中。
对于英语或日语ASR(另外),从 Faster Whisper Large V3 下载模型并将它们放置在tools/asr/models
。此外,其他模型可能具有类似的效果,磁盘占用空间较小。
中国地区的用户可以通过输入以下链接下载此模型
- Faster Whisper Large V3 (单击下载副本,如果下载时遇到错误,请注销。)
- Faster Whisper Large V3 (HuggingFace镜像网站)
四、数据集格式
文本到语音(TTS)注释 .list
文件格式:
vocal_path|speaker_name|language|text
语言字典:
- ‘zh’:中文
- ‘ja’:日语
- ‘en’:英语
- ‘ko’: 韩语
示例:
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.
五、(附加)命令行运行方式
使用命令行打开 UVR5 的 WebUI
python tools/uvr5/webui.py "<infer_device>" <is_half> <webui_port_uvr5>
如果打不开浏览器,请按照下面的格式进行UVR处理,这是使用 mdxnet 进行音频处理的方式
python mdxnet.py --model --input_root --output_vocal --output_ins --agg_level --format --device --is_half_precision
这是使用命令行完成数据集的音频切分的方式
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>
这是使用命令行完成数据集ASR处理的方式(仅限中文)
python tools/asr/funasr_asr.py -i <input> -o <output>
通过 Faster_Whisper 进行 ASR处理(除中文之外的ASR标记)
(没有进度条,GPU性能可能会导致时间延迟)
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language> -p <precision>
启用自定义列表保存路径
六、致谢
特别感谢以下项目和贡献者:
理论研究
预训练模型
推理用文本前端
WebUI 工具
2024-08-03(六)