用于优化语音识别过程的方法、设备和存储介质与流程

专利2022-05-09  165


本发明的实施方式涉及计算机技术领域,更具体地,本发明的实施方式涉及用于优化语音识别过程的方法、设备和存储介质。



背景技术:

本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。

语音识别(automaticspeechrecognition,简称asr)是语音交互中一个重要的人工智能(artificialintelligence,简称ai)技术环节。常见的语音识别应用场景包括智能音箱、同声传译、通话翻译等。asr识别需要强大的计算能力,如何实现一个低延迟、高性能、低功耗的asr面临着重大挑战。随着中央处理器cpu算力的不断增强以及asr技术的日渐成熟,cpu已经成为目前实现asr的主要计算平台。



技术实现要素:

但是,由于硅芯片逼近物理极限,使得经济成本升高,以及数据的指数爆发式增长,使得单纯依靠cpu运行asr会出现计算速度较慢、功耗高、设备续航时间短等问题,这是非常令人烦恼的过程。

为此,非常需要一种改进的用于优化语音识别过程的方法、设备和存储介质,以使运行asr的过程能够实现更快的计算速度、更低的延时,并且能够降低功耗以延长设备续航时间等。

在本上下文中,本发明的实施方式期望提供一种用于优化语音识别过程的方法、设备和存储介质。

在本发明实施方式的第一方面中,提供了一种用于优化语音识别过程的方法,包括:响应于接收到待识别语音信息,使用第一处理器对所述待识别语音信息进行特征提取,以获得所述待识别语音信息的特征信息;使用不同于所述第一处理器的第二处理器对所述特征信息进行基于神经网络模型的推理运算;以及使用所述第一处理器对所述推理运算的运算结果进行解码处理,以获得所述待识别语音信息的语音识别结果。

在本发明的一个实施例中,在使用第二处理器进行基于神经网络模型的推理运算中,所述方法还包括:在执行所述推理运算之前申请第一内存块;以及将所述每层网络结构的权重参数存储在所述第一内存块中,其中各层网络结构的权重参数的地址基于基准地址和相应的偏移量来确定。

在本发明的再一个实施例中,将所述每层网络结构的权重参数存储在所述第一内存块中包括:对所述权重参数进行非对称量化,以得到量化权重参数;以及将所述量化权重参数存储在所述第一内存块中。

在本发明的一个实施例中,在使用第一处理器进行特征提取时,所述方法还包括:使用所述第一处理器的中核和/或大核来对所述待识别语音信息进行特征提取;和/或在使用所述第一处理器对所述推理运算的运算结果进行解码处理时,所述方法还包括:使用所述第一处理器的中核和/或大核来对所述运算结果进行解码处理。

在本发明的另一个实施例中,所述方法进一步包括:对所述特征信息进行非对称量化,使得所述特征信息由第一位宽的浮点数据类型转化为第二位宽的定点数据类型,以便所述第二处理器对所述第二位宽的定点数据类型的所述特征信息进行处理;以及对所述运算结果进行反量化处理,使得所述运算结果由所述第二位宽的定点数据类型转化为所述第一位宽的浮点数据类型,以便所述第一处理器对所述第一位宽的浮点数据类型的所述运算结果进行处理。

在本发明的又一个实施例中,在使用第二处理器对所述特征信息进行基于神经网络模型的推理运算时,所述方法还包括:对所述推理运算中产生的第一位宽的中间数据进行重量化,使得所述第二处理器在对所述神经网络模型的每层结构的推理运算中均使用所述第二位宽的定点数据类型的数据进行处理。

在本发明的再一个实施例中,在使用第二处理器对所述特征信息进行基于神经网络模型的推理运算时,所述方法还包括:在基于所述神经网络模型的量化求和运算和/或重量化过程中,根据所述量化求和运算和/或所述重量化过程中的向量的数值大小,使用相应的放大系数对所述向量进行放大。

在本发明的又一个实施例中,所述第一处理器和所述第二处理器设置于端侧。

在本发明的再一个实施例中,所述第一处理器包括中央处理器;所述第二处理器包括数字信号处理器、图形处理器和嵌入式神经网络处理器中的至少一种。

在本发明实施方式的第二方面中,提供了一种用于优化语音识别过程的设备,包括:第一处理器,其用于对接收到的待识别语音信息进行特征提取,以获得所述待识别语音信息的特征信息;以及对基于神经网络模型的推理运算的运算结果进行解码处理,以获得所述待识别语音信息的语音识别结果;第二处理器,其与所述第一处理器连接,并用于对所述特征信息进行基于所述神经网络模型的所述推理运算。

在本发明的一个实施例中,所述第二处理器还用于:在执行所述推理运算之前申请第一内存块;以及所述第一处理器用于将所述每层网络结构的权重参数存储在所述第一内存块中,其中各层网络结构的权重参数的地址基于基准地址和相应的偏移量来确定。

在本发明的再一个实施例中,所述第一处理器还用于:对所述权重参数进行非对称量化,以得到量化权重参数;以及将所述量化权重参数存储在所述第一内存块中。

在本发明的一个实施例中,所述第一处理器还用于:使用中核和/或大核来对所述待识别语音信息进行特征提取;和/或使用中核和/或大核来对所述运算结果进行解码处理。

