歌声合成
- 难点:
- 映射困难。语音合成认为音素是独立的,但是歌声合成中,发音说旋律影响,需要更加平滑,发音不确定性增大
- 数据量大。IPA虽然可以标注音标,但是歌声合成的发音收到音高影响、歌手音域影响等音素发音种类指数级增加
摘要:
xiaoicesing 是一个高质量歌声合成器( Singing voice synthesis (SVS) ),基于fastspeech+WORLD(modified), 使用频谱、F0, 时长。
- 除了使用音素ID + position codeing作为输入,还使用时长和pitch等信息( musical score information )
- F0 添加残差链接用于减弱 off-key 问题,即走调问题。
- 除了每个音素的音长损失外,还将一个音符中所有音素的音长积累起来,即音节的时长损失,计算用于增强节奏的音节音长损失。
- 声码器WORLD, 对声码器的特征进行建模,包括mel-广义倒谱(MGC)和频带非周期性(BAP),而不是mel谱图。
- 各个模块联合训练,保持更好的连续性和一致性。
样例试听,效果提升还是很明显的。
背景:
背景:
- 歌声合成的方法与语音合成有着很大的联系,传统的方法,也是使用单元拼接和基于统计参数的方法。
- 后来深度学习的方式解决了上述方法合成歌声不自然的问题,但是仅用于建模频谱,忽略了F0和时长音素带来的动态变化和节奏影响。
- 但是在考虑了F0和时长的模型中,各个模块是分别训练的,没有考虑合成歌声的连续性和一致性。
本文基于fastspeech + WORLD(修改特征)实现。与基于CNN+LSTM的baseline有以下亮点:
- 联合训练,连续性和一致性更好
- F0残差连接的方式,更加准确和鲁棒
- 高质量。高准确度的F0和时长预测。
结构
模型结构
分为三个部分,
- 信息编码器(musical score encoder),将三个输入分别编码成密集向量序列;
- 时长预测器,由一位卷积实现,这里主要预测音素级别时长信息,但是同时计算音素级别和音节级别时长损失;
- 解码器,为了与WORLD配合,这里将mel预测改为MGC+BAP预测,单独计算频谱损失;残差连接计算F0,并与频谱损失再次计算解码器损失。
!
结构示意
编码器部分的输入处理如下,其中音高和时长使用复制的方式适应音素时长:
损失函数
实验
数据
- 2297首歌曲,女生录制,有伴奏,人工核对音乐信息,10秒切分。
- 10761片段,74小时。9685片段训练,1076片段用于验证和测试。
- 60-d MGC, 5-d BAP, 1-d logF0, and 1-d V/UV flag.
- HMM强制对齐获取时长信息
结果
如上图所示,30样例10人测听的MOS分数,三个方面都优于基线,并且音质和自然似乎更受到声码器影响,并且小冰的MOS方差更小。
在客观评价方面,均优于基线模型。尤其是在F0和时长预测上具有很高的精度,具体测试结果如下:
图5,A-B test 结果明显。
图6, F0曲线,基线模型有over-smooth 问题,并且与真实曲线拟合不好。
图7, 时长预测,也是小冰的更好
整体表现方面,averaged global variance (GV)整体平均方差,小冰比baseline有优化,如图3。
频谱预测,小冰预测的也更加准确和清晰,如图4,左边是基线,右边是小冰: