1.本发明涉及到语音技术领域,特别涉及到一种语音识别方法、装置、设备和介质。
背景技术:
2.命令词识别属于语音识别,广泛应用于智能家居领域,比如智能语音音箱、智能语音耳机、智能语音灯、智能语音风扇等。嵌入式设备由于成本考虑,一般采用定点运算,不支持浮点。而且其算力较低,相比手机等智能设备,其算力低、内存和flash小。比如主频只有120mhz,内存只有64k,flash只有256k等,资源非常受限。如何将浮点训练的语音识别网络模型,在嵌入式设备上部署且能做到实时计算,是需要解决的问题。将浮点转为定点的方法一般称为量化,一般做法是基于较多的样本,统计网络每层激活值的范围,根据此激活值的范围对其进行量化。然而这会造成当某个样本范围虽包含在统计范围内,但由于使用的非其实际范围,导致量化位数数据利用不充分,致使精度损失较大,降低了语音识别的准确性。
技术实现要素:
3.本发明的主要目的为提供一种语音识别方法、装置、设备和介质,旨在解决当某个样本范围虽包含在统计范围内,但由于使用的非其实际范围,导致量化位数数据利用不充分,致使精度损失较大,降低语音识别的准确性的技术问题。
4.为了实现上述发明目的,本发明第一方面提出一种语音识别方法,所述方法包括:将语音信号输入权值量化后的语音识别网络模型进行推理,其中,在所述语音识别网络模型推理时,分类别对激活值进行量化;将语音识别网络模型输出的定点网络推理结果经过softmax计算,得到音素概率矩阵;基于所述音素概率矩阵进行解码得到语音识别结果;其中,所述分类别对激活值进行量化的步骤包括:若激活值矩阵中的激活值是未经过激活函数得到的,则统计所述激活值矩阵中对应浮点的最大值和最小值;根据所述激活值矩阵中对应浮点的最大值和最小值计算所述激活值矩阵的q值;利用所述激活值矩阵中的q值对所述激活值矩阵中的所有激活值进行量化;其中,q是定点数表示中的小数部分所占的位数;其中,一个激活值矩阵对应一层激活值;若激活值矩阵中的激活值是经过激活函数后得到的,则统计所述激活值矩阵中对应浮点的最大值,根据所述激活值矩阵中对应浮点的最大值计算所述激活值矩阵的q值,根据所述激活值矩阵的q值对所述激活值矩阵中的所有激活值进行量化。
5.进一步的,所述根据所述激活值矩阵中对应浮点的最大值和最小值计算所述激活值矩阵的q值的步骤包括:根据如下公式计算所述激活值矩阵的q值:
int_bits = int(ceil(log2(max(abs(min_value), abs(max_value)))));q = 7
ꢀ‑ꢀ
int_bits其中,max_value表示激活值矩阵中对应浮点的最大值,min_value表示激活值矩阵中对应浮点的最小值,abs表示取绝对值,max表示取最大值,ceil表示往上取整,log2表示以 2 为底数的对数;int表示取整;int_bits表示 根据公式int(ceil(log2(max(abs(min_value), abs(max_value)))))计算得到的结果;q 表示q值,即定点数表示中的小数部分所占的位数。
6.进一步的,所述根据所述激活值矩阵中对应浮点的最大值计算所述激活值矩阵的q值的步骤包括:int_bits = int(ceil(log2(max_value)));q = 8
ꢀ‑ꢀ
int_bits;其中,max_value表示激活值矩阵中对应浮点的最大值,ceil表示往上取整,int表示取整,log2表示以 2 为底数的对数,int_bits 表示根据公式 int(ceil(log2(max_value)))计算得到的结果,q 表示q值,即定点数表示中的小数部分所占的位数。
7.进一步的,所述将语音信号输入权值量化后的语音识别网络模型推理的步骤之前,还包括:获取浮点训练得到的语音识别网络模型;按照如下相同的步骤对所述浮点训练得到的语音识别网络模型中每一权值矩阵中的所有权值进行量化,得到所述权值量化后的语音识别网络模型:从权值矩阵中找出最大权值和最小权值;计算最大权值的绝对值,得到第一值;计算最小权值的绝对值,得到第二值;取所述第一值和所述第二值中的较大者,记作m;将浮点范围确定为[-m,m]获取定点范围;根据所述浮点范围和所述定点范围计算量化参数,根据所述量化参数对所述权值矩阵中的所有权值进行量化。
[0008]
进一步的,所述将语音信号输入权值量化后的语音识别网络模型推理的步骤之前,还包括:获取浮点训练得到的语音识别网络模型;按照如下相同的步骤对所述浮点训练得到的语音识别网络模型中每一权值矩阵中的所有权值进行量化,得到所述权值量化后的语音识别网络模型:从权值矩阵中找出最大权值和最小权值;找出包括所述最大权值和最小权值的最小的2的次幂范围,作为浮点范围;获取定点范围;根据所述浮点范围和所述定点范围计算量化参数,根据所述量化参数对所述权值矩阵中的所有权值进行量化。
[0009]
进一步的,所述根据所述浮点范围和所述定点范围计算量化参数,根据所述量化参数对所述权值矩阵中的所有权值进行量化的步骤包括:
根据公式计算第一量化参数s,其中,表示浮点范围的最大值,表示浮点范围的最小值,表示定点范围的最大值,表示定点范围的最大值;根据公式计算第二量化参数z;根据公式对所述权值矩阵中的所有权值进行量化;其中,r是所述权值矩阵中的权值,q是量化后的权值。
[0010]
进一步的,所述方法还包括:当所述权值量化后的语音识别网络模型的网络结构中存在历史信息s1与当前信息s2融合时,判断当前信息s2的量纲是否与历史信息s1的量纲相同;若相同,则根据公式s = s1 s2将当前信息s2和历史信息s1进行相加,得到相加后的信息s,遍历相加后的信息s,得出其实际的浮点范围,根据所述其实际的浮点范围计算q值;根据所述q值对所述相加后的信息s进行量化;若不同,则判断当前信息s2的量纲是否小于历史信息s1的量纲;若是,则将当前信息s2转换为与历史信息s1相同量纲的信息,得到转换后的当前信息s2’;根据公式s = s1 s2’将转换后的当前信息s2’和历史信息s1进行相加,得到相加后的信息s,遍历相加后的信息s,得出其实际的浮点范围,根据所述其实际的浮点范围计算q值;根据所述q值对所述相加后的信息s进行量化;若否,则将历史信息s1转换为与当前信息s2相同量纲的信息,得到转换后的历史信息s1’;根据公式s = s1
’ꢀ
s2将转换后的历史信息s1’和当前信息s2进行相加,得到相加后的信息s,遍历相加后的信息s,得出其实际的浮点范围,根据所述其实际的浮点范围计算q值;根据所述q值对所述相加后的信息s进行量化。
[0011]
第二方面,本技术实施例提供一种语音识别装置,包括:输入模块,用于将语音信号输入权值量化后的语音识别网络模型进行推理,其中,在所述语音识别网络模型推理时,分类别对激活值进行量化;计算模块,用于将语音识别网络模型输出的定点网络推理结果经过softmax计算,得到音素概率矩阵;解码模块,用于基于所述音素概率矩阵进行解码得到语音识别结果;其中,所述分类别对激活值进行量化包括:若激活值矩阵中的激活值是未经过激活函数得到的,则统计所述激活值矩阵中对应浮点的最大值和最小值;根据所述激活值矩阵中对应浮点的最大值和最小值计算所述激活值矩阵的q值;利用所述激活值矩阵中的q值对所述激活值矩阵中的所有激活值进行量化;其中,q是定点数表示中的小数部分所占的位数;其中,一个激活值矩阵对应一层激活值;若激活值矩阵中的激活值是经过激活函数后得到的,则统计所述激活值矩阵中对
应浮点的最大值,根据所述激活值矩阵中对应浮点的最大值计算所述激活值矩阵的q值,根据所述激活值矩阵的q值对所述激活值矩阵中的所有激活值进行量化。
[0012]
第三方面,本技术实施例提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上述任一项所述的语音识别方法的步骤。
[0013]
第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的语音识别方法的步骤。
[0014]
有益效果:对于语音识别网络模型,现有传统的方法是在量化激活值之前,需要先经过训练以确定合适q值(q是定点数表示中的小数部分所占的位数),然后语音识别网络模型实际使用时,采用确定的q值对激活值进行量化。传统q值是基于样本统计方法,比如,10000个样本,统计其每一层计算得到激活值的范围,找出其对应的q值,一个范围,要包含10000种的情形,其范围必定会很大,进而其q值也必然很小,也就降低了计算的精度,而本技术不需要基于样本的统计范围,而是对每个样本进行动态的计算,因此其范围就会变小,进而其q值就会变大,提升了计算精度,进而提升语音识别的准确性。也即,本技术使用实际的范围代替统计的范围,可更充分利用量化的位数,提升精度,进而提升语音识别的准确性。另外,本技术基于实际值进行推理,避免了个体和统计的差异导致的精度偏大较大的问题。进一步的,本技术计算简单,实时性高,增加的额外推理计算为遍历结果(遍历结果以获得最大值,或,获得最大值和最小值),获取其范围时的开销,此计算基本不增加额外开销。进一步的,基于个体样本的实际范围进行计算,无需统计大量样本获取激活值的范围,简化了量化流程。
附图说明
[0015]
图1为本发明一实施例提供的语音识别方法的流程示意图;图2为本发明一实施例提供的语音识别装置的结构示意图;图3是本发明一实施例提供的计算机设备的结构示意图。
[0016]
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0017]
为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
[0018]
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“上述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件、模块、模块和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、模块、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一模块和全部组合。
[0019]
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
[0020]
参照图1,本发明实施例提供一种语音识别方法,所述方法包括步骤s1-s3:s1、将语音信号输入权值量化后的语音识别网络模型进行推理,其中,在所述语音识别网络模型推理时,分类别对激活值进行量化;s2、将语音识别网络模型输出的定点网络推理结果经过softmax计算,得到音素概率矩阵;s3、基于所述音素概率矩阵进行解码得到语音识别结果;其中,所述分类别对激活值进行量化的步骤s3包括:s11、若激活值矩阵中的激活值是未经过激活函数得到的,则统计所述激活值矩阵中对应浮点的最大值和最小值;根据所述激活值矩阵中对应浮点的最大值和最小值计算所述激活值矩阵的q值;利用所述激活值矩阵中的q值对所述激活值矩阵中的所有激活值进行量化;其中,q是定点数表示中的小数部分所占的位数;其中,一个激活值矩阵对应一层激活值;s12、若激活值矩阵中的激活值是经过激活函数后得到的,则统计所述激活值矩阵中对应浮点的最大值,根据所述激活值矩阵中对应浮点的最大值计算所述激活值矩阵的q值,根据所述激活值矩阵的q值对所述激活值矩阵中的所有激活值进行量化。
[0021]
在本技术实施例中,如上述步骤s1,s11,s12所述权值量化后的语音识别网络模型指的是对浮点训练得到的语音识别网络模型中的权值进行量化后得到的语音识别网络模型。所述语音识别网络模型能够识别用户的语音,其具体采用语音数据训练得到。在训练模型时使用浮点数是因为浮点数能够提供更高的精度和灵活性。浮点数可以表示非常大或非常小的数值,并且可以进行精确的计算,这对于训练复杂的神经网络模型非常重要。另外,浮点数还可以进行连续的插值和插值操作,这对于优化算法(如梯度下降)和模型的收敛非常有帮助。浮点数的精度可以根据需要进行调整,从而在训练过程中平衡模型的精度和计算效率。此外,浮点数在计算机硬件中有广泛的支持,包括cpu(central processing unit,中央处理器)和gpu(graphic processing unit,图形处理器)等,这使得使用浮点数进行训练可以充分利用现有的硬件加速器,提高训练的效率。神经网络模型的量化是为了减少存储空间和计算量,以便于在资源受限的设备上进行部署和推理。量化可以将模型中的浮点参数转换为定点参数,从而减少模型的内存占用和计算需求。由于训练得到的语音识别网络模型的权值(如y=wx b中的w和b均是权值,w是weight,也叫权重,b是bias,也叫是偏置)是固定的,不需要重新计算,因此,可以先量化权值,以降低模型的存储和计算开销。另一方面,由于激活值(y=wx b中x和y均是激活值,x是输入,y是输出,输出的y 经过激活函数 ,比如relu(y)后,也叫做激活值,需要说明的是,在神经网络模型中,上一层的输出是下一层的输入)是动态计算得到的,因此激活值需要模型推理时进行量化。对于语音识别网络模型,现有传统的方法是在量化激活值之前,需要先经过训练以确定合适q值(q是定点数表示中的小数部分所占的位数),然后语音识别网络模型实际使用时,采用确定的q值对激活值进
行量化。传统q值是基于样本统计方法,比如,10000个样本,统计其每一层计算得到激活值的范围,找出其对应的q值,一个范围,要包含10000种的情形,其范围必定会很大,进而其q值也必然很小,也就降低了计算的精度,而本技术不需要基于样本的统计范围,而是对每个样本进行动态的计算,具体方法如步骤s11-s12,因此其范围就会变小,进而其q值就会变大,提升了计算精度,进而提升语音识别的准确性。也即,本技术使用实际的范围代替统计的范围,可更充分利用量化的位数,提升精度,进而提升语音识别的准确性。另外,本技术基于实际值进行推理,避免了个体和统计的差异导致的精度偏大较大的问题。进一步的,本技术计算简单,实时性高,增加的额外推理计算为遍历结果(遍历结果以获得最大值,或,获得最大值和最小值),获取其范围时的开销,此计算基本不增加额外开销。进一步的,基于个体样本的实际范围进行计算,无需统计大量样本获取激活值的范围,简化了量化流程。在步骤s11-s12中,所述激活函数可以是relu函数,由于激活值经过relu函数后只有正值,因此,对于激活值是经过激活函数relu函数后得到的情况,只需要统计最大值即可。
[0022]
如上述步骤s2-s3,定点网络推理结果指的是网络推理的结果是定点数(也称为定点值),这里的网络指的是语音识别网络模型中的网络,softmax函数能够将k维向量(矩阵)转换成概率向量(矩阵),表示它所属每个类别的概率值。将语音识别网络模型输出的定点网络推理结果经过softmax计算,得到音素概率矩阵;基于所述音素概率矩阵进行解码得到语音识别结果是现有方法,本发明实施例对此不做赘述。
[0023]
在一个实施例中,所述根据所述激活值矩阵中对应浮点的最大值和最小值计算所述激活值矩阵的q值的步骤包括:根据如下公式计算所述激活值矩阵的q值:int_bits = int(ceil(log2(max(abs(min_value), abs(max_value)))));q = 7
ꢀ‑ꢀ
int_bits其中,max_value表示激活值矩阵中对应浮点的最大值,min_value表示激活值矩阵中对应浮点的最小值,abs表示取绝对值,max表示取最大值,ceil表示往上取整,log2表示以 2 为底数的对数;int表示取整;int_bits表示 根据公式int(ceil(log2(max(abs(min_value), abs(max_value)))))计算得到的结果;q 表示q值,即定点数表示中的小数部分所占的位数。
[0024]
在本技术实施例中,min_value = min(x),max_value = max(x),x为激活矩阵。另外,浮点范围区间与int_bits的关系为:浮点范围区间为[-2^int_bits,2^int_bits]。
[0025]
下面列举一个例子说明本发明的量化方法获得精度的提升;举例之前,先阐明一个原理:定点计算最终的结果,是要以浮点结果为参考依据。定点乘积以后,结果是定点值,这个值怎么映射为其真实的浮点值,在这里计算过程中需要在计算中包含才能保证最终结果的正确性。
[0026]
假设激活矩阵最大最小值在[-8,8]包含,那么可把浮点值y变为对应的定点值,根据上述q值的计算公式可知其q值等于4,由于[-8,8]对应2^3,8bit量化最大范围是2^7,还存在7-3 =4 的余量, 假设w 的q值为qw ,x的q值是qx ,b的q值是qb,为描述方便,此处省略b。那么计算得到y对应的定点值要变为真实的浮点值需要右移(qw qx),由于有4的余量,故y 对应的定点值实际只需右移(qw qx
ꢀ‑
4)即可,继续后面的计算(下一个wx b )。相比于统计的方式,精度的提升来自于,基于多个样本的统计,这个范围可能是[-64,64], y
只能变为q1 ,y需要右移(qw qx
ꢀ‑ꢀ
1),需多右移3位,是从q1变到q4获得的精度提升。
[0027]
在一个实施例中,所述根据所述激活值矩阵中对应浮点的最大值计算所述激活值矩阵的q值的步骤包括:int_bits = int(ceil(log2(max_value)));q = 8
ꢀ‑ꢀ
int_bits;其中,max_value表示激活值矩阵中对应浮点的最大值,ceil表示往上取整,int表示取整,log2表示以 2 为底数的对数,int_bits 表示根据公式 int(ceil(log2(max_value)))计算得到的结果,q 表示q值,即定点数表示中的小数部分所占的位数。
[0028]
在一个实施例中,所述将语音信号输入权值量化后的语音识别网络模型推理的步骤之前,还包括:获取浮点训练得到的语音识别网络模型;按照如下相同的步骤对所述浮点训练得到的语音识别网络模型中每一权值矩阵中的所有权值进行量化,得到所述权值量化后的语音识别网络模型:从权值矩阵中找出最大权值和最小权值;计算最大权值的绝对值,得到第一值;计算最小权值的绝对值,得到第二值;取所述第一值和所述第二值中的较大者,记作m;将浮点范围确定为[-m,m]获取定点范围;根据所述浮点范围和所述定点范围计算量化参数,根据所述量化参数对所述权值矩阵中的所有权值进行量化。
[0029]
如上述所述,语音识别网络模型是一种多层的网络结构,本技术实施例是按层对权值进行量化的,即每层的权值基于各自层的最大最小值进行量化的,不同层之间独立计算。比如,对权值w来说,若第一层的w权值矩阵a为,那么,其最大值为4.4,最小值为-3.2,最大值的绝对值是4.4,最小值的绝对值是3.2,那么,可以确定浮点范围为[-4.4,4.4],取8bit对称量化,已知8bit量化(对称量化)的定点范围为-128~127,即[-128,127],那么,根据浮点范围[-4.4,4.4]以及定点范围[-128,127]可计算得到量化参数,然后根据该计算得到的量化参数对权值矩阵a中的所有权值进行量化,即根据[-4.4,4.4]映射到[-128,127],具体的量化方法在下文详细说明,在此不做过多赘述。
[0030]
应当理解的是,上述方式为对称量化的一种方式。
[0031]
在一些实施例中,所述将语音信号输入权值量化后的语音识别网络模型推理的步骤之前,还包括:获取浮点训练得到的语音识别网络模型;按照如下相同的步骤对所述浮点训练得到的语音识别网络模型中每一权值矩阵中的所有权值进行量化,得到所述权值量化后的语音识别网络模型:从权值矩阵中找出最大权值和最小权值;找出包括所述最大权值和最小权值的最小的2的次幂范围,作为浮点范围;
获取定点范围;根据所述浮点范围和所述定点范围计算量化参数,根据所述量化参数对所述权值矩阵中的所有权值进行量化。
[0032]
在本技术实施例中,为方便理解“找出包括所述最大权值和最小权值的最小的2的次幂范围,作为浮点范围”,下面列举一个例子进行说明,比如最大值为2.4,最小值为-3.2,那么浮点范围在-3.2~2.4,那么包含它的2的次幂最小范围为 [-4,4],已知8bit量化(对称量化)的定点范围为-128~127,那么根据浮点范围[-4,4]以及定点范围[-128,127]可计算得到量化参数,然后根据该计算得到的量化参数对权值矩阵a中的所有权值进行量化,即根据[-4,4]映射到[-128,127],具体的量化方法在下文详细说明,在此不做过多赘述。
[0033]
应当理解的是,上述方式为对称量化的一种方式。
[0034]
在一个实施例中,所述根据所述浮点范围和所述定点范围计算量化参数,根据所述量化参数对所述权值矩阵中的所有权值进行量化的步骤包括:根据公式计算第一量化参数s,其中,表示浮点范围的最大值,表示浮点范围的最小值,表示定点范围的最大值,表示定点范围的最大值;根据公式计算第二量化参数z;根据公式对所述权值矩阵中的所有权值进行量化;其中,r是所述权值矩阵中的权值,q是量化后的权值。
[0035]
在一个实施例中,所述方法还包括:当所述权值量化后的语音识别网络模型的网络结构中存在历史信息s1与当前信息s2融合时,判断当前信息s2的量纲是否与历史信息s1的量纲相同;若相同,则根据公式s = s1 s2将当前信息s2和历史信息s1进行相加,得到相加后的信息s,遍历相加后的信息s,得出其实际的浮点范围,根据所述其实际的浮点范围计算q值;根据所述q值对所述相加后的信息s进行量化;若不同,则判断当前信息s2的量纲是否小于历史信息s1的量纲;若是,则将当前信息s2转换为与历史信息s1相同量纲的信息,得到转换后的当前信息s2’;根据公式s = s1 s2’将转换后的当前信息s2’和历史信息s1进行相加,得到相加后的信息s,遍历相加后的信息s,得出其实际的浮点范围,根据所述其实际的浮点范围计算q值;根据所述q值对所述相加后的信息s进行量化;若否,则将历史信息s1转换为与当前信息s2相同量纲的信息,得到转换后的历史信息s1’;根据公式s = s1
’ꢀ
s2将转换后的历史信息s1’和当前信息s2进行相加,得到相加后的信息s,遍历相加后的信息s,得出其实际的浮点范围,根据所述其实际的浮点范围计算q值;根据所述q值对所述相加后的信息s进行量化。
[0036]
在本技术实施例中,语音识别属于序列识别任务,其当前输出依赖历史信息,故网
络结构中往往存在历史信息和当前信息的融合,对此种情形的处理,需要考虑历史和当前状态的量纲的差异,以历史信息以s1 表示,当前信息以s2 表示 ,比如s1 浮点范围在[-2,2],使用q6(即q=6)表示, s2在[-4,4]使用q5(即q=5)表示,由于6大于5,实际计算定点加法时, 先把s2 变为q6 ,得到s2’, 然后相加,根据相加的后结果s,s = s1 s2’,遍历s 得出其实际的浮点范围,比如在[-8,8]范围,那么s》》(6
ꢀ‑ꢀ
(7
ꢀ‑ꢀ
3))作为计算下一层计算的输入,其中7 为8bit量化的最大值(这里可以这样理解, 8位表示的范围是-128~127,是(-2^7 ~2^7
ꢀ‑
1,即7是8bit量化的最大值),3来自8 = 2^3, 之间存在4的余量,故s右移6位变为实际的浮点值,还可有4位的余量进行保存,从而提升精度。
[0037]
请参阅图2,本技术实施例还提供一种语音识别装置,包括:输入模块1,用于将语音信号输入权值量化后的语音识别网络模型进行推理,其中,在所述语音识别网络模型推理时,分类别对激活值进行量化;第一计算模块2,用于将语音识别网络模型输出的定点网络推理结果经过softmax计算,得到音素概率矩阵;解码模块3,用于基于所述音素概率矩阵进行解码得到语音识别结果;其中,所述分类别对激活值进行量化包括:若激活值矩阵中的激活值是未经过激活函数得到的,则统计所述激活值矩阵中对应浮点的最大值和最小值;根据所述激活值矩阵中对应浮点的最大值和最小值计算所述激活值矩阵的q值;利用所述激活值矩阵中的q值对所述激活值矩阵中的所有激活值进行量化;其中,q是定点数表示中的小数部分所占的位数;其中,一个激活值矩阵对应一层激活值;若激活值矩阵中的激活值是经过激活函数后得到的,则统计所述激活值矩阵中对应浮点的最大值,根据所述激活值矩阵中对应浮点的最大值计算所述激活值矩阵的q值,根据所述激活值矩阵的q值对所述激活值矩阵中的所有激活值进行量化。
[0038]
所述根据所述激活值矩阵中对应浮点的最大值和最小值计算所述激活值矩阵的q值的步骤包括:根据如下公式计算所述激活值矩阵的q值:int_bits = int(ceil(log2(max(abs(min_value), abs(max_value)))));q = 7
ꢀ‑ꢀ
int_bits其中,max_value表示激活值矩阵中对应浮点的最大值,min_value表示激活值矩阵中对应浮点的最小值,abs表示取绝对值,max表示取最大值,ceil表示往上取整,log2表示以 2 为底数的对数;int表示取整;int_bits表示 根据公式int(ceil(log2(max(abs(min_value), abs(max_value)))))计算得到的结果;q 表示q值,即定点数表示中的小数部分所占的位数。
[0039]
在一个实施例中,所述根据所述激活值矩阵中对应浮点的最大值计算所述激活值矩阵的q值包括:int_bits = int(ceil(log2(max_value)));q = 8
ꢀ‑ꢀ
int_bits;其中,max_value表示激活值矩阵中对应浮点的最大值,ceil表示往上取整,int表示取整,log2表示以 2 为底数的对数,int_bits 表示根据公式 int(ceil(log2(max_
value)))计算得到的结果,q 表示q值,即定点数表示中的小数部分所占的位数。在一个实施例中,所述语音识别装置还包括:获取模块,用于获取浮点训练得到的语音识别网络模型;量化模块,用于按照如下相同的步骤对所述浮点训练得到的语音识别网络模型中每一权值矩阵中的所有权值进行量化,得到所述权值量化后的语音识别网络模型:从权值矩阵中找出最大权值和最小权值;计算最大权值的绝对值,得到第一值;计算最小权值的绝对值,得到第二值;取所述第一值和所述第二值中的较大者,记作m;将浮点范围确定为[-m,m]获取定点范围;根据所述浮点范围和所述定点范围计算量化参数,根据所述量化参数对所述权值矩阵中的所有权值进行量化。
[0040]
在一个实施例中,所述将语音信号输入权值量化后的语音识别网络模型推理的步骤之前,还包括:获取模块,用于获取浮点训练得到的语音识别网络模型;量化模块,用于按照如下相同的步骤对所述浮点训练得到的语音识别网络模型中每一权值矩阵中的所有权值进行量化,得到所述权值量化后的语音识别网络模型:从权值矩阵中找出最大权值和最小权值;找出包括所述最大权值和最小权值的最小的2的次幂范围,作为浮点范围;获取定点范围;根据所述浮点范围和所述定点范围计算量化参数,根据所述量化参数对所述权值矩阵中的所有权值进行量化。
[0041]
在一个实施例中,所述根据所述浮点范围和所述定点范围计算量化参数,根据所述量化参数对所述权值矩阵中的所有权值进行量化包括:根据公式计算第一量化参数s,其中,表示浮点范围的最大值,表示浮点范围的最小值,表示定点范围的最大值,表示定点范围的最大值;根据公式计算第二量化参数z;根据公式对所述权值矩阵中的所有权值进行量化;其中,r是所述权值矩阵中的权值,q是量化后的权值。
[0042]
在一个实施例中,所述语音识别装置还包括:转换模块,用于当所述权值量化后的语音识别网络模型的网络结构中存在历史信息s1与当前信息s2融合时,将当前信息s2转换为与历史信息s1相同量纲的信息,得到转换后的当前信息s2’相加模块,用于根据公式s = s1 s2’将转换后的当前信息s2’和历史信息s1进
行相加,得到相加后的信息s,遍历相加后的信息s,得出其实际的浮点范围,根据所述其实际的浮点范围计算q值;根据所述q值对所述相加后的信息s进行量化。
[0043]
第一判断模块,用于当所述权值量化后的语音识别网络模型的网络结构中存在历史信息s1与当前信息s2融合时,判断当前信息s2的量纲是否与历史信息s1的量纲相同;第一量化模块,用于若相同,则根据公式s = s1 s2将当前信息s2和历史信息s1进行相加,得到相加后的信息s,遍历相加后的信息s,得出其实际的浮点范围,根据所述其实际的浮点范围计算q值;根据所述q值对所述相加后的信息s进行量化;第二判断模块,用于若不同,则判断当前信息s2的量纲是否小于历史信息s1的量纲;第一转换模块,用于若是,则将当前信息s2转换为与历史信息s1相同量纲的信息,得到转换后的当前信息s2’;第二量化模块,用于根据公式s = s1 s2’将转换后的当前信息s2’和历史信息s1进行相加,得到相加后的信息s,遍历相加后的信息s,得出其实际的浮点范围,根据所述其实际的浮点范围计算q值;根据所述q值对所述相加后的信息s进行量化;第二转换模块,用于若否,则将历史信息s1转换为与当前信息s2相同量纲的信息,得到转换后的历史信息s1’;第三量化模块,用于根据公式s = s1
’ꢀ
s2将转换后的历史信息s1’和当前信息s2进行相加,得到相加后的信息s,遍历相加后的信息s,得出其实际的浮点范围,根据所述其实际的浮点范围计算q值;根据所述q值对所述相加后的信息s进行量化。
[0044]
参照图3,本发明实施例还提供一种计算机设备,该计算机设备的内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储语音识别方法的数据等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。进一步地,上述计算机设备还可以设置有输入装置和显示屏等。上述计算机程序被处理器执行时以实现语音识别方法,包括如下步骤:将语音信号输入权值量化后的语音识别网络模型进行推理,其中,在所述语音识别网络模型推理时,分类别对激活值进行量化;将语音识别网络模型输出的定点网络推理结果经过softmax计算,得到音素概率矩阵;基于所述音素概率矩阵进行解码得到语音识别结果;其中,所述分类别对激活值进行量化的步骤包括:若激活值矩阵中的激活值是未经过激活函数得到的,则统计所述激活值矩阵中对应浮点的最大值和最小值;根据所述激活值矩阵中对应浮点的最大值和最小值计算所述激活值矩阵的q值;利用所述激活值矩阵中的q值对所述激活值矩阵中的所有激活值进行量化;其中,q是定点数表示中的小数部分所占的位数;其中,一个激活值矩阵对应一层激活值;若激活值矩阵中的激活值是经过激活函数后得到的,则统计所述激活值矩阵中对应浮点的最大值,根据所述激活值矩阵中对应浮点的最大值计算所述激活值矩阵的q值,根据所述激活值矩阵的q值对所述激活值矩阵中的所有激活值进行量化。本领域技术人员可以理解,图3中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定。
[0045]
本技术一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现语音识别方法,包括如下步骤:将语音信号输入权值量化后的语音识别网络模型进行推理,其中,在所述语音识别网络模型推理时,分类别对激活值进行量化;将语音识别网络模型输出的定点网络推理结果经过softmax计算,得到音素概率矩阵;基于所述音素概率矩阵进行解码得到语音识别结果;其中,所述分类别对激活值进行量化的步骤包括:若激活值矩阵中的激活值是未经过激活函数得到的,则统计所述激活值矩阵中对应浮点的最大值和最小值;根据所述激活值矩阵中对应浮点的最大值和最小值计算所述激活值矩阵的q值;利用所述激活值矩阵中的q值对所述激活值矩阵中的所有激活值进行量化;其中,q是定点数表示中的小数部分所占的位数;其中,一个激活值矩阵对应一层激活值;若激活值矩阵中的激活值是经过激活函数后得到的,则统计所述激活值矩阵中对应浮点的最大值,根据所述激活值矩阵中对应浮点的最大值计算所述激活值矩阵的q值,根据所述激活值矩阵的q值对所述激活值矩阵中的所有激活值进行量化。可以理解的是,本实施例中的计算机可读存储介质可以是易失性可读存储介质,也可以为非易失性可读存储介质。
[0046]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram通过多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双速据率sdram(ssrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0047]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
[0048]
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。