在本发明的另一个实施例中,所述第一处理器还用于:对所述特征信息进行非对称量化,使得所述特征信息由第一位宽的浮点数据类型转化为第二位宽的定点数据类型,以便所述第二处理器对所述第二位宽的定点数据类型的所述特征信息进行处理;以及对所述运算结果进行反量化处理,使得所述运算结果由所述第二位宽的定点数据类型转化为所述第一位宽的浮点数据类型,并对所述第一位宽的浮点数据类型的所述运算结果进行处理。

在本发明的又一个实施例中,所述第二处理器还用于:对所述推理运算中产生的第一位宽的中间数据进行重量化,以便在对所述神经网络模型的每层结构的推理运算中均使用所述第二位宽的定点数据类型的数据进行处理。

在本发明的再一个实施例中,在对所述特征信息进行基于神经网络模型的推理运算时,所述第二处理器还用于:在基于所述神经网络模型的量化求和运算和/或重量化过程中,根据所述量化求和运算和/或重量化过程中的向量的数值大小,使用相应的放大系数对所述向量进行放大。

在本发明的又一个实施例中,所述第一处理器和所述第二处理器设置于端侧。

在本发明的再一个实施例中,所述第一处理器包括中央处理器;所述第二处理器包括数字信号处理器、图形处理器和嵌入式神经网络处理器中的至少一种。

在本发明实施方式的第三方面中,提供了一种计算机可读存储介质,其存储有用于优化语音识别过程的程序,当所述程序由处理器来运行时,执行根据本发明实施方式的第一方面中任一项所述的方法。

根据本发明实施方式的用于优化语音识别过程的方法,可以在语音识别过程中使用不同的处理器(即第一处理器和第二处理器)处理不同的阶段,而不是仅使用一种处理器处理整个语音识别过程,从而可以充分利用每个处理器的计算能力,并且显著降低设备的功耗,以实现减少延时和延长设备续航能力的目的,为用户带来了更好的体验。

在一些实施例中,通过申请第一内存块以及将每层网络结构的权重参数都存储在第一内存块中,可以有效减少第一处理器和第二处理器的调用时间,从而能够显著提高语音识别过程的数据加载速度。在另一些实施例中,使用第一处理器的中核和/或大核来对待识别语音信息进行特征提取,以及对推理运算结果进行解码处理,有利于提高整个语音识别过程的计算速度和整体性能。

附图说明

通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:

图1示意性地示出了根据本发明实施方式的应用场景示意图;

图2示意性地示出了根据本发明实施方式的用于优化语音识别过程的方法流程图;

图3示意性地示出了根据本发明实施方式的包括申请内存块的用于优化语音识别过程的方法流程图;

图4示意性地示出了根据本发明另一个实施例的用于优化语音识别过程的方法流程图;

图5示意性地示出了根据本发明实施方式的包括对数据类型进行处理的用于优化语音识别过程的方法流程图;

图6示意性地示出根据本发明实施方式的用于优化语音识别过程的设备框图;以及

图7示意性地示出根据本发明实施方式的第一处理器与第二处理器协同处理asr的过程示意图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。

此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。

下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。

发明概述

本发明人发现,基于神经网络模型的asr是一种传统高效的asr算法,以时延神经网络(timedelayneuralnetwork,简称tdnn)模型为例,基于tdnn模型的asr主要包括三个步骤:特征提取、tdnn模型推理、hclg图解码,其中tdnn模型推理步骤耗时最多(占整个asr计算87.3%),是影响计算性能的关键模块。tdnn模型推理包括矩阵乘法和一些其他矩阵/向量计算。tdnn模型推理一般分为很多层,每层的结构基本相似,均可以包括多个矩阵乘法和/或其他矩阵/向量计算。

本发明人还发现,cpu善于逻辑控制,调度、管理、协调能力强,但是功耗较大。一些其他处理器也具有自身的优势,例如数字信号处理器dsp善于密集计算,并具有功耗低的特性;图形处理器gpu擅长处理密集型数据和并行数据;嵌入式神经网络处理器npu擅长并行计算,并具有功耗低的特性。如果单纯只依靠cpu进行复杂的深度学习asr推理计算,尽管cpu能够完成大量矩阵/向量计算,但是实际的计算效率并不高,同时也会有功耗高的问题。本发明人想到,可以通过利用不同种类处理器的特性协同处理语音识别过程的不同阶段计算任务,以解决现有技术中单纯依靠一种处理器(例如cpu)计算asr产生的计算效率低、功耗高等问题。

在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。

应用场景总览

首先参考图1详细阐述本发明实施例的用于优化语音识别过程的方法及相关产品的应用场景。

图1示意性地示出了根据本发明实施方式的应用场景示意图。需要说明的是,图1仅为可以应用本发明实施方式的应用场景的示例,以帮助本领域技术人员理解本发明的技术内容,并不意味着本发明实施方式不可以用于其他设备、系统、环境或场景。

