GPT-SoVITS笔记

讲解链接
源码地址:https://github.com/RVC-Boss/GPT-SoVITS
文档

一、GPT-SoVITS特色

1)GPT-SoVITS项目特点

1、Zero-shot TTS: Input a 5-second vocal sample and experience instant text-to-speech conversion.

5秒钟克隆tts集外银色(不包含说话方式和咬字上的口癖)一般能80%到95%像

2、Few-shot TTS: Fine-tune the model with just 1 minute of training data for improved voice similarity and realism.
1分钟素材tts微调可以逼近真人(训练时间成本5~10分钟)

3、Cross-lingual Support: Inference in languages different from the training dataset, currently supporting English, Japanese, Korean, Cantonese and Chinese.
tts跨语言推理(已支持英文、日语、中文、汉语、粤语)

4、WebUI Tools: Integrated tools include voice accompaniment separation, automatic training set segmentation, Chinese ASR, and text labeling, assisting beginners in creating training datasets and GPT/SoVITS models.

独立可调试用的webUI页面调试工具

2)TTS定义

TTS(Text-To-Speech)这是一种文字转语音的语音合成。类似的还有SVC(歌声转换)、SVS(歌声合成)等。目前GPT-SoVITS只有TTS功能,也就是不能唱歌。

  • 各版本特点
    ①GPT-SoVITS-V1实现了:
    ● 由参考音频的情感、音色、语速控制合成音频的情感、音色、语速
    ● 可以少量语音微调训练,也可不训练直接推理
    ● 可以跨语种生成,即参考音频(训练集)和推理文本的语种为不同语种
    ②GPT-SoVITS-V2新增特点:
    ● 对低音质参考音频合成出来音质更好
    ● 底模训练集增加到5k小时,zero shot性能更好音色更像,所需数据集更少
    ● 增加韩粤两种语言,中日英韩粤5个语种均可跨语种合成
    ● 更好的文本前端:持续迭代更新。V2中英文加入多音字优化。
    ③GPT-SoVITS-V3V4新增特点:
    ● 音色相似度更像,需要更少训练集来逼近本人(甚至不需要训练SoVITS)
    ● GPT合成更稳定,重复漏字更少,也更容易跑出丰富情感
    ● v4修复了v3非整数倍上采样可能导致的电音问题,原生输出48k音频防闷(而v3原生输出只有24k)。作者认为v4是v3的平替,更多还需测试。

二、克隆音色操作示例

  • 更详细清晰的连接
    链接

  • 步骤
    ①先去除背景音乐杂音

1)去除背景音乐(数据集处理):UVR5模型

  • 用到的模型
    ①model_bs_roformer_ep_317_sdr_12.9755模型:提取人声
    ②onnx_dereverb最后用DeEcho-Aggressive:将输出的干声音频去混响
  • 备注
    model_bs_roformer_ep_317_sdr_12.9755(常简写为model_bs_roformer_ep_317_sdr_12)是UVR5中用于人声分离的关键模型之一‌13。该模型在UVR5中替换了原有的hp2模型,大幅提升了人声分离的效果‌3。用户需要将该模型文件(通常命名为Bs_Roformer.pth)放置在UVR5的指定模型目录下使用‌2。该模型属于MDX-Net架构系列,专门用于从音频中提取人声或伴奏,其性能指标SDR 12.9755代表了较高的音源分离质量‌1。安装后,用户可在UVR5的模型选择界面直接调用该模型进行人声分离操作‌2。
  • 步骤

打开文件来到根目录,双击go-webui.bat打开,不要以管理员身份运行!

在这里插入图片描述
这就是正常打开了,稍加等待就会弹出网页。如果没有弹出网页可以复制http://0.0.0.0:9874到浏览器打开
在这里插入图片描述
在开始使用前先提醒一下大家:打开的bat不可以关闭!这个黑色的bat框就是控制台,所有的日志都会在这上面呈现,所有的信息以控制台为准。如果要向别人提问请写清楚:哪一步骤+网页端(方便看你填没填对)+控制台截图!所有的报错都在控制台上!Error后面的一般是报错

