语音生成模型整理以及LauraGPT介绍

因为最近做了一段时间的语音生成方向,期间也整理了一些开源项目和相关论文,每个或多或少都有可借鉴的地方,对于了解现阶段语音生成的相关技术还是比较有帮助的,后续也会根据自己的节奏来分享几篇论文或者开源项目。今天主要分享一下LauraGPT这篇文章。

作者:ctwgL
来源:音频探险记
原文:https://mp.weixin.qq.com/s/pwuR8cPdp4_K1Pvcrn_ZAw

语音生成整理

model namepdfcodedemo
LauraGPThttps://arxiv.org/abs/2310.04673https://github.com/modelscope/FunCodec/tree/master/egs/LibriTTShttps://lauragpt.github.io/
ChatTTShttps://github.com/2noise/ChatTTShttps://www.bilibili.com/video/BV1zn4y1o7iV/
fishspeechhttps://github.com/fishaudio/fish-speechhttps://www.bilibili.com/video/BV1wz421B71D/
vall-e系列https://www.microsoft.com/en-us/research/project/vall-e-x/https://github.com/lifeiteng/vall-ehttps://www.microsoft.com/en-us/research/project/vall-e-x/vall-e/
CosyVoicehttps://fun-audio-llm.github.io/pdf/CosyVoice_v1.pdfhttps://github.com/FunAudioLLM/CosyVoicehttps://fun-audio-llm.github.io/
Tortoise-TTShttps://arxiv.org/pdf/2305.07243https://github.com/neonbjb/tortoise-ttshttps://nonint.com/static/tortoise_v2_examples.html
OpenVoicehttps://arxiv.org/pdf/2312.01479https://github.com/myshell-ai/OpenVoicehttps://research.myshell.ai/open-voice
Matcha-TTShttps://arxiv.org/pdf/2309.03199https://github.com/shivammehta25/Matcha-TTShttps://shivammehta25.github.io/Matcha-TTS/
Mars5-TTShttps://github.com/Camb-ai/MARS5-TTS/blob/master/docs/architecture.mdhttps://github.com/Camb-ai/MARS5-TTShttps://6b1a3a8e53ae.ngrok.app/
SeedTTShttps://arxiv.org/pdf/2406.02430https://bytedancespeech.github.io/seedtts_tech_report/
Naturalspeech系列https://arxiv.org/pdf/2403.03100https://github.com/Plachtaa/FAcodechttps://speechresearch.github.io/naturalspeech3/
fast-speech系列https://arxiv.org/abs/1905.09263https://github.com/xcmyz/FastSpeechhttps://speechresearch.github.io/fastspeech/
flashSpeechhttps://arxiv.org/pdf/2404.14700https://flashspeech.github.io/
baseTTShttps://arxiv.org/pdf/2402.08093https://www.amazon.science/base-tts-samples/
MegaTTS2https://arxiv.org/pdf/2307.07218https://github.com/LSimon95/megatts2https://mega-tts.github.io/mega2_demo/
PromptTTS2https://arxiv.org/pdf/2309.02285https://github.com/microsoft/NeuralSpeech/tree/master/PromptTTS2https://speechresearch.github.io/prompttts2/
StyleTTS2https://arxiv.org/pdf/2306.07691https://github.com/yl4579/StyleTTS2https://styletts2.github.io/
XTTShttps://arxiv.org/pdf/2406.04904https://github.com/coqui-ai/TTS/tree/mainhttps://edresson.github.io/XTTS/
YourTTShttps://arxiv.org/pdf/2112.02418https://github.com/Edresson/YourTTS?tab=readme-ov-filehttps://edresson.github.io/YourTTS/
ControlSpeechhttps://arxiv.org/pdf/2406.01205https://github.com/jishengpeng/ControlSpeechhttps://controlspeech.github.io/
DCTTShttps://arxiv.org/pdf/2309.06787https://github.com/lawtherWu/DCTTS/tree/main/samples
HamTTShttps://arxiv.org/pdf/2403.05989https://anonymous.4open.science/w/ham-tts/
TextrolSpeechhttps://arxiv.org/pdf/2308.14430https://github.com/jishengpeng/TextrolSpeech?tab=readme-ov-filehttps://sall-e.github.io/
MetaVoice-1Bhttps://github.com/metavoiceio/metavoice-srchttps://colab.research.google.com/github/metavoiceio/metavoice-src/blob/main/colab_demo.ipynb
Parler-TTShttps://github.com/huggingface/parler-tts/blob/main/training/README.md#1-architecturehttps://github.com/huggingface/parler-ttshttps://www.text-description-to-speech.com/