如图1中所示,根据本发明实施方式的方法可以通过对接收到的语音101进行识别,以将语音101转为相应的文字102(例如图示中的“你好”)。在一些应用场景中,可以将识别语音101得到的文字102直接呈现在电子设备103的显示屏上,以便于用户能够在电子设备103上确认相应的操作。例如在发送信息的场景中,通过识别用户的语音101并直接将其转化的文字102呈现出来,能够减少用户的操作以及信息编辑时间,还能够帮助老年人或者打字有困难的人员完成信息编辑操作,为现代人的生活提供了极大的便利。

在另一些应用场景中,例如翻译、同声传译104等应用场景中,可以通过对来自一种语种的语音101进行识别,并将识别得到的文字102翻译为另一种语种的文字。在同声传译104的应用场景中,可以将另一语种的文字转化为另一语种的语音(例如图示中的“hello”),以传递给用户。在又一些应用场景中,例如智能音箱105等,可以通过对用户的语音进行识别,实现与用户的信息交互,以完成用户的操作指令。

在上述应用场景中,用户往往期望获得实时、正确的语音识别效果,同时也期望语音识别的使用能够对电子设备的续航时间产生较小的影响。根据本发明实施方式的用于优化语音识别过程的方法可以根据语音识别过程中各个数据处理阶段的特点,利用多个处理器的计算平台对语音识别过程进行优化,以实现延时少、功耗低的语音识别过程。

示例性方法

下面结合图1的应用场景,参考图2来描述根据本发明示例性实施方式的用于优化语音识别过程的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。

首先参考图2,示意性地示出了根据本发明实施方式的用于优化语音识别过程的方法流程图。如图2中所示,方法200可以包括:在步骤201中,响应于接收到待识别语音信息,使用第一处理器对待识别语音信息进行特征提取,以获得待识别语音信息的特征信息。在一些实施例中,第一处理器可以包括中央处理器cpu。待识别语音信息可以包括任意长度、任意内容的语音信息。特征提取可以包括对待识别语音信息中的声学特征进行提取。在另一些实施例中,特征信息可以包括以向量形式表示的特征参数。步骤201的操作过程可以理解为,使用第一处理器将待识别语音信息转换为计算机能够处理的语音特征向量。

接着,在步骤202中,可以使用不同于第一处理器的第二处理器对特征信息进行基于神经网络模型的推理运算。在一些实施例中,神经网络模型可以包括声学模型,例如时延神经网络tdnn模型。神经网络模型的推理运算可以包括矩阵乘法、其他矩阵运算和向量运算等,其中向量运算可以包括例如向量求和运算、向量乘向量运算、系数乘向量运算等。在另一些实施例中,第二处理器可以包括数字信号处理器dsp、图形处理器gpu和嵌入式神经网络处理器npu等中的至少一种。为了便于理解,下面将举例说明。

在一个实施例中,第一处理器可以为cpu,第二处理器可以为dsp。根据这样的设置,可以充分发挥cpu善于逻辑控制而dsp善于进行密集计算以及在低功耗下处理矩阵和向量运算任务的特点,从而可以有效提高asr的整体性能,以及显著降低功耗以提高设备续航能力。

然后,流程可以前进到步骤203中,可以使用第一处理器对推理运算的运算结果进行解码处理,以获得待识别语音信息的语音识别结果。在一些实施例中,解码处理可以是将模型推理(包括矩阵乘法、其他向量运算等)的运算结果转化为相应的文字信息。

在本发明的又一个实施例中,第一处理器和第二处理器可以设置于端侧。为了便于理解本实施例的有益效果,下面对云侧和端侧进行说明和比较。云侧是一种集中式服务,可以把所有图像、音频等数据通过网络传输到云中心进行处理,然后把处理结果反馈回去。云侧资源集中且通用性强,但是随着数据的指数式爆发增长,云侧已暴露出了很多不足,例如数据处理的实时性、网络条件制约和数据安全等。基于云侧的局限性,端侧的推理越来越重要。端侧的推理具有低延时、可以保证数据隐私以及不依赖网络(即离线)等特点。然而,端侧的计算资源、内存存储等都比较有限,如何能够提高端侧的计算能力以及综合性能,对于语音识别能否满足在端侧的应用需求至关重要。

目前,单纯依靠设置在端侧的cpu执行离线asr的推理运算,将消耗大量的计算时间和功耗,这对于使用便携式电子设备和移动终端(例如手机等)的用户来说是不希望发生的。根据本实施例的设置,可以使用设置于端侧的第一处理器和第二处理器,以便协同处理端侧asr的多阶段运算,从而有利于提高端侧处理asr复杂算法的计算能力以及降低端侧的功耗,为asr在端侧的应用落地提供有力的软硬件支持。

图3示意性地示出了根据本发明实施方式的包括申请内存块的用于优化语音识别过程的方法流程图。通过下面的描述可以看出,方法300是方法200的一个具体化表现形式,因此前文中结合图2对方法200的描述也同样适用于下面对方法300的描述中。

如图3中所示,方法300可以包括:在步骤310中,可以响应于接收到待识别语音信息,使用第一处理器对待识别语音信息进行特征提取,以获得待识别语音信息的特征信息。步骤310已经在前文中结合图2中的步骤201进行了详细的描述,此处不再赘述。

