首页 > 乐器声学 专利正文
一种语音识别方法及装置与流程

时间:2022-02-18 阅读: 作者:专利查询

一种语音识别方法及装置与流程

1.本发明涉及语音识别领域,尤其涉及一种语音识别方法及装置。


背景技术:

2.语音识别是一种通过机器的识别和理解过程把语音信号转变为相应的文本或命令的技术,语音识别已广泛应用在各个领域。目前语音识别常通过神经网络来实现,运用神经网络进行语音识别的设备主要包括终端设备和服务器端设备。由于服务器端的计算能力较强,通过神经网络来做语音识别运算时,无论是准确性上还是速率上都绰绰有余。
3.然而,相对服务端来说,终端设备的计算能力却有限。一方面,在终端设备上进行复杂运算时,会使得语音识别的速率较低,长时间等待语音识别结果会让用户的感受较差。另一方面,终端设备也很难保证语音识别的准确性,低精度的运算会导致语音识别结果的准确性较低,同样会让用户的感受较差。因此,目前终端设备难以保证语音识别的准确性和速率,是一个亟待解决的问题。


技术实现要素:

4.本发明提供一种语音识别方法及装置,解决了现有技术中难以保证语音识别的准确性和速率的问题。
5.第一方面,本发明提供一种语音识别方法,包括:终端设备获取待识别语音帧的语音特征向量;所述终端设备将所述语音特征向量输入神经网络,从而通过所述神经网络对所述待识别语音帧识别;所述神经网络是根据各样本语音特征按照预设机器学习算法训练获得的;所述神经网络包括多类网络节点;其中,每类网络节点中各网络节点的数据单元的位宽不相同。
6.上述方法中,由于神经网络中包括多类网络节点,且每类网络节点中各网络节点的数据单元的位宽不相同,从而既有网络节点采用较高的数据单元的位宽,又有网络节点采用较低的数据单元的位宽,因此可通过混合搭配各网络节点的数据单元的位宽,在一定程度上保证了神经网络运算的精度,也在一定程度上保证了神经网络运算的速率,从而终端设备可以兼顾语音识别的精度和速率。
7.可选的,所述多类网络节点仅包括第一类网络节点和第二类网络节点。
8.上述方法中,所述多类网络节点仅包括第一类网络节点和第二类网络节点,因此,在运算过程中,最多只涉及一类不同位宽间数据的转换,从而控制运算的复杂度,进一步保证语音识别的速率。
9.可选的,所述神经网络包括n层网络节点;所述第一类网络节点的数据单元的位宽多于所述第二类网络节点的数据单元的位宽;所述第一类网络节点为所述n层网络节点中的m层网络节点;所述第二类网络节点为所述n层网络节点中除所述m层网络节点之外的n-m层网络节点;n,m均为正整数,且m小于n;m根据所述终端设备的处理能力确定。
10.上述方法中,第一类网络节点和第二类网络节点都是所述n层网络节点中的整层
的网络节点,也就是说同层的网络节点采用了相同的位宽,从而同层的网络节点之间的运算不需要做数据转换,由于所述第一类网络节点的数据单元的位宽多于所述第二类网络节点的数据单元的位宽,因此第一类网络节点的精度更高,且m根据所述终端设备的处理能力确定,从而在所述终端设备的处理能力限度内,设置第一类网络节点的层数,保证运算的精度,进而保证语音识别的准确性。
11.可选的,所述通过所述神经网络对所述待识别语音帧识别,包括:所述语音特征向量依次经过所述n层网络节点中的第一层网络节点、第二层网络节点
……
第i层网络节点、第i+1层网络节点
……
第n层网络节点的处理;其中第i层网络节点上的节点数量不少于第i+1层网络节点上的节点数量;i为正整数;所述m层网络节点为所述n层网络节点的前m层网络节点。
12.上述方式下,由于所述语音特征向量依次经过n层网络节点的处理,且第i层网络节点上的节点数量多于第i+1层网络节点上的节点数量,因此在n层网络节点前面的网络节点运算更多,且所述m层网络节点为所述n层网络节点的前m层网络节点,也就是说,前面的网络节点运算精度也更高,从而减少了n层网络节点的误差累积,进一步保证语音识别的准确性。
13.可选的,所述神经网络中数据单元的数据类型为整数型;所述神经网络的数据单元中包括位宽不小于16位的数据单元及位宽不大于8位的数据单元。
14.上述方式下,所述神经网络中数据单元的数据类型为整数型,其运算效率相对于浮点型或其他复杂类型的数据更高,其运算精度等同于同位宽的浮点型数据按倍数放缩后的精度,另外,在一般语音识别场景中,位宽不小于16位的数据单元已经能保证语音识别运算的精度,而位宽不大于8位的数据单元的语音识别运算对于各类终端设备都能实现,从而可以采用上述设置,兼顾语音识别的准确性和速率。
15.可选的,所述神经网络为全连接神经网络。
16.上述方式下,全连接神经网络中层与层之间的网络节点都互连,因此计算的次数更多,在此基础上,混合搭配各网络节点的数据单元的位宽,对于兼顾语音识别的准确性和速率的效果更明显。
17.可选的,所述终端设备为嵌入式设备。
18.上述方式下,嵌入式设备为终端设备中计算能力较弱的设备,神经网络中网络节点的运算对于嵌入式设备计算负载的影响更加显著,因此,该方法应用于嵌入式设备时,对于兼顾语音识别的准确性和精度的意义更大。
19.第二方面,本发明提供一种语音识别装置,包括:获取模块,用于获取待识别语音帧的语音特征向量;识别模块,用于将所述语音特征向量输入神经网络,从而通过所述神经网络对所述待识别语音帧识别;所述神经网络是根据各样本语音特征按照预设机器学习算法训练获得的;所述神经网络包括多类网络节点;其中,每类网络节点中各网络节点的数据单元的位宽不相同。
20.可选的,所述多类网络节点仅包括第一类网络节点和第二类网络节点。
21.可选的,所述神经网络包括n层网络节点;所述第一类网络节点的数据单元的位宽多于所述第二类网络节点的数据单元的位宽;所述第一类网络节点为所述n层网络节点中的m层网络节点;所述第二类网络节点为所述n层网络节点中除所述m层网络节点之外的n-m
层网络节点;n,m均为正整数,且m小于n;m根据所述终端设备的处理能力确定。
22.可选的,所述语音特征向量依次经过所述n层网络节点中的第一层网络节点、第二层网络节点
……
第i层网络节点、第i+1层网络节点
……
第n层网络节点的处理;其中第i层网络节点上的节点数量不少于第i+1层网络节点上的节点数量;i为正整数;所述m层网络节点为所述n层网络节点的前m层网络节点。
23.可选的,所述神经网络中数据单元的数据类型为整数型;所述神经网络的数据单元中包括位宽不小于16位的数据单元及位宽不大于8位的数据单元。
24.可选的,所述神经网络为全连接神经网络。
25.可选的,所述装置为嵌入式设备。
26.上述第二方面及第二方面各个可选装置的有益效果,可以参考上述第一方面及第一方面各个可选方法的有益效果,这里不再赘述。
27.第三方面,本发明提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法。
28.第四方面,本发明提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法。
附图说明
29.图1为本技术实施例提供的一种语音识别方法的步骤流程示意图;
30.图2为本技术实施例提供的一种语音识别装置的结构示意图。
具体实施方式
31.为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本技术实施例以及实施例中的具体特征是对本技术技术方案的详细的说明,而不是对本技术技术方案的限定,在不冲突的情况下,本技术实施例以及实施例中的技术特征可以相互结合。
32.全连接神经网络网络(fully connected network):神经网络中的一种特殊类型,全连接神经网络网络的每一层包含多个网络节点,第n层和第n+1层保持着全连接的关系,比如第n层有a个节点,第n+1层有b个节点,则这两层之间的连线共有a*b条,也就是每层之间的任意两个节点都存在逻辑关系。
33.量化(quant):训练工具训练出来的网络参数都是浮点型(float)类型的,float类型的数据在计算的时候会消耗较多的中央处理器(central processing unit,cpu)时间,计算较慢,特别是在嵌入式设备上,更会导致数据丢失的现象。因此,需要将float类型转换为(32位的整数型)int32类型或者(16位的整数型)int16类型,甚至是(8位的整数型)int8类型。转换后的类型叫做量化类型,这些类型的计算速度会快很多。
34.数据单元:神经网络处理的每个数字。数据单元的多少位宽,就是指用多少位比特的精度来描述一个数字,如int 16类型就是用16位比特表示一个数字,int 8类型就是用8位比特表示一个数字。
35.目前,终端设备的计算能力及其有限。一方面,做复杂运算会使得语音识别的速率较低,另一方面,低精度的运算会导致语音识别结果的准确性较低,同样会让用户的感受较
差。终端设备难以保证语音识别的准确性和速率。为此,本技术提供一种语音识别方法。
36.步骤101:终端设备获取待识别语音帧的语音特征向量。
37.步骤102:所述终端设备将所述语音特征向量输入神经网络,从而通过所述神经网络对所述待识别语音帧识别。
38.需要说明的是,步骤101~步骤102中,所述神经网络是根据各样本语音特征按照预设机器学习算法(如梯度下降算法)训练获得的。
39.所述神经网络包括多类网络节点;其中,每类网络节点中各网络节点的数据单元的位宽不相同。至于分为几类网络节点,每类网络节点的数据单元采用多少位的位宽,以及在神经网络中如何分布,都可以灵活的搭配,从而实现计算速度和计算精度的平衡。具体的网络节点设置策略,可以根据终端设备cpu的计算能力来进行评估,终端设备进行简单的测试就可以得出不同网络节点设置策略下语音识别的不同精度及速率。
40.其中,步骤101~步骤102中的神经网络可以为全连接神经网络。
41.全连接神经网络中层与层之间的网络节点都互连,因此计算的次数更多,在此基础上,混合搭配各网络节点的数据单元的位宽,对于兼顾语音识别的准确性和速率的效果更明显。
42.步骤101~步骤102的方法可应用于计算能力较弱的低端终端设备,如嵌入式设备。本发明可以减少对终端设备计算力的需求,可以应用在较为低端的终端设备上。如果不做灵活的搭配,终端设备需要配置更高性能的cpu。在经过步骤101~步骤102优化后,能够节省不少的硬件成本,如果核数较少的cpu成本较低,使用这种cpu就可以完成终端设备语音识别的需求。这样以来,假设每台终端设备节省1元,出货量巨大的话,积少成多,那么节省的成本也会很可观。
43.步骤101~步骤102中所述神经网络中数据单元的数据类型可以做如下设置:
44.所述神经网络中数据单元的数据类型为整数型。
45.整数型的数据的存储是线性压缩的,相对于非线性压缩的数据类型,如浮点型数据,采用整数型的数据的运算效率更高。
46.再者,在数据单元的位宽一定的情况下,运算精度等同于同位宽的浮点型数据按倍数放缩后的精度。举例来说,如果都是32位的位宽,对于浮点型和整数型,除了第一位都是符号位,剩下31位均用来表示数值,它们能够描述的数字个数都是一样的,即2的31次方。那么可以通过对浮点型数据放大相应倍数,映射到相应的整数型。如1.2*1.5=1.80,都扩大10倍,映射到整数型的运算即为12*15=180,虽然运算的数据是整数,但是通过扩大倍数的方式,保留原来小数点后的0.2和0.5,计算中还是考虑了小数部分的影响,精度并没有损失;即数据单元的位宽一定的情况下,浮点型能表示多少精度,整数型也能。
47.而位宽可以做如下设置:
48.所述神经网络的数据单元中包括位宽不小于16位的数据单元及位宽不大于8位的数据单元。
49.在一般语音识别场景中,位宽不小于16位的数据单元已经能保证语音识别运算的精度,而位宽不大于8位的数据单元的语音识别运算对于各类终端设备都能实现,从而可以采用上述设置,兼顾语音识别的准确性和速率。
50.步骤101~步骤102的一种可选实施方式(以下称为实施方式(1))中,所述多类网
络节点仅包括第一类网络节点和第二类网络节点。
51.也就是说,神经网络仅采用两类使用不同数据单元的位宽的网络节点。那么在运算过程中,最多只涉及一类不同位宽间数据的转换,从而控制运算的复杂度,进一步保证语音识别的速率。
52.特殊地,所述神经网络的数据单元中仅包括16位的数据单元及8位的数据单元。那么16位的数据和8位的数据做运算时,才会将8位的数据转化为16位,避免了较多数据转换的情况。特别在全连接神经网络中,每个网络节点贯穿的计算路径更多,如果采用较多类网络节点,不同位宽间数据类型的转换会更加频繁。
53.实施方式(1)具体可以做如下设置:
54.所述神经网络包括n层网络节点;所述第一类网络节点的数据单元的位宽多于所述第二类网络节点的数据单元的位宽;所述第一类网络节点为所述n层网络节点中的m层网络节点;所述第二类网络节点为所述n层网络节点中除所述m层网络节点之外的n-m层网络节点;n,m均为正整数,且m小于n;m根据所述终端设备的处理能力确定。
55.举例来说,神经网络包括10层网络节点,所述第一类网络节点的数据单元的位宽为16位,所述第二类网络节点的数据单元的位宽为8位。m为6,那么所述第一类网络节点为便是10层网络节点中的6层网络节点;所述第二类网络节点为除上述6层网络节点之外的4层网络节点。显然,前6层的网络节点和后4层的网络节点采用同样的位宽的情况下,前6层的网络节点在做数据运算时并不会涉及到数据类型的转换,直到第7层网络节点(即后4层的网络节点的第1层网络节点)才需要数据类型的转换。
56.基于上述实施方式(1)的具体设置,步骤102中通过所述神经网络对所述待识别语音帧识别的方式可以为:
57.所述语音特征向量依次经过所述n层网络节点中的第一层网络节点、第二层网络节点
……
第i层网络节点、第i+1层网络节点
……
第n层网络节点的处理;其中第i层网络节点上的节点数量不少于第i+1层网络节点上的节点数量;i为正整数;所述m层网络节点为所述n层网络节点的前m层网络节点
58.以全连接神经网络举例来说,全连接神经网络一般是前几层的节点数目较大,后面的依次减小,比如节点数分别为546、512、512、512、104的5层神经网络就是前4层的节点数较多。而运算过程中的误差随着节点数的增多而累积的越来越多。因此,前4层的数据单元可以采用16位的位宽,整数型数据(即采用int16量化),也可以前2层采用int16量化,这样可以保证前面几层的精度损失不会太大,如果所有层都用int16量化可能会造成终端设备的计算负载过重,所以后面几层(如后1层,后3层)可以选择int8量化,因为后面几层的节点数较少,所以量化带来的精度损失相对较少。具体前面几层使用int16量化哪几层使用int 8量化(即m的值如何选择),可以根据神经网络的特点灵活选择。
59.如图2所示,本发明提供一种语音识别装置,包括:获取模块201,用于获取待识别语音帧的语音特征向量;识别模块202,用于将所述语音特征向量输入神经网络,从而通过所述神经网络对所述待识别语音帧识别;所述神经网络是根据各样本语音特征按照预设机器学习算法训练获得的;所述神经网络包括多类网络节点;其中,每类网络节点中各网络节点的数据单元的位宽不相同。
60.可选的,所述多类网络节点仅包括第一类网络节点和第二类网络节点。
61.可选的,所述神经网络包括n层网络节点;所述第一类网络节点的数据单元的位宽多于所述第二类网络节点的数据单元的位宽;所述第一类网络节点为所述n层网络节点中的m层网络节点;所述第二类网络节点为所述n层网络节点中除所述m层网络节点之外的n-m层网络节点;n,m均为正整数,且m小于n;m根据所述终端设备的处理能力确定。
62.可选的,所述语音特征向量依次经过所述n层网络节点中的第一层网络节点、第二层网络节点
……
第i层网络节点、第i+1层网络节点
……
第n层网络节点的处理;其中第i层网络节点上的节点数量不少于第i+1层网络节点上的节点数量;i为正整数;所述m层网络节点为所述n层网络节点的前m层网络节点。
63.可选的,所述神经网络中数据单元的数据类型为整数型;所述神经网络的数据单元中包括位宽不小于16位的数据单元及位宽不大于8位的数据单元。
64.可选的,所述神经网络为全连接神经网络。
65.可选的,所述装置为嵌入式设备。
66.本技术实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行本技术实施例提供的一种语音识别方法及任一可选方法。
67.本技术实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行本技术实施例提供的一种语音识别方法及任一可选方法。
68.最后应说明的是:本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。
69.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
70.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
71.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。