CN114267337B - 一种语音识别系统及实现前向运算的方法 - Google Patents
一种语音识别系统及实现前向运算的方法 Download PDFInfo
- Publication number
- CN114267337B CN114267337B CN202210195259.0A CN202210195259A CN114267337B CN 114267337 B CN114267337 B CN 114267337B CN 202210195259 A CN202210195259 A CN 202210195259A CN 114267337 B CN114267337 B CN 114267337B
- Authority
- CN
- China
- Prior art keywords
- voice
- fpga
- general processor
- characteristic parameters
- entering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Image Analysis (AREA)
Abstract
本发明提供了一种语音识别系统及实现前向运算的方法,其中,语音识别系统包括:通用处理器,以及与通用处理器连接的FPGA,通用处理器在获得待识别语音后,对待识别语音逐帧提取特征参数,FPGA从通用处理器获取特征参数,基于深度神经网络模型的模型相关数据对获取的特征参数进行运算,将运算结果提供给通用处理器,通用处理器对FPGA提供的运算结果进行语音解码处理,以得到待识别语音的识别结果。经由本发明提供的语音识别系统和实现前向运算的方法,能够大大缩短前向运算的耗时,进而提升语音识别响应速度。
Description
技术领域
本发明涉及语音识别技术领域,尤其涉及一种语音识别系统及实现前向运算的方法。
背景技术
近些年来,随着深度神经网络(Deep neural network,DNN)技术的发展,越来越多的语音识别系统采用HMM-DNN技术。传统的嵌入式语音识别系统是基于通用处理器(DSP/ARM)的方案,由于成本、体积、功耗、集成度和便携性等限制,通用处理器的性能不可能像PC端处理器那么强大,且前向运算(DNN运算)过程中涉及海量的乘法和加法运算,导致前向运算时间很长,因此,整个识别系统的响应速度较慢,延时较大。
发明内容
有鉴于此,本发明提供了一种语音识别系统及实现前向运算的方法,用以解决基于通用处理器的语音识别系统响应速度较慢,延时较大的问题,其技术方案如下:
一种语音识别系统,包括:通用处理器,以及,与所述通用处理器连接的FPGA;
所述通用处理器在获得待识别语音后,对所述待识别语音逐帧提取特征参数;
所述FPGA从所述通用处理器实时获取特征参数,基于深度神经网络模型的模型相关数据对获取的特征参数进行运算,将运算结果提供给所述通用处理器;
所述通用处理器对所述运算结果进行语音解码处理;
其中,所述FPGA基于深度神经网络模型的模型相关数据对一语音帧对应的特征参数进行运算的逻辑操作包括:
进入初始状态,检测是否已获得该语音帧的所有特征参数,若是,则进入运算开始状态;
进入运算开始状态后,检测是否已获得当前所需的所有模型相关数据,若是,则进入第一运算状态;
进入第一运算状态后,基于模型相关数据对该语音帧进行第一运算,以得到该语音帧对应的第一运算结果,第一运算结束后进入第二运算状态,其中,所述第一运算包括矩阵乘法运算、偏移量叠加和sigmoid函数值查表;
在进入第二运算状态后,对该语音帧对应的第一运算结果进行第二运算,以得到该语音帧对应的第二运算结果,第二运算结束后进入运算完成状态,其中,所述第二运算包括softmax运算;
在进入运算完成状态后,若已获得下一语音帧对应的所有特征参数,则进入第一运算状态,若未获得下一语音帧对应的所有特征参数,则进入初始状态。
可选的,所述模型相关数据包括权重矩阵数据、偏置矩阵数据和查表数据,所述FPGA进行运算所基于的所述模型相关数据来自所述通用处理器;
所述通用处理器在系统初始化阶段,将所述深度神经网络模型的偏置矩阵数据和查表数据配置于所述FPGA侧;
所述FPGA在运算过程中,从所述通用处理器实时获取所述深度神经网络模型的权重矩阵数据。
可选的,所述通用处理器在提取到多个语音帧分别对应的特征参数后,通知所述FPGA进行特征参数的读取;
所述FPGA在收到所述通用处理器的通知后,从所述通用处理器读取所述多个语音帧分别对应的特征参数,对所述多个语音帧分别对应的特征参数进行并行运算。
可选的,所述FPGA包括一个或多个前向运算单元;
若所述FPGA包括一个前向运算单元,则该前向运算单元包括多个前向运算模块,每个前向运算模块对一语音帧对应的特征参数进行运算,多个前向运算模块对一路语音的多个语音帧分别对应的特征参数进行并行运算;
若所述FPGA包括多个前向运算单元,则每个前向运算单元对一路语音的语音帧对应的特征参数进行运算,多个前向运算单元对多路语音的语音帧对应的特征参数进行并行运算;
若所述FPGA包括多个前向运算单元,则每个前向运算单元包括一个或多个前向运算模块,一个前向运算单元包括的多个前向运算模块对一路语音的多个语音帧分别对应的特征参数进行并行运算。
可选的,所述FPGA的每个前向运算模块包括一组乘法器和一组加法器,所述深度神经网络模型的各层运算复用该组乘法器和该组加法器。
可选的,所述前向运算模块中的乘法器和加法器的输入数据以流水线的形式参与运算,所述前向运算模块同时对多组数据进行运算。
可选的,所述通用处理器和所述FPGA集成于一个芯片上,所述通用处理器与所述FPGA通过AXI总线连接;
所述通用处理器在系统初始化阶段,通过所述AXI总线将所述深度神经网络模型的模型相关数据中的偏置矩阵数据和查表数据写入所述FPGA的存储单元;
所述FPGA在运算阶段,通过所述AXI总线从所述通用处理器实时读取所述深度神经网络模型的模型相关数据中的权重矩阵数据和多个语音帧分别对应的特征参数,基于所述深度神经网络模型的模型相关数据对所述多个语音帧分别对应的特征参数进行运算,通过所述AXI总线将运算结果写入所述通用处理器的存储单元,以供所述通用处理器对所述运算结果进行语音解码处理。
一种实现前向运算的方法,应用于上述任一项所述的语音识别系统中的FPGA,所述方法包括:
从通用处理器实时获取待识别语音的语音帧对应的特征参数;
基于深度神经网络模型的模型相关数据对获得的特征参数进行运算,以得到运算结果;
将所述运算结果提供给所述通用处理器,以便所述通用处理器对所述运算结果进行后续的语音解码处理;
其中,基于深度神经网络模型的模型相关数据对一语音帧对应的特征参数进行运算包括:
进入初始状态,检测是否已获得该语音帧的所有特征参数,若是,则进入运算开始状态;
进入运算开始状态后,检测是否已获得当前所需的所有模型相关数据,若是,则进入第一运算状态;
进入第一运算状态后,基于模型相关数据对该语音帧进行第一运算,以得到该语音帧对应的第一运算结果,第一运算结束后进入第二运算状态,其中,所述第一运算包括矩阵乘法运算、偏移量叠加和sigmoid函数值查表;
在进入第二运算状态后,对该语音帧对应的第一运算结果进行第二运算,以得到该语音帧对应的第二运算结果,第二运算结束后进入运算完成状态,其中,所述第二运算包括softmax运算;
在进入运算完成状态后,若已获得下一语音帧对应的所有特征参数,则进入第一运算状态,若未获得下一语音帧对应的所有特征参数,则进入初始状态。
可选的,所述从通用处理器实时获取待识别语音的语音帧对应的特征参数,包括:
从所述通用处理器实时获取多个语音帧分别对应的特征参数;
所述基于深度神经网络模型的模型相关数据对获得的特征参数进行运算,以得到运算结果,包括:
对所述多个语音帧分别对应的特征参数进行并行运算,以得到多个语音帧分别对应的运算结果。
本发明提供的语音识别系统中,通用处理器可获得待识别语音,在获得待识别语音后,可对待识别语音逐帧提取特征参数,FPGA可从通用处理器获取特征参数,基于深度神经网络模型的模型相关数据对获取的特征参数进行运算,进而将运算结果提供给通用处理器,以便通用处理器对运算结果进行语音解码处理,从而获得待识别语音的识别结果。本发明提供的语音识别系统中,由于语音识别过程中耗时最长、运算量最大的前向运算由FPGA完成,而FPGA的运算能力和运算速度远超通用处理器,因此,利用FPGA进行前向运算能够大大缩短前向运算的耗时,进而提升识别响应速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的语音识别系统的结构示意图;
图2为本发明实施例提供的语音识别系统实现语音识别的流程示意图;
图3为本发明实施例提供的深度神经网络模型每层执行的运算的示意图;
图4为本发明实施例提供的FPGA包括一个前向运算单元(包括多个前向运算模块)的示意图;
图5为本发明实施例提供的FPGA包括多个前向运算单元的示意图;
图6为本发明实施例提供的设置8个乘法器和8个加法器的前向运算模块进行运算的示意图;
图7为本发明实施例提供的前向运算模块以流水线的方式同时处理6组数据的示意图;
图8为本发明实施例提供的由通用处理器和包括4个前向运算模块的FPGA实现语音识别的示意图;
图9为本发明实施例提供的实现前向运算的方法的流程示意图;
图10为本发明实施例提供的深度神经网络模型每层的运算过程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
申请人在实现本发明的过程中发现,前向运算(即DNN运算)是语音识别过程中重要的一环,其运算的速度决定了整个系统的响应时间,经详细的测算,目前前向运算的时间占整个语音识别过程总耗时的70%左右。
目前大多基于IMAX6Q平台实现语音识别,对于基于IMAX6Q平台实现语音识别的方案而言,语音识别涉及的所有运算全部由通用处理器完成。由于受成本、体积、功耗、集成度和便携性等限制,通用处理器的性能通常不够强大,再加之前向运算(DNN运算)过程中涉及海量的乘法运算和加法运算,这导致前向运算时间很长,进而导致识别响应速度较慢。
虽然IMAX6Q平台可以使用多线程来实现多个语音帧的前向运算,以提升整个识别系统的响应速度,但是,使用多线程来实现多个语音帧的前向运算的策略会占用更多的内存和内核资源,且通用处理器需要花时间去跟踪多线程间的协调和管理,另外还得解决共享资源的访问问题等,这导致通用处理器长时间处于高负荷运转状态,很难再对数据做进一步的复杂的处理。
总的来说,在考虑成本、功耗、体积、环境(比如至少-40~85℃的环境)等因素时,若要保证识别率,基于IMAX6Q平台实现前向运算需要耗费较长时间,进而导致识别响应速度较慢,在使用高复杂度模型时,该问题尤为突出,并且IMAX6Q平台无法实现多条语音数据的同时识别处理。
为了能够在保证语音识别率的同时,降低响应时间,提升响应速度,申请人进行了研究,通过不断研究,最终提出了一种语音识别系统,该语音识别系在实现语音识别时,能够在保证识别率的同时,大大降低识别响应时间,接下来通过下述实施例对本发明提供的语音识别系统进行介绍。
请参阅图1,示出了本发明实施例提供的语音识别系统的结构示意图,其可以包括:通用处理器101(比如ARM),以及与通用处理器101连接的FPGA102。
下面结合图2,给出包括通用处理器101和FPGA102的语音识别系统实现语音识别的过程,可以包括:
步骤S201:通用处理器101采集待识别语音,在获得待识别语音后,对待识别语音逐帧提取特征参数,以得到待识别语音的语音帧对应的特征参数。
在本实施例中,通用处理器101负责语音采集、特征参数提取以及语音解码,而语音识别过程中耗时最长、运算量最大的部分即前向运算由FPGA102完成,通用处理器101与FPGA 102相互配合,共同完成整个语音识别过程。
由于FPGA102的运算能力和运算速度远超通用处理器101,因此,由FPGA102完成前向运算,能够在保证识别率的同时,大大提高运算速度,从而缩短前向运算时间,进而降低识别响应时间。
步骤S202:FPGA102从通用处理器101实时获取特征参数,基于深度神经网络模型的模型相关数据对获取的特征参数进行运算,将运算结果提供给通用处理器101。
其中,深度神经网络模型的模型相关数据包括深度神经网络模型的权重矩阵数据、偏置矩阵数据和查表数据,查表数据包括sigmoid表、先验概率表及其它相关查表数据。
需要说明的是,如图3所示,前向运算的主体过程是执行y=f(wa+b)的矩阵运算,即深度神经网络模型的每层都是执行y=f(wa+b)矩阵运算,其中,a是输入,y是输出,w是权重矩阵,b是偏移矩阵,ƒ是激活函数,ƒ一般选sigmoid函数或者softmax函数,sigmoid函数如下:
softmax函数如下:
为了实现前向运算,FPGA102需要获得深度神经网络模型的权重矩阵数据、偏置矩阵数据和查表数据,在本实施例中,深度神经网络模型的权重矩阵数据、偏置矩阵数据和查表数据可来自通用处理器101。
考虑到一般FPGA102的存储单元的存储空间有限,同时为了提升前向运算的速度,在一种可能的实现方式中,可在系统初始化阶段,由通用处理器将深度神经网络模型的偏置矩阵数据和查表数据配置于FPGA102侧,即,通用处理器101预先将深度神经网络模型的偏置矩阵数据和查表数据写入FPGA102的存储单元(比如,Block Ram),而深度神经网络模型的权重矩阵数据由FPGA 102在运算过程中从通用处理器101实时读取。
当然,本实施例并不限定于此,通用处理器101也可不预先将深度神经网络模型的偏置矩阵数据和查表数据配置于FPGA102侧,而是同权重矩阵数据一样,由FPGA102在运算过程中从通用处理器101实时获取。另外,若FPGA102的存储单元有足够空间,也可将深度神经网络模型的所有模型相关数据(即权重矩阵数据、偏置矩阵数据和查表数据)全部预先配置于FPGA102侧,如此,在进行运算的过程中,FPGA102只需要直接从本地读取运算所需的模型相关数据即可。
在本实施例中,通用处理器101提取到语音帧对应的特征参数后,可将提取的特征参数写入存储单元(比如 DDR3),然后通知FPGA102到其存储单元读取特征参数,FPGA102在收到通用处理器101的通知后,去通用处理器101的存储单元(比如 DDR3)读取特征参数,进而基于深度神经网络模型的模型相关数据对获取的特征参数进行运算。
在一种可能的实现方式中,通用处理器101可在每提取到一个语音帧对应特征参数后,即通知FPGA102来读取该语音帧对应的特征参数,FPGA102读取到该语音帧对应的特征参数后,基于深度神经网络模型的模型相关数据对该语音帧对应的特征参数进行运算;为了提升运算效率,在另一种较为优选的实现方式中,通用处理器101可在每提取到S(S为大于或等于2的整数,比如,S=4)个语音帧分别对应特征参数后,通知FPGA102来读取这S个语音帧分别对应的特征参数,FPGA102读取到S个语音帧分别对应的特征参数后,基于深度神经网络模型的模型相关数据对S个语音帧分别对应的特征参数进行并行运算,如此可实现多个语音帧分别对应的特征参数的同时运算。
如图4所示,本实施例中的FPGA可以包括一个前向运算单元,在FPGA包括一个前向运算单元时,该前向运算单元优选为包括S(S为大于或等于2的整数,比如,S=4)个前向运算模块,每个前向运算模块用于对一个语音帧对应的特征参数进行运算,该前向运算单元的多个前向运算模块每次可同时对一路语音的S个语音帧分别对应的特征参数进行并行运算。
本实施例中的FPGA102也可以包括多个前向运算单元(比如M个,M为大于或等于2的整数),如图5所示,每个前向运算单元用于对一路语音的语音帧对应的特征参数进行运算,多个前向运算单元可对多路语音分别包含的语音帧对应的特征参数进行并行运算。需要说明的是,在FPGA102包括多个前向运算单元时,每个前向运算单元可包括一个前向运算模块,也可包括多个前向运算模块,当然,也可部分前向运算单元包括一个前向运算模块,部分前向运算单元包括多个前向运算模块,本实施例优选为每个前向运算单元包括多个前向运算模块,在FPGA102包含的每个前向运算单元包括多个前向运算模块时,FPGA102可同时对多路语音分别包含的多个语音帧分别对应的特征参数进行并行运算,比如,FPGA102包括3个前向运算单元,每个前向运算单元包括4个前向运算模块,则FPGA102可同时对3路语音包含的语音帧对应的特征参数进行并行运算,FPGA102在对每路语音包含的语音帧对应的特征参数进行运算时,可对4个语音帧分别对应的特征参数进行并行运算。
考虑到深度神经网络模型通常包含多层,且每层均会用到乘法器和加法器,为了节省资源,优选的,可在每个前向运算模块中设置一组加法器和一组乘法器,深度神经网络模型各层的运算复用该组加法器和该组乘法器。需要说明的是,前向运算模块中设置的乘法器的数量可由深度神经网络模型各层使用的乘法器的数量中的最大数量决定,同样,前向运算模块中设置的加法器的数量可由深度神经网络模型各层使用的加法器的数量中的最大数量决定,比如,深度神经网络模型中使用乘法器最多的是第3层,第3层使用了8个乘法器,则前向运算模块中可设置8个乘法器,加法器的数量同理。
请参阅图6,示出了设置8个乘法器和8个加法器的前向运算模块进行运算的示意图,假设深度神经网络模型包括7层,则7层的运算复用这8个乘法器和8个加法器。前向运算模块中的乘法器和加法器是并行运算的,如图6所示,输入数据为64bit,相当于8个数据,每次运算时,同时有8个数据参与运算。另外,为了提升运算速度,前向运算模块中的乘法器和加法器的输入数据优选为以流水线的形式参与运算,比如,第一组数据在进行加法运算的同时,第二组数据在进行乘法运算,图6示出的运算为6级流水线形式,相当于同时处理6组数据,图7示出了以流水线的方式同时处理6组数据的示意图。
另外,需要说明的是,FPGA102中fabric的数据类型都是无符号的整数,对于有符号数,可采用补码方案实现运算:
计算机采用二进制,若字宽为N,则共有N bit数据,无符号整数表示为:
其中,b i 表示第i位二进制数值0或1。
有符号整数转换为补码:
对于浮点数,采用浮点定点化运算:
浮点数分为三部分进行表示:符号位;指数部分,使用移码存储的阶码(类似于8bit的PCM);尾数部分,格式为1+f ,值域为[1,2)。尾码隐藏位恒为1,不必存储尾码,小数点在最高位前,值域:[0,1)。浮点数的数值表示为:
浮点定点化的目标为:使用定点的基本运算来模拟实现浮点运算;结果尽量近似浮点运算结果,误差尽量要小;尽量使用简单的定点运算,效率要高。浮点的处理:把浮点运算等效为相应的定点运算;需要算法设计者自己控制和管理小数点;可能全局采用同一种定点方案,也可能根据不同的运算分别设计。
浮点数的等效:设存储单元内数据定点值为n,定义浮点数:
使用整数n来表示和存储f:
其中,round表示四舍五入取整,Q为定标,简称“标”,实际含义为小数点位,定标范围,对于Q<0没有什么大意义,而Q=0时退化为基本定点运算,通常使用Q=P-1来表示有符号浮点数,P为硬件字长,对应的浮点数f∈[-1,+1)。
需要说明的是,本实施例中的通用处理器101只向FPGA 102提供待识别语音的语音帧对应的特征参数,以及深度神经网络模型的模型相关数据,而不参与前向运算,整个前向运算过程全部由FPGA102完成。FPGA102在完成语音帧对应的特征参数的运算后,将运算结果写入通用处理器101的存储单元(比如DDR3)。
步骤S203:通用处理器101对FPGA 102提供的运算结果进行语音解码处理,以获得待识别语音的语音识结果。
可选的,通用处理器101和FPGA102可集成于一个芯片上,二者通过AXI总线连接,通用处理器101可在系统初始化阶段,通过AXI总线将深度神经网络模型的偏置矩阵数据和查表数据写入FPGA102的存储单元,FPGA102在运算阶段可通过AXI总线从通用处理器实时读取语音帧对应的特征参数和深度神经网络模型的权重矩阵数据,将读取的数据参与运算,在获得运算结果后,可通过AXI总线将运算结果写入通用处理器101的存储单元,以供通用处理器进行后续的语音解码使用。
可选的,可采用同时集成有通用处理器和FPGA的ZYNQ7000 SOC芯片实现语音识别系统。ZYNQ7000 SOC芯片是采用 28nm工艺制成的低功耗,高性能,高扩展性的新型芯片,该芯片集成了双ARM Cortex-A9硬核以及相应的SOC系统,集成通用处理器的软件可编程性与FPGA 的硬件可编程性,不仅可方便原有的基于通用处理器的语音识别系统的移植,还可实现重要分析与硬件加速,同时还在单个器件上高度集成 CPU、DSP、ASSP及CPU外设功能模块等,方便功能扩展和智能化。ZYNQ7000 SOC芯片的易于移植、方便智能和硬件加速的强大功能等特性,使得其较为适用于实现语音识别系统。
另外,需要说明的是,本实施例并不限定通用处理器和FPGA集成于一个芯片上,二者也可位于不同芯片上,只要是利用通用处理器和FPGA实现语音识别,且语音识别过程中的前向运算由FPGA完成,都属于本发明保护的范围。
本发明实施例提供的语音识别系统中,通用处理器可获得待识别语音,在获得待识别语音后,可对待识别语音逐帧提取特征参数,FPGA可从通用处理器获取特征参数,基于深度神经网络模型的模型相关数据对获取的特征参数进行运算,进而将运算结果提供给通用处理器,以便通用处理器对运算结果进行语音解码处理,从而获得待识别语音的识别结果。本发明实施例提供的语音识别系统中,由于语音识别过程中耗时最长、运算量最大的前向运算由FPGA完成,而FPGA的运算能力和运算速度远超通用处理器,因此,利用FPGA进行前向运算能够大大缩短前向运算的耗时,进而降低识别响应时间,提升识别响应速度,另外,FPGA能够同时对一路语音的多个语音帧分别对应的特征参数进行并行运算,这使得前向运算的耗时进一步缩短,此外,FPGA还能对多路语音的语音帧对应的特征参数进行并行运算,这使得本发明实施例提供的语音识别系统既可支持一路语音识别,又可支持多路语音识别,应用范围较广。
接下来,通过一具体实例对由通用处理器和FPGA实现的语音识别系统实现语音识别的过程进一步进行介绍。
图8示出了由通用处理器和FPGA实现语音识别的示意图,图8中的FPGA包括一个前向运算单元,该前向运算单元包括4个前向运算模块,这4个前向运算模块可同时对4个语音帧分别对应的特征参数进行运算,接下来给出通过图8中的通用处理器和FPGA实现的语音识别的过程:
步骤a1、系统初始化,通用处理器通过AXI-lite总线将深度神经网络模型的偏置矩阵数据和查表数据写入FPGA的存储单元。
步骤a2、系统初始化结束后,通用处理器获取待识别语音,对获取的待识别语音逐帧提取特征参数,将提取的特征参数写入DDR3。
步骤a3、通用处理器每提取到4个语音帧分别对应的特征参数,通知FPGA去DDR3读取特征参数。
步骤a4、FPGA收到通知后,通过AXI-HP通道从通用处理器的DDR3中读取4个语音帧分别对应的特征参数,同时读取权重矩阵数据。
其中,FPGA读取的数据缓存至本地,具体的,FPGA读取的特征参数缓存至char_para_ram(FPGA中用于存储特征参数的存储单元),FPGA读取的权重矩阵数据缓存至Matrix_fifo。
步骤a5、FPGA的4个前向运算模块基于深度神经网络模型的相关模型数据对4个语音帧分别对应的特征参数进行并行运算,运算结束后,将4个语音帧分别对应的运算结果通过AXI-HP通道写入通用处理器的DDR3中。
图8中的“DNN运算0”表示基于深度神经网络模型的相关模型数据对4个语音帧中的第1个语音帧对应的特征参数进行运算,“DNN运算1”、“ DNN运算2”、“ DNN运算3”分别表示基于深度神经网络模型的相关模型数据对4个语音帧中的第2个语音帧对应的特征参数、第3个语音帧对应的特征参数、第4个语音帧对应的特征参数进行运算,4个部分同时进行。
图8中的“特征参数0”表示4个语音帧中的第1个语音帧对应的特征参数,“特征参数1”、“特征参数2”、“特征参数3”分别表示4个语音帧中的第2个语音帧对应的特征参数、第3个语音帧对应的特征参数、第4个语音帧对应的特征参数,“Bias_ram0-6”表示FPGA的存储单元,其存储有深度神经网络模型的偏置矩阵数据,“Var_ram_u0”和“Var_ram_v0”也表示FPGA的存储单元,其用于缓存深度神经网络模型上一层的输出和下一层的输入,前向运算模块在进行前向运算的过程中,从这些存储单元以及Matrix_fifo和查表数据存储单元中读取所需数据进行运算,运算结果缓存于“Softmax_fifo”, FPGA将“Softmax_fifo”缓存的运算结果通过AXI-HP通道写入通用处理器的DDR3中。
步骤a6、通用处理器从DDR3读取运算结果进行语音解码处理。
在上述实施例提供的语音识别系统的基础上,本发明实施例还提供了一种实现前向运算的方法,该方法应用于上述实施例提供的语音识别系统中的FPGA,请参阅图9,示出了该实现前向运算的方法的流程示意图,可以包括:
步骤S901:从通用处理器实时获取待识别语音包含的语音帧对应的特征参数。
其中,通用处理器在获得待识别语音后,对待识别语音逐帧提取特征参数。优选的,通用处理器可在每提取到S(S为大于或等于2的整数,比如,S=4)个语音帧分别对应特征参数后,通知FPGA来读取这S个语音帧分别对应的特征参数,FPGA收到通知后,去通用处理器读取S个语音帧分别对应的特征参数。
步骤S902:基于深度神经网络模型的模型相关数据对获得的特征参数进行运算,以得到运算结果。
若FPGA从通用处理器读取到S个语音帧分别对应特征参数,则基于深度神经网络模型的模型相关数据对S个语音帧分别对应特征参数进行并行运算。
具体的,FPGA基于状态机实现对特征参数的运算,具体的,针对一语音帧对应的特征参数: 步骤b1、进入初始状态,检测是否已获得该语音帧对应的所有特征参数,若是,则进入运算开始状态。
FPGA从通用处理器读取特征参数后,将读取的特征参数缓存于char_para_ram(char_para_ram为FPGA的存储单元,可以为FPGA的Block ram,用于缓存语音帧对应的特征参数),进入初始状态后,检测char_para_ram中该语音帧的所有特征参数是否缓存完,若是,则进入运算开始状态。
步骤b2、进入运算开始状态后,检测是否已获得当前所需的所有模型相关数据,若是,则进入第一运算状态。
考虑到一般FPGA存储空间有限,同时为了提升运算速度,通用处理器可预先将深度神经网络模型的偏置矩阵数据和查表数据写入FPGA的存储单元(比如FPGA的Blockram),在运算过程中,FPGA从通用处理器实时获取深度神经网络模型的权重矩阵数据,将深度神经网络模型的权重矩阵数据缓存于matrix_fifo(matrix_fifo为用于缓存权重矩阵数据的队列),在进入运算开始状态后,检测matrix_fifo,若matrix_fifo非空,且matrix_fifo中的数据将满,则进入第一运算状态。
步骤b3、进入第一运算状态后,基于模型相关数据对该语音帧进行第一运算,以得到该语音帧对应的第一运算结果,第一运算结束后进入第二运算状态。
其中,第一运算包括矩阵乘法运算、偏移量叠加和sigmoid函数值查表。需要说明的是,步骤b3涉及的运算包括了深度神经网络模型各层的运算,每层的运算均包括矩阵乘法运算、偏移量叠加和sigmoid函数值查表,每层的运算过程如图10所示,上一层运算结果作为中间变量U与权重矩阵数据(缓存于Matrix_ram)进行矩阵乘法运算(若进行首层运算,则将特征参数与权重矩阵数据进行矩阵乘法运算),矩阵乘法运算结果与偏置矩阵数据(缓存于Bias_ram)进行矩阵加法运算,对矩阵加法运算结果查找sigmoid值(sigmoid查表数据缓存于sigmoid_ram),sigmoid值作为中间变量V参与下一层运算。需要说明的是,在进行深度神经网络模型各层的运算时,在每完成一层的运算后即进入一个新的状态,以进行下一层的运算,上述的第一运算结果为深度神经网络模型最后一层的运算结果。
步骤b4、在进入第二运算状态后,对该语音帧对应的第一运算结果进行第二运算,以得到该语音帧对应的第二运算结果,第二运算结束后进入运算完成状态。
其中,第二运算包括softmax运算, softmax函数值的获得类似于sigmoid函数,都是通过查表,然后做进一步的运算(涉及到浮点定点化,小数乘法及有符号的乘法加法运算),这些运算都是近似的求解softmax函数值。
步骤b5、在进入运算完成状态后,若已获得下一语音帧对应的所有特征参数,则进入第一运算状态,若未获得下一语音帧对应的所有特征参数,则进入初始状态。
其中,初始状态为一个时钟周期。
步骤S903:将运算结果提供给通用处理器,以便通用处理器对运算结果进行后续的语音解码处理。
具体的,将运算结果写入通用处理器的存储单元(比如DDR3),以便通用处理器从存储单元读取运算结果进行后续的语音解码处理。
申请人对基于通用处理器进行前向运算和基于FPGA进行前向运算对比发现,在使用标准的深度神经网络模型时,基于通用处理器进行前向运算的方案(采用IMAX6Q)实现4个语音帧的前向运算的时间是40ms-50ms,基于FPGA进行前向运算的方案(采用ZYNQ7000)实现4个语音帧的前向运算的时间仅为11.1ms,在使用高复杂度深度神经网络模型时,基于通用处理器进行前向运算的方案实现4个语音帧的前向运算的时间是150-200ms,基于FPGA进行前向运算的方案实现4个语音帧的前向运算的时间仅为36.5ms,可见,运算时间大大减少。本发明实施例提供的语音识别系统采用通用处理器(比如ARM)+FPGA架构,既利用了FPGA的强大运算能力,又利用了通用处理器(比如ARM)灵活和通用的开发方式,极大降低了语音识别的响应时间,另外,在进行多路独立语音识别时,基于通用处理器(比如ARM)+FPGA的语音识别系统相比于基于通用处理器的语音识别系统的性能优势更加明显。综上,本发明实施例提供的语音识别系统的前向运算速度快,识别响应时间短,方便系统移植和功能扩展,且能够支持对多路语音同时识别,另外,本发明实施例提供的语音识别系统灵活性强,可以IP core的形式授权给第三方用户,还能满足某些领域的100%国产化和严苛的工作温度范围(比如-55~125℃)的要求。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种语音识别系统,其特征在于,包括:通用处理器,以及,与所述通用处理器连接的FPGA;
所述通用处理器在获得待识别语音后,对所述待识别语音逐帧提取特征参数;
所述FPGA从所述通用处理器实时获取特征参数,基于深度神经网络模型的模型相关数据对获取的特征参数进行运算,将运算结果提供给所述通用处理器;
所述通用处理器对所述运算结果进行语音解码处理;
其中,所述FPGA基于深度神经网络模型的模型相关数据对一语音帧对应的特征参数进行运算的逻辑操作包括:
进入初始状态,检测是否已获得该语音帧的所有特征参数,若是,则进入运算开始状态;
进入运算开始状态后,检测是否已获得当前所需的所有模型相关数据,若是,则进入第一运算状态;
进入第一运算状态后,基于模型相关数据对该语音帧进行第一运算,以得到该语音帧对应的第一运算结果,第一运算结束后进入第二运算状态,其中,所述第一运算包括矩阵乘法运算、偏移量叠加和sigmoid函数值查表;
在进入第二运算状态后,对该语音帧对应的第一运算结果进行第二运算,以得到该语音帧对应的第二运算结果,第二运算结束后进入运算完成状态,其中,所述第二运算包括softmax运算;
在进入运算完成状态后,若已获得下一语音帧对应的所有特征参数,则进入第一运算状态,若未获得下一语音帧对应的所有特征参数,则进入初始状态;
其中,所述模型相关数据包括权重矩阵数据、偏置矩阵数据和查表数据,所述FPGA进行运算所基于的所述模型相关数据来自所述通用处理器;
所述通用处理器在系统初始化阶段,将所述深度神经网络模型的偏置矩阵数据和查表数据配置于所述FPGA侧;
所述FPGA在运算过程中,从所述通用处理器实时获取所述深度神经网络模型的权重矩阵数据。
2.根据权利要求1所述的语音识别系统,其特征在于,所述通用处理器在提取到多个语音帧分别对应的特征参数后,通知所述FPGA进行特征参数的读取;
所述FPGA在收到所述通用处理器的通知后,从所述通用处理器读取所述多个语音帧分别对应的特征参数,对所述多个语音帧分别对应的特征参数进行并行运算。
3.根据权利要求2所述的语音识别系统,其特征在于,所述FPGA包括一个或多个前向运算单元;
若所述FPGA包括一个前向运算单元,则该前向运算单元包括多个前向运算模块,每个前向运算模块对一语音帧对应的特征参数进行运算,多个前向运算模块对一路语音的多个语音帧分别对应的特征参数进行并行运算;
若所述FPGA包括多个前向运算单元,则每个前向运算单元对一路语音的语音帧对应的特征参数进行运算,多个前向运算单元对多路语音的语音帧对应的特征参数进行并行运算;
若所述FPGA包括多个前向运算单元,则每个前向运算单元包括一个或多个前向运算模块,一个前向运算单元包括的多个前向运算模块对一路语音的多个语音帧分别对应的特征参数进行并行运算。
4.根据权利要求3所述的语音识别系统,其特征在于,所述FPGA的每个前向运算模块包括一组乘法器和一组加法器,所述深度神经网络模型的各层运算复用该组乘法器和该组加法器。
5.根据权利要求3所述的语音识别系统,其特征在于,所述前向运算模块中的乘法器和加法器的输入数据以流水线的形式参与运算,所述前向运算模块同时对多组数据进行运算。
6.根据权利要求1所述的语音识别系统,其特征在于,所述通用处理器和所述FPGA集成于一个芯片上,所述通用处理器与所述FPGA通过AXI总线连接;
所述通用处理器在系统初始化阶段,通过所述AXI总线将所述深度神经网络模型的模型相关数据中的偏置矩阵数据和查表数据写入所述FPGA的存储单元;
所述FPGA在运算阶段,通过所述AXI总线从所述通用处理器实时读取所述深度神经网络模型的模型相关数据中的权重矩阵数据和多个语音帧分别对应的特征参数,基于所述深度神经网络模型的模型相关数据对所述多个语音帧分别对应的特征参数进行运算,通过所述AXI总线将运算结果写入所述通用处理器的存储单元,以供所述通用处理器对所述运算结果进行语音解码处理。
7.一种实现前向运算的方法,其特征在于,应用于如权利要求1~6中任一项所述的语音识别系统中的FPGA,所述方法包括:
从通用处理器实时获取待识别语音的语音帧对应的特征参数;
基于深度神经网络模型的模型相关数据对获得的特征参数进行运算,以得到运算结果;
将所述运算结果提供给所述通用处理器,以便所述通用处理器对所述运算结果进行语音解码处理;
其中,基于深度神经网络模型的模型相关数据对一语音帧对应的特征参数进行运算包括:
进入初始状态,检测是否已获得该语音帧的所有特征参数,若是,则进入运算开始状态;
进入运算开始状态后,检测是否已获得当前所需的所有模型相关数据,若是,则进入第一运算状态;
进入第一运算状态后,基于模型相关数据对该语音帧进行第一运算,以得到该语音帧对应的第一运算结果,第一运算结束后进入第二运算状态,其中,所述第一运算包括矩阵乘法运算、偏移量叠加和sigmoid函数值查表;
在进入第二运算状态后,对该语音帧对应的第一运算结果进行第二运算,以得到该语音帧对应的第二运算结果,第二运算结束后进入运算完成状态,其中,所述第二运算包括softmax运算;
在进入运算完成状态后,若已获得下一语音帧对应的所有特征参数,则进入第一运算状态,若未获得下一语音帧对应的所有特征参数,则进入初始状态。
8.根据权利要求7所述的实现前向运算的方法,其特征在于,所述从通用处理器实时获取待识别语音的语音帧对应的特征参数,包括:
从所述通用处理器实时获取多个语音帧分别对应的特征参数;
所述基于深度神经网络模型的模型相关数据对获得的特征参数进行运算,以得到运算结果,包括:
对所述多个语音帧分别对应的特征参数进行并行运算,以得到多个语音帧分别对应的运算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210195259.0A CN114267337B (zh) | 2022-03-02 | 2022-03-02 | 一种语音识别系统及实现前向运算的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210195259.0A CN114267337B (zh) | 2022-03-02 | 2022-03-02 | 一种语音识别系统及实现前向运算的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114267337A CN114267337A (zh) | 2022-04-01 |
CN114267337B true CN114267337B (zh) | 2022-07-19 |
Family
ID=80833942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210195259.0A Active CN114267337B (zh) | 2022-03-02 | 2022-03-02 | 一种语音识别系统及实现前向运算的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114267337B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229670A (zh) * | 2018-01-05 | 2018-06-29 | 中国科学技术大学苏州研究院 | 基于fpga的深度神经网络加速平台 |
CN112259071A (zh) * | 2020-09-22 | 2021-01-22 | 北京百度网讯科技有限公司 | 语音处理系统、语音处理方法、电子设备和可读存储介质 |
CN112908333A (zh) * | 2021-05-08 | 2021-06-04 | 鹏城实验室 | 语音识别方法、装置、设备及计算机可读存储介质 |
CN113496272A (zh) * | 2021-05-10 | 2021-10-12 | 中国电子科技集团公司第十四研究所 | 一种基于异构平台的卷积神经网络运算方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6614639B2 (ja) * | 2015-05-22 | 2019-12-04 | 国立研究開発法人情報通信研究機構 | 音声認識装置及びコンピュータプログラム |
KR20170034227A (ko) * | 2015-09-18 | 2017-03-28 | 삼성전자주식회사 | 음성 인식 장치 및 방법과, 음성 인식을 위한 변환 파라미터 학습 장치 및 방법 |
US10255913B2 (en) * | 2016-02-17 | 2019-04-09 | GM Global Technology Operations LLC | Automatic speech recognition for disfluent speech |
CN205608814U (zh) * | 2016-04-15 | 2016-09-28 | 中国科学院上海技术物理研究所 | 一种基于Zynq软硬件协同处理的增强现实系统 |
US11055063B2 (en) * | 2016-05-02 | 2021-07-06 | Marvell Asia Pte, Ltd. | Systems and methods for deep learning processor |
JP6884946B2 (ja) * | 2016-10-05 | 2021-06-09 | 国立研究開発法人情報通信研究機構 | 音響モデルの学習装置及びそのためのコンピュータプログラム |
US10949736B2 (en) * | 2016-11-03 | 2021-03-16 | Intel Corporation | Flexible neural network accelerator and methods therefor |
CN106528357A (zh) * | 2016-11-24 | 2017-03-22 | 天津大学 | 基于拟牛顿法在线训练神经网络的fpga系统及实现方法 |
CN107967251A (zh) * | 2017-10-12 | 2018-04-27 | 北京知道未来信息技术有限公司 | 一种基于Bi-LSTM-CNN的命名实体识别方法 |
KR20200054360A (ko) * | 2018-11-05 | 2020-05-20 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
KR20210014949A (ko) * | 2019-07-31 | 2021-02-10 | 삼성전자주식회사 | 음성 인식을 위한 인공신경망에서의 디코딩 방법 및 장치 |
KR20210044985A (ko) * | 2019-10-16 | 2021-04-26 | 엘지전자 주식회사 | 음성 처리 방법 및 음성 처리 장치 |
CN215340744U (zh) * | 2021-02-05 | 2021-12-28 | 西安长远电子工程有限责任公司 | 一种基于SoC FPGA芯片的高速数据采集及处理系统 |
CN113205818B (zh) * | 2021-05-24 | 2023-04-18 | 网易有道信息技术(北京)有限公司 | 用于优化语音识别过程的方法、设备和存储介质 |
CN113611296A (zh) * | 2021-08-20 | 2021-11-05 | 天津讯飞极智科技有限公司 | 语音识别装置和拾音设备 |
-
2022
- 2022-03-02 CN CN202210195259.0A patent/CN114267337B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229670A (zh) * | 2018-01-05 | 2018-06-29 | 中国科学技术大学苏州研究院 | 基于fpga的深度神经网络加速平台 |
CN112259071A (zh) * | 2020-09-22 | 2021-01-22 | 北京百度网讯科技有限公司 | 语音处理系统、语音处理方法、电子设备和可读存储介质 |
CN112908333A (zh) * | 2021-05-08 | 2021-06-04 | 鹏城实验室 | 语音识别方法、装置、设备及计算机可读存储介质 |
CN113496272A (zh) * | 2021-05-10 | 2021-10-12 | 中国电子科技集团公司第十四研究所 | 一种基于异构平台的卷积神经网络运算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114267337A (zh) | 2022-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liang et al. | FP-BNN: Binarized neural network on FPGA | |
Yuan et al. | High performance CNN accelerators based on hardware and algorithm co-optimization | |
US10929746B2 (en) | Low-power hardware acceleration method and system for convolution neural network computation | |
CN109146067B (zh) | 一种基于FPGA的Policy卷积神经网络加速器 | |
CN110163355B (zh) | 一种计算装置及方法 | |
CN111915001B (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
Chen et al. | A compact and configurable long short-term memory neural network hardware architecture | |
CN111401554A (zh) | 支持多粒度稀疏与多模式量化的卷积神经网络的加速器 | |
CN111382860A (zh) | 一种lstm网络的压缩加速方法及fpga加速器 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN112836813A (zh) | 一种用于混合精度神经网络计算的可重构脉动阵列系统 | |
Yang et al. | Fusekna: Fused kernel convolution based accelerator for deep neural networks | |
CN113076083A (zh) | 数据乘加运算电路 | |
Lee et al. | ECIM: exponent computing in memory for an energy-efficient heterogeneous floating-point DNN training processor | |
Li et al. | A hardware-efficient computing engine for FPGA-based deep convolutional neural network accelerator | |
CN113313244B (zh) | 面向加法网络的近存储神经网络加速器及其加速方法 | |
CN114267337B (zh) | 一种语音识别系统及实现前向运算的方法 | |
CN117574970A (zh) | 用于大规模语言模型的推理加速方法、系统、终端及介质 | |
CN112669819A (zh) | 基于不重叠分帧和串行fft的极低功耗语音特征提取电路 | |
CN109948787B (zh) | 用于神经网络卷积层的运算装置、芯片及方法 | |
CN111882050A (zh) | 基于fpga的用于提高bcpnn速度的设计方法 | |
Zhan et al. | Field programmable gate array‐based all‐layer accelerator with quantization neural networks for sustainable cyber‐physical systems | |
US7945061B1 (en) | Scalable architecture for subspace signal tracking | |
CN113986194A (zh) | 基于预处理的神经网络近似乘法器实现方法及装置 | |
CN113392963A (zh) | 基于fpga的cnn硬件加速系统设计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |