methods
- VQ-VAE预测包含多个码本的中间特征,并且还原到wav;试过,如果使用单个码本,及时增大码本大小(1024–65536),还原的音频内容/音质也还是有损失;不如使用多个码本。多个码本是encoder output直接reshape成[N,D], 成为N个码本的内容;decoder的输出除了重建loss,也添加多个对抗loss约束;
- Multi-output Transformer:decoder transformer如果一次性预测多个码本的内容,一次只能得到一种code的分布;如果使用Nucleus sampling (top-k 核心采样),如何从top-k个样本中分别挑到对应的N个码本理论上不太能实现;(Sub-decoder)模块,它能够顺序地处理每个代码本组,并在每个时间步独立地应用nucleus sampling。本文提出sub-decoder的模块进行code预测,模型可以分别对每个代码本生成条件分布,并从中采样,而不是试图直接处理所有代码的联合分布。这种方法使得在多代码本设置中应用nucleus sampling成为可能,同时保持了生成过程的效率和效果。先预测第一个码本,再根据第一个自回归的预测第二个,以此类推,四次推理完成一个step的码本预测;
- Repetition Token:语音信号中有很多重复的元素,如果直接预测的话,会连续的预测很多重复的元素。本文引入一个额外的Repetition Token,替换预测过程中产生的连续重复的code。这样做的目的是减少模型输出中的冗余,并防止模型陷入重复生成相同内容的循环。inference阶段,当模型生成语音时,所有的“重复标记”将被解码回原始的代码标记。
- 音素到discrete token的预测是transformer结构实现的,其中对齐的模块使用了Monotonic Alignment,参考VITS。
- noisy speaker speech预测clean speech:audio prompt的前三帧使用sil audio。希望给一个clean的先验。
results
- 使用gigaspeech,播客和youtube的asr数据;900h数据;
- MQ-TTS的对齐很好;ASR准确度也比较高;
- code size: 4160,发现增大到8160,改善很小;
- 可以看出,MQ-TTS的韵律变化确实更丰富一些;
- demo page听,集内说话人的相似度其实还差一些;但是韵律自然度,音质都还不错。