module)、卷积模块(convolution module)、前馈模块(feedforward module)和层归一化,conformer编码器中每个模块后均设置一个残差单元,其中,前馈模块与多头自注意力模块之间、前馈模块与层归一化之间采用半步残差连接;所述的多头自注意力模块包括层归一化、集成相对正弦位置编码的多头自注意力和dropout;所述的卷积模块包含一个扩展因子为2的逐点卷积,通过glu激活层投影通道数,然后是一维深度卷积,一维深度卷积后接batchnorm和swish激活层。共享conformer编码器将输入的帧级别声学特征x=(x1,...x
t
)映射到序列高级表示h=(h1,h2,...,hu)。
15.所述的las注意力解码器采用两层的单向lstm结构,且引入注意力机制。具体解码过程为:利用局部注意力(local-attention)来关注共享conformer编码器器输出的信息,利用lstm来解码出信息,在每个lstm的输出过程中,las注意力解码器将已经生成的文本(y1,y2,...,y
s-1
)联合共享conformer编码器输出特征h=(h1,h2,...,hu)进行注意力解码,最终生成目标转录序列y=(y1,y2,...,ys),从而得到输出序列y的概率如下:
[0016][0017]
在每个时间步t,通过注意力机制计算输出对编码器特征h的条件依赖。注意力机制是当前解码器隐藏状态和编码器输出特征的函数,通过以下机制将编码器特征压缩为上下文向量u
it
。
[0018][0019]
其中hi为共享conformer编码器输出特征;向量ba,以及矩阵wh,wd都是经过学习得到的参数;d
t
表示解码器在时间步数t的隐藏状态。然后对u
it
进行softmax,得到attention分布:
[0020]
α
t
=softmax(u
t
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0021]
利用α
it
通过对hi加权求和得到相应的上下文向量:
[0022][0023]
每一时刻,用于捕捉先前输出上下文的注意力解码器隐藏状态d
t
经以下方式得到:
[0024][0025]
其中d
t-1
是上一个隐藏状态,是通过y
t-1
学习得到的嵌入层向量。在t时刻,输出y
t
的后验概率如下:
[0026]
p(y
t
|h,y<t)=softmax(ws[c
t
;d
t
]+bs)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
[0027]
其中ws和bs可学习参数。
[0028]
所述的ctc解码器以共享conformer编码器输出特征h作为输入进行解码,经过softmax层之后,ctc解码器的输出为p(q
t
|h),q
t
为t时刻的输出,则标签序列l为所有路径概率总和:
[0029]
[0030]
式中:γ(q
t
)为标签序列的多对一的映射。因为同一个标签序列可能有多条路径与其对应,所以需要去掉路径中的重复的标签和空白标签。q
t
∈a,t=1,2,...,t,a为加了空白标签
“‑”
的标签集合,输出序列中概率最大的标注序列l
*
为:
[0031]
l
*
=arg
l
maxp(l|h)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)
[0032]
ctc解码器的损失函数是所有标签的负对数概率和,可以通过反向传播训练ctc网络:
[0033]
ctc
loss
=-logp(l|h)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(10)
[0034]
在ctc解码器训练中跳过中间层之后的所有层,加入中间层音素级别ctc损失,即interctc
loss
作为辅助任务诱导出一个子模型。通过获得ctc解码器的中间表示以计算子模型的损失,与ctc解码器完整模型一样,子模型损失函数如下式:
[0035][0036]
其中,表示子模型的输出。
[0037]
基于conformer的混合ctc/attention模型使用ctc解码器和las注意力解码器联合优化模型参数,同时加入中间层音素级别ctc解码器损失,用于正则化较底层参数,因此,在训练过程中定义损失函数如下式:
[0038]
t
loss
=λctc
loss
+μinterctc
loss
+(1-λ-μ)att
loss
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(12)
[0039]
其中,ctc
loss
,interctc
loss
,att
loss
分别是ctc解码器损失,中间层音素级别ctc解码器损失与las注意力解码器损失,λ和μ是两个超参数,用于衡量ctc解码器、中间层音素级别ctc解码器与las注意力解码器权重。
[0040]
训练过程中使loss下降曲线收敛到平稳,结束训练,得到最终模型;
[0041]
三、对基于conformer的混合ctc/attention模型进行训练,使用训练好的模型对验证集进行验证,实现端到端中文语音识别。
[0042]
本发明的技术效果:本发明提出了conformer-las-ctc声学模型用于端到端语音识别。我们研究了不同编解码器组合的识别效果,证明了conformer编码器与las解码器组合,并添加音素级别ctc辅助解码,引入中间ctc损失联合训练。该模型在aishell-1数据集上显示出最好的性能。本发明还对比了传统语音识别模型和其他端到端模型,验证了conformer-las-ctc声学模型的先进性。该模型在conformer decoder具有3层lstm网络时达到了cer4.54%的最佳性能。未来的研究中会探索不同的超参数对模型的影响,以及会研究融合外部语言模型解码提升模型的鲁棒性。
附图说明
[0043]
图1是conformer编码器模型架构;
[0044]
图2是las模型架构;
[0045]
图3是conformer-las-ctc语音识别模型;
[0046]
图4是训练过程损失;
[0047]
图5是验证集上字错率。
具体实施方式
[0048]
1相关工作
[0049]
1.1conformer编码器
[0050]
由anmol gulati【gulati a,qin j,chiu c c,et al.conformer:convolu-tion-augmented transformer for speech recognition[j].arxiv preprint arxiv:2005.08100,2020.】提出的conformer对比【dong l,xu s,xu b.speech-transformer:a no-recurrence sequence-to-sequence model for speech recognition[c]//2018ieee international conference on acoustics,speech and signal processing(icassp).ieee,2018:5884-5888.】将卷积和自我注意相结合,自我注意学习全局交互作用,而卷积有效地捕获基于相对偏移的局部相关性,从而获得了比单独使用卷积或自我注意更有效的结果。conformer encoder首先使用卷积子采样层处理输入,然后使用大量的conformer block代替【zhang q,lu h,sak h,et al.transformer transducer:a streamable speech recognition model with transformer encoders and rnn-t loss[c]//icassp 2020-2020ieee in-ternational conference on acoustics,speech and signal processing(icassp).ieee,2020:7829-7833.】【karita s,chen n,hayashi t,et al.a comparative study on transformer vs rnn in speech applications[c]//2019ieee automatic speech recognition and understanding workshop(asru).ieee,2019:449-456.】中的transformer块来处理输入,图1左边展示了conformer编码器整体架构,右边展示了conformer block具体结构:
[0051]
其中conformer block是由前馈模块(feedforward module),多头自注意模块(multi-head self-attention module),卷积模块(convolution module)三个模块组成,conformer block前后各有一个前馈层,多头自注意力模块和卷积模块被夹在中间,并且前馈层采用半步残差连接,每个大模块后面跟着层归一化(layernorm),每个模块上都采用了残差单元。通过这种结构,将卷积和attention串联起来达到增强的效果。
[0052]
采用的多头自注意模块(mhsa)中,还集成了transformer xl的一项重要技术,即相对正弦位置编码方案。相对位置编码使得自我注意模块在不同的输入长度上具有更好的泛化能力,并且产生的编码器对话语长度的变化具有更强的鲁棒性。
[0053]
卷积模块包含一个扩展因子为2的逐点卷积,通过glu激活层投影通道数,然后是一维深度卷积,卷积后接batchnorm和swish激活层。
[0054]
在conformer block中,前后都部署了相同的feedforward module,每个ffn都贡献一半的值,称为半步ffn。在数学上,对于第i个conformer block的输入xi,输出hi计算公式如下:
[0055][0056]
其中,ffn是指前馈模块,mhsa是指多头自注意力模块,conv是指卷积模块,
layernorm表示层归一化,每个模块间都使用残差连接。
[0057]
1.2las解码器
[0058]
las模型包含了编码器listener,解码器speller和一个注意力网络,大致模型架构如下图所示。
[0059]
其中listener是声学模型的编码器,执行编码操作,这个操作将输入声学序列x=(x1,...,x
t
)转换为高层次的表示h,其中高级别特征序列h的长度可以和输入声学序列x一样,或者得到下采样后的短序列。
[0060]
本发明探索了blstm,transformer,conformer三种不同的模型结构作为listener对整体语音识别模型的影响。
[0061]
speller是一个基于注意力机制的解码器,在每个输出步骤中,转换器都会根据之前看到的所有字符生成下一个字符的概率分布,从而得到输出序列y的概率如下:
[0062][0063]
在每个时间步t,通过注意力机制计算输出对编码器特征h的条件依赖。注意力机制是当前解码器隐藏状态和编码器输出特征的函数,通过以下机制将编码器特征压缩为上下文向量u
it
。
[0064][0065]
其中,向量ba,以及矩阵wh,wd都是经过学习得到的参数;d
t
表示解码器在时间步数t的隐藏状态。然后对u
it
进行softmax,得到attention分布:
[0066]
α
t
=softmax(u
t
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0067]
利用α
it
通过对hi加权求和得到相应的上下文向量:
[0068][0069]
每一时刻,用于捕捉先前输出上下文的解码器隐藏状态d
t
经以下方式得到:
[0070][0071]
其中d
t-1
是上一个隐藏状态,是通过y
t-1
学习得到的嵌入层向量。在t时刻,输出y
t
的后验概率如下:
[0072]
p(y
t
|h,y<t)=softmax(ws[c
t
;d
t
]+bs)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
[0073]
其中ws和bs可学习参数。最后,模型损失函数定义为:
[0074]
att
loss
=-log(p(y|x))
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
[0075]
1.3连接时序分类(connectionist temporal classification,ctc)
[0076]
ctc在标注符号集中加入了一个空白符号(blank),它意味着此帧没有预测值输出。因而在模型的预测输出中就包含了很多空白符号,一个音素对应的一整段语音中只有一个尖峰被识别器确认,其他都被识别为空白,结果相当于自动的切分了音素边界,实现了将空白符号和连续出现的状态进行了消除,就能得到最终预测的字符序列。
[0077]
在给定输入序列h下,经过softmax层输出之后,网络的输出为p(q
t
|h),q
t
为t时刻
的输出,则标签序列l为所有路径概率总和为:
[0078][0079]
式中:γ(q
t
)为标签序列的多对一的映射。因为同一个标签序列可能有多条路径与其对应,所以需要去掉路径中的重复的标签和空白标签。q
t
∈a,t=1,2,...,t,a为加了空白标签
“‑”
的标签集合,输出序列中概率最大的标注序列为:
[0080]
l
*
=arg
l
maxp(l|h)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)
[0081]
ctc的损失函数是所有标签的负对数概率和,可以通过反向传播训练ctc网络:
[0082]
ctc
loss
=-logp(l|h)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(10)
[0083]
2模型架构
[0084]
为了实现更好的语音识别模型,本发明采用conformer模型作为编码器(listener),las模型的attention and spell部分与ctc模型联合解码,共同构造端到端的conformer-las-ctc语音识别系统。图3给出了该模型架构。
[0085]
它包括三个部分,一个共享编码器,一个ctc解码器和一个注意力解码器。共享编码器由n个conformer编码器层组成。ctc解码器由线性层和对数softmax层组成,ctc损失函数应用于训练中的softmax输出。las解码器结构在前文1.2中详细介绍。
[0086]
2.1 conformer与las结合
[0087]
和其他编码器模型的对比实验中,conformer都实现了最好的效果。其中卷积块在效果上最为重要,两个半步ffn的效果也优于只有一个ffn的结构。在多头自注意力机制中集成相对正弦位置编码,即使输入长度不同,自我注意模块也具备很好的泛化能力和更强的鲁棒性。所以在本发明提出的模型中,使用conformer编码器将输入的帧级别声学特征x=(x1,...xm)映射到一种序列高级表示(h1,h2,...,hu)。
[0088]
las解码器则通过使用注意力机制指定字符序列的概率分布,相较于其他端到端模型,las网络生成字符序列,而不对字符之间进行任何独立假设。这也决定了该模型解码会带来更好的精确度。在本发明提出的结构中,采用conformer编码器与las解码器联合,解码器将已经生成的文本(y1,y2,...,y
s-1
)联合隐藏状态(h1,h2,...,hu)进行注意力解码,将这些更高级别的特征转换解码,最终生成目标转录序列(y1,y2,...,ys)。
[0089]
2.2 ctc辅助训练
[0090]
由于ctc可以被视为一种能够直接优化输入序列与输出目标序列似然度的目标函数,在此目标函数下,ctc在训练过程中自动学习并优化输入、输出序列的对应关系,所以本发明结构加入音素级别ctc解码器辅助训练。
[0091]
在残差网络正则化技术中,随机深度通过随机跳过一些层来帮助训练非常深的网络,但由于其集成策略,它对正则化低层无效。受此启发,在ctc训练中跳过中间层之后的所有层,加入中间ctc损失(interctc
loss
)作为辅助任务来诱导子模型。训练依赖于较低层的子模型可以规范整个模型的较低部分,从而进一步改善ctc的性能。
[0092]
我们考虑具有ctc损失函数的n层编码器,由于子模型和完整模型共享较低的结构,通过获得模型的中间表示以计算其相应的ctc损失,与完整模型一样,对子模型同样使用ctc损失:
[0093][0094]
子模型的输出表示为即完整模型的中间表示。再用原始ctc损失和中间ctc损失进行训练,以很小的计算开销正则化较低层。
[0095]
2.3多任务损失
[0096]
ctc可以学习声学特征和标签序列之间的单调对齐,这有助于编码器更快地收敛;基于注意的解码器可以学习目标序列之间的依赖关系。因此,将ctc和注意损失相结合不仅有助于基于注意的解码器的收敛,而且使混合模型能够利用标签依赖性。
[0097]
本发明模型使用ctc和las解码器联合优化模型参数,同时加入中间层音素级别ctc损失,用于正则化较底层参数,以进一步提高模型性能,因此,在训练过程中定义损失函数如下式:
[0098][0099]
其中,ctc
loss
,interctc
loss
,att
loss
分别是ctc损失,中间层ctc损失与attention损失,λ和μ是两个超参数,用于衡量ctc、中间层ctc与attention权重。
[0100]
3实验结果及分析
[0101]
3.1实验数据
[0102]
本发明实验使用的数据集为希尔贝壳开源的178h数据集(aishell-1),采样率16khz。包括400位来自中国不同口音区域的发音人,语料内容涵盖财经、科技、体育、娱乐、时事新闻。其中按无交叠原则划分为训练集、验证集以及测试集,训练集120418条音频,验证集14331条音频,测试集7176条音频。
[0103]
3.2实验平台
[0104]
本发明实验所采用的硬件配置为intel(r)core(tm)i7-5930k处理器,32gb运行内存,gpu显卡为nvidia geforce gtx titan x;软件环境为64位ubuntu18.04操作系统上搭建的pytorch深度学习环境。
[0105]
3.3实验步骤
[0106]
本发明实验中,使用80维fbank(filter banks)作为输入特征,其中帧长为25ms,帧移为10ms。在训练时我们使用adam【kingma d p,ba j.adam:a method for stochastic opti-mization[j].arxiv preprint arxiv:1412.6980,2014.】优化器,并使用【zhang q,lu h,sak h,et al.transformer transducer:a streamable speech recognition model with transformer encoders and rnn-t loss[c]//icassp 2020-2020ieee in-ternational conference on acoustics,speech and signal processing(icassp).ieee,2020:7829-7833.】中的学习率自适应变化策略,其中热身步数为25k,最高学习率为0.001。本发明实验对于训练集音频应用变速0.9,1.1来扩充数据集
[26]
,以及使用google提出的specaugment【park d s,chan w,zhang y,et al.specaugment:asimple data augmentation method for automatic speech recogni-tion[j].arxiv preprint arxiv:1904.08779,2019.】来随机掩盖时域频域的一部分信息,其中掩盖参数为f=27,t=100。在音频特征输入部分使用两个2-d卷积神经网络(cnn)模块,每个模块都有两个卷积神经网络以及批次归一化层(batchnorm2d)以及relu激活函数,每个cnn都有32个滤波器组,
每个滤波器内核大小为3x3,步长为1。然后接2维最大池化层(2d-maxpool),内核大小为2x2,步长为2,然后再通过线性层(linear)输出为256的维度,最后再使用2个核大小为2,步长为2的一维最大池化层(1d-maxpool)进行下采样,减少语音特征冗余信息。主体网络结构是las,listen使用基于conformer的encoder结构中参数配置为多头注意层使用d_model=256,h=4,前馈神经网络层d_ff=1024,卷积模块中pointwise cnn输入通道为256,输出为512,卷积核大小为1,depthwise cnn输入通道为256,输出通道为256,卷积核大小为15,其中使用的swish
[28]
激活函数,每个模块之前都使用了layernorm和残差连接来加速模型训练收敛,使用每层dropout比率为0.1来提高模型鲁棒性。在编码器中间层,使用了基于音素级别的ctc loss(权重为0.1)来辅助训练,attend中利用局部注意力(local-attention)来关注编码器器输出的信息,spell利用lstm来解码出信息,其中输入维度为1024,训练中使用dropout,比率为0.3。本发明所有的实验结果都是在无外部语言模型和超参数优化的情况下得到的。
[0107]
3.4实验分析
[0108]
本发明首先在aishell-1数据集上验证了所提出的conformer-las,以及使用音素级别中间层ctc损失(权重为0.1)辅助训练的conformer-las-ctc效果,并将其与基线模型以及其他编解码器组合模型的实验效果进行对比,如表1所示。我们使用字错率cer作为评判标准,所有的评估结果都四舍五入保留至小数点后2位。
[0109]
表1不同编解码器在aishell-1上的实验结果
[0110][0111]
从表1可以看出:
[0112]
(1)在解码器都采用las模型时,所提出的conformer-las-ctc模型相对于以blsm为编码器的模型测字错率相对降低了19.52%,相对于transformer编码器模型更是相对降低了46.74%。
[0113]
(2)使用音素级别中间ctc损失辅助训练的conformer-las-ctc(+inter ctc)模型获得了最优效果,相对于conformer-las-ctc模型在测试集上又获得了2.11%的提升。
[0114]
为了更好的体现各模型之间的差异,本发明在训练集中每隔1000步选取一个损失值,各模型在训练集上的损失曲线如图4所示;在验证集中选取前80epoch,训练过程的识别字错率(cer)曲线如图5所示。
[0115]
从图4训练过程损失曲线中可以看出,在最初的0-10k步中,conformer-las-ctc就
recognition.application research of comput-ers:1-6[2021-12-27].doi:10.19734/j.issn.1001-3695.2021.08.0323.
[0123]
(5)liang c,xu m,zhang x l.transformer-based end-to-end speech recognition with residual gaussian-based self-attention[j].arxiv preprint arxiv:2103.15722,2021.
[0124]
(6)li s,xu m,zhang x l.conformer-based end-to-end speech recognition with rotary position embedding[j].arxiv preprint arxiv:2107.05907,2021.
[0125]
从表中相比于其他端到端模型,本发明提出的模型也进一步降低了字错率,这清楚地证明了所提出的conformer-las-ctc模型的有效性。
[0126]
为了进一步验证所提出的模型性能,我们还探索了不同解码层数对语音识别效果的影响,通过控制las解码器中所采用的lstm层数分别为1层、2层、3层,将获得的实验结果进行对比,结果如表3所示。
[0127]
表3不同解码层次实验结果
[0128][0129]
从表中可以看出随着spell层数增加,语音识别模型在测试集上的字错率逐渐下降,由此得出更多的解码器层将有利于获得更好的识别效果。所提出的模型在组合3层解码层时达到了4.54%的错误率。