打开伴奏音频分离工具填写音频地址:
点击开启UVR5-WebUI稍加等待就会自动弹出图二的网页,如果没有弹出复制http://0.0.0.0:9873到浏览器打开
在这里插入图片描述
在这里插入图片描述

先用model_bs_roformer_ep_317_sdr_12.9755模型(已经是目前最好的模型)处理一遍(提取人声),然后将输出的干声音频再用onnx_dereverb最后用DeEcho-Aggressive(去混响),输出格式选wav。输出的文件默认在GPT-SoVITS-beta\output\uvr5_opt这个文件夹下,建议不要改输出路径,到时候找不到文件谁也帮不了你。处理完的音频(vocal)的是人声,(instrument)是伴奏,(_vocal_main_vocal)的没混响的,(others)的是混响。(vocal)(_vocal_main_vocal)才是要用的文件,其他都可以删除。结束后记得到WebUI关闭UVR5节省显存。
在这里插入图片描述
在这里插入图片描述

如果没有成功输出,报错了(现在版本应该不会报错了)。
那么推荐使用下面一种方法——UVR5客户端。

创建输入目录audio和输出目录vocal

在这里插入图片描述

关闭分离工具的打钩节省显存

在这里插入图片描述
填写输入音频目录和切分输出目录、填写要语音识别(音频转文本)的音频输入目录,分别作语音切分和语音识别=》将原来语音切分后进行语音识别成文本

在这里插入图片描述

语音识别结果在output/asr_opt这个目录下能找到

在这里插入图片描述

把语音识别的结果文件,也就是list文件作为标准工具的数据,用作文本校对,并打钩webUI
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
有杂音的或样本太少的文本建议删除

2)生成特征文件

得到文件后来到下一个目录
在这里插入图片描述
填写三个打*的地方

在这里插入图片描述
点击一键三连开始生成

在这里插入图片描述
生成特征文件

在这里插入图片描述

3)分别进行两个子模型微调

顺序随意
在这里插入图片描述
显存需求
在这里插入图片描述

4)推理界面试用

在这里插入图片描述
勾选点击按钮开始推理
在这里插入图片描述
推理前需要上传目标音色的参考视频,并填写对应的文本和语种
在这里插入图片描述
在这里插入图片描述
合成速度:3090每秒合成三秒长度
在这里插入图片描述

三、原理讲解

1)Sovits原理讲解

在这里插入图片描述

  • 原理步骤
    ①首先通过softVC编码器去除音色
    ②然后通过VITS解码器重建音频
    ③在重建的过程中模型将训练集音色学习进它的参数中,因此输入其他音色的语音进过编码后,VITS模型也能重建出学习过的音色语音

  • 最大的问题:
    编码器encoder去除音色这一步,事实上目前没有完全去除音色的特征,只有去音色相对强的特征,这也是为什么sovit编码器最后选用ContentVec作为编码器的原因
    在这里插入图片描述

  • 露音色备注
    转换音色失败,不是自己想要的

  • CN_Hubert音色引导作用(原始Hubert使用wenet中文数据训练)
    保留丰富的音色信息反而成他的特色,结合RVQ将音频转化为包含音色的语义token,然后用类GPT模型将他补全
    在这里插入图片描述

在这里插入图片描述

  • 库目录
    在这里插入图片描述

四、服务构建

1)环境安装(自动安装)

  • 步骤
    ①安装conda并初始化conda环境
    ②开始安装其他环境

①安装conda并初始化conda环境
下载conda安装包

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

安装miniconda

bash Miniconda3-latest-Linux-x86_64.sh

重新加载环境变量:

source ~/.bashrc

验证 conda 是否可用

conda --version

conda环境

export PATH=~/miniconda3/bin:$PATH

conda init 
conda activate GPTSoVits

②开始安装其他环境
这里我选择用install.sh脚本来安装依赖

bash install.sh --device CU128 --source HF  --download-uvr5

2)环境安装(手动安装)

①安装fast-whisper

conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pip install -r extra-req.txt --no-deps -i https://mirrors.aliyun.com/pypi/simple/

②安装一堆其他库

