前文讲到VITS,采用的端到端的NAR模型,这篇文章记录下微软提出的VALL-E系列,从 AR+NAR 到 AR 模型的转变,以及后面MELLE引入的VAE和Mel-Spectorgram,将neural codec text speech LM (AR+NAR Transformer Decoder) 转变为 autoregressive mel-spectrogram text speech LM (AR Transformer Decoder) ;由于LM生成的是mel-spectrogram 需要通过vocoder 转换成 waveform; 生成的内容采样模块:从top-p random sampling 变成 Latent Sampling潜在采样模块(思想源自VAE, 从预测的高斯分布中采样潜在嵌入,然后将其投影回频谱图空间)
VALL-E 系列
https://www.microsoft.com/en-us/research/project/vall-e-x/
Vall-E: https://ar5iv.labs.arxiv.org/html/2301.02111
具体来说,我们使用从现成的神经音频编解码器模型派生的离散代码来训练神经编解码器语言模型(neural codec language model)(称为VALL-E ),并将 TTS 视为条件语言建模任务,而不是像之前的工作那样将 TTS 视为连续信号回归。 在预训练阶段,我们将 TTS 训练数据扩展到 60K 小时的英语语音,比现有系统大数百倍。 VALL-E具有情境学习功能,可用于合成高质量的个性化语音,只需对看不见的说话者进行 3 秒的注册录音作为声音提示。实验结果表明, VALL-E在语音自然度和说话人相似度方面显着优于最先进的零样本 TTS 系统。此外,我们发现VALL-E可以在合成时保留说话者的情感和声音提示的声学环境。
与之前的管道不同(例如,音素 → 梅尔谱图 → 波形), VALL-E的管线是音素 → 离散码 → 波形。
VALL-E根据音素和声学代码提示生成与目标内容和说话者的声音相对应的离散音频编解码器代码。 VALL-E直接支持各种语音合成应用,例如零样本 TTS、语音编辑以及与 GPT-3 等其他生成式 AI 模型相结合的内容创建。
VALL-E系列:2023年的1月份开始 - 2024年的7月份
- VALL-E 使用从现成的神经音频编解码器模型派生的离散代码来训练神经编解码器语言模型,并将 TTS 视为条件语言建模任务,而不是像之前的工作那样将 TTS 视为连续信号回归。 VALL-E 具有情境学习功能,可用于合成高质量的个性化语音,只需录制未见过的讲话者的 3 秒注册录音作为提示。在语音自然度和说话人相似度方面,VALL-E 显着优于最先进的零样本 TTS 系统。此外,VALL-E可以在合成时保留说话者的情绪和声音提示的声学环境。
- VALL-E X 扩展其能力,适应多语言场景,促进跨语言零样本 TTS。
- VALL-E R 引入了音素单调对齐策略,增强了语音生成的鲁棒性。
- VALL-E 2 通过集成重复感知采样和分组代码建模技术, 实现了一个突破性的里程碑:在 LibriSpeech 和 VCTK 数据集上的零样本 TTS 性能与人类相当。这标志着此类成就的首次实例,为该领域树立了新标准。
- MELLE 是一种新颖的基于连续值标记的语言建模方法,用于文本到语音合成 (TTS)。 MELLE 直接从文本条件自回归生成连续的梅尔频谱图帧,绕过了矢量量化的需要,矢量量化最初是为音频压缩而设计的,与梅尔频谱图相比,牺牲了保真度。
字节的seed-tts 借鉴了Vall-E模型(用扩散模型替换了 VALL-E 中的 NAR 模型,该模型根据 AR 阶段生成的语音标记生成连续的语音表示)
MELLE
最新研究到2024年的7月份, MELLE: 一种新颖的基于连续值标记的语言建模方法,用于文本到语音合成 (TTS)。 MELLE 直接从文本条件自回归生成连续的梅尔频谱图帧,绕过了矢量量化的需要,矢量量化最初是为音频压缩而设计的,与梅尔频谱图相比,牺牲了保真度。具体来说,(i)不是使用交叉熵损失,而是应用回归损失和所提出的频谱图通量损失函数来对连续值标记的概率分布进行建模。 (ii) 将变分推理纳入 MELLE 中以促进采样机制,从而增强输出多样性和模型鲁棒性。 没有采用audio encodec, 而是采用 梅尔频谱图 Mel-Spectrogram 抽取器,通过 Mel-Spectrogram LM生成 Mel-Spectrogram, 然后将Mel-Spectrogram 通过 vocoder 生成 waveform MELLE包括以下主要组件:
- pre-nets:
- text tokenizer: 分别将文本转换为子词标记(BPE),
- mel-spectrogram extractor: 从语音中提取梅尔频谱图,
- 然后将它们投影到模型维度;
- autoregressive (AR) Transformer decoder: 充当语言模型的自回归 (AR) Transformer 解码器;
- latent sampling module: 从预测的高斯分布中采样潜在嵌入,然后将其投影回频谱图空间;
- stop prediction layer: 确定语音结尾的停止预测层;
- post-net:频谱图细化的卷积后网络。
- vocoder:最后,使用声码器从生成的梅尔频谱图中恢复语音。
其中引入VAE和Mel-Spectorgram 借鉴了2024. CLaM-TTS: Improving Neural Codec Language Modeling for Zero-shot Text-to-Speech
不像VALL-E系列模型,由于梅尔谱图的完整性,不需要额外的非自回归(NAR)模型。这种简化显着提高了计算和存储效率。此外,通过调整缩减因子, MELLE可以一步生成多个梅尔谱图帧,进一步提高效率,同时仍保持卓越的性能。
总体来说: 主要目的是将 文本和声学嵌入的串联作为输入来对语义和声学信息之间的依赖关系进行建模,生成的隐藏层进行采样,通过audio codec decoder 直接生成 waveform 或者 生成 Mel-Spectrogram 然后生成 waveform
- VALL-E 系列:text-speech LM 是 AR 和 NAR 的组合模型;text tokenizer使用 phonemizer/pypinyin(中文), audio tokenizer 使用 audio codec encode/decode ; 生成的内容采样模块:top-p random sampling
- MELLE : tex-speech LM 是 AR 模型; text tokenizer使用 BPE, audio tokenizer 使用 mel-spectrograms extractor; 由于LM生成的是mel-spectrogram 需要通过vocoder 转换成 waveform; 生成的内容采样模块:Latent Sampling潜在采样模块(思想源自VAE, 从预测的高斯分布中采样潜在嵌入,然后将其投影回频谱图空间)
PS: 还有一种采样模块: 基于Flow matching 流匹配的方式,从更简单的分布采样中恢复语音表示。比如: meta的 2023. Voicebox: Text-Guided Multilingual Universal Speech Generation at Scale
这里主要是学习在TTS中引入GLM,如何训练。
官方没有给出源码和训练好的权重, 这里只是为例学习AR(生成式语言模型GLM)和NAR的结合,
非官方实现: https://github.com/lifeiteng/vall-e (只实现了第一版vall-e, 其实类似训练文本LLM一样的步骤,增加了文本转音素,加上语音的tokenizer, 采用的Transform decoder, AR模型需要掩码self-Attention, NAR则不需要掩码操作,文本到音素采用 https://github.com/bootphon/phonemizer , audio codec 使用 https://github.com/facebookresearch/encodec)
数据集处理工具使用 https://github.com/lhotse-speech/lhotse;主要是数据处理比较耗时。可以先小数据验证训练逻辑,然后在scaling。
PS: 后续可以改进下,尽量复现下MELLE, 需要花点钱 :(