接着,在步骤320中,可以申请第一内存块。在一些实施例中,可以使得第二处理器执行步骤320,并实现与第一处理器的内存共享,即第一处理器和第二处理器均可以访问第一内存块。在另一些实施例中,可以使得第一处理器执行步骤320。在又一些实施例中,第一内存块的数量可以设置为一个。

然后,流程可以前进到步骤330中,可以将每层神经网络结构的权重参数存储在第一内存块中,其中各层网络结构的权重参数的地址基于基准地址和相应的偏移量来确定。在一些实施例中,基准地址可以是预设的参考地址,其可以是第一内存块的首地址,也可以是第一内存块的尾地址等。在另一些实施例中,偏移量可以根据各层网络结构的相对位置关系、或者所属层数等来确定,例如根据各层网络结构的相对位置关系可以是根据每一层的模型的结构的大小来确定。

根据这样的设置,各层网络结构的权重参数的地址可以通过基准地址加上相应(即对应层)的偏移量来得到。需要理解的是,相比于将各层网络结构的权重参数存储在不同的内存块中,将每层网络结构的权重参数均存储在同一个第一内存块中,可以减少第一处理器和第二处理器的通信时间,为提高asr的整体性能做出了重要贡献。

在一些实施例中,步骤330可以包括:在步骤311(虚线框示出)中,可以对权重参数进行非对称量化,以得到量化权重参数;以及步骤312(虚线框示出),可以将量化权重参数存储在所述第一内存块中。在一些应用场景中,第二处理器更擅长定点数据计算,而对浮点数据的计算能力较差,因此,通过利用第一处理器存储量化后得到的量化权重参数可以使得第二处理器从第一内存块读取权重参数时,能够直接读取到定点数据类型的量化权重参数,以利于进行后续运算。进一步地,根据本实施例的方案,可以在申请第一内存块时,只需要申请量化的权重空间,相比于存储未量化的权重空间,可以节省内存空间以及减少数据加载的时间。为了便于理解存储量化权重参数的有益效果,下面将举例说明。

例如,在一个实施例中,第二处理器擅长8位的定点数据计算,第一处理器擅长32位的浮点数据计算,在步骤311中可以进行非对称量化,以得到8位的量化权重参数,相比于存储未量化的32位的权重参数,只申请量化的权重空间将节省75%的空间,并且加载数据量也只有原来的1/4,既节省了内存空间,又减少了数据加载的时间。

如图3中进一步示出的,方法300还可以包括步骤340和步骤350,其中在步骤340中,可以使用不同于第一处理器的第二处理器对特征信息进行基于神经网络模型的推理运算;在步骤350中,可以使用第一处理器对推理运算的运算结果进行解码处理,以获得待识别语音信息的语音识别结果。步骤340和步骤350与前文中结合图2描述的步骤202和步骤203相同或相似,此处不再赘述。

图4示意性地示出了根据本发明另一个实施例的用于优化语音识别过程的方法流程图。如图4中所示,方法400可以包括:步骤410中,可以响应于接收到待识别语音信息,使用第一处理器对待识别语音信息进行特征提取,以获得待识别语音信息的特征信息。在一些实施例中,步骤410可以包括步骤411(虚线框示出),在步骤411中,可以使用第一处理器的中核和/或大核来对待识别语音信息进行特征提取。在一个实施例中,可以使用第一处理器的中核来对待识别语音信息进行特征提取。在另一个实施例中,可以使用第一处理器的大核来对待识别语音信息进行特征提取。在又一个实施例中,可以使用第一处理器的中核和大核对待识别语音信息进行特征提取。

接着,在步骤420中,可以使用不同于第一处理器的第二处理器对特征信息进行基于神经网络模型的推理运算。如图中所示,在另一些实施例中,步骤420可以包括步骤421和步骤422,其中在步骤421中,可以根据第二处理器的可用线程数量,将推理运算中的矩阵乘法运算的右乘矩阵的列划分为多个矩阵块。在一些实施例中,可用线程数量可以由第二处理器的硬件结构决定。在另一些实施例中,可用线程数量可以包括第二处理器的硬线程数量。在一些实施例中,划分的矩阵块的数量可以与可用线程数量相同。矩阵乘法运算可以包括左乘矩阵和右乘矩阵的乘积运算,其中左乘矩阵的列数和右乘矩阵的行数应该相同。然后,在步骤422中,可以将多个矩阵块分配在第二处理器的可用线程上并行地执行矩阵乘法运算。根据本实施例的设置,通过对矩阵乘法运算执行并行运算,可以充分利用第二处理器的硬件资源,以提高数据处理的整体效率。

如图4中进一步示出的,方法400还可以包括步骤430,使用第一处理器对推理运算的运算结果进行解码处理,以获得待识别语音信息的语音识别结果。在一些实施例中,步骤430可以包括步骤431,可以使用第一处理器的中核和/或大核来对运算结果进行解码处理。步骤431的操作方式与步骤411的相同或相似,此处不再赘述。

需要说明的是,通常情况下,当使用第一处理器处理步骤410和步骤430,而无需处理计算量最大的步骤420时,系统会将步骤410和步骤430中所需的计算自动切换至第一处理器的小核上执行,从而导致asr的整体性能较差。根据本发明实施例的方法400,可以通过配置第一处理器的中核和/或大核来处理步骤410和步骤430,能够有利于提高在语音识别过程中的特征提取阶段和解码阶段的计算性能。

