本发明属于语音识别技术领域,具体涉及一种端到端语音识别方法。
背景技术:
自动语音识别(asr,automaticspeechrecognition)旨在将语音信号转换为文本内容,它可以形象地比喻为“机器的听觉系统”,是人机通信和交互技术的重要研究领域,也是人工智能的关键技术之一。语音识别可以应用到包括语音助手、自动驾驶、智能家居、手持移动设备等许多方面。近年来发展出的端到端语音识别技术,相比传统方法有着众多优点,如训练数据的标注简单、对语言学知识的依赖小、不需要隐马尔可夫模型中基于马尔科夫链的状态转移概率的条件独立假设,同时模型的训练和解码过程也更简单。
近年来,基于点积自注意力(sa,self-attention)的自动语音识别已被广泛研究。其具有简单的数学结构,不仅能够对输入序列进行全局依赖性建模,而且还支持并行计算。由于这些优势,它已成功应用于基于混合模型的asr和基于transformer的asr。但是,因为加权平均计算可能会使得注意力分布分散,从而导致对邻近信号的依赖性计算不足,即sa的局部建模能力差。同时由于sa在上下文建模中的过度灵活性,这一问题在长序列中变得很加明显。
最近,也涌现出一些方法致力于提高sa的局部建模能力:①使用相对嵌入来提高基于transformer的asr的嵌入层的局部建模能力。但是,相对嵌入本身并不会将注意力限制在当前帧的附近,这仍然使sa可以注意到对识别不重要的远处帧;②将局部密集合成器的注意力与自我注意力一起添加,其中局部密集合成器的注意力就集中在局部性建模上,但它的窗口长度是一个超参数;③屏蔽自注意力通过一个软高斯窗口,在结构上直接限制了注意力的范围。它的优点是在训练阶段可以自动确定窗口长度。但是,窗口长度在测试阶段是固定的,而且与输入序列无关,这可能不是最佳选择,因为不同的帧或字符对相邻帧的依赖性可能不同。而且,为每个自注意力层选择合适的窗长是很费时的,并且对于不同的测试数据也要逐个进行。
技术实现要素:
为了克服现有技术的不足,本发明提供了一种基于残差高斯自注意力的transformer端到端语音识别方法,属于基于注意力机制的编码器解码器模型,相比于已有的方法,能够动态自适应调整自注意力的窗长,提高灵活性的同时,提升模型性能。本发明内容如下:通过一个前馈神经网络(fnn,feedforwardneuralnetwork)学习高斯函数的均值和方差,使得模型可以根据输入帧长动态自适应调整自注意力的窗口长度,来进一步降低字符错误率(cer,charactererrorrate),并通过残差连接提高模型的收敛速度。在国际标准化组织评测数据aishell-1的测试集上,resgsa-transformer的cer为5.86%,相对sa-transformer降低7.8%,并且参数和计算复杂度与sa-transformer大致相同。
本发明解决其技术问题所采用的技术方案包括如下步骤:
步骤1:构建基于高斯残差自注意力的resgsa-transformer模型;
所述基于高斯残差自注意力的resgsa-transformer模型是在speech-transformer基础上将其中的自注意力模块替换为高斯残差自注意力模块构成;
所述基于高斯残差自注意力的resgsa-transformer模型由卷积前端、n个编码器子块、m个解码器子块和一个嵌入层堆叠组成;所述卷积前端采用两个2-d卷积层;每个编码器子块包含一个高斯残差自注意力模块和一个位置前馈模块;每个解码器子块除包含位置前馈模型外,还包含一个高斯残差自注意力模块和一个多头注意力层;
所述高斯残差自注意力模块描述如下:
步骤1-1:缩放点积自注意力,如式(1)所述:
其中,attn(·)表示注意力函数,q,k,v通过公式(2)得到:
q=xwq,k=xwk,v=xwv(2)
其中,
transformer框架的sa层使用多头注意力来进行并行计算,计算缩放点积注意力h次,然后将所有h个输出级联映射为最终的注意力值;
多头自注意力如公式(3)表述:
mha(q,k,v)=concat[h1,h2,...,hh]wo(3)
其中,
步骤1-2:使用一个软屏蔽窗口去屏蔽缩放点积自注意力形成屏蔽自注意力,如式(4)所示:
其中,m是软屏蔽矩阵;
步骤1-3:在屏蔽自注意力的基础上使用高斯分布作为加性偏差构成高斯自注意力gsa;
其中,
偏差矩阵g中的每个元素gtj表示当前帧xt和位置j之间的关系,如式(6)所示:
其中,pt,σt分别为xt的中心位置和标准差,gtj∈(-∞,0];
根据xt预测中心位置pt:
其中,vp和wp为fnn的待学习参数,pt∈(0,t);
令
其中,vd和wd为fnn的待学习参数;
当pt和σt都固定时,窗口权重遵循高斯分布;
步骤1-4:在高斯自注意力gsa基础上构成高斯残差自注意力resgsa;
每层的高斯残差自注意力resgsa将前一层的注意力得分与当前层的注意力得分求和,并用于softmax计算注意力权重:
其中,prev为前一层注意力得分,新的注意力得分
步骤2:使用公共语言普通话语料库,采用adam优化器和noam学习率对基于高斯残差自注意力的resgsa-transformer模型进行训练;训练完成,得到最终的基于高斯残差自注意力的resgsa-transformer模型;
步骤3:使用最终的基于高斯残差自注意力的resgsa-transformer模型对输入语音进行识别,得到输出文本。
优选地,所述n=12,m=6。
优选地,所述2-d卷积层的卷积核大小为3*3,步长为2,通道数为256,激活函数为relu。
优选地,所述高斯残差自注意力模块和位置前馈模块的输出维度均为256,模块中每个层均使用残差连接以及层归一化,每个注意力层的注意力头个数均为4。
本发明的有益效果如下:
1.本发明将高斯自注意力残差引入到transformer模型框架,可以实现长序列下的动态局部建模;
2.本发明可以根据输入帧长动态自适应调整自注意力的窗口长度,来进一步降低字符错误率。
附图说明
图1为本发明提出的resgsa-transformer模型结构示意图。
图2为本发明resgsa层的残差连接示意图。
图3为本发明叠加高斯偏差来增强局部特征示意图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
根据向量序列的成对相似性,对其进行编码的自注意力机制,由于其强大的上下文建模能力而被广泛用于语音识别中。但将其应用于长序列数据时,由于其加权平均算子可能会使注意力分布分散,从而导致相邻信号之间的关系被忽略,最终使得识别准确率降低。因此本发明提出了一种基于高斯残差自注意力的transformer端到端语音识别模型。它在保持自注意力的全局范围依赖性的建模能力的情况下,能够实现长序列下的动态局部建模;还可以根据输入帧长动态自适应调整自注意力的窗口长度,来进一步降低字符错误率。
如图1所示,一种基于残差高斯自注意力的transformer端到端语音识别方法,包括如下步骤:
步骤1:构建基于高斯残差自注意力的resgsa-transformer模型;
所述基于高斯残差自注意力的resgsa-transformer模型是在speech-transformer基础上将其中的自注意力模块替换为高斯残差自注意力模块构成;
所述基于高斯残差自注意力的resgsa-transformer模型由卷积前端、12个编码器子块、6个解码器子块和一个嵌入层堆叠组成;所述卷积前端采用两个2-d卷积层,卷积核大小为3*3,步长为2,通道数为256,激活函数为relu;每个编码器子块包含一个高斯残差自注意力模块和一个位置前馈模块,输出维度均为256,模块中每个层均使用残差连接以及层归一化,每个注意力层的注意力头个数均为4;每个解码器子块除包含位置前馈模型外,还包含一个高斯残差自注意力模块和一个多头注意力层;
所述高斯残差自注意力模块描述如下:
步骤1-1:缩放点积自注意力,如式(1)所述:
其中,attn(·)表示注意力函数,q,k,v通过公式(2)得到:
q=xwq,k=xwk,v=xwv(2)
其中,
transformer框架的sa层使用多头注意力来进行并行计算,计算缩放点积注意力h次,然后将所有h个输出级联映射为最终的注意力值;
多头自注意力如公式(3)表述:
mha(q,k,v)=concat[h1,h2,...,hh]wo(3)
其中,
步骤1-2:使用一个软屏蔽窗口去屏蔽缩放点积自注意力形成屏蔽自注意力,如式(4)所示:
其中,m是软屏蔽矩阵,其中的元素
步骤1-3:在屏蔽自注意力的基础上使用高斯分布作为加性偏差构成高斯自注意力gsa;
其中,
偏差矩阵g中的每个元素gtj表示当前帧xt和位置j之间的关系,如式(6)所示:
其中,pt,σt分别为xt的中心位置和标准差,gtj∈(-∞,0];gtj的均值和标准差决定分布曲线,它们又均与xt有关。在softmax之前添加这样的偏差近似等于在softmax层之后乘以(0,1]。pt的直观选择是令pt=t,因为第t个注意力权重与输入xt高度相关,本发明根据xt预测中心位置pt:
其中,vp和wp为fnn的待学习参数,pt∈(0,t)。;
令
其中,vd和wd为fnn的待学习参数;
σt的值决定分布曲线的陡峭程度,σt越大,分布越平滑。当pt和σt都固定时,高斯偏差是相对位置感知方法的一种特例,其中窗口权重遵循高斯分布;
步骤1-4:在高斯自注意力gsa基础上构成高斯残差自注意力resgsa;
如图2所示,每层的高斯残差自注意力resgsa将前一层的注意力得分与当前层的注意力得分求和,并用于softmax计算注意力权重:
其中,prev为前一层注意力得分,新的注意力得分
步骤2:使用公共语言普通话语料库,采用adam优化器和noam学习率对基于高斯残差自注意力的resgsa-transformer模型进行训练;训练完成,得到最终的基于高斯残差自注意力的resgsa-transformer模型;
步骤3:使用最终的基于高斯残差自注意力的resgsa-transformer模型对输入语音进行识别,得到输出文本。
具体实施例:
1、数据准备:
本发明中提出的模型都是在公共语言普通话语料库aishell-1上进行测试评估。训练集包含由340位说话人录制的大约150个小时(120,098条语句)的语音;开发集包含由40位说话人录制的大约20个小时(14,326条语句)的语音;测试集包含由20位说话人录制的大约10个小时(7,176条语句)的语音;每个说话人大约有360条语句。
对于所有实验,均提取80维的梅尔滤波器组特征(fbank),帧长为25ms,帧移为10ms,并且对特征进行归一化,使每个说话人的特征均值为0,方差为1。此外,使用由4230个普通话字符和4个非语言符号(未知符号“<unk>”,句子起始与结尾符号“<eos>”,填充符号“<pad>”和空格符号“<space>”)组成的词汇集。
2、网络结构:
如图1所示,本发明提出的resgsa-transformer是一种改进的speech-transformer,它由卷积前端、12个编码器子块、6个解码器子块和一个嵌入层的堆叠组成。卷积前端采用两个2-d卷积层,卷积核大小为3*3,步长为2,通道数为256,激活函数为relu;编码器子块包含一个resgsa层和一个位置前馈模块;解码器子块除包含位置前馈模型外,还包含一个resgsa层和一个多头注意力层。此外,resgsa层和前馈层的输出维度均为256,子块中每个层均使用残差连接以及层归一化,每个注意力层的注意力头个数均为4。
3、模型训练:
对于模型训练,使用adam优化器和noam学习率(25k次步骤的预热),使用specaugment进行数据扩充,注意力层dropout的概率0.1。对于语言模型,使用由2层1024个单位的递归神经网络(rnn,recurrentneuralnetwork)组成的rnn语言模型,并通过浅层融合将语言模型集成到波束搜索中。对于所有实验,语言模型的权重都为0.2,然后经过50个周期的训练后,将最后10个周期的参数取平均值作为最终模型。在解码阶段,对所有模型都设置波束搜索的宽度为5。
4、实验结果:
表1与代表性asr模型的cer比较结果
根据同一基准的比较实验,从表1可得,本发明提出的方法resgsa-transformer优于基准模型。具体而言,gsa-transformer优于sa-transformer,这表明动态窗口比固定窗口具有更好的局部建模能力;resgsa-transformer实现了所有比较方法中的最佳性能,它相对于sa-transformer和masking-transformer,cer分别降低了7.8%和6.8%。
本文用于企业家、创业者技术爱好者查询,结果仅供参考。