GPT-SoVITS - few shot 声音克隆

avatar
作者
猴君
阅读量:0

文章目录


一、关于 GPT-SoVITS


功能:

  1. 零样本文本到语音(TTS):输入5秒人声样本,体验即时语音合成转换。
  2. 少样本 TTS:仅用1分钟的训练数据微调模型,以提高语音相似性和真实感。
  3. 跨语言支持:不同于训练集的语言推理,目前支持英语、日语和中文。
  4. 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 进行训练。

  1. xcode-select --install
  2. brew install ffmpeg
  3. 完成上述步骤后,运行以下的命令来安装本项目:
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. exeffprobe.exe放在GPT-SoVITS根目录中。


MacOS 用户
brew install ffmpeg 

5、在 Docker 中使用


5.1 docker-compose.yaml 设置
  1. 关于镜像标签:由于代码库中的快速更新以及打包和测试镜像的缓慢过程,请查看Docker Hub以获取当前打包的最新镜像,并根据您的情况选择,或者根据您自己的需要使用Dockerfile在本地构建。
  2. 环境变量:
  • is_half:控制半精度/双精度。如果在“SSL提取”步骤中没有正确生成 4-cnhubert/5-wav32k 目录下的内容,这通常是原因。根据您的实际情况调整为True或False。
  1. 卷配置,容器内的应用程序根目录设置为 /workspace. 默认 docker-comp.yaml列出了一些上传/下载内容的实际示例。
  2. shm_size :Windows上Docker Desktop 的默认可用内存太小,会导致操作异常。根据自己的情况进行调整。
  3. 在部署部分,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。此外,其他模型可能具有类似的效果,磁盘占用空间较小。

中国地区的用户可以通过输入以下链接下载此模型


四、数据集格式

文本到语音(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(六)

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!