本领域技术人员可以理解的是,方法400可以不限于仅包括图示中的步骤,还可以根据处理器擅长处理的数据类型,包括对输入数据或者输出数据进行处理的步骤,下面将结合图5进行示例性的描述。

图5示意性地示出了根据本发明实施方式的包括对数据类型进行处理的用于优化语音识别过程的方法流程图。如图5中所示,方法500可以包括:在步骤510中,可以响应于接收到待识别语音信息,使用第一处理器对待识别语音信息进行特征提取,以获得待识别语音信息的特征信息。步骤510与前文中结合图2描述的步骤201、结合图3描述的步骤310以及结合图4描述的步骤410相同或相似,此处不再赘述。

接着,在步骤520中,可以对特征信息进行非对称量化,使得特征信息由第一位宽的浮点数据类型转化为第二位宽的定点数据类型,以便第二处理器对第二位宽的定点数据类型的特征信息进行处理。在一些实施例中,第二处理器擅长处理8位、16位和32位的定点数据类型,第二位宽可以根据需要设置为8位、16位或者32位。还例如,第一处理器擅长32位的浮点数据类型,第一位宽可以设置为32位。

然后,流程可以前进到步骤530中,可以使用不同于第一处理器的第二处理器对特征信息进行基于神经网络模型的推理运算。在一些实施例中,在执行步骤530中的推理运算时,可以执行步骤531(虚线框示出),可以对推理运算中产生的第一位宽的中间数据进行重量化,使得第二处理器在对神经网络模型的每层结构的推理运算中均使用第二位宽的定点数据类型的数据进行处理。例如,在一些实施例中,第二位宽的矩阵经过矩阵乘法运算后,会产生第一位宽的乘积结果数据(即中间数据),可以将该第一位宽的乘积结果数据重新进行量化,使其转化为第二位宽的数据,以便进行后续处理。对神经网络模型的每层结构的推理运算中均使用第二位宽的定点数据类型的数据进行处理,可以使得第二处理器始终处于对擅长数据的处理状态,从而有利于进一步发挥第二处理器的计算优势。

在本发明的再一个实施例中,在步骤530中使用第二处理器对特征信息进行基于神经网络模型的推理运算时,方法500还可以包括:在基于神经网络模型的量化求和运算和/或重量化过程中,根据量化求和运算和/或重量化过程中的向量的数值大小,使用相应的放大系数对向量进行放大。因此通过本实施例的放大操作,有利于提高运算结果的精度。为了便于理解,下面将结合公式进行说明。

非对称量化的公式如下:

q=r/s z(公式一)

公式一中的r表示浮点数据类型的实际数值,q表示非对称量化值,s表示缩放系数,z表示零值量化值,其中s和z的计算公式分别如下:

z=(-min)/s(公式三)

公式二和公式三中的s的数据类型为第一位宽的浮点数据类型,z的数据类型为第二位宽的定点数据类型,max表示待量化数据的最大值,min表示待量化数据的最小值。

在量化求和运算中,需要对向量进行求和或者对矩阵进行求和,下面以向量r1和向量r2求和得到结果向量r3为例进行说明。

r3=r1 r2

=s1(q1-z1) s2(q2-z2)

=s2*[s1/s2(q1-z1) (q2-z2)]

=s2/l[(l*s1/s2)(q1-z1) l*(q2-z2)]

=s2/l[l1(q1-z1) l*(q2-z2)](公式四)

根据公式一中对r的计算方式,可以推导出公式四的计算结果,其中l为放大系数。在一些应用场景中,运算过程中产生的向量(q1-z1)和向量(q2-z2)的数值较小,通过使用相应的放大系数l对向量(q1-z1)和向量(q2-z2)分别进行放大,能够提高向量(q1-z1)和向量(q2-z2)求和结果的精度,从而有利于提高量化结果的准确性,以进一步降低量化过程中对浮点数据精度的损失率。在一些实施例中,l可以为较大的整数。在另一些实施例中,l的取值可以包括2的8-16次幂。

在重量化的运算中,以将32位的定点中间数据r3重新量化成8位定点数据q3为例,为了简化计算,r3的最大值和最小值可以采用对称量化,请参见如下计算过程。

r3_min=s3_int32*q3_int32_min,r3_max=s3_int32*q3_int32_max(公式五)

q3=r3/s3 z3

=(s3_int32*q3_int32)/s3 z3

=s3_int32/s3*q3_int32 z3

=(s3_int32/s3*l)*q3_int32/l z3

=l1*q3_int32/l z3(公式六)

根据公式一、公式二、公式三和公式五,可以推导出公式六的计算过程,其中,int32表示32位的定点数据,r3_min表示r3的最小值,r3_max表示r3的最大值。在一些应用场景中,运算过程中产生的向量s3_int32/s3的数值较小,通过使用相应的放大系数l对向量s3_int32/s3进行放大,能够提高重量化结果的精度。