pip install -r requirements.txt  -i https://mirrors.aliyun.com/pypi/simple/


 pip install --ignore-installed packaging --target=$CONDA_PREFIX/lib/python3.10/site-packages

③安装 FFmpeg
1)conda安装

conda install ffmpeg

2)Ubuntu/Debian Users

sudo apt install ffmpeg
sudo apt install libsox-dev

④模型下载
1)UVR5模型:

UVR5模型
huggingface:
https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights
iCloud(解压后替换tools/uvr5/uvr5_weights):
https://www.icloud.com/iclouddrive/04ai9bBzJJclEFpbrbd_plmtA#uvr5_weights

在这里插入图片描述

2)pretrain_model预训练模型:

huggingface:
https://huggingface.co/lj1995/GPT-SoVITS/tree/main
iCloud(解压后放到GPT_SoVITS/pretrained_models下):
https://www.icloud.com/iclouddrive/0cb2YLuaLd4xBMslvMRnWcX0g#pretrained_models

在这里插入图片描述

3)G2PW模型(解压后放到GPT_SoVITS/text下)

iCloud:
https://www.icloud.com/iclouddrive/07cufCZWLeD0KLpL_IKPeQX3A#G2PWModel
ModelScope:
https://www.modelscope.cn/models/XXXXRT/GPT-SoVITS-Pretrained/resolve/master/G2PWModel.zip

在这里插入图片描述

4)ASR模型

FunASR中文模型
modelscope:
https://modelscope.cn/models/iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files
https://modelscope.cn/models/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch/files
https://modelscope.cn/models/iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files
iCloud(解压后models替换tools/asr/models):
https://www.icloud.com/iclouddrive/0b52_7SQWYr75kHkPoPXgpeQA#models

在这里插入图片描述

5)Faster Whisper Large V3

huggingface:
https://huggingface.co/Systran/faster-whisper-large-v3
iCloud(解压后放到tools/asr/models下):
https://www.icloud.com/iclouddrive/08dldSDPLUOpmUsTXsuiKQ6aw#faster-whisper-large-v3

在这里插入图片描述

6)FunASR粤语模型

Modelscope:
https://modelscope.cn/models/iic/speech_uniasr_asr_2pass-cantonese-chs-16k-common-vocab1468-tensorflow1-online/files
iCloud(解压后放到tools/asr/models下):
https://www.icloud.com/iclouddrive/062KFPq1wBJtKMkR-OL7gzW4w#speech_uniasr_asr_2pass-cantonese-chs-16k-common-vocab1468-tensorflow1-online

在这里插入图片描述

7)NLTK:

iCloud(解压后放到用户名目录下):
https://www.icloud.com/iclouddrive/079Bx3QbEosu8XIDkjim_ixPw#nltk_data

在这里插入图片描述
在这里插入图片描述

⑤下载G2PW模型解压放在text目录
Download G2PW models from G2PWModel.zip(HF)| G2PWModel.zip(ModelScope), unzip and rename to G2PWModel, and then place them in GPT_SoVITS/text.(Chinese TTS Only)

五、报错

1、annotated_types库缺失

pip install --ignore-installed annotated_types  --target=$CONDA_PREFIX/lib/python3.10/site-packages -i https://mirrors.aliyun.com/pypi/simple/

2、soundfile 库缺失

pip install --ignore-installed soundfile   --target=$CONDA_PREFIX/lib/python3.10/site-packages -i https://mirrors.aliyun.com/pypi/simple/

3、regex报错

pip install --force-reinstall regex!=2019.12.17 transformers -i  https://mirrors.aliyun.com/pypi/simple/

4、缺库einops

pip install --ignore-installed einops   --target=$CONDA_PREFIX/lib/python3.10/si
te-packages -i https://mirrors.aliyun.com/pypi/simple/

六、GPT-SoVITS转服务流程

