speechbrain在LibriSpeech的recipe
1、提取语音信号。
2、对每个batch的语音数据复制一份并加上环境噪声,合并到batch中(wav)->(wav,wav_noise)。
3、在新的batch上使用一种时域逼近的谱增强算法SpecAugment进行进一步数据增强(没有增加新的数据)。
(也可以在计算完特征后,归一化之后,再直接使用SpecAugment算法进行数据增强,recipe中Transformer模型使用这种方法)
4、计算语音特征Fbank
5、全局归一化
6、模型训练
seq2seq模型训练
分成两个阶段,第一阶段比如前5个epoch同时使用seq2seq损失和CTC损失,第二个阶段比如后10个epoch,只使用seq2seq损失。
seq2seq损失:根据编码器输出的语音表达x和解码器输入序列,通过注意力机制计算损失。
解码器输入:bos、tok1、tok2...
解码器标签:tok1、tok2...eos
CTC损失:将解码器输出x,进过dnn层变换,计算所有可能对齐损失和
第一阶段损失这里的ctc标签和seq2seq标签实际上可以不一致,ctc损失对应每一帧的输出,因此,一方面标签没有eos这样无意义的词,另一方面,粒度可以更小,应该更接近字符或音素,而seq2seq的不需要和输入对齐,所以粒度可以更大一点,子词可能会好一点。
网友评论