下面返回图5中继续描述,如图5中进一步示出的,在步骤540中,可以对运算结果进行反量化处理,使得运算结果由第二位宽的定点数据类型转化为第一位宽的浮点数据类型,以便第一处理器对第一位宽的浮点数据类型的运算结果进行处理。在第一处理器进行解码处理之前,将第二处理器处理的第二位宽的定点数据类型的数据转化为第一处理器擅长的第一位宽的浮点数据类型的数据,有利于第一处理器进行后续处理。在一些实施例中,反量化的处理过程可以与量化的处理过程相反。根据公式一的非对称量化,可以得出反量化的计算公式为:r=s*(q-z)。

进一步地,在步骤550中,可以使用第一处理器对推理运算的运算结果进行解码处理,以获得待识别语音信息的语音识别结果。这里的运算结果可以包括第一位宽的浮点数据类型的数据。

以上结合图5对根据本发明实施方式的包括量化步骤和反量化步骤的用于优化语音识别过程的方法进行了示例性的描述,可以理解的是,上面描述的实施例是较优选的实施例,而不是对本发明实施例的限制,例如对特征信息可以不限于非对称量化,也可以根据需要进行对称量化。

示例性设备

在介绍了本发明示例性实施方式的方法之后,接下来,参考图6对本发明示例性实施方式的用于优化语音识别过程的设备进行描述。

图6示意性地示出根据本发明实施方式的用于优化语音识别过程的设备框图。如图6中所示,设备600可以包括:第一处理器601,其可以用于对接收到的待识别语音信息进行特征提取,以获得待识别语音信息的特征信息;以及对基于神经网络模型的推理运算的运算结果进行解码处理,以获得待识别语音信息的语音识别结果;第二处理器602,其可以与第一处理器连接,并用于对特征信息进行基于神经网络模型的推理运算。为了便于理解根据本发明实施方式的设备的第一处理器和第二处理器的交互过程,下面将结合图7进行描述。

图7示意性地示出根据本发明实施方式的第一处理器与第二处理器协同处理asr的过程示意图。如图7中所示,第一处理器601可以对接收到的待识别语音信息进行特征提取701,在第一处理器601提取到特征信息后,可以远程调用第二处理器602,然后由第二处理器602执行基于神经网络模型的推理运算702,在完成推理运算702中所有层的矩阵乘法和其他向量运算后,可以将运算结果返回给第一处理器601,最后由第一处理器601执行对运算结果的解码处理703以及其他处理等,以获得语音识别结果。

在本发明的一个实施例中,第二处理器602还可以用于:在执行推理运算之前申请第一内存块;以及第一处理器601用于将每层网络结构的权重参数存储在第一内存块中,其中各层网络结构的权重参数的地址基于基准地址和相应的偏移量来确定。

在本发明的再一个实施例中,第一处理器601还可以用于:对权重参数进行非对称量化,以得到量化权重参数;以及将所述量化权重参数存储在所述第一内存块中。

在本发明的一个实施例中,第一处理器601还可以用于:使用中核和/或大核来对待识别语音信息进行特征提取;和/或使用中核和/或大核来对运算结果进行解码处理。

在本发明的另一个实施例中,第一处理器601还可以用于:对特征信息进行非对称量化,使得特征信息由第一位宽的浮点数据类型转化为第二位宽的定点数据类型,以便第二处理器对第二位宽的定点数据类型的特征信息进行处理;以及对运算结果进行反量化处理,使得运算结果由第二位宽的定点数据类型转化为第一位宽的浮点数据类型,并对第一位宽的浮点数据类型的运算结果进行处理。

在本发明的又一个实施例中,第二处理器602还可以用于:对推理运算中产生的第一位宽的中间数据进行重量化,以便在对神经网络模型的每层结构的推理运算中均使用第二位宽的定点数据类型的数据进行处理。

在本发明的再一个实施例中,在对特征信息进行基于神经网络模型的推理运算时,第二处理器602还可以用于:在基于神经网络模型的量化求和运算和/或重量化过程中,根据量化求和运算和/或重量化过程中的向量的数值大小,使用相应的放大系数对向量进行放大。

在本发明的又一个实施例中,第一处理器601和第二处理器602可以设置于端侧。

在本发明的再一个实施例中,第一处理器601可以包括中央处理器;第二处理器602可以包括数字信号处理器、图形处理器和嵌入式神经网络处理器中的至少一种。

本发明实施方式的用于优化语音识别过程的设备已经在前文中结合方法进行了详细描述,此处不再赘述。

为了便于理解本发明实施方式的方法和设备的有益效果,下面将结合多个测试例进行说明。

首先,从公开数据集中随机选取多个测试用例,测试用例的详细内容可参见下表一。

表一:

下面将以本发明实施方式的系统中的第一处理器为cpu以及第二处理器为dsp为例,并且采用本发明实施方式的用于优化语音识别过程的方法,通过对上述多个测试用例分别在基于cpu计算平台和基于本发明实施方式的cpu dsp异构计算平台上执行asr,测试asr的推理速度、功耗等多方面性能。

1)整体计算性能

表二:

从表二中可以看出,在性能方面,相比于cpu计算平台上执行全部asr,根据本发明实施方式的cpu dsp设备采用前文中所述的优化手段后,其整体计算性能有了显著的提升。以表二中的测试用例3为例,基于cpu平台执行asr推理耗时15652.25ms,基于本发明实施方式cpu dsp设备执行asr推理耗时3842.44ms,推理速度提高307%。

