语音识别方法及设备、计算机可读存储介质与流程

文档序号:31831589发布日期:2022-10-18 18:21阅读:63来源:国知局
语音识别方法及设备、计算机可读存储介质与流程

1.本发明涉及一种语音识别方法及设备、计算机可读存储介质。


背景技术:

2.随着人工智能领域相关的研究和工程技术的发展,语音识别(automatic speech recognition,asr)技术作为人机交互中的技术手段之一,逐渐走进人们的日常生活当中。语音识别能力已经是手机、音箱、车载系统、电视机等终端设备不可或缺的能力之一。
3.在语音识别技术的实际应用中,根据语音技术应用场景的差异性,语音识别可进一步分为短语音识别和长语音识别。长语音识别中,受限于计算设备的运行内存和计算能力,过长的音频不能直接送入语音识别引擎进行语音识别。面对这样的问题,传统方法是在部署语音识别引擎的同时部署一个端点检测引擎,即人声区间检测(voice activity detection,vad)引擎。然而,因vad模型存在音频切分生硬、语音端点的识别精度有限、易受噪声干扰、切分语义模糊等问题,导致长语音识别结果准确率低。


技术实现要素:

4.鉴于相关技术的以上问题,本技术提供一种语音识别方法及设备、计算机可读存储介质,其无需诸如vad等高复杂度模型即可实现较高准确率的长语音连续识别。
5.为达到上述目的,本技术第一方面提供一种语音识别方法,所述方法包括:
6.获取待识别语音;
7.切分所述待识别语音以获得多条语音段,所述多条语音段的相邻语音段中在前语音段的尾部与在后语音段的头部重叠;
8.利用基于注意力机制的语音识别模型,获得所述多条语音段中各条语音段的注意力数据和初始文本段;
9.从所述各条语音段的注意力数据中提取其人声数据;
10.根据所述各条语音段的初始文本段、所述人声数据和重叠时长,获得所述各条语音段的修正后文本段,所述多条语音段的相邻语音段中在前语音段的修正后文本段中对应所述尾部的文本与在后语音段的修正后文本段中对应所述头部的文本相同;
11.拼接所述多条语音段中各条语音段的修正后文本段,得到所述待识别语音的识别文本。
12.由此,无需vad等高复杂度模型即可实现较高准确率的长语音连续识别。
13.作为第一方面的一种可能的实现方式,所述切分所述待识别语音以获得多条语音段,具体包括:按照固定窗长和/或固定重叠时长切分所述待识别语音,以获得时间长度和/或重叠部分长度相等的所述多条语音段。
14.由此,可提高语音段处理的并行度,进而提升本技术实施例方法的处理效率,同时可消除因切分得到的音频过长而导致语音识别模型崩溃的情况。
15.作为第一方面的一种可能的实现方式,所述基于注意力机制的语音识别模型为编
码器-解码器结构的模型,所述编码器-解码器结构的模型包含编码器、解码器,所述解码器的多个解码层中设置有注意力模块,所述注意力数据是通过所述多个解码层中最后一层的所述注意力模块输出的注意力矩阵获得的。
16.由此,可以较少的运算量提取到更好的人声特征。
17.作为第一方面的一种可能的实现方式,所述基于注意力机制的语音识别模型是通过多目标损失函数训练得到的,所述多目标损失函数包括至少一个具有帧对齐能力的损失函数。
18.由此,不仅可使语音识别模型具有更高的识别精度,同时可使编码器输出的隐藏状态中包含帧对齐信息,进而使得解码器获得的注意力数据中包含较为清晰的人声区间信息,以便由注意力数据获得高精度的人声数据。
19.作为第一方面的一种可能的实现方式,所述注意力数据具有字维度和帧维度;所述从所述各条语音段的注意力数据中提取其人声数据,具体包括:
20.按照所述字维度遍历所述注意力数据以提取字维度的注意力向量;
21.根据所述字维度的注意力向量和预先配置的阈值,得到字维度的人声向量;
22.对每个所述语音段对应的所述字维度的人声向量中的数值进行累加求和,以获得每个所述语音段的人声序列,所述人声序列包括所述语音段中各音频帧的人声信息,所述人声信息用于指示所述音频帧属于人声或不属于人声。
23.由此,无需诸如vad模型等高复杂度的模型即可提取到数据粒度为音频帧的人声数据,不仅可保证语音识别的连续性和准确性,而且避免了vad模型在噪声场景误识别的问题,减少了vad模型的开发和维护成本。
24.作为第一方面的一种可能的实现方式,所述字维度的人声向量是通过下式得到的:
[0025][0026]
其中,threda表示所述阈值,ms[l,t]表示字维度l的人声向量中音频帧t的取值,ma[l,t]表示字维度l的注意力向量中音频帧t的取值。
[0027]
由此,通过简单的阈值判断即可从注意力向量中获得人声向量。
[0028]
作为第一方面的一种可能的实现方式,所述根据所述各条语音段的初始文本段、所述人声数据和重叠长度,获得所述各条语音段的修正后文本段,具体包括:
[0029]
针对所述多条语音段中的各对相邻语音段执行如下步骤:
[0030]
从相邻语音段的初始文本段中提取交叠文本,所述交叠文本包括所述相邻语音段中在前语音段的交叠文本和在后语音段的交叠文本,所述在前语音段的交叠文本对应其人声数据中长度是所述重叠时长的尾部,所述在后语音段的交叠文本对应其人声数据中长度是所述重叠时长的头部;
[0031]
对齐所述在前语音段的交叠文本与所述在后语音段的交叠文本,以获得所述相邻语音段的对齐文本,所述对齐文本包括在前语音段的对齐文本和在后语音段的对齐文本;
[0032]
根据所述在前语音段的对齐文本中字的置信度和在后语音段的对齐文本中字的置信度,得到所述相邻语音段的修正文本,所述在前语音段的修正文本与在后语音段的修正文本相同;
[0033]
使用所述相邻语音段的修正文本获得所述相邻语音段中在前语音段的修正后文本段和在后语音段的修正后文本段。
[0034]
由此,通过对语音段交叠区域的识别结果进行对齐和修正,即可提升语音段切分分界处的识别准确率,进而提升待识别语音的整体识别准确率。
[0035]
作为第一方面的一种可能的实现方式,,所述字的置信度至少包括如下之一:字的帧对齐置信度、字的注意力置信度、字的语言置信度和字的位置置信度。
[0036]
由此,可融合语音识别模型的性能、语言逻辑和字位置等各种因素来进行文本修正。
[0037]
作为第一方面的一种可能的实现方式,根据所述在前语音段的对齐文本中字的置信度和在后语音段的对齐文本中字的置信度,得到所述相邻语音段的修正文本,具体包括:按照所述在前语音段的对齐文本中字的综合评分和在后语音段的对齐文本中所述字的综合评分,得到所述相邻语音段的修正文本;其中,所述字的综合评分是以所述字的位置置信度为惩罚项而确定的。
[0038]
由此,引入字的位置置信度作为字综合评分的惩罚项,可纠正短语音端点处识别效果差给长语音整体识别精度带来的影响。
[0039]
作为第一方面的一种可能的实现方式,所述字的位置置信度通过下式计算得到:
[0040]
posscore=-β|l-l/2|
[0041]
其中,posscore表示所述字的位置置信度取值,l表示字在对齐后文本段中的位置,l表示对齐后文本段中包含的字数,β表示预先设置的位置权重,所述对齐后文本段是使用所述对齐文本替换所述初始文本段中交叠文本而获得的文本段。
[0042]
由此,位置置信度采用负数表示,可对靠近切分边界处的识别结果进行一定的惩罚,能够弥补切分边界处语音识别结果较差的情况,进而有效提升待识别语音识别结果的整体识别准确度。
[0043]
作为第一方面的一种可能的实现方式,所述字的综合评分是通过下式计算获得的:
[0044]
jointscore=α
×
ctcscore+λ
×
attscore+η
×
lmscore+posscore
[0045]
其中,jointscore表示字的综合评分,ctcscore表示字的帧对齐置信度,attscore表示字的注意力置信度,lmscore表示字的语言置信度取值,posscore表示字的位置置信度取值,α表示字的帧对齐置信度的权重,λ表示字的注意力置信度的权重,η表示字的语言置信度的权重。
[0046]
由此,利用预先设置的权重通过加法和乘法即可结合帧对齐、注意力、语言和字位置等各因素来确定字的综合评分,硬件成本低,易于实现。
[0047]
作为第一方面的一种可能的实现方式,所述按照所述在前语音段的对齐文本中字的综合评分和在后语音段的对齐文本中所述字的综合评分,得到所述相邻语音段的修正文本,具体包括:
[0048]
通过下式调整相邻语音段中的对齐文本中的每个字:
[0049][0050]
其中,uri[l](i=1,......n-1)表示语音段ai的修正文本中位置1的字,n为所述语音段的数量,upai[l]表示语音段ai的对齐文本中位置l的字,upai+1[l]表示语音段ai+1的对齐文本中位置1的字,jointscore(upai[l])表示语音段ai的对齐文本中位置l的字的综合评分,jointscore(upai+1[l])表示语音段ai+1的对齐文本位置1中的字的综合评分,*表示占位符。
[0051]
由此,仅需调整相邻语音段中重叠部分的文本即可实现文本修正,不仅提升了语音段切分分界处的识别准确率,提升了待识别语音的整体识别准确率,而且运算量少,计算复杂度低,有利于降低硬件成本和提升处理效率。
[0052]
作为第一方面的一种可能的实现方式,所述方法还包括:根据所述修正后文本段中字的置信度,获得所述待识别语音的识别文本的置信度。
[0053]
由此,可在向用户提供待识别语音的识别文本的同时,提供该识别文本的置信度,便于用户参考置信度来生成语音的转写文本。
[0054]
作为第一方面的一种可能的实现方式,所述方法还包括:利用所述注意力数据得到所述多条语音段中各条语音段的人声置信度。
[0055]
由此,可在向用户或其设备提供待识别语音的人声数据的同时,提供相应的人声置信度,便于用户或其数据参考人声置信度和人声数据来生成语音的转写文本。
[0056]
本技术第二方面提供一种计算设备,包括:至少一个处理器;以及,至少一个存储器,其存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行上述的语音识别方法。
[0057]
本技术第三方面提供一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行上述的语音识别方法。
[0058]
本发明的这些和其它方面在以下(多个)实施例的描述中会更加简明易懂。
附图说明
[0059]
以下参照附图来进一步说明本技术的各个特征和各个特征之间的联系。附图均为示例性的,一些特征并不以实际比例示出,并且一些附图中可能省略了本技术所涉及领域的惯常的且对于本技术非必要的特征,或是额外示出了对于本技术非必要的特征,附图所示的各个特征的组合并不用以限制本技术。另外,在本说明书全文中,相同的附图标记所指代的内容也是相同的。具体的附图说明如下:
[0060]
图1是本技术实施例语音识别方法的流程示意图;
[0061]
图2是本技术实施例语音识别方法的示例性实现过程示意图;
[0062]
图3是本技术实施例中语音定窗长重叠切分的示例图;
[0063]
图4是本技术实施例语音识别方法中语音识别模型的示例性网络结构;
[0064]
图5是本技术实施例语音识别方法中注意力数据的示例图;
[0065]
图6是本技术实施例语音识别方法中提取人声数据的示例性流程示意图;
[0066]
图7是本技术实施例语音识别方法中对齐修正初始文本段的示例性流程示意图;
[0067]
图8是本技术实施例语音识别装置的结构示意图;
[0068]
图9是本技术实施例计算设备的结构示意图。
具体实施方式
[0069]
说明书和权利要求书中的词语“第一、第二、第三等”或模块a、模块b、模块c等类似用语,仅用于区别类似的对象,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
[0070]
在以下的描述中,所涉及的表示步骤的标号,如s110、s120......等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
[0071]
说明书和权利要求书中使用的术语“包括”不应解释为限制于其后列出的内容;它不排除其它的元件或步骤。因此,其应当诠释为指定所提到的所述特征、整体、步骤或部件的存在,但并不排除存在或添加一个或更多其它特征、整体、步骤或部件及其组群。因此,表述“包括装置a和b的设备”不应局限为仅由部件a和b组成的设备。
[0072]
本说明书中提到的“一个实施例”或“实施例”意味着与该实施例结合描述的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在本说明书各处出现的用语“在一个实施例中”或“在实施例中”并不一定都指同一实施例,但可以指同一实施例。此外,在一个或多个实施例中,能够以任何适当的方式组合各特定特征、结构或特性,如从本公开对本领域的普通技术人员显而易见的那样。
[0073]
除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。如有不一致,以本说明书中所说明的含义或者根据本说明书中记载的内容得出的含义为准。另外,本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
[0074]
为了准确地对本技术中的技术内容进行叙述,以及为了准确地理解本技术,在对具体实施方式进行说明之前先对本说明书中所使用的术语给出如下的解释说明或定义。
[0075]
除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。如有不一致,以本说明书中所说明的含义或者根据本说明书中记载的内容得出的含义为准。另外,本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
[0076]
为了准确地对本技术中的技术内容进行叙述,以及为了准确地理解本发明,在对具体实施方式进行说明之前先对本说明书中所使用的术语给出如下的解释说明或定义。
[0077]
长语音,即较长的语音,也即在计算设备的现有运行内存和计算能力允许的情况下asr模型无法直接识别的语音。例如,10秒或以上的语音。
[0078]
长语音识别,即长语音的识别。例如,面向会议录音、电话录音或电影、电视音频等几十分钟、甚至几小时的音频的语音识别。
[0079]
短语音,即较短的语音,也即在计算设备的现有运行内存和计算能力允许的情况下asr模型能够直接识别的语音。例如,10秒以内的语音。
[0080]
短语音识别,即短语音的识别,语音文本内容简单以打电话、播放节目、播放音乐、
导航等垂直领域内容为主。手机、音箱、电视机的语音助手是一种典型的短语音识别应用。
[0081]
asr模型,能够将短语音识别为文本的一种机器学习模型。
[0082]
vad模型,利用端点检测算法识别长语音的语音起始点和结束点,进而将长语音切分成为多个连续的短语音段落,可实现语音段和非语音段的判别,但忽略了长语音的语义完整性。当用户语音中出现因为思考或犹豫而出现的停顿时,vad模型会误把用户这种停顿识别成语音的结束点,进而把一条完整的语音切分成为两个语义不完整的短语音段落,降低了短语音段落的语音识别效果。
[0083]
端点检测算法,包括短时能量和短时过零率分析方法或者基于神经网络模型分类语音和非语音的方法。其中,短时能量和短时过零率方法涉及到多个门限阈值的选取,需要较多的人力和时间调优才能获得较好的效果,且在不同使用场景下这些阈值通常还有较大的差异性。基于神经网络模型分类语音和非语音的方法,检测精度较大程度上依赖模型的训练语料,当模型实际部署场景与训练语料有较大差异时,端点检测算法很难达到有效精度。
[0084]
洗牌算法(fisher),动态规划算法的一种。
[0085]
连接时序分类(connectionist temporal classification,ctc)损失函数,一种具有帧对齐能力的损失函数,可以对没有对齐的数据进行自动对齐,主要用在没有事先对齐的序列化数据训练上。比如语音识别、光学字符识别(optica1 character recognition,ocr)等等。
[0086]
transducer损失函数,一种具有帧对齐能力的损失函数,常用于序列到序列模型的训练。
[0087]
kl散度(kullback-leibler divergence,kl-divergence)损失函数,计算输入和目标值之间的kl散度,kl散度是一种衡量两个概率分布的匹配程度的指标,两个概率分布越相近,kl散度越小。
[0088]
编码器-解码器(encoder-decoder)结构的神经网络模型,包括编码器(也称为编码模块或编码网络)和解码器(也称为解码模块或解码网络),一种基于循环神经网络的序列到序列模型,其后一层的输入依赖于前一层的输出。
[0089]
注意力(attention)机制,根据例如解码器等模型的当前输入与输出的匹配程度来决定解码器输出的注意力概率分布(即注意力分布),匹配程度高则注意力分布集中点的得分相对越高。注意力机制更多地用作神经网络的一个组件。
[0090]
多头注意力,利用多个查询来并行地从输入信息中选取多组信息,每个注意力关注输入信息的不同部分。
[0091]
transformer模块,基于注意力机制搭建的神经网络模型,可以是基于多头注意力机制的encoder-decoder结构,也可仅包含encoder或decoder中之一。
[0092]
人声数据,用于指示一段语音中哪些音频帧属于人声、哪些音频帧不属于人声的数据,包括多条人声信息,每条人声信息对应语音段中的一帧音频,人声信息的取值可用于指示相应音频帧是否属于人声。
[0093]
相关技术一:一种持续语音人机交互方法和系统,其公开的技术方案为:接收用户输入的持续语音信号;基于长语音切分技术将持续语音信号切分为多个短语音;基于动态语言模型对多个短语音进行识别,并为每个短语音生成对应的识别结果;基于上下文语义
解析技术对识别结果进行语义补全,并生成语义补全结果;以及基于对话管理技术生成语义补全结果对应的问答语句。
[0094]
相关技术一存在的缺陷包括:依赖vad模型对长语音进行切分,由于vad模型精度有限,同时音频切分生硬,该方案下语音识别结果的整体精度较差,且经常性地将整句长语音错误切分,导致各条短语音识别准确率也比较差。
[0095]
相关技术二:一种长语音连续识别及识别结果实时反馈方法和系统,其公开的技术方案为:在识别网络中增加句尾结束点到识别起始点的扩展可能性;解码过程中,识别路径在扩展时既可以生成单一句子,也可以生成多个连续句子,通过声学和语言概率的整体寻优来分割大篇幅语音信号;定期对所有活跃节点的最优历史路径的共有部分进行检测;获得当前时刻已经固定下来的识别单词序列;将更新的局部识别结果实时反馈给用户;回收已经确定下来的识别部分对应的解码空间。
[0096]
相关技术二存在的缺陷包括:在传统的基于隐马尔可夫模型的语音识别方法的基础上,对解码网络进行了改进,融合每一帧的语义、语调和静音时长来识别语音端点,对于端到端深度学习的语音识别模型(例如,asr)已不再适用。
[0097]
相关技术三:受限于计算设备的运行内存和计算能力,长时间的语音信号无法输入到asr模型中进行语音识别。为解决该问题,可以在部署语音识别引擎的同时部署一个端点检测引擎,即vad引擎。vad引擎能够识别出长语音中的语音起始点和结束点,进而将长语音切分成为多个连续的短语音段落,所得到的短语音段落逐个送入到asr引擎中进行语音识别,最后将asr引擎识别出的文本拼接起来即可得到长语音的识别结果。
[0098]
相关技术三存在的缺陷主要包括如下三项:
[0099]
1)vad引擎的语音端点识别精度有限,需要较多的人力和时间调优才能获得较好的效果。
[0100]
2)vad引擎实现的是语音段和非语音段的判别,忽略了语音中的语义完整性。当长语音中出现因用户思考或犹豫而出现的停顿时,vad引擎常常误把用户这种停顿识别成语音的结束点,进而把一条完整的长语音切分成为两个语义不完整的段落,这种语义不完整的短语音输入到asr引擎中,其识别结果通常较差。
[0101]
3)vad模型除存在识别精度有限、切分语义模糊的问题之外,还易受噪声干扰,这也对长语音识别结果的准确性造成了不良影响。
[0102]
有鉴于此,本技术实施例的基本思想是提供一种语音识别方法及设备、计算机可读存储介质,其先对待识别语音进行重叠式的切分以获得切分处彼此交叠的多个语音段,再通过基于注意力机制的语音识别模型获得这多个语音段的注意力数据、初始文本段,通过语音段的注意力数据提取其人声数据,再基于该人声数据和重叠时长对各初始文本段进行对齐修正获得修正后文本段,最后利用修正后文本段获得待识别语音的识别文本。由此,本技术实施例不依赖于vad模型即可实现语音切分并获取其人声数据,同时通过重叠式切分和文字修正的结合解决了切分引起的端点处识别准确率低的问题,有效提升了长语音连续识别的准确度,经实验验证,本技术实施例的字准率可以达到89%。可见,本技术实施例无需vad模型即可实现较高准确率的长语音连续识别。
[0103]
本技术实施例可适用于各类需要将连续语音转换为文本的场景。尤其适用于需将超长时间的音频数据自动转换成文本的场景,从而代替人工或减少人工听写音频的工作。
举例来说,本技术实施例可应用于诸如会议记录、庭审记录、采访记录等的转写场景,也可适用于音视频字幕生成等应用场景,可有效提升这些场景中长语音到文本的转写效率。
[0104]
图1示出了本技术实施例提供的语音识别方法的示例性流程。参见图1所示,本技术实施例的示例性语音识别方法可包括如下步骤:
[0105]
步骤s101,获取待识别语音;
[0106]
步骤s102,切分待识别语音以获得多条语音段,多条语音段的相邻语音段中在前语音段的尾部与在后语音段的头部重叠;
[0107]
步骤s103,利用基于注意力机制的语音识别模型,获得多条语音段中各条语音段的注意力数据和初始文本段;
[0108]
步骤s104,从各条语音段的注意力数据中提取其人声数据;
[0109]
步骤s105,根据各条语音段的初始文本段、人声数据和重叠时长,获得各条语音段的修正后文本段,多条语音段的相邻语音段中在前语音段的修正后文本段中对应所述尾部的文本与在后语音段的修正后文本段中对应所述头部的文本相同;
[0110]
步骤s106,拼接多条语音段中各条语音段的修正后文本段,得到待识别语音的识别文本。
[0111]
本技术实施例的语音识别方法无需诸如vad模型等高复杂度模型即可实现较高准确率的长语音连续识别。经实验验证,本技术实施例方法的字准率可以达到89%。而传统方法的字准率仅有72%。
[0112]
本技术实施例不仅可适用于长语音的转写,还可适用于短语音的转写。也即,本文中的“待识别语音”可以是长语音,也可以是短语音。
[0113]
各类切分方式均可适用于本技术实施例,只需确保切分获得的多个语音段在切分处交叠即可。通过重叠式的切分方式,可使相邻语音段的初始文本段中对应切分边界处的文本重叠,如此,不仅可确保语音识别的连续性,而且可利用初始文本段的重叠部分对初始文本段进行对齐和修正,有效改善各语音段切分边界处识别准确性差的情况,从而在实现语音连续识别的同时提高了语音识别的准确度。
[0114]
一些实施例中,步骤s102中可以按照预定窗长和预定重叠时长来切分待识别语音。该预定窗长可以是预先设定的固定值或者变量,其可以根据具体应用场景的不同、待识别语音的特性(例如,长度、语言、发声人的类型等)、硬件性能(例如,内存大小、处理器性能、存储器容量和读写性能等)、模型性能(例如,语音识别模型单次可处理的最长语音长度)和/或其他任何与语音识别相关的因素来动态调整。相似地,预定重叠时长也可以是预先设定的固定值或者变量,其可以根据预定窗长并结合上述因素确定。
[0115]
一种实现方式中,预定窗长和预定重叠时长可以由语音识别模型(例如,asr模型)的性能和音频场景来决定。预定窗长和预定重叠时长的数值可以采用各种可适用于语音识别场景的方法来确定。例如,其可通过在小样本上做网格搜索(grid search)实验的方法获得。再例如,可直接设定为经验值。
[0116]
一种实现方式中,步骤s102中可以按照固定窗长和/或固定重叠时长切分待识别语音,以获得时间长度和/或重叠部分长度相等的多条语音段。本实施例中,采用定长或者固定重叠时长的切分方式,可以获得等长和/或等重叠时长的语音段,如此,可提高语音段处理的并行度,进而提升本技术实施例方法的处理效率,同时可消除因切分得到的音频过
长而导致语音识别模型崩溃的情况。
[0117]
步骤s103中,基于注意力机制的语音识别模型可以是任何可适用于本技术实施例的序列到序列模型。一些实施例中,该语音识别模型可以是基于注意力机制的神经网络模型。一些实现方式中,语音识别模型可以是但不限于基于注意力机制的循环神经网络模型。该实现方式中,语音识别模型可以是编码器-解码器(encoder-decoder)结构的模型,该模型包括编码器和解码器,其中设置有注意力模块,该注意力模块可以是单层结构或多层结构,可以采用多头注意力机制或者单头注意力机制。替换地,该语音识别模型还可采用encoder结构或其他任何可适用于语音识别的网络结构。语音识别模型的具体实现可参考下文相关实施例。可以理解的是,此处以及下文相关的具体实施方式中关于语音识别模型的说明仅作为示例,并非用来限制本技术。实际应用中,语音识别模型可以是任何具有语音识别能力的模型,且不限于神经网络。
[0118]
基于注意力机制的语音识别模型可以通过预先定义的损失函数来训练得到。
[0119]
一些实施例中,基于注意力机制的语音识别模型可通过多目标损失函数(即混合损失函数)训练得到,所述多目标损失函数中至少包括一个具有帧对齐能力的损失函数,如此,不仅有助于提升语音识别模型的识别精度,而且可同时提升语音识别模型的帧对齐能力,以便获得精度更高的人声数据(例如,下文所述音频帧粒度的人声数据)。
[0120]
以基于多头注意力机制的encoder-decoder模型为例,语音识别模型中的编码器和解码器可采用不同的损失函数,编码器的损失函数可采用具有强制对齐特性的损失函数,这不仅可使语音识别模型具有更高的识别精度,同时可使编码器输出的隐藏状态中包含帧对齐信息,进而使得解码器获得的注意力数据中包含较为清晰的人声区间信息,以便由注意力数据获得高精度的人声数据。一些示例中,解码器可采用kl散度损失函数,编码器可采用ctc损失函数或transducer损失函数,详见下文相关具体实施方式。
[0121]
一些实施例中,语音识别模型可以通过单一损失函数训练得到。例如,该单一损失函数可以是但不限于transducer损失函数、kl散度损失函数、ctc损失函数或其他。
[0122]
步骤s103中,各语音段经语音识别模型进行语音识别即可得到其初始文本段。同时,语音识别模型中的注意力模块获得各语音段的注意力数据。注意力数据可以指示语音段中每个音频帧对应的字是预置词表中各字的概率,概率值越高,说明该音频帧对应的字是预置词表中相应字的可能性越大,同时也说明该音频帧属于人声的概率越高。也即,注意力数据中包含了语音段中各音频帧的人声特征。
[0123]
注意力数据可以是具有字维度和帧维度的矩阵,字维度的维度数可等于预置词表中字的数量,帧维度可等于语音段中的音频帧数量。若步骤s102中采用定窗长切分,各语音段长度相同,各语音段的注意力数据的维度数也就相同,这可以提升本技术实施例方法的并行度。
[0124]
语音识别模型采用单头注意力机制时,注意力数据可以是基于该单头注意力机制获得的注意力矩阵。该实施例中,采用单头注意力机制获得注意力数据,数据量小且运算少,计算复杂度较低,对硬件性能的要求较低,可在时提升本技术实施例方法的整体处理效率的情况下降低硬件成本。
[0125]
语音识别模型采用多头注意力机制时,注意力数据可以是由该多头注意力机制获得的一组注意力矩阵运算(例如,求均值、求均方差等)得到的矩阵,该组注意力矩阵中的注
意力矩阵数量等于多头注意力机制的头数,各注意力矩阵可以包含语音段在各个不同方面的人声特征。该实施例中,采用多头注意力机制获得注意力数据,通过多个注意力矩阵可多方面提取语音段各音频帧的人声特征,也即所获得的注意力数据能够相对更全面和准确地表征语音段的人声特性,这有助于获得准确度更高的人声数据,提升文本修正的准确性,进而进一步提高待识别语音识别结果的准确度。
[0126]
语音识别模型中的多个层设有注意力模块时,注意力数据可通过一选定层的注意力模块得到的注意力矩阵来获得。该选定层可以是语音识别模型中多个层的任一中间层或最后一层。发明人通过实验发现,在多层网络结构中,最后一层网络中所提取出来的特征相比于其他层具有更好的人声特性,鉴于此,一示例中,语音识别模型采用编码器-解码器结构且其解码器中多个解码层设有注意力模块时,选定层可以是多个解码层中的最后一层,也即,注意力数据可以通过多个解码层中最后一层的注意力模块输出的注意力矩阵来获得。这里,若选定层的注意力模块采用单头注意力机制,注意力数据可以是该注意力模块得到的注意力矩阵,若选定层的注意力模块采用多头注意力机制,注意力数据可以是该注意力模块得到的多个注意力矩阵运算(例如,求均值、取均方差等)得到的矩阵。
[0127]
步骤s104中,人声数据可以通过如下步骤获得:步骤a1,按照字维度遍历所述注意力数据以提取字维度的注意力向量;步骤a2,根据字维度的注意力向量和预先配置的阈值,得到字维度的人声向量;步骤a3,对每个语音段对应的字维度的人声向量中的数值进行累加求和,以获得每个语音段的人声序列,该人声序列包括语音段中各音频帧的人声信息,人声信息用于指示音频帧属于人声或不属于人声。由此,无需诸如vad模型等高复杂度的模型即可提取到数据粒度为音频帧的人声数据,不仅可保证语音识别的连续性和准确性,而且避免了vad模型在噪声场景误识别的问题,减少了vad模型的开发和维护成本。
[0128]
步骤a2中的阈值可以是一超参数,其具体取值可通过实验确定。步骤a2的具体实现方式以及该阈值可参见下文实施例的相关描述,此处不再赘述。需要说明的是,步骤s104的具体实现方式不限于此,任何可适用于本技术实施例的人声数据提取方法均可用来实现步骤s104。
[0129]
发明人经分析和实验发现,定窗长切分可能会丢失语音端点信息,同时切分处的语音识别结果可能会比较差。因此,本技术实施例的方法在步骤s105中通过对齐和修正语音段重叠部分的文本来解决这些问题。
[0130]
实际应用中,可通过各种适用于本技术实施例的方法来实现步骤s105。一些实施例中,步骤s105的示例性实现过程可以包括:针对多条语音段中的各对相邻语音段执行如下步骤:步骤b1,从相邻语音段的初始文本段中提取交叠文本,所述交叠文本包括所述相邻语音段中在前语音段的交叠文本和在后语音段的交叠文本,所述在前语音段的交叠文本对应其人声数据中长度是所述重叠时长的尾部,所述在后语音段的交叠文本对应其人声数据中长度是所述重叠时长的头部;步骤b2,对齐所述在前语音段的交叠文本与所述在后语音段的交叠文本,以获得所述相邻语音段的对齐文本,所述对齐文本包括在前语音段的对齐文本和在后语音段的对齐文本;步骤b3,根据所述在前语音段的对齐文本中字的置信度和在后语音段的对齐文本中字的置信度得到所述相邻语音段的修正文本,所述在前语音段的修正文本与在后语音段的修正文本相同;步骤b4,使用所述相邻语音段的修正文本获得所述相邻语音段中在前语音段的修正后文本段和在后语音段的修正后文本段。由此,可通过
人声数据辅助文本对齐,保证长语音识别的完整性,同时利于提升长语音识别文本的人工校验效率。并且,通过对语音段交叠区域的识别结果进行对齐和修正,提升了语音段切分分界处的识别准确率,进而提升待识别语音的整体识别准确率。
[0131]
字的置信度可以包括但不限于字的语音识别置信度、语言置信度和/或位置置信度等内容。实际应用中,字的置信度的具体内容可以根据应用场景的不同、待识别语音的特性、用户需求或其他各种因素来预先配置。由此,本技术实施例中通过精确到字维度的置信度来实现初始文本段的修正,可显著提升待识别语音的识别文本的字准率。
[0132]
语音识别置信度是指与语音识别模型相关的置信度,其与语音识别模型的结构相关。以上文编码器-解码器结构的语音识别模型为例,其语音识别置信度可以包括帧对齐置信度和注意力置信度中之一或两项,该帧对齐置信度可以通过集成在语音识别模型中的帧对齐评价模块获得,该帧对齐评价模块可以是ctc网络、预定义函数、预先训练的映射关系或其他各类形式。同理,注意力置信度可以通过集成在语音识别模型中的识别文本评价模块获得,该识别文本评价模块可以是神经网络模块、预定义函数、预先训练的映射关系或者其他各类形式。帧对齐评价模块和识别文本评价模块可以与语音识别模型共同训练获得。
[0133]
语言置信度是与自然语言逻辑相关的置信度,语言置信度可通过集成在语言识别模块中的语言解析模块或者语言模型对初始文本段进行语义解析而获得,该语言模型或者语言解析模块可以是但不限于自然语言理解(natural language understanding,nlu)模型或其他具有自然语言理解能力的模型。
[0134]
位置置信度是与字在初始文本段中的位置相关的置信度,位置置信度可基于对齐之后的初始文本段(即使用对齐文本替换初始文本段中的交叠文本而获得的初始文本段)的长度和字在初始文本段中的位置确定,字的位置越靠近初始文本段的切分边界,其位置置信度的分值越低,字的位置越靠近初始文本段中间位置,其位置置信度分值越高。位置置信度的具体计算方式可参见下文的具体实施方式,下文的具体实施方式中,位置置信度采用负数表示,可对靠近切分边界处的识别结果进行一定的惩罚,能够弥补切分边界处语音识别结果较差的情况,进而有效提升待识别语音识别结果的整体识别准确度。
[0135]
字的语音识别置信度可在步骤s103的语音识别中同步获得,字的语言置信度可在步骤s103之后、步骤b3之前获得。经步骤b2的对齐处理,初始文本段长度得到了有效修正,因此,在步骤b2的对齐之后计算得到的字的位置置信度更准确。
[0136]
一些实施例中,语音识别方法还可包括:根据所述修正后文本段中字的置信度,获得所述待识别语音的识别文本的置信度。如此,可在向用户提供待识别语音的识别文本的同时,提供该识别文本的置信度,便于用户参考置信度来生成语音的转写文本。这里,识别文本的置信度可包括识别文本中每个字的置信度。实际应用中,识别文本及其置信度可以在步骤s106中同步确定。
[0137]
一些实施例中,语音识别方法还可以包括:利用注意力数据确定各语音段的人声置信度。同样地,可在向用户或其设备提供待识别语音的人声数据的同时,提供相应的人声置信度,便于用户或其数据参考人声置信度和人声数据来生成语音的转写文本。实际应用中,人声置信度可以在步骤s104中与人声数据同步获得。
[0138]
需要说明的是,本文中的“字”可以是汉字、英文单词或其他各类语言中的单字。
[0139]
基于以上对本技术实施例提供的语音识别方法的示例性整体流程的介绍,接下
来,详细说明本技术实施例提供的语音识别方法的示例性具体实现方式。
[0140]
参见图2所示,本实施例中语音识别方法的具体实现流程可以包括如下步骤:
[0141]
步骤s201,接收来自拾音装置的目标音频,并对目标音频进行定窗长重叠切分,获得相邻语音段彼此交叠的语音段集合[a1,...,an];
[0142]
这里,目标音频可以是短音频(10秒钟),也可以是长音频(时间长度可以是几十分钟,甚至几个小时)。
[0143]
图3示出了定窗长重叠切分的一种示例性实现过程。参见图3所示,可以按照固定时间长度wl对目标音频进行切分以获得包括n条语音段的语音段集合[a1,...,an],连续的两段语音段需要保证wo时间长度的重叠。其中,n为整数,表示切分获得的语音段总数。参见图3所示,语音段的时间长度wl的取值可以是16秒钟,重叠时长wo的取值可以是6秒钟。实际应用中,重叠时长wo小于或等于语音段时长w1的二分之一。重叠时长的具体取值可以根据实际需求、应用场景、目标音频的特性、语音识别模型的性能等来定。例如,需要较高处理效率同时对识别精度要求不高的情况下,重叠时长wo可以设置为语音段时长w1的三分之一到四分之一。需要较高识别精度的情况下,重叠时长wo可以设置为语音段时长w1的二分之一到三分之一。
[0144]
步骤s202,语音段集合[a1,...,an]经语音识别模型进行语音识别,获得初始文本段ui(i=1,......n)和各语音段的注意力数据mia[l,t](i=1,......n)。
[0145]
一种实现方式中,可对语音段集合[a1,...,an]中的所有语音段并行地进行语音识别,以提高处理效率。
[0146]
本步骤中,语音段ai(i=1,......,n)输入到训练好的asr模型中,可以得到其初始文本段ui以及初始文本段ui的语音置信度uci,同时抽取asr模型的解码器中选定层的注意力模块(假设头数为nh)获得的多头注意力矩阵mi[l,t
×
nh],由该注意力矩阵mi[l,t
×
nh]得到语音段ai的注意力数据mia[l,t]。
[0147]
步骤s203,从注意力数据mia[l,t](i=1,......,n)中提取语音段ai的人声数据si[t]。
[0148]
本步骤中,各条语音段的人声数据可以并行提取。即,从注意力数据mia[l,t](i=1,......,n)中提取相应语音段ai的人声数据si[t]。
[0149]
步骤s204,根据人声数据si[t]和重叠时长wo,对齐修正初始文本段ui,得到修正后文本段pi。
[0150]
一种实现方式中,可利用人声数据si[t]和重叠时长wo对初始文本段ui中对应重叠部分的文本upi进行对齐修正,如此,可在提高切分端识别准确度的同时尽量降低计算复杂度和运算数据量,以较低的硬件成本即可达到提升切分端识别准确度的目的。
[0151]
一种实现方式中,可利用人声数据si[t]和重叠时长wo对初始文本段ui整体进行对齐修正。
[0152]
步骤s205,根据对齐修正所获得的修正后文本段pi(i=1,......,n),获得目标音频的识别结果p。
[0153]
这里,目标音频的识别结果可以包括目标音频的识别文本、文本置信度、人声区间。
[0154]
一种实现方式中,可以通过拼接所获得的各条修正后文本段pi(i=1,......,n)
得到目标音频的识别文本p[t]。
[0155]
一种实现方式中,可以通过拼接修正后文本段pi的字置信度或字综合评分来获得目标音频的文本置信度pc。
[0156]
一种实现方式,可以通过拼接各语音段的人声数据si[t]来获得目标音频的人声区间s[t]。
[0157]
假设步骤s202获得的语音段ai和ai+1的初始文本段ui和ui+1如下所示:
[0158]
ui:
[0159]
ui+1:
[0160]
步骤s205获得的识别文本p为:步骤s205获得的识别文本p为:
[0161]
以上实例中,ui中的“没有路灯路口专项的时候”和ui+1中的“没有路等的陆口转向的时候”即对应于连续的两段语音ai和ai+1的重叠部分分别进行asr得到的识别结果。可以看到,重叠部分由于靠近切分处,由于缺少上下文、语义信息等原因,导致asr模型对语音段中靠近切分处的识别准确率较低,出现了将“转向”错误地识别为“专项”、将“路口”错误地识别为“陆口”等识别错误。
[0162]
本技术实施例提供的方法通过步骤s204,对ui和ui+1进行对齐修正,使其对应于连续的两段语音ai和ai+1的重叠部分也即靠近语音段切分处的识别错误得到了高效准确地修正和对齐,识别错误“专项”被成功修正为“转向”,“陆口”被成功修正为“路口”,同时补齐了“路灯”与“路口”之间可能丢失的字“的”,对齐修正后所获得的识别文本不仅符合语音ai和ai+1所构成的长语音的上下文和整体语义,而且其表述通顺连贯,符合中文的自然语言逻辑,可见,长语音识别文本的整体识别准确率得到了显著提升。
[0163]
结合上述实例可见,本实施例在实现语音连续识别的同时,显著提升了识别文本的准确度。
[0164]
本实施例将对本技术实施例中语音识别模型的示例性实现方式进行详细说明。
[0165]
本实施例中,语音识别模型为asr模型,该asr模型采用基于多头注意力机制的encoder-decoder结构的神经网络模型。
[0166]
图4示出了本实施例中asr模型的示例性网络结构。参见图4所示,asr模型中包括编码器(encoder)和解码器(decoder),编码器对目标音频的数据x={x1,......,xt}(t表示目标音频的帧数)进行特征抽取以获得隐藏特征数据h={h1,......,hl}(l表示asr所支持词表中字的总数),解码器对先前获得的文本数据y={sos,y1,^,yu}(u表示文本长度,即文本y的字数量(可以包括标点符号))进行特征抽取以获得当前的文本数据y,通过注意力机制(source attention)将文本数据的特征(图中未示出)和音频数据的隐藏特征h融合在一起。其中,编码器中可以包括ne个编码层(encoder layer),ne为不小于1的整数,每一编码层可连接一多头注意力模块(multi-head attention)。一示例中,编码层可通过一包含多头注意力模型的transformer模块来实现。解码器中包括nd个解码层(decoder layer),nd为不小于1的整数,每一解码层连接一多头注意力模块(multi-head attention),多头注意力模块(multi-head attention)之前可设置前馈层(feed forward)。一示例中,编码层可通过一包含多头注意力模型的transformer模块来实现。考虑到模型处理效率、精度和计
算复杂度等多方面,通常,asr中的解码器可以包括6个解码层,每一多头注意力模块的头数可以取8。
[0167]
参见图4所示,asr编码器中除编码层之外,还可包括具有2层结构的卷积激活模块(conv+relu)、全连接层(dense)、位置编码模块(positional embedding)、特征归一化层(layernorm)。asr解码器中除解码层之外,还可包括词编码模块(character embedding)、位置编码模块(positional embedding)、特征归一化层(layernorm)和归一化层(softmax)。需要说明的是,图4所示结构仅作为示例。本领域技术人员应当理解,asr模型的具体结构可根据实际应用需求、应用场景、目标音频的特性等各方面自由配置。
[0168]
本实施例中,asr模型可通过多目标损失函数训练得到。通过多目标损失函数获得的asr模型不仅具有较高的识别精度,而且具有较好的帧对齐能力,能够获得精度更高的人声数据。
[0169]
参见图4所示,编码器可采用ctc损失函数(ctc loss),解码器可采用kl散度损失函数(ce loss),asr模型的多目标损失函数值(即混合损失函数值)可以通过下式(1)确定,通过最小化asr模型的混合损失函数值来完成其训练:
[0170]
loss=λ
×
ctc_loss+(1-λ)
×
kl_loss
ꢀꢀꢀ
(1)
[0171]
式(1)中,loss表示混合损失函数的值,ctc_loss表示ctc损失函数值,kl_loss表示kl散度函数值,λ为预先配置的权重,可以为大于0、小于1的固定值,通过实验确定或取经验值。例如,λ可以取为0.7、0.6或其他值。
[0172]
上述示例中,ctc损失函数具有帧对齐的能力,受益于ctc算法的强制对齐特性,采用ctc损失函数训练编码器,可使编码器的隐藏状态h中具有逐帧对齐信息,进而使得解码器中多头注意力模型输出的注意力矩阵中包含了更为清晰的人声区间信息,也即可使得asr模型得到的注意力数据包含更为清晰的人声信息。同时,经实验验证,采用多目标损失函数训练asr模型,有助于提升asr模型的识别精度。
[0173]
图5示出了经asr模型获得的注意力数据可视化示意图。图5所示示意图是基于asr模型获得的注意力数据进行数据可视化得到的,用于直观地呈现asr模型获得的注意力数据中包含了清晰的人声区间信息。其中,横轴代表音频帧帧数,纵轴代表注意力数据的字维度数,每个点的灰度可用于指示该点对应的音频帧属于人声的概率,灰度越深的点对应的音频帧属于人声的概率越高。图5中,无人声段(即无人声的音频段)的对应区域灰度最浅(几乎为零),表明无人声段中基本不包含属于人声的音频帧,人声段(即包含人声的语音段)(即图5中无人声段之间的区域)的对应区域灰度则深浅分明,表明人声段中属于人声的音频帧和不属于人声的音频帧清晰分明,人声段中人声对应的音频帧所在的区域灰度最深,人声段中非人声(例如,断句处、犹豫处)对应的音频帧所在的区域则灰度较浅,这与语音中人声的实际情况相符,也即基于asr模型获得的注意力数据中包含了清晰的人声区间信息,这充分说明从注意力数据中即可提取到准确的人声数据。
[0174]
本实施例中,从asr模型中获得各段短语音的注意力矩阵m中提取相应的有效人声序列s,也即人声序列。同时,还可提取相应的人声置信度sc。
[0175]
图6示出了本实施例中人声数据提取的示例性实现流程。参见图6所示,本实施例中提取人声序列的示例性具体流程可以包括如下步骤:
[0176]
步骤s601,抽取asr模型的解码器中最后一层的多头注意力模块(假设头数为nh)
得到的nh个注意力矩阵mi[l,t
×
nh],并计算这些注意力矩阵的均值以获得注意力数据mia[l,t](i=1,......,n)。
[0177]
注意力数据mia[l,t]表示短语音的初始文本段ui中每个字与短语音中各音频段的对应关系,其两个维度分别表征了短语音在字维度和时间维度的特征信息。l表示asr模型对短语音进行识别而得到的初始文本段ui中包含的字的数量,t表示语音段ai的音频帧数,可以根据短语音的时长计算得到。
[0178]
通过实验发现,在多层网络结构中,最后一层网络中所提取出来的特征相比于其他层具有更好的人声特性,故本步骤中,直接通过多个解码层中最后一层的多头注意力模块的注意力矩阵mi[l,t
×
nh]来确定注意力数据。
[0179]
步骤s602,从注意力数据mia[l,t]中提取人声向量mis[1,t]以形成人声矩阵mis[l,t]。
[0180]
其中,人声矩阵mis[l,t]中包含了语音段ai在字维度和帧维度上的人声特征信息,l表示asr模型对语音段ai进行识别而得到的初始文本段ui中包含的字的数量,t表示语音段ai的帧数,人声矩阵mis[l,t]中的每个元素mis[1,t]指示字维度1上音频帧t是否属于人声,其值为0时表示不属于人声,值为不为0时表示属于人声。
[0181]
发明人经反复实验和数据分析发现,音频帧属于人声时其在注意力向量中的取值将高于某个阈值。由此,一种实现方式中,获得人声矩阵mis[l,t]的过程可以包括:按字维度遍历矩阵mia[l,t],从中提取字维度l对应的注意力向量mia[1,t],根据下述公式(2)计算每个注意力向量mia[1,t]对应的人声向量mis[1,t],按照字维度拼接这些人声向量mis[l,t]即可获得人声矩阵mis[l,t]。
[0182][0183]
其中,threda表示预先设定的阈值,mis[l,t]表示字维度l的人声向量中音频帧t的取值,mia[l,t]表示字维度l的注意力向量中音频帧t的取值。threda为超参数,通常取值为0.09、0.1、0.16等,threda可通过实验确定或者取经验值。
[0184]
由此,通过一超参数即可从注意力数据中提取到人声向量,进而获得人声序列,计算复杂度低,对硬件性能的要求低,有利于降低硬件成本和提高处理效率。
[0185]
本步骤中,可同时利用向量mia[l,t]计算人声置信度。具体地,可以在每个字维度上选取mia[1,t]的最大值记为有效人声置信度sic[l],该有效人声置信度sic[l]即为人声置信度。
[0186]
步骤s603,按字维度遍历人声矩阵mis[l,t],对其中的人声向量进行累加求和得到结果si[t],基于下式(3)对累加求和的结果si[t]进行规整得到有效人声序列si[t]。
[0187][0188]
其中,si[t]可指示语音段ai中各音频帧是否属于人声,若si[t]中的某个元素si[t]取值为大于0的数则说明相应音频帧t属于人声,若si[t]取值为0则说明音频帧t不属于人声。
[0189]
本实施例中,对于语音识别模型的多层注意力矩阵,选取最后一层的注意力矩阵,沿head维度计算多头注意力矩阵的均值以获得注意力数据,通过对注意力数据中字维度上
的每个注意力向量进行阈值判断以获得人声矩阵,同时通过最大值计算得到人声置信度;对于阈值判断后获得人声矩阵进行累加求和,并根据累计求和所得数值的大小进行规整,最后得到有效人声序列。由此,本实施例解决了定长切分下端点识别差的问题,并且利用语音识别模型的抗噪能力提升了噪声环境下端点识别的准确度。
[0190]
本实施例提供初始文本段对齐修正的一种示例性实施方式。
[0191]
图7示出了本实施例中文本修正的示例性实现流程。参见图7所示,本实施例中文本修正的示例性实现流程可以包括如下步骤:
[0192]
步骤s701,对于语音段集合[a1,...,an]中的每对相邻语音段ai&ai+1(i=1,......,n-1),根据有效人声序列si[t]和重叠时长wo分别从其初始文本段ui中提取每条语音段的交叠文本upi。
[0193]
假设相邻语音段ai和ai+1,分别经asr模型识别得到其初始文本段ui、ui+1。假设语音段ai和语音段ai+1的重叠部分时间长度为wo,在初始文本段ui中提取其人声序列si[t]尾部时间长度wo所对应的文本作为语音段ai的交叠文本upi。在初始文本段ui+1中提取语音段ai+1的人声序列si+1[t]头部时间长度wo所对应的文本作为语音段ai+1的交叠文本upi+1。
[0194]
例如,ui和ui+1如下斜体所示:
[0195]
ui:
[0196]
ui+1:
[0197]
提取到的交叠文本upi和upi+1如下:
[0198]
upi:
[0199]
upi+1:
[0200]
步骤s702,采用动态规划算法对齐相邻语音段中在前语音段ai的交叠文本upi和在后语音段ai+1的交叠文本upi+1,以获得相邻语音段的对齐文本upai、upai+1;
[0201]
一种实现方式中,可以采用诸如fisher等标准的动态规划算法将相邻语音段的交叠文本进行长度对齐,使用预先设定的占位符(例如,*)填充缺失的字,从而获得各条短语音的对齐文本。
[0202]
仍以上文相邻语音段ai和ai+1为例,通过本步骤可以由相邻语音段ai、ai+1的交叠文本upi、upi+1获得如下的对齐文本upai、upai+1:
[0203]
upai:
[0204]
upai+1:
[0205]
由此可见,交叠文本upi包含11个字符,upi+1包含12个字符,upi比upi+1少一个字。因此,通过使用预先设定的占位符“*”填充upi中缺失的字,从而得到上述对齐文本upai和upai+1。由此,可有效消除识别文本中对应语音段切分处的位置缺字或少字等情况。
[0206]
其他实现方式中,可以基于asr模型获得的初始文本段中每个字的置信度来匹配相邻语音段的交叠文本,以获得相邻语音段交叠部分的对齐文本。
[0207]
步骤s703,根据在前语音段ai的对齐文本upai中字的综合评分和在后语音段ai+1的对齐文本upai+1中字的综合评分,得到相邻语音段ai和ai+1的修正文本upxi,进而由修正文本upxi得到相邻语音段ai和ai+1的对齐文本段pi、pi+1(i=1,......,n-1)。
[0208]
如前文所述,每个字的置信度可以包括语音识别置信度、语言置信度和位置置信度。以图4所示的asr模型为例,每个字的语音识别置信度识别置信度可以包括帧对齐置信度和注意力置信度,帧对齐置信度和注意力置信度的相关细节可参照上文描述,不再赘述。本实施例中,以位置置信度作为惩罚项分别确定对齐文本upai、upai+1中每个字的综合评分。
[0209]
一种实现方式中,可通过下式(4)获得每个字的综合评分:
[0210]
jointscore=α
×
ctcscore+λ
×
attscore+η
×
lmscore+posscore
ꢀꢀꢀ
(4)
[0211]
其中,jointscore表示字的综合评分,ctcscore表示字的帧对齐置信度,attscore表示字的注意力置信度,lmscore表示字的语言置信度取值,posscore表示字的位置置信度取值,α表示字的帧对齐置信度的权重,λ表示字的注意力置信度的权重,η表示字的语言置信度的权重,λ、η、α均为超参数,其取值可以预先通过实验确定或取经验值。
[0212]
其中,posscore可以通过下式(5)计算得到:
[0213]
posscore=-β|l-l/2|
ꢀꢀꢀ
(5)
[0214]
其中,posscore表示字的位置置信度取值,l表示字在对齐后文本段中的位置,l表示对齐后文本段中包含的字数,所述对齐后文本段是使用所述对齐文本替换所述初始文本段中交叠文本而获得的文本段,β表示预先设置的位置权重,β为超参数,β的取值可以通过实验确定或使用设定的经验值。
[0215]
实验发现,对于切分得到的语音段,其开头和结尾处的识别结果常因混乱的语义信息而表现出识别效果差的现象,本实施例引入了字的位置评分,通过式(5)可见,位置越是靠近语音段的初始文本段开头或结尾的字的位置置信度取值越小,位置越是靠近语音段的初始文本段中间位置的字的位置置信度取值越大,由此,引入了字的位置置信度作为字综合评分的惩罚项,从而纠正短语音端点处识别效果差给长语音整体识别精度带来的影响。
[0216]
一种实现方式中,可以按照下式(6)执行步骤s703,即通过下式(6)调整相邻语音段的对齐文本中的每个字:
[0217][0218]
其中,uri[l](i=1,......n-1)表示语音段ai的修正文本中位置l的字,n为语音段数量,upai[l]表示语音段ai的对齐文本中位置l的字,upai+1[l]表示语音ai+1的对齐文本中位置l的字,jointscore(upai[l])表示语音段ai的对齐文本中位置1的字的综合评分,jointscore(upai+1[l])表示语音段ai+1的对齐文本位置1中的字的综合评分,*表示占位符。
[0219]
以上文语音段ai和ai+1为例,假设对齐文本upai中的“灯”置信度表示为(-0.235,-0.525,-0.216,0),即“灯”的帧对齐置信度为-0.235、注意力置信度为-0.525、语言置信度取值为-0.216、位置置信度取值为0,对齐文本upai+1中“等”的置信度表示为(-0.287,-0.672,-0.228,-0.871)。假设α、λ、η和β均取1,则“灯”的综合评分为(-0.235)+(-0.525)+(-0.216)+0=-0.976,“等”的综合评分为(-0.287)+(-0.672)+(-0.228)+(-0.871)
=-2.058,对比两者的综合评分,显然“灯”的综合评分大于“等”,那么将upi+1中的“等”修正为“灯”,upxi中该位置的字选定为“灯”。同理,修正对齐文本中每个识别差异位置的字,如此,即可获得相邻语音段ai和ai+1的修正文本upri&i+1,语音段ai的修正文本upri与语音段ai+1的修正文本upri+1相同,均是upri&i+1。
[0220]
upri&i+1:
[0221]
获得各语音段的修正文本之后,可使用其修正文本替换掉其初始文本段中的对应文本,即可获得其修正后文本段。
[0222]
以上文语音段ai和ai+1为例,其修正后文本段pi、pi+1分别为:
[0223]
pi:
[0224]
pi+1:
[0225]
本实施例中,利用动态规划算法将相邻语音段的初始文本段进行对齐。融合语音识别模型、语言模型以及字在文本中的位置对对齐后的文本中每个字进行打分,根据每个字的打分情况对齐文本进行修正。由此,显著提高了语音段切分端点处的字准率,解决了定窗长切分中语音端点识别结果差的问题,提升了语音段切分边界处的识别准确率,进而提升了长语音整体识别准确率。
[0226]
图8示出了本技术实施例提供的语音识别装置800的示例性结构。参见图8所示,本技术实施例的示例性语音识别装置800可包括
[0227]
语音获取单元810,配置为获取待识别语音;
[0228]
语音切分单元820,配置为切分所述待识别语音以获得多条语音段,所述多条语音段的相邻语音段中在前语音段的尾部与在后语音段的头部重叠;
[0229]
语音识别单元830,配置为利用基于注意力机制的语音识别模型,获得所述多条语音段中各条语音段的注意力数据和初始文本段;
[0230]
人声数据提取单元840,配置为从所述各条语音段的注意力数据中提取其人声数据;
[0231]
对齐修正单元850,配置为根据所述各条语音段的初始文本段、所述人声数据和重叠时长,获得所述各条语音段的修正后文本段,所述多条语音段的相邻语音段中在前语音段的修正后文本段中对应所述尾部的文本与在后语音段的修正后文本段中对应所述头部的文本相同;
[0232]
文本拼接单元860,配置为拼接所述多条语音段中各条语音段的修正后文本段,得到所述待识别语音的识别文本。
[0233]
一些实施例中,语音切分单元820是配置为按照固定窗长和/或固定重叠时长切分所述待识别语音,以获得时间长度和/或重叠部分长度相等的所述多条语音段。
[0234]
一些实施例中,所述基于注意力机制的语音识别模型为编码器-解码器结构的模型,所述编码器-解码器结构的模型包含编码器、解码器,所述解码器的多个解码层中设置有注意力模块,所述注意力数据是通过所述多个解码层中最后一层的所述注意力模块输出的注意力矩阵获得的。
[0235]
一些实施例中,所述基于注意力机制的语音识别模型是通过多目标损失函数训练得到的,所述多目标损失函数包括至少一个具有帧对齐能力的损失函数。
[0236]
一些实施例中,所述注意力数据具有字维度和帧维度;人声数据提取单元840是配
置为通过如下步骤获得所述人声数据:按照所述字维度遍历所述注意力数据以提取字维度的注意力向量;根据所述字维度的注意力向量和预先配置的阈值,得到字维度的人声向量;对每个所述语音段对应的所述字维度的人声向量中的数值进行累加求和,以获得每个所述语音段的人声序列,所述人声序列包括所述语音段中各音频帧的人声信息,所述人声信息用于指示所述音频帧属于人声或不属于人声。
[0237]
一些实施例中,字维度的人声向量是通过式(2)得到的。
[0238]
一些实施例中,对齐修正单元850是配置为通过如下步骤得到各条语音段的修正后文本段:
[0239]
针对所述多条语音段中的各对相邻语音段执行如下步骤:
[0240]
从相邻语音段的初始文本段中提取交叠文本,所述交叠文本包括所述相邻语音段中在前语音段的交叠文本和在后语音段的交叠文本,所述在前语音段的交叠文本对应其人声数据中长度是所述重叠时长的尾部,所述在后语音段的交叠文本对应其人声数据中长度是所述重叠时长的头部;
[0241]
对齐所述在前语音段的交叠文本与所述在后语音段的交叠文本,以获得所述相邻语音段的对齐文本,所述对齐文本包括在前语音段的对齐文本和在后语音段的对齐文本;
[0242]
根据所述在前语音段的对齐文本中字的置信度和在后语音段的对齐文本中字的置信度,得到所述相邻语音段的修正文本,所述在前语音段的修正文本与在后语音段的修正文本相同;
[0243]
使用所述相邻语音段的修正文本获得所述相邻语音段中在前语音段的修正后文本段和在后语音段的修正后文本段。
[0244]
一些实施例中,字的置信度至少包括如下之一:字的帧对齐置信度、注意力置信度、字的语言置信度和字的位置置信度。
[0245]
一些实施例中,对齐修正单元850是配置为按照所述在前语音段的对齐文本中字的综合评分和在后语音段的对齐文本中所述字的综合评分,得到所述相邻语音段的修正文本;其中,所述字的综合评分是以所述字的位置置信度为惩罚项而确定。
[0246]
一些实施例中,所述字的位置置信度通过式(5)计算得到的。
[0247]
一些实施例中,所述字的综合评分是通过式(4)计算获得的。
[0248]
一些实施例中,对齐修正单元850是配置为按照所述在前语音段的对齐文本中字的综合评分和在后语音段的对齐文本中所述字的综合评分,得到所述相邻语音段的修正文本,具体包括:
[0249]
通过下式调整相邻语音段的对齐文本中的每个字:
[0250][0251]
其中,uri[l](i=1,......n-1)表示语音段ai的修正文本中位置l的字,n为所述语音段的数量,upai[l]表示语音段ai的对齐文本中位置1的字,upai+1[l]表示语音段ai+1的对齐文本中位置l的字,jointscore(upai[l])表示语音段ai的对齐文本中位置l的字的综合评分,jointscore(upai+1[l])表示语音段ai+1的对齐文本位置l中的字的综合评分,*
表示占位符。
[0252]
一些实施例中,文本拼接单元860还配置为根据所述修正后文本段中字的置信度,获得所述待识别语音的识别文本的置信度。
[0253]
一些实施例中,人声数据提取单元840还配置为利用所述注意力数据得到所述多条语音段中各条语音段的人声置信度。
[0254]
本技术实施例的语音识别装置800可通过软件、硬件或两者的结合来实现。一些示例中,语音识别装置800可通过下文计算设备900来实现。
[0255]
传统方法通过人工记录的方式将会议期间重要信息留存,以备后续归档和调取查阅。人工记录费时费力,且容易发生记录错误的问题。为了提升会议记录的效率,可通过本技术实施例的语音识别方法自动将会议的录音转换为文本,同时输出该文本的置信度和人声区间,帮助校验人员快速完成会议录音的转写和校验工作。
[0256]
随着流媒体的快速发展,短视频、直播、电影、电视剧占据了人们日常生活中大量的娱乐时间。字幕是视频资源不可获取的一部分,传统方法通过人工听写的方式为视频资源添加字幕。
[0257]
对于现今社会视频资源快速更迭的现状,人工听写字幕方法过于低效,特别是在视频直播领域,更显得不切实际。利用本技术实施例的语音识别方法,可自动高效的生成视频资源的音频流的字幕,并根据人声区间为视频自动添加该字幕。
[0258]
1.不依赖vad模型对超长音频进行切分,避免了vad模型在噪声场景误识别的问题,减少了vad模型的开发和维护成本。
[0259]
2.基于注意力数据进行语音端点识别,可有效提升噪声环境下长语音识别准确度,并且利用语音识别引擎的抗噪能力提升噪声环境端点识别的准确度。
[0260]
3.解决了超长语音识别需求中,识别准确率低、删除误差高、模型崩溃的问题。字准率从72%提升到89%。
[0261]
图9是本技术实施例提供的一种计算设备900的结构性示意性图。该计算设备900包括:处理器910、存储器920。此外,还可包括:通信接口930、总线940。
[0262]
应理解,图9所示的计算设备900中的通信接口930可以用于与其他设备之间进行通信。
[0263]
其中,该处理器910可以与存储器920连接。该存储器920可以用于存储该程序代码和数据。因此,该存储器920可以是处理器910内部的存储单元,也可以是与处理器910独立的外部存储单元,还可以是包括处理器910内部的存储单元和与处理器910独立的外部存储单元的部件。
[0264]
可选的,计算设备900还可以包括总线940。其中,存储器920、通信接口930可以通过总线940与处理器910连接。总线940可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。所述总线940可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
[0265]
应理解,在本技术实施例中,该处理器910可以采用中央处理单元(central processing unit,cpu)。该处理器还可以是其它通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,
asic)、现成可编程门阵列(field programmable gate array,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器910采用一个或多个集成电路,用于执行相关程序,以实现本技术实施例所提供的技术方案。
[0266]
该存储器920可以包括只读存储器和随机存取存储器,并向处理器910提供指令和数据。处理器910的一部分还可以包括非易失性随机存取存储器。例如,处理器910还可以存储设备类型的信息。
[0267]
在计算设备900运行时,所述处理器910执行所述存储器920中的计算机执行指令执行上述方法的操作步骤。
[0268]
应理解,根据本技术实施例的计算设备900可以对应于执行根据本技术各实施例的方法中的相应主体,并且计算设备900中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。
[0269]
本技术实施例中的计算设备900可以是但不限于手机、笔记本电脑、语音转写设备或其他各种类型。当然,本技术实施例的计算设备900也可体现为服务器等设备。
[0270]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0271]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0272]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0273]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0274]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0275]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存
储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0276]
本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行一种语音识别方法,该方法包括上述各个实施例所描述的方案中的至少之一。
[0277]
本技术实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0278]
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0279]
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0280]
可以以一种或多种程序设计语言或其组合来编写用于执行本技术操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如java、smalltalk、c++,还包括常规的过程式程序设计语言-诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0281]
注意,上述仅为本技术的较佳实施例及所运用的技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本技术进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明的构思的情况下,还可以包括更多其他等效实施例,均属于本发明的保护范畴。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1