本发明涉及语音识别领域,具体是一种由双编码器组成的transformer的重庆方言语音识别方法。
背景技术:
1、阿尔兹海默症(ad)是一种增龄性综合征,其发病率随年龄增长而迅速上升,成为继心脏病、脑血管病、肿瘤之后老年人的第四大“杀手”,但是对于重庆市以及全球的欠发达地区而言,对其知晓率、就诊率、诊断率和治疗率均低于世界平均水平。因此能精准识别重庆方言的自动语音识别技术,将有助推广痴呆病症的早筛,特别是阿尔兹海默症的早筛。临床研究表明,与ad和轻度认知障碍(mci)相关的可量化的认知下降迹象在患者语言中是可检测到的。机器学习(ml)模型已被证明可以成功地使用语音和语言变量检测ad,例如从语音识别到的文本中分析句子内容可以推测患者健康状况。由于转录本应该足够准确以正确表示句法和语言特征,因此当前的方法通常依赖于由受过训练的转录员做转录。但这将耗费大量的时间和精力,因此在本文中,本发明将重点关注如何提高自动语音识别(asr)技术在重庆方言识别的准确率。中文是一个以音节为基本单位的语言,我们首先分析了普通话和重庆方言在音节方面的差异,主要对比了声母和韵母的差异,同时,部分老年人的发音存在口齿不清等情况,这对服务于该类用户的语音识别模型提出了更高要求,因此不论采用end-to-end的自动语音识别模型还是pipeline的自动语音识别模型,单模型结构将很难捕捉到字符的不同发音,因此在重庆方言的语音识别应用上,其准确率很有限。
2、自动语音识别(asr)的输出是一段文本,对于一个好的自动语音识别模型(asr)而言,输出的文本应该是符合语言模型的,这一点特性和自然语言生成比较类似。因此如果使用卷积神经网络(cnn),由于卷积神经网络(cnn)只关注局部信息,无法捕捉文本上下文关系,因此卷积神经网络(cnn)无法满足语言模型的要求,循环神经网络(rnn)在长序列上存在梯度消失和爆炸的局限,因此也限制了循环神经网络(rnn)在语音识别任务上的有效性。本发明将选择基于语言模型的序列到序列的注意力模型transformer。该模型通常由一个编码器和一个解码器组成,其中编码器可以由多个循环神经网络(rnn)层组成。注意力层主要作为编码器和解码器之间的接口,这种模型架构避免了重复计算,因为transformer完全依赖于注意力机制,学习输入和输出之间的全局依赖关系,并允许更多的并行化计算,在机器翻译等自然语言生成任务中取得了不错的效果。针对重庆方言的特点,本发明提出了一个双encoder的transformer结构,在将两个encoder的输出经过不同的解码器,使最终模型的输出可以将两个不同解码器的输出融合在一起,增强了整个transformer的鲁棒性。
3、asr技术是人工智能的重要组成部分,实现了计算机能“听懂”人的语音,asr技术的发展有助于人与更多的人工智能产品进行交流,实现“人机交互”,从而让人们享受到科技发展给生活带来的便利与高效,因此本发明提出的针对重庆方言的语音识别模型,将有助于重庆方言更精准地被计算机“识别”出来,从而使老年痴呆病症的早筛工作在更多区域得到推广。
4、asr的实现可分为pipeline或者end2end思路,其中主要区别在于声学模型的识别单元上。不同的模型识别单元(词发音模型、字发音模型、半音节模型或音素模型)对语音训练数据量大小、语音识别率,以及灵活性有较大的影响。对中等词汇量以上的语音识别系统来说,识别单元小,则计算量也小,所需的模型存储量也小,但带来的问题是对应语音段的定位和分割困难,以及更复杂的识别模型规则。随着深度学习的发展,其拥有的建模能力较强,会偏向于使用拼音、字、词模型。本发明也是基于词模型粒度开发。重庆方言由于在声母和韵母与普通话上存在一定的差异,且ad患者多数为老年人,他们发音常常存在口齿不清等情况,因此对于一般的transformer模型而言,很难捕捉到其中的差异以及有效信息。若用asr技术对量表定向力及即刻回忆等测试项需要分析受试者语音内容进行评分,其智能化测试的关键在于如何处理识别内容中受试者口齿不清及重庆方言等问题。
5、asr技术不论是pipeline或者end2end,在声学模型或语言模型上有待优化,总结如下:
6、1)基于统计的语言模型受语料大小影响,效果有限,且统计信息在语义层面表达能力有限。
7、2)在声学模型中没有融入语言模型,且大部分基于深度学习的声学模型采用cnn或者类rnn结构,无法实现大规模的并行计算。
8、3)由于老年人的重庆方言发音不准、口齿不清等问题,所以模型融合往往比单模型的准确率更高。
技术实现思路
1、本发明的目的是提供一种由双编码器组成的transformer的重庆方言语音识别方法,包括以下步骤:
2、1)获取语音数据。
3、所述语音数据包括方言。
4、2)对语音数据进行傅里叶转换,得到语音频谱图。
5、3)利用vgg网络对语音频谱图向量化,得到向量v。
6、向量v如下所示:
7、v=vgg(dft(a)) (1)
8、式中,a为语音数据。
9、4)获取transformer模型的输入x。所述transformer模型包括编码器encoder1、编码器encoder2和解码器decoder。编码器encoder1、编码器encoder2输出的值不同。
10、transformer的输入x如下所示:
11、x=pe(dft(a))+fbank(v) (2)
12、式中,pe为位置编码函数。
13、5)对输入x进行转化,得到参数q、参数k、参数v。
14、参数q、参数k、参数v如下所示:
15、q=xwq,k=xwk,v=xwv (3)
16、式中,wq、wk、wv为权重。
17、6)将参数q、参数k、参数v输入到transformer模型的编码器encoder1和编码器encoder2中,分别得到编码器输出y1和编码器输出y2。
18、7)将编码器输出y1输入到gate cnn网络中,得到语音识别文本概率分布p1;
19、将编码器输出y2输入到transformer模型的解码器中,得到语音识别文本概率分布p2;
20、编码器encoder包括多头注意力层、前向传播层。
21、多头注意力层的输出multihead(q,k,v)如下所示:
22、multihead(q,k,v)=concat(head1,...,headh)wo (4)
23、其中,参数headi如下所示:
24、headi=attention(qwiq,kwik,vwiv),i=1,2,...,h (5)
25、式中,h为attention层的层数;wiq、wik、wiv为第i层权重。
26、注意力attention(q,k,v)如下所示:
27、
28、式中,为归一化参数;
29、前向传播层的输出ffn(x)如下所示:
30、ffn(x)=max(0,xw1+b1)w2+b2 (7)
31、式中,b1、b2为偏置;
32、前向传播层的输入x如下所示:
33、x=norm(x+multihead(q,k,v)) (8)
34、encoder编码器的输出y如下所示:
35、y=ffn(x) (9)
36、编码器的损失函数loss如下所示:
37、loss=loss1+α*losskl (10)
38、式中,loss1为解码的损失函数;α为在总的损失函数中,散度损失函数所占的权重;
39、其中,kl散度损失函数losskl如下所示:
40、
41、式中,l为编码器数量;y1,n、y2,n为第n个编码器的输出。
42、8)计算得到语音识别文本p。
43、语音识别文本p如下所示:
44、p=(1-λ)*p1+λ*p2 (12)
45、式中,λ为权重系数。
46、本发明的技术效果是毋庸置疑的,本发明针对语音识别(asr)技术应用在重庆方言与普通话的差异做了分析,并根据重庆老年人在发音中存在的不准以及不清等情况,采用了两次dropout来增加整个asr模型的鲁棒性。
47、根据两次dropout得到的结果,本发明设计了两个不同的解码器分别对两个dropout输出做解码,进一步增加了整个解码结构的鲁棒性。