2)内存块数量对运行asr性能的影响

以测试用例3为例,下表三中示出了根据本发明实施方式的申请不同数量的内存块对计算性能的影响。

表三:

表三中的4个内存块包括本发明实施例中的1个用于存储权重参数的内存块、1个用于存储推理运算过程中的中间结果的内存块、1个用于存储推理运算过程中的输入数据的内存块和1个用于存储推理运算过程中的输出数据的内存块。从表三中可以看出,内存块的申请数量会对性能产生较大影响,例如可以将调用时间降低11.62倍,从而可以提升整体asr的应用性能。根据本发明的一个优选实施例中,将神经网络模型的各层网络结构的权重参数存到一个内存块中,以及进一步将输入数据、输出数据、中间结果分别存储在相应内存块中,可以较大程度的减少内存块的申请数量,从而有利于通过减少cpu的调用时间来获得更好的提速性能。另外,在原方案126块内存块中,用于存储权重参数的内存块为92块,可以发现用于存储权重参数的内存块的数量占比较大,因此减少用于存储权重参数的内存块的数量对提高性能的贡献更加明显。

3)使用第一处理器的中核和/或大核的影响

以测试用例3为例,下表四中分别示出了使用第一处理器的小核和中大核(即中核和/或大核)处理asr的特征提取模块、解码模块等对性能的影响。

表四:

从表四中可以看出,设置第一处理器的中核和/或大核来处理特征提取、解码等模块后,无论是在cpu上处理的计算模块还是在dsp上处理的计算模块(即模型推理)的性能均得到了较大幅度的提升,整体的性能提升可达到112%。

4)功耗测试

本实施例的功耗测试方法为:手机连接电流表,在手机处于相对空闲时,并且使手机处于灭屏状态,持续执行流式asr推理2分钟,观测电流表在这2分钟内的平均电流值。功耗测试结果参见下表五。

表五:

从表五中可以看出,相比于单独使用cpu执行asr,根据本发明实施方式的使用cpu dsp的方案具有更好的功耗表现,能够比单独使用cpu的方案的功耗下降30.3%。

综上所述,通过对手机端cpu dsp异构计算的离线asr的实现和效果验证,可以看出,相比于单纯使用cpu进行运算,根据本发明实施方式的设备能够加速3.89-4.42倍,降低功耗30.3%,极大的降低了延时以及提高了移动设备的续航时间,为端侧asr应用落地提供了有利的技术手段。

在本发明实施方式的第三方面中,提供了一种计算机可读存储介质,其存储有用于优化语音识别过程的程序,当所述程序由处理器来运行时,执行根据本发明实施方式的第一方面中任一项所述的方法。

本领域技术技术人员知道,本发明的实施方式可以实现为一种设备、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为"电路"、"模块"或"系统"。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。

可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如java、smalltalk、c ,还包括常规的过程式程序设计语言-诸如"c"语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(lan)或广域网(wan))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。

也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。

也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。

通过上面对根据本发明实施方式的用于优化语音识别过程的技术方案及其多个实施例的描述,可以理解的是,本发明实施方式的方法可以通过使用第一处理器和第二处理器异构的方式对语音识别过程进行协同处理,以充分利用每个处理的计算能力和特性,实现提高运算速度和降低功耗的目的。在一些实施例中,通过将神经网络的各层结构的权重参数均存储在第一内存块中,可以显著减少申请内存块的数量,从而有利于提高asr的整体计算性能。在另一些实施例中,使用第一处理器的中核和/或大核来对待识别语音信息进行特征提取、解码等处理,有利于提高整个语音识别过程的计算速度和整体性能。

此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

申请文件中提及的动词"包括"、"包含"及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词"一"或"一个"不排除多个这种元素的存在。

虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。


技术特征:

1.一种用于优化语音识别过程的方法,包括:

响应于接收到待识别语音信息,使用第一处理器对所述待识别语音信息进行特征提取,以获得所述待识别语音信息的特征信息;

使用不同于所述第一处理器的第二处理器对所述特征信息进行基于神经网络模型的推理运算;以及

使用所述第一处理器对所述推理运算的运算结果进行解码处理,以获得所述待识别语音信息的语音识别结果。

2.根据权利要求1所述的方法,其中在使用第二处理器进行基于神经网络模型的推理运算中,所述方法还包括:

在执行所述推理运算之前申请第一内存块;以及

将所述每层网络结构的权重参数存储在所述第一内存块中,其中各层网络结构的权重参数的地址基于基准地址和相应的偏移量来确定。

3.根据权利要求2所述的方法,其中将所述每层网络结构的权重参数存储在所述第一内存块中包括:

对所述权重参数进行非对称量化,以得到量化权重参数;以及

将所述量化权重参数存储在所述第一内存块中。

4.根据权利要求1所述的方法,其中在使用第一处理器进行特征提取时,所述方法还包括:

使用所述第一处理器的中核和/或大核来对所述待识别语音信息进行特征提取;和/或

在使用所述第一处理器对所述推理运算的运算结果进行解码处理时,所述方法还包括:

