作者李子洲,昇思MindSpore开发者,西安科技大学大三在读
你是否想象过拥有一个和你声音一模一样的虚拟分身?现在,通过基于GPT-SoVITS的语音生成技术,这一幻想可以成为现实!
昇思MindSpore已支持音色克隆项目 GPT-SoVITS,使用当下流行的影视角色、动漫人物的音色,即可花样定制各类“声音克隆”,让我们一起探索这项令人兴奋的技术,看看如何基于MindSpore NLP + GPT-SoVITS一步步创造出专属于你的数字声音分身。
-
项目链接:https://github.com/ultranationalism/GPT-SoVITS-mindspore
01
零样本文本到语音(TTS): 输入 5 秒的声音样本,即刻体验文本到语音转换。
02
少样本 TTS: 仅需 1 分钟的训练数据即可微调模型,提升声音相似度和真实感。
03
跨语言支持: 支持与训练数据集不同语言的推理,目前支持英语、日语和中文。
训练“声音克隆”——
基于MindSpore NLP + GPT-SoVITS生成语音
1. 首先,需要进入项目文件夹
cd GPT-SoVITS-mindspore。
2. 打开webui
launch_webui.sh,弹出这段代码后,说明webui已经打开,可通过127.0.0.1:9872进入webui。
3. 选择GPT模型和SoVITS模型,基础的模型可在下方链接下载:
https://modelscope.cn/models/ultranationalism/GPT-SoVITS-mindspore/files。
4. 上传参考语音并填入参考音频的文本
5. 输入需要合成的文本,并设置GPT采样参数,就可以在右侧看到结果
-
GPT采样参数说明
top_k、top_p、temperature这三个值都是用来控制采样的。在推理的时候要挑出一个最好的token,但机器并不知道哪个是最好的。于是先按照top_k挑出前几个token,top_p在top_k的基础上筛选token。最后temperature控制随机性输出。
比如总共有100个token,top_k设置5,top_p设置0.6,temperature设置为0.5。那么就会从100个token中先挑出5个概率最大的token,这五个token的概率分别是(0.3,0.3,0.2,0.2,0.1),那么再挑出累加概率不超过0.6的token(0.3和0.3),再从这两个token中随机挑出一个token输出,其中前一个token被挑选到的几率更大。以此类推。
捕捉声音的灵魂——
GPT-SoVITS TTS的原理
1. 特征提取
Hubert和RVQ将音频转化为包含音色的语义token,然后使用类GPT模型将他补全。
2. 类GPT模型
类GPT模型的自回归特性,我们可以在类GPT模型推理的时候添加一段参考音频,推理时的token始终会继承一些参考音频的音色。这样,补全的包含声音的token就由音色emb和参考音频共同决定。
3. 音频重建
最后,使用VITS模型对生成的语音token进行解码,生成最终的音频。VITS模型能够有效地重建高质量的语音,保留文本的语义信息和目标音色特征。因为token承担了一部分音色引导功能,VITS模型重建目标音色的压力就小很多。
4. 基线
SoVITS大模型需要学习万物音色,从量变到质变,才能通过音色emb进行引导,找到相似音色并重建目标音色。
GPT-SoVITS: token承担一部分音色引导功能,SoVITS大模型的训练集音色覆盖压力大大降低,使5秒音色克隆(变声)具备可行性。
写到最后
下面将简单介绍GPT-SoVITS的动机与他的由来。我们从语音转换(变声)领域最有名,且上了2023年时代周刊前200大发明的SoVITS讲起。
SoVITS的原理可以很简单地抽象为上图右边的编码器解码器结构。在重建的过程中模型将训练集音色学习进它的参数中,因此输入其他音色的语音经过编码后,VITS模型也能重建出学习过的音色的语音。在这个叙述逻辑中,问题最大的一点在于编码器去音色这一步。事实上,目前就没有能完全去除音色的特征,只有去音色相对强的特征,这也是为什么我们最后会使用ContentVec代替SoVITS名称中的SoftVC作为编码器的原因。
漏音色的意思是,你转换转了个“寂寞”,不太是你想要的那个音色,除了AI的噱头外就没什么太大用途了。但是我们反过来想,我们完全可以用这个泄露音色的语义特征作为音色的引导,来引导目标的音色。于是,第一批进入观众席的音色漏麻的CN_Hubert(原始Hubert使用wenet中文数据训练的参数)重新回到了赛场,保留了丰富的音色信息反而成为了他的优势。我们使用Hubert和RVQ将音频转化为包含音色的语义token,然后使用类GPT模型将他补全。因为token已经给音色划分了一个范围,因此给VITS重建目标音色的压力小了很多baseline:SoVITS大模型需要学习万物音色,从量变到质变,才能通过音色emb进行引导,找到相似音色并重建目标音色。GPT-SoVITS token承担一部分音色引导功能,SoVITS大模型的训练集音色覆盖压力大大降低,使5秒音色克隆(变声)具备可行性。
由于类GPT模型的自回归特性,推理时后面的token始终会继承一些参考音频的音色。
又由于token使用的特征漏音色比condition语义特征更大,因此GPT补全的token更多的是包含参考音频的目标音色。在Hubert分担一部分音色压力后,剩下的VITS的重建目标音色的压力就小很多了,这使得5秒音色克隆(变声)终于具备了可行性。我们也可以将GPT模型的condition变更为文本。
更多推荐
昇思MindSpore2.3版本已经正式上线,增强动/静态图与大模型能力,欢迎体验!详细特性介绍请戳下文了解。
安装信息:https://www.mindspore.cn/install