微软亚洲研究院和微软 Azure 语音团队联合浙大人工智能联合研究院提出了FastSpeech 的改进版 FastSpeech 2,它抛弃了 Teacher-Student 知识蒸馏框架降低训练复杂度,直接用真实的语音数据作为训练目标避免信息损失,同时引入了更精确的时长信息和语音中的其它可变信息(包括音高(Pitch)和音量(Energy)等)来提高合成的语音质量。
1、FastSpeech 2和2s的整体结构
整体架构包括三个主要部分:
- 编码器(Encoder):将音素嵌入序列转换为音素隐状态序列。
- 变差适配器(Variance Adaptor):为隐状态序列添加时延、音高和能量等变差信息。
- Mel谱图解码器(Mel-spectrogram Decoder):将变差适配后的隐状态序列并行转换为mel谱图序列。
其中,编码器和mel谱图解码器均使用前馈Transformer模块,而变差适配器包含时延预测器、音高预测器和能量预测器。训练时,FastSpeech 2直接以地面真值mel谱图为目标进行训练,同时训练变差预测器以用于推理时的语音合成。
2、FastSpeech 2和2s的设计动机
主要在于改进FastSpeech的几个问题,并更好地解决非自回归语音合成中的one-to-many mapping问题。具体设计动机包括:
- 简化训练流程:FastSpeech 2直接使用Mel谱图进行训练,避免了使用教师模型蒸馏带来的信息损失,从而简化了训练流程,并提升了语音质量的上限。
- 提供更多语音变化信息:FastSpeech 2在训练中提取了语音的时延、音高和能量信息,作为条件输入,以缓解one-to-many mapping问题,并提高语音质量。
- 直接生成语音波形:FastSpeech 2s进一步简化了语音合成流程,可以直接从文本生成语音波形,实现端到端的语音合成,并降低了推理延迟。
- 改进音高预测:FastSpeech 2和2s使用连续小波变换在频域进行音高预测,以提高音高预测的准确性,并改善语音韵律。
3、FastSpeech 2s模型配置
- 波形解码器
1层转置1D卷积,过滤器大小为64。
30个残差卷积块,每个块包含:
非因果1D卷积,过滤器大小为3。
膜门激活函数。
1x1卷积。
跳过连接通道大小为64。
- 判别器
与Parallel WaveGAN (Yamamoto et al., 2020)相同的结构。
10层非因果扩张1D卷积,每层使用leaky ReLU激活函数。
- 训练参数
批处理大小为12。
总参数量为280万。
- 训练过程
在2个NVIDIA V100 GPU上进行训练,批处理大小为6。
每个GPU处理20,480个波形样本片段。
使用与FastSpeech 2相同的优化器和学习率调度。
训练600,000步直至收敛。
- 推理过程:只使用波形解码器生成语音波形。
- 对抗训练
与Parallel WaveGAN相同的对抗训练流程。
使用多分辨率STFT损失和LSGAN判别器损失。
4、FastSpeech 2s模型优化
微调FastSpeech 2s模型时,选择与应用场景相匹配的数据集非常重要。
通用语音数据集:用于提高模型的通用性和稳健性。
- LJSpeech:英语语音数据集,适合微调FastSpeech 2s模型。
- Blizzard 2013:大规模英语语音数据集,包括不同说话人的语音。
- Common Voice:Mozilla开源的语音数据集,支持多种语言。
特定领域语音数据集:针对特定应用场景,如新闻播报、客服对话等。
- Aishell:中文语音数据集,包括新闻、访谈等语音。
- VCTK:英国口音语音数据集,包含多种场景的语音。
特定说话人语音数据集:如果您需要为特定说话人定制语音,可以收集该说话人的语音数据集进行微调。
噪声环境语音数据集:包含各种噪声环境的语音数据,可以提高模型在嘈杂环境中的语音合成质量。
多语言语音数据集:如果您需要支持多语言语音合成,可以使用包含多种语言的语音数据集进行微调。
交互式语音数据集:包含用户和虚拟助手等交互式语音数据,可以提高模型的交互适应性。
5、不同版本对比及音频示例
FastSpeech、FastSpeech2、FastSpeech2s的对比如下:
FastSpeech 2的训练速度比FastSpeech快3倍,FastSpeech 2s的推理速度更快;
FastSpeech 2 和 2s 在语音质量方面优于 FastSpeech,FastSpeech 2 甚至可以超越自回归模型。
音频示例可访问:
FastSpeech 2: Fast and High-Quality End-to-End Text to Speech - Speech Research。