使用所述第一处理器的中核和/或大核来对所述运算结果进行解码处理。

5.根据权利要求1所述的方法,进一步包括:

对所述特征信息进行非对称量化,使得所述特征信息由第一位宽的浮点数据类型转化为第二位宽的定点数据类型,以便所述第二处理器对所述第二位宽的定点数据类型的所述特征信息进行处理;以及

对所述运算结果进行反量化处理,使得所述运算结果由所述第二位宽的定点数据类型转化为所述第一位宽的浮点数据类型,以便所述第一处理器对所述第一位宽的浮点数据类型的所述运算结果进行处理。

6.根据权利要求5所述的方法,在使用第二处理器对所述特征信息进行基于神经网络模型的推理运算时,所述方法还包括:

对所述推理运算中产生的第一位宽的中间数据进行重量化,使得所述第二处理器在对所述神经网络模型的每层结构的推理运算中均使用所述第二位宽的定点数据类型的数据进行处理。

7.根据权利要求5或6所述的方法,其中在使用第二处理器对所述特征信息进行基于神经网络模型的推理运算时,所述方法还包括:

在基于所述神经网络模型的量化求和运算和/或重量化过程中,根据所述量化求和运算和/或所述重量化过程中的向量的数值大小,使用相应的放大系数对所述向量进行放大。

8.根据权利要求1-7任一所述的方法,其中所述第一处理器和所述第二处理器设置于端侧。

9.根据权利要求1-8任一所述的方法,其中,

所述第一处理器包括中央处理器;

所述第二处理器包括数字信号处理器、图形处理器和嵌入式神经网络处理器中的至少一种。

10.一种用于优化语音识别过程的设备,包括:

第一处理器,其用于对接收到的待识别语音信息进行特征提取,以获得所述待识别语音信息的特征信息;以及对基于神经网络模型的推理运算的运算结果进行解码处理,以获得所述待识别语音信息的语音识别结果;

第二处理器,其与所述第一处理器连接,并用于对所述特征信息进行基于所述神经网络模型的所述推理运算。

11.根据权利要求10所述的设备,其中所述第二处理器还用于在执行所述推理运算之前申请第一内存块;以及所述第一处理器用于将所述每层网络结构的权重参数存储在所述第一内存块中,其中各层网络结构的权重参数的地址基于基准地址和相应的偏移量来确定。

12.根据权利要求11所述的设备,其中所述第一处理器还用于:

对所述权重参数进行非对称量化,以得到量化权重参数;以及

将所述量化权重参数存储在所述第一内存块中。

13.根据权利要求10所述的设备,其中所述第一处理器还用于:

使用中核和/或大核来对所述待识别语音信息进行特征提取;和/或

使用中核和/或大核来对所述运算结果进行解码处理。

14.根据权利要求10所述的设备,所述第一处理器还用于:

对所述特征信息进行非对称量化,使得所述特征信息由第一位宽的浮点数据类型转化为第二位宽的定点数据类型,以便所述第二处理器对所述第二位宽的定点数据类型的所述特征信息进行处理;以及

对所述运算结果进行反量化处理,使得所述运算结果由所述第二位宽的定点数据类型转化为所述第一位宽的浮点数据类型,并对所述第一位宽的浮点数据类型的所述运算结果进行处理。

15.根据权利要求14所述的设备,其中所述第二处理器还用于:

对所述推理运算中产生的第一位宽的中间数据进行重量化,以便在对所述神经网络模型的每层结构的推理运算中均使用所述第二位宽的定点数据类型的数据进行处理。

16.根据权利要求14或15所述的设备,其中在对所述特征信息进行基于神经网络模型的推理运算时,所述第二处理器还用于:

在基于所述神经网络模型的量化求和运算和/或重量化过程中,根据所述量化求和运算和/或所述重量化过程中的向量的数值大小,使用相应的放大系数对所述向量进行放大。

17.根据权利要求10-16任一所述的设备,其中所述第一处理器和所述第二处理器设置于端侧。

18.根据权利要求10-17任一所述的设备,其中,

所述第一处理器包括中央处理器;

所述第二处理器包括数字信号处理器、图形处理器和嵌入式神经网络处理器中的至少一种。

19.一种计算机可读存储介质,其存储有用于优化语音识别过程的程序,当所述程序由处理器来运行时,执行根据权利要求1-9的任一项所述的方法。

技术总结
本发明的实施方式提供了一种用于优化语音识别过程的方法、设备和存储介质。该方法包括:响应于接收到待识别语音信息,使用第一处理器对所述待识别语音信息进行特征提取,以获得所述待识别语音信息的特征信息;使用不同于所述第一处理器的第二处理器对所述特征信息进行基于神经网络模型的推理运算;以及使用所述第一处理器对所述推理运算的运算结果进行解码处理,以获得所述待识别语音信息的语音识别结果。根据本发明实施方式的方法,可以充分利用每个处理器的计算能力,并且显著降低设备的功耗,以实现减少延时和延长设备续航能力的目的,为用户带来了更好的体验。

技术研发人员:李丽丽;张广勇;段亦涛
受保护的技术使用者:网易有道信息技术(北京)有限公司
技术研发日:2021.05.24
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-865.html

最新回复(0)