语音处理系统、语音处理方法、电子设备和可读存储介质
文献发布时间:2023-06-19 09:36:59
技术领域
本申请涉及数据处理技术领域,尤其涉及语音处理技术领域中的一种语音处理系统、语音处理方法、电子设备和可读存储介质。
背景技术
语音处理,尤其是离线语音处理将成为未来的发展趋势,包括离线语音识别/离线语音合成/语音语义一体化/语义置信度/语音唤醒等。现有技术中的离线语音处理系统,通常采用的是ARM方案或者是ARM+神经网络处理器的方案。但由于上述芯片方案本身在功能以及算力上具有一定的限制,基于上述两种方案的离线语音处理系统都无法实现高性能的离线语音处理。
发明内容
本申请为解决技术问题所采用的技术方案是提供一种语音处理系统,包括:神经网络处理器NPU与RISC-V处理器;其中,所述RISC-V处理器包含预先定义的NPU指令,所述RISC-V处理器用于向所述NPU发送所述NPU指令,以使得所述NPU执行相应的神经网络计算;所述NPU包含内存单元与计算单元,所述内存单元中包含多个存储分组;所述计算单元用于根据接收到的NPU指令,执行主体计算、特殊计算、辅助计算与复杂指令集CISC控制中的一种。
本申请为解决技术问题所采用的技术方案是提供一种语音处理方法,包括:获取待处理语音数据;将所述待处理语音数据作为语音处理系统的输入数据,由所述语音处理系统处理所述输入数据,得到输出结果;将所述输出结果作为所述待处理语音数据的语音处理结果。
一种电子设备,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;以及上述语音处理系统;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述方法。
一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行上述方法。
上述申请中的一个实施例具有如下优点或有益效果:本申请能够提升语音处理任务的离线处理效率。因为采用了通过RISC-V处理器中预先定义的NPU指令以及NPU中内存单元与计算单元之间的架构设计的技术手段,所以克服了现有技术中的技术问题,实现了提升对于语音处理任务的离线处理效率的技术效果。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请第一实施例的示意图;
图2是根据本申请第二实施例的示意图;
图3是根据本申请第三实施例的示意图;
图4是根据本申请第四实施例的示意图;
图5是用来实现本申请实施例的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本申请第一实施例的示意图。如图1中所示,本实施例的语音处理系统,包括:
神经网络处理器NPU与RISC-V处理器;
其中,所述RISC-V处理器包含预先定义的NPU指令,所述RISC-V处理器用于向所述NPU发送所述NPU指令,以使得所述NPU执行相应的神经网络计算;
所述NPU包含内存单元与计算单元,所述内存单元中包含多个存储分组;所述计算单元用于根据接收到的NPU指令,执行主体计算、特殊计算、辅助计算与复杂指令集CISC控制中的一种。
本实施例的语音处理系统,基于神经网络处理器(NPU,Neural-networkProcessing Unit),通过RISC-V处理器中预先定义的NPU指令以及NPU中内存单元与计算单元之间的架构设计,能够在离线的情况下,快速准确地实现语音处理模型中所涉及到的神经网络计算,从而提升对于离线语音处理任务的处理效率。
本实施例中的RISC-V处理器,即为基于RISC-V(基于精简指令集原则的开源指令集架构)的处理器,该RISC-V处理器中包含专门针对神经网络运算预先定义的NPU指令。
本实施例中的RISC-V处理器所包含的预先定义的NPU指令,除了基础矢量运算指令之外,还包含专门用于加速神经网络计算的指令。目前NPU所使用的指令都是通用的,并没有针对神经网络计算专门设计的指令,尤其是针对语音处理网络来专门设计指令,导致现有技术中的NPU在执行神经网络计算时需要非常复杂的计算过程,从而导致了NPU在进行离线语音处理时的计算较低。
其中,本实施例中预先定义的NPU指令中所涉及到的基础矢量运算指令包含矢量逻辑运算指令(例如AND、OR、NOT与XOR)、矢量关系运算指令(例如GE、GT、LE、LT、NE与EQ)与矢量算数运算指令(例如ADD、SUB与MUL)。
本实施例中预先定义的NPU指令中专门用于加速神经网络计算的指令包含:矢量求和指令(SUM),用于神经网络中softmax层中的矢量求和计算,矢量求和指令为辅助计算指令;池化指令(POOLING),用于神经网络中的池化操作;第一点积计算指令(DOT_PORD),用于全连接网络、RNN网络等所涉及到的矩阵运算中向量之间的点积计算;第二点积计算指令(ATTEN),用于注意力模型所涉及到的矩阵运算中向量与矩阵之间的点积计算,第一点积计算指令与第二点积计算指令为主体计算指令;矢量超越函数指令(ACT、SIN、COS、EXP、LOG、SQRT、RSQRT与RECIPROCAL),用于实现激活函数等超越函数的计算,矢量超越函数指令为特殊计算指令;矢量访问指令(VLOAD),用于矢量的加载;矢量存储指令(VSTORE),用于矢量的存储;矢量查找指令(MAX、MIN、TOPK),用于查找最大值、最小值、最大的N个值以及它们的位置,其中TOPK为WaveRNN中的特定指令;流程控制指令(LOOP_START、LOOP_END),可以嵌套并用于实现二重循环;CISC(Complex Instruction Set Computing,复杂指令集)指令,用于NPU将特定计算转为由硬件接管,例如向量乘矩阵的计算或者softmax的计算,CISC指令为CISC控制指令;标量浮点指令(FPALU),用于实现标量的浮点计算;数据格式转换指令(IMG2COL、Matrix_TRANS),其中IMG2COL指令用于卷积的数据转换,即将卷积的输入数据转换为矩阵;Matrix_TRANS用于对输入矩阵或者参数矩阵进行转置操作。
可以理解的是,超越函数中包含RELU6、RELU、SIGMOID与TANH等函数,对于SIGMOD和TANH,矢量超越函数指令ACT使用查表法进行多阶导数多项式逼近(泰勒公式)来实现计算,对于RELU6和RELU,矢量超越函数指令ACT使用线性计算的方法进行计算;对于SIN/COS/EXP/LOG/SQRT/RSQRT/RECIPROCAL等超越函数,使用CORDIC算法进行计算,计算过程使用类浮点格式实现。
也就是说,本实施例针对神经网络,尤其是针对语音处理的神经网络,专门设计一套指令集进行神经网络的计算,避免了指令集的冗余,提升了神经网络的计算效率。
本实施例中的RISC-V处理器从指令集中获取预先定义的NPU指令,然后将所获取的NPU指令发送至NPU,使得NPU根据接收到的NPU指令执行相应的计算操作。
本实施例中的NPU除了与RISC-V处理器相连接之外,还会通过DMA(Direct MemoryAccess,存储直接访问)接口与外部总线进行交互,从而实现对外部DDR中的数据进行加载。
本实施例中NPU的内存单元中的多个存储分组,用于分别存储神经网络的模型参数数据与神经网络的模型计算过程中所产生的中间数据。
由于本实施例通过分组机制将NPU的内存单元的内存资源划分为多个存储分组,使得NPU在访问其中一个存储分组的同时,DMA可以访问另一个存储分组,从而实现了数据加载与数据计算的并行执行,提升了NPU的处理效率。
可以理解的是,本实施例中的NPU可以根据RISC-V处理器发送的VLOAD指令进行数据加载或者VSTORE指令进行数据存储。
由于不同语音处理所对应的神经网络在进行计算时会有不同的计算量,因此本实施例中内存单元的内存大小需要预先根据语音处理所使用的神经网络来确定,即本实施例中NPU的内存单元的内存大小是定制的,用于确保在运行所支持的不同的语音处理网络时,NPU中的内存单元均具有较高的运行效率。其中,本实施例中NPU所支持的网络包含:语音识别网络、语音合成网络、语音语义一体化网络、语义置信度网络以及语音唤醒网络等。
本实施例中的内存单元在确定内存大小时,可以采用的可选实现方式为:设置内存单元的初始内存大小,所设置的该初始内存大小需要大于所支持神经网络的核心层的大小,以确保内存单元能够支持不同神经网络的运行;确定内存单元在初始内存大小时对应的运行信息,该运行信息可以为读取频率、读取速度等;当所确定的运行信息不满足预设要求的情况下,调整初始内存大小,以此循环进行,直至所确定的运行信息满足预设要求,将初始内存大小的调整结果,作为内存单元的内存大小。
其中,本实施例中的神经网络的核心层为完成神经网络主要计算的层,例如WaveRNN网络中的RNN层。本实施例通过上述方法确定NPU中内存单元的内存大小,使得NPU在运行不同的神经网络时,内存单元均具有较高的运行效率,从而进一步提升了NPU的运行效率。
本实施例中的计算单元根据所接收到的NPU指令来完成主体计算、特殊计算、辅助计算以及CISC控制中的一种。
举例来说,本实施例中的计算单元可以根据第一点积计算指令或者第二点积计算指令来完成主体计算、根据超越函数指令完成特殊计算、根据CISC指令完成CISC控制、根据矢量求和指令完成辅助计算。
本实施例中NPU的计算单元在进行主体计算时,可以采用的可选实现方式为:通过矩阵乘矩阵或者矩阵乘向量的操作,完成神经网络计算,本实施例中的神经网络计算包含复数计算、卷积计算等。本实施例通过上述主体计算方式,能够将神经网络涉及到的复数计算、卷积计算等转换为实数的向量进行加减乘除,从而简化了NPU中的硬件设计。
由于语音识别、语义置信度等语音处理具有精度需求,直接采用矩阵相乘或者矩阵与向量相乘来完成一些神经网络计算,会降低计算精度。因此本实施例通过对矩阵以及向量的数据格式进行转换,提升计算精度。
因此,本实施例中的NPU在进行主体计算时,可以采用的可选实现方式为:将输入数据的数据格式转换为半精度的浮点格式,将神经网络的模型参数数据的数据格式转换为int8格式,int为定义整数类型变量的标识符,int8表示8比特的有符号整数;采用半精度与int8相乘的计算方式,完成输入数据与模型参数数据的主体运算。
对于使用注意力模型或者复数卷积模型的神经网络来说,其需要使用更高精度的计算方式来实现注意力计算或者复数卷积计算。因此,本实施例中的NPU的计算单元在进行主体计算时,还可以采用以下方式:响应于神经网络所使用的模型为预设模型,将输入数据与模型参数数据的数据格式转换为半精度的浮点格式;采用半精度与半精度相乘的计算方式,完成输入数据与模型参数数据的主体运算。
也就是说,本实施例可以进一步地对矩阵或者向量的数据格式进行转换,进而根据数据格式转换之后的数据进行相应的矩阵操作,能够提升神经网络计算的精度与效率。
本实施例中的计算单元可以根据数据格式转换指令(例如IMG2COL或者Matrix_TRANS)来完成数据格式的转换,根据第一点积计算指令(DOT_PROD)或者第二点积计算指令(ATTEN)完成主体计算。
本实施例中NPU的计算单元在进行特殊计算时,可以采用的可选实现方式为:响应于接收到的NPU指令为矢量超越函数指令(例如ACT、SIN、COS等),确定超越函数的函数类型;利用与所确定的函数类型对应的计算方法,完成超越函数的特殊计算。
其中,本实施例中的计算单元可以使用CORDIC(Coordinate Rotation DigitalCompute,坐标旋转数字计算方法)算法来实现SIN、COS、EXP、LOG、SQRT等函数的计算;可以使用查表法来实现SIGMOID、TANH等激活函数的计算;使用线性计算的方法来实现RELU、RELU6等激活函数的计算。
本实施例中NPU的计算单元在进行辅助计算时,所完成的是将卷积网络转换为全连接网络,可以采用的可选实现方式为:将卷积网络的输入数据转换为矩阵;根据转换得到的矩阵进行全连接计算,完成辅助计算。
其中,本实施例中的计算单元可以根据数据格式转换指令(Matrix_TRANS)完成矩阵转换,再根据矢量求和指令(SUM)完成矩阵的全连接计算。
本实施例中NPU的计算单元在进行CISC控制时,可以采用的可选实现方式为:响应于接收到的NPU指令为CISC指令,将输入数据与模型参数数据输入专门设计的硬件;获取硬件返回的输出数据,完成CISC控制。也就是说,计算单元在进行CISC控制时,并不是由NPU自身进行计算,而是由相应的硬件完成计算。
由于NPU对所输入的数据具有一定的限制,为了进一步提升NPU中计算单元的计算效率,本实施例在向NPU输入数据之前,还可以包含以下内容:对所输入的数据进行对齐处理,将对齐后的数据输入至NPU。
可以理解的是,本实施例中的NPU还可以包含寄存单元,用于缓存从内存单元中所读取的数据。
根据上述技术方案,通过预先定义的NPU指令以及NPU中内存单元与计算单元的架构设计,能够由基于NPU的离线语音处理系统来准确快速地完成离线语音处理任务,从而提升计算效率以及计算精度。
图2为本申请第二实施例提供的示意图。
图2示出了本申请所提供的电子设备的结构示意图。本实施例的电子设备可以为PC、云端设备、移动设备、智能音箱等,移动设备例如可以为手机、平板电脑、个人数字助理、穿戴式设备、车载设备等具有各种操作系统、触摸屏和/或显示屏的硬件设备。
如图2所示,该电子设备可以包括:如本申请前述实施例提出的语音处理系统。
图3是根据本申请第三实施例的示意图。如图3中所示,本实施例中的语音处理方法,具体可以包括如下步骤:
S301、获取待处理语音数据;
S302、将所述待处理语音数据作为语音处理系统的输入数据,由所述语音处理系统对所述输入数据进行神经网络计算,得到输出结果;
S303、将所述输出结果作为所述待处理语音数据的语音处理结果。
本实施例中使用的语音处理系统能够支持针对不同语音处理的神经网络,例如语音识别网络、语音合成网络、语音语义一体化网络、语音置信度网络以及语音唤醒网络等。因此,本实施例能够对待处理语音数据进行不同类型的语音处理,得到的语音处理结果可以为语音识别结果、语音合成结果、语音语义一体化结果、语音置信度结果以及语音唤醒结果等。
由于语音处理系统通过RISC-V处理器中预先定义的NPU指令以及NPU中内存单元与计算单元之间的架构设计,实现了对语音处理任务所涉及的神经网络计算进行快速准确地处理,因此通过本实施例所提供的语音处理方法,能够提升离线语音处理的准确性以及效率。
具体地,本实施例的S302在执行由语音处理系统对输入数据进行神经网络计算,得到输出结果时,可以采用的可选实现方式为:由语音处理系统中的神经网络处理器NPU根据RISC-V处理器发送的NPU指令,对输入数据进行对应所接收的NPU指令的神经网络计算;将所得到的计算结果作为输出结果。其中,本实施例中对输入数据进行神经网络计算得到计算结果的过程,即为利用神经网络模型处理输入数据得到输出结果的过程。
可以理解的是,本实施例所使用的语音处理系统中的RISC-V处理器,可以每次向NPU发送一条NPU指令,直至输入数据的神经网络计算全部完成;也可以由RISC-V处理器向NPU一次发送全部的NPU指令。
本实施例所涉及到的神经网络计算包含对输入数据进行主体计算、特殊计算、辅助计算与复杂指令集CISC控制中的至少一种。各神经网络计算的具体方式已在上文描述,在此不进行赘述。
图4是根据本申请第四实施例的示意图。如图4中所示,左侧为RISC-V处理器,其包含控制器与RAM,RAM中包含预先定义的NPU指令;控制器支持RTOS(Real Time OperatingSystem,实时操作系统)操作系统,用于将从RAM中获取的NPU指令进行解码之后发送至NPU。右侧为NPU,其通过DMA接口与系统总线连接,从而获取外部的输入数据等,并根据所接收到的NPU指令进行神经网络计算,包含内存单元、寄存单元与计算单元;寄存单元用于保存从内存单元中获取的数据,以便计算单元随时取用相应的数据,提升了计算效率;内存单元通过划分多个存储分组的方式来分别保存模型参数数据与模型计算中间数据,使得数据加载与数据计算可以并行执行;计算单元用于根据所接收到的NPU指令来实现主体计算、特殊计算、辅助计算与CISC控制中的一种,其中主体计算与特殊计算可以通过寄存单元来获取数据,辅助计算可以直接通过内存单元来获取数据。
如图5所示,是用来实现本申请实施例的示例性电子设备的的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图5所示,该电子设备包括:一个或多个处理器501、存储器502,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图5中以一个处理器501为例。
存储器502即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请各实施例的功能。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请实施例的功能。
存储器502作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例的功能对应的程序指令/模块。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现本申请实施例的功能。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据的电子设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
电子设备还可以包括:输入装置503和输出装置504。处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。
输入装置503可接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置504可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。
根据本申请实施例的技术方案,通过RISC-V处理器中预先定义的NPU指令以及NPU中内存单元与计算单元之间的架构设计,能够在离线的情况下,快速准确地实现语音处理模型中所涉及到的神经网络计算,从而提升对于离线语音处理任务的处理效率。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
- 语音处理系统、语音处理方法、电子设备和可读存储介质
- 语音识别方法、语音识别装置、可读存储介质和电子设备