1)创建音频

  • 步骤
    ①读取id和上传的音频文件
    ②音频文件经过soundfile读取,得到音频的采样数据(音频的采样数据)和音频的采样率(如16000、32000等)
    ③将采样数据经过响度平衡(人话:降低爆破音等剧烈波动对听感造成的影响)
    ④将平衡后的音频转回字节数据
    ⑤使用OpenAI API进行语音转文字(whisper模型语音转文字)
    ⑥whisper转出来的文字默认是繁体,用OpenCC繁体转简体
    ⑦用 TTS 模型提取参考音频的
1)语义特征(prompt_semantic)
2)声学特征(refer_spec)
3)生成掩码(mask:为了后面只处理有效帧)
4)全局嵌入(ge:用于后续合成)
5)对文本做分段和特征提取,得到
phones_batch音素、
bert_features_batchBERT特征、
norm_text_batch规范化文本等

⑧将上述数据用pickle序列化,再用zlib压缩,保存长度设置为计算的是音频的帧数除以帧率(假设 50 帧/秒),得到音频时长

  • 响度平衡解释
    音频读取中采用响度平衡(Loudness Equalization)的核心作用在于‌统一不同音源的听觉响度体验,避免音量频繁波动对听感造成干扰‌,具体价值体现在以下方面:
    在这里插入图片描述
    在这里插入图片描述
  • 备忘录
    ①为什么取索引为0的数据:
    这些变量(如 prompt_semantic、phones_batch 等)本身是“批量”处理的结果,通常是一个列表或张量的第一个元素(即 batch size=1 时的第0个)。取 [0] 就是取出当前这条音频/文本的特征,去掉批量维度,方便后续存储和使用。
    ②.cpu() 表示什么意思:
    .cpu() 是 PyTorch 张量的方法,作用是把张量从 GPU 显存转移到 CPU 内存。这样做是因为后续要用 pickle 序列化数据,pickle 只能处理在 CPU 上的张量,不能直接序列化 GPU 上的数据

2)

3)

### SovitsGpt-Sovits的技术背景及语音合成应用 #### Sovits 技术背景与原理 Sovits(Soft Voice Isolation and Timbre Synthesis)是一种基于深度学习的语音合成模型,专注于高质量的音色建模和声纹特征提取。其核心技术基础是神经网络中的变分自编码器(VAE),通过将输入语音信号分解为内容特征与风格特征(如说话人音色、情感等),实现对语音的高精度重建与转换。这种分离能力使得Sovits在语音克隆任务中表现出色,仅需少量目标说话人的语音样本即可生成逼真的语音[^2]。 #### Gpt-Sovits 技术背景与原理 Gpt-Sovits 是在Sovits基础上进一步融合了自然语言处理能力的扩展框架。它结合了GPT(Generative Pre-trained Transformer)的语言理解能力和Sovits的声纹建模技术,实现了从文本到语音的端到端生成。具体来说,GPT模块负责将输入文本转化为语义丰富的语言表示,而Sovits模块则将其映射为具有特定音色、韵律和情感表达的语音波形。这一多模态融合机制显著提升了生成语音的自然度和表现力[^2]。 #### 在语音合成中的应用场景 Gpt-SovitsSovits 的核心优势使其广泛应用于多个语音合成场景: - **AI语音克隆**:通过少量样本快速生成个性化语音,适用于虚拟助手、有声书制作等。 - **短视频创作**:提供高质量的语音合成服务,满足视频配音需求。 - **智能客服系统**:支持实时语音响应,提升用户体验。 - **无障碍阅读**:帮助视障用户通过AI听书获取信息[^1] #### 示例代码 以下是一个简化版的文本转语音流程示例,假设使用Gpt-Sovits进行推理: ```python import gpt_sovits # 初始化模型 model = gpt_sovits.load_model("gpt_sovits_config.yaml") # 输入文本与声纹信息 text_input = "你好,这是一个语音合成测试" speaker_embedding = model.get_speaker_embedding("sample_audio.wav") # 提取声纹特征 # 生成语音 audio_output = model.synthesize(text_input, speaker_embedding) # 保存结果 gpt_sovits.save_audio(audio_output, "output.wav") ``` 该代码展示了如何利用Gpt-Sovits进行语音合成的基本步骤,包括模型加载、文本与声纹输入、语音生成及输出保存。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值