LauraGPT   

LauraGPT是阿里发表的一篇能够同时进行语音理解任务和语音生成任务的语音大模型,当时主要是对该论文进行了复现并进行了一些改进,然后完成了我们的第一版语音大模型,能够同时进行语音识别和语音生成,在语音识别和语音生成上的效果大致符合预期。LauraGpt的整体结构图如下:

语音生成模型整理以及LauraGPT介绍

lauraGPT的输入格式需要满足如下的形式[input, task_id, output]。对于语音理解任务而言,它的形式是[audio_feature, task_id, text],其中task_id根据任务类型决定,比如语音识别,那么task_id就是ASR, 声音事件检测的话就是SED等等,根据自己实际情况指定。对于语音生成而言,它的形式就是[text, task_id, audio_token],其中audio token根据audio codec模型计算得到。语音理解任务整体相对较为简单,对此不再详细赘述,接下来重点说明语音生成任务。LauraGPT的语音生成部分分为两个:codec vocoder以及LLM部分,两个模块是单独训练的。而LauraTTS中是两个模块联合训练的,这里存在一定的区别。

codec vocoder

LauraGPT所使用的audio codec包含32个quantizer, 即32个码表,每个码表包含1024个audio token, 每个audio token对应的维度是128(类似于LLM中的token embedding 矩阵)。即一帧音频会离散化为32个token,第一个quantizer的token包含的信息最多,然后依次减少。考虑到LLM的自回归特性以及和语音理解任务形式上的统一,LLM只会生成第一个quantizer的audio token, 如果拿着该token输入到codec decoder中,那么恢复的语音就会有严重的信息丢失。与vall-e逐个预测剩余quantizer的token不同的是,lauraGPT引入了一个Encoder-Only Transformer模块去补偿这部分丢失的信息。

具体的方式是将audio codec第一个quantizer的audio token和text feature(text token对应的词向量)一起送入到Encoder-Only Transformers中,该模块会输出一个dense embedding, 其学习目标就是32个quantizer的audio token对应的token embedding进行求和得到的向量(该向量完整的表示了原音频信息)。两个dense embedding在训练中使用MSE loss进行约束。

语音生成模型整理以及LauraGPT介绍

该模块单独训练完成后,然后就可以和LLM进行串联进行语音生成。

LLM模块

在该模块中主要建立文本和audio token之间的关系,对于一个文本-音频数据对,会先使用audio codec对其进行离散化,取第一个quantizer的输出作为音频的表征,建立<text token , audio token>的数据对。然后构造成上文所描述的输入形式送入到LLM中进行训练。训练过程与一般的LLM训练无异,采用交叉熵loss进行约束优化,至此模型的训练就全部完成了。

另外文章还论证了连续的特征输入相对于离散的特征输入而言,连续的特征的性能更好,因为连续特征所保留的信息多,这点主要是针对语音理解任务而言。这篇文章整体的结构还是比较清晰的,另外也在许多测试集上进行了指标的评测,某些数据集上的表现也展现了它的潜力。该文章对于想做语音理解和生成统一的大模型,有一定的借鉴意义。对于单纯的TTS而言,效果还是不太符合预期,从复现的结果来看,有时会出现不稳定的现象(掉字较为常见,可能是自回归模型的通病),导致计算得到的wer偏高,另外说话人相似程度大概六分像(主观感受上)。

语音生成模型整理以及LauraGPT介绍

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论