CN116013293A - 一种基于混合精度量化神经网络的语音唤醒方法及系统 - Google Patents
一种基于混合精度量化神经网络的语音唤醒方法及系统 Download PDFInfo
- Publication number
- CN116013293A CN116013293A CN202211672509.1A CN202211672509A CN116013293A CN 116013293 A CN116013293 A CN 116013293A CN 202211672509 A CN202211672509 A CN 202211672509A CN 116013293 A CN116013293 A CN 116013293A
- Authority
- CN
- China
- Prior art keywords
- quantization
- layer
- input
- precision
- voice
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种基于混合精度量化神经网络的语音唤醒方法及系统,所述方法包括:利用语音唤醒设备的麦克风采集待处理语音信号;对所述待处理语音信号进行特征提取,得到对数梅尔频谱特征;将所述对数梅尔频谱特征输入混合精度量化神经网络,确定所述对数梅尔频谱特征对应的分类结果;其中,所述混合精度量化指,针对网络中每一层对参数计算精度的要求,对每一层的参数和运算采用不同的量化位数进行参数量化及运算简化;若所述对数梅尔频谱特征对应的分类结果为唤醒词且已超过设定时限,唤醒所述语音唤醒设备。
Description
技术领域
本申请涉及语音控制技术,尤其涉及一种基于混合精度量化神经网络的语音唤醒方法及系统。
背景技术
目前,语音唤醒服务在车载设备、智能家居设备、智能控制设备等多种设备上均有应用。而这些设备的共同点在于内存小、计算力有限,因此语音唤醒服务需同时满足高准确率、运行所用内存小、计算量少的要求。
而为了保证语音唤醒的准确率,语音唤醒服务需要高性能的神经网络模型来支持,例如高精度的深度卷积神经网络模型。但是,这类模型复杂度高,计算量大,通常需要占用设备大量内存,难以将其部署到内存较小的设备中。
因此,如何在保证唤醒精度的同时,减小语音唤醒服务的参数量与计算复杂度,是目前亟需解决的问题。
发明内容
本发明提供了一种基于混合精度量化神经网络的语音唤醒方法及系统,针对网络中每一层对参数计算精度的要求不同,采用不同的量化位数进行逐层量化,在保证唤醒精度的同时,能够大大减小模型的参数量与计算复杂度,从而降低了语音唤醒服务在内存占用、功耗与唤醒延时方面的缺陷。在实际应用中,可提供一种全新的低功耗语音唤醒思路以及芯片设计思路。
为解决上述技术问题,本发明的第一方面,公开了一种基于混合精度量化神经网络的语音唤醒方法,所述方法包括:
利用语音唤醒设备的麦克风采集待处理语音信号;
对所述待处理语音信号进行特征提取,得到对数梅尔频谱特征;
将所述对数梅尔频谱特征输入混合精度量化神经网络,确定所述对数梅尔频谱特征对应的分类结果;其中,所述混合精度量化指,针对网络中每一层对参数计算精度的要求,对每一层的参数和运算采用不同的量化位数进行参数量化及运算简化;
若所述对数梅尔频谱特征对应的分类结果为唤醒词且已超过设定时限,唤醒所述语音唤醒设备。
优选的,所述混合精度量化神经网络,包括:依次连接的第一卷积层、批标准化BN层、线性整流单元ReLU激活函数、十二个以上的残差块、最大池化层、全连接层;
每个所述残差块包括:第二卷积层、批标准化BN层、线性整流单元ReLU激活函数以及一条捷径;
在每个所述残差块中,所述捷径连接当前残差块中的第二卷积层的输入端与所述BN层的输出端,用于复制第二卷积层的输入,并与所述BN层的输出相加得到总和;总和作为当前残差块中的ReLU激活函数的输入以及下一残差块的输入;最后残差块的输出进入所述最大池化层进行降采样后,输入到所述全连接层计算概率;
其中,首层卷积层与最后一层全连接层采用8bit量化;所述残差块中的所有第二卷积层采用1bit量化;所述残差块中的所有BN层的特征输入和特征输出采用4bit量化。
优选的,所述所述首层卷积层与最后一层全连接层采用8bit量化,具体包括:
针对所述首层卷积层与所述最后一层全连接层,采用公式q=clamp(round(r*S―Z))对全精度输入进行8bit量化,得到无符号8bit特征输入及其量化因子和零点偏移量;其中,所述首层卷积层中的全精度输入为所述语音数据集对应的对数梅尔频谱特征输入;
其中,q为量化后的无符号参数,比特位跟随clamp为截断函数的范围改变;clamp为截断函数,范围在[0,255]之间;round为四舍五入函数;r为全精度输入,32bit;S为量化因子,S=2a,quantize_range为量化后取值范围,float_range为量化前取值范围,float_range=(rmax-rmin),max、rmin分别为32bit全精度输入r的最大值与最小值;Z为零点偏移量,Z=int(rmin*S),Z的范围限制在[0,255]之间,int为取整函数;
采用所述公式对权重进行8bit量化,得到无符号8bit权重及其量化因子和零点偏移量;其中,所述无符号8bit权重的每个通道均对应有各自的量化因子和零点偏移量。
优选的,所述所述首层卷积层与最后一层全连接层采用8bit量化之后,所述方法还包括:
基于所述无符号8bit特征输入及其量化因子和零点偏移量,所述无符号8bit权重及其量化因子和零点偏移量,将所述首层卷积层与最后一层全连接层中的乘法计算简化为:
((Qa+Za)/Sa)*((Qw+Zw)/Sw)=(Qa*Qw+Za*Zw+Za*Qw+Zw*Qa)/(Sa*Sw);其中,Qa表示所述无符号8bit特征输入,Za表示所述无符号8bit特征输入对应的零点偏移量,Sa表示所述无符号8bit特征输入对应的量化因子,Qw表示所述无符号8bit权重,Zw表示所述无符号8bit权重对应的零点偏移量,Sw表示所述无符号8bit权重对应的量化因子;
Qa*Qw、Za*Zw、Za*Qw、Zw*Qa均可采用8bit无符号乘法器实现,Sa*Sw利用移位操作来实现,累加计算采用8bit无符号加法器实现。
优选的,所述所述残差块中的所有第二卷积层采用1bit量化,具体包括:
针对每个所述第二卷积层,利用符号函数Sign将所述第二卷积层的特征输入与权重中大于0的部分量化为1,且小于0的部分量化为-1,得到1bit特征输入和1bit权重。
优选的,所述对所述残差块中的所有第二卷积层采用1bit量化之后,所述方法还包括:
针对每个所述第二卷积层,基于所述1bit特征输入和所述1bit权重,利用公式yr=popcount(xnor(ab,wb))计算出每个所述第二卷积层的特征输出yr;其中,ab,wb分别代表1bit量化后的1bit特征输入、1bit权重;xnor运算为同或运算;popcount运算为位运算。
优选的,所述残差块中的所有BN层的特征输入和特征输出采用4bit量化,具体包括:
采用所述公式对所述残差块中的所有BN层的特征输入和特征输出进行4bit量化;此时,clamp的截断范围为[0,63]。
优选的,所述采用所述公式对所述残差块中的所有BN层的特征输入和特征输出进行4bit量化,具体包括:
针对每个BN层的特征输入,计算得到所述BN层的特征输入对应的量化因子和零点偏移量,再利用所述公式对所述BN层的特征输入进行4bit量化;
将所述BN层的特征输入对应的量化因子作为参与计算的参数对应的量化因子,计算出对应的零点偏移量,再利用所述公式对参与计算的参数进行4bit量化,从而对特征输出的计算简化为4bit无符号数的减法与乘法运算。
优选的,所述混合精度量化神经网络按照下述方式训练得到:
得到语音数据集;
利用所述语音数据集结合混合精度量化训练并测试神经网络模型,得到所述混合精度量化神经网络。
本发明的第二方面,公开了一种基于混合精度量化神经网络的语音唤醒系统,包括:
语音唤醒设备的麦克风单元,用于采集待处理语音信号;
特征提取单元,用于对所述待处理语音信号进行特征提取,得到对数梅尔频谱特征;
模型处理单元,用于将所述对数梅尔频谱特征输入混合精度量化神经网络,确定所述对数梅尔频谱特征对应的分类结果;其中,所述混合精度量化指,针对网络中每一层对参数计算精度的要求,对每一层的参数和运算采用不同的量化位数进行参数量化及运算简化;
判定模块,用于若所述对数梅尔频谱特征对应的分类结果为唤醒词且已超过设定时限,唤醒所述语音唤醒设备。
本发明的第三方面,公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
本发明的第四方面,公开了一种语音唤醒设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。
通过本发明的一个或者多个技术方案,本发明具有以下有益效果或者优点:
本发明公开了一种基于混合精度量化神经网络的语音唤醒方法及系统,为了在保证唤醒精度的同时降低语音唤醒服务占用内存与运算开销,本实施例采用混合精度量化神经网络,针对网络中每一层对参数精度的要求,将每一层的参数(权重、输入、输出参数)和运算采用不同的量化位数进行参数量化及运算简化,从而大大降低了神经网络模型中的参数量与计算量,显著提高了唤醒速度并降低语音唤醒系统功耗。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。
在附图中:
图1示出了根据本发明一个实施例的基于混合精度量化神经网络的语音唤醒方法的流程示意图;
图2示出了根据本发明一个实施例的混合精度量化神经网络的网络结构示意图;
图3示出了根据本发明一个实施例的基于混合精度量化神经网络的语音唤醒系统的示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
参看图1,本发明实施例公开了一种基于混合精度量化神经网络的语音唤醒方法,包括下述步骤:
步骤101,利用语音唤醒设备的麦克风采集待处理语音信号。
在本实施例中,语音唤醒设备可应用于智能家居、车载服务、计算机控制等多个领域。以车载服务为例,语音唤醒设备的麦克风可采集车主发出的例如“小X”等唤醒语音,并在识别成功后发出“在呢”、“在”等语音回应车主。
在本实施例中,在语音唤醒设备中设置有N个以上唤醒词,N≥1且为正整数。例如,语音唤醒设备设置10个唤醒词。
步骤102,对待处理语音信号进行特征提取,得到对数梅尔频谱特征。
本实施例在提取特征时,对待处理语音信号依次进行预加重、分帧加窗、短时傅里叶变换(STFT)、Mel滤波、取对数的处理步骤,得到对数梅尔频谱特征。
步骤103,将对数梅尔频谱特征输入混合精度量化神经网络,确定对数梅尔频谱特征对应的分类结果。
其中,混合精度量化神经网络的输入为:对数梅尔频谱特征。混合精度量化神经网络的输出包含:非关键词的概率和关键词的概率。举例来说,混合精度量化神经网络的输出分为12类。其中包含:非关键词,静音以及10个关键词。
混合精度量化指,针对网络中每一层对参数精度的要求,将每一层的参数和运算采用不同的量化位数进行参数量化及运算简化。具体的,针对每一层的参数和运算,在1bit(单bit)量化、4bit量化、8bit量化中选择对应的量化位数进行参数量化及运算简化。
在本实施例中,混合精度量化神经网络的初始模型采用残差神经网络ResNet14。
混合精度量化神经网络的网络结构参看图2,包括:依次连接的第一卷积层、BN(batch normalization,批标准化)层和ReLU(Rectified Linear Unit,线性整流单元)激活函数、十二个以上的残差块、最大池化层、全连接层。
第一卷积层即为首层卷积层。
十二个以上的残差块依次连接,上一个残差块的输出作为下一个残差块的输入。其中,每个残差块包括:第二卷积层、BN层、ReLU激活函数以及一条捷径。
在每个残差块中,捷径连接当前残差块中的第二卷积层的输入端与BN层的输出端,用于复制第二卷积层的输入,并与BN层的输出相加得到总和;总和作为当前残差块中的ReLU激活函数的输入以及下一残差块的输入。举例来说,捷径复制第二卷积层的输入x,并与BN层的输出f(x)相加的得到ReLU激活函数的输入F(x),即公式:F(x)=f(x)+x。F(x)将作为下一个残差块的输入,往复进行。最后残差块的输出进入最大池化层进行降采样后,输入到全连接层计算概率。
其中,首层卷积层与最后一层全连接层采用8bit量化;残差块中的所有第二卷积层采用1bit量化;残差块中的所有BN层的特征输入和特征输出采用4bit量化。
具体来说,首层卷积层与最后一层全连接层采用8bit量化,指针对首层卷积层与最后一层全连接层,分别对全精度输入和权重进行8bit量化,并将乘法计算进行简化,再利用对应的无符号乘法、加法以及移位运算进行计算,得到和原本相同的计算结果。
其中,首层卷积层与最后一层全连接层均进行8bit量化,原因在于:首层卷积层作为输入层,需要尽可能避免信息损失,因此采用精度较高的8bit量化;最后一层全连接层作为输出层,直接影响唤醒准确率,因此也需要保证输出精度,采用8bit量化。此外,为了缓解量化带来的唤醒准确率降低,采用的量化方法为训练时量化。
下面以首层卷积层为例进行说明,最后一层全连接层采用相同的方式进行8bit量化。
在进入首层卷积层之前,采用公式q=clamp(round(r*S―Z))对全精度输入进行8bit量化,得到无符号8bit特征输入及其量化因子和零点偏移量;对于首层卷积层来说,其全精度输入为语音数据集对应的对数梅尔频谱特征输入;
其中,q为量化后的无符号参数,比特位跟随clamp为截断函数的范围改变,此时,得到的q为量化后的无符号8bit参数;clamp为截断函数,范围在[0,255]之间;round为四舍五入函数;r为全精度输入,32bit;S为量化因子,S=2a, quantize_range为量化后取值范围,可取值255,float_range为量化前取值范围,float_range=(rmax-rmin),max、rmin分别为32bit全精度输入r的最大值与最小值,在训练过程中,可利用滑动平均的方法确定rmax与rmin;Z为零点偏移量,Z=int(rmin*S),Z的范围限制在[0,255]之间,int为取整函数;
同理,采用上述公式对首层卷积层中的权重进行8bit量化,得到无符号8bit权重及其量化因子和零点偏移量。值得注意的是,无符号8bit权重的量化因子与零点偏移量是按通道计算,也即:无符号8bit权重的每个通道均对应有各自的量化因子和零点偏移量。
最终,在首层卷积层进行计算之前,经过上述处理得到:无符号8bit特征输入Qa、无符号8bit特征输入Qa对应的量化因子Sa,无符号8bit特征输入Qa对应的零点偏移量Za,无符号8bit权重Qw,无符号8bit权重Qw对应的量化因子Sw,无符号8bit权重Qw对应的零点偏移量Zw。其中,针对无符号8bit特征输入Qa来说,其对应的无符号8bit量化因子Sa和零点偏移量Za均为1*1*1*1维数的数值(即一个数);针对无符号8bit权重Qw来说,其对应的量化因子Sw和零点偏移量Zw均为n*1*1*1的数值(即一行数),n为无符号8bit权重Qw的通道数。
而对首层卷积层与最后一层全连接层采用8bit量化之后,基于无符号8bit特征输入Qa及其量化因子Sa和零点偏移量Za,无符号8bit权重Qw及其量化因子Sw和零点偏移量Zw,将首层卷积层中的乘法计算简化为:
((Qa+Za)/Sa)*((Qw+Zw)/Sw)=(Qa*Qw+Za*Zw+Za*Qw+Zw*Qa)/(Sa*Sw);其中,因Qa,Qw,Za,Zw均为无符号8bit参数,因此Qa*Qw、Za*Zw、Za*Qw、Zw*Qa在硬件实现时均可采用8bit无符号乘法器实现,其功耗将远远小于32bit有符号乘法。而Sa*Sw为2的次方,可利用移位操作来实现,功耗很小,可忽略不计。卷积中的累加计算采用8bit无符号加法器实现。
最后一层全连接层可按照上述同样方式进行操作,故不再赘述。
在实施本实施例之前,神经网络的首层卷积层与最后一层全连接层在此前需要保存的32bit有符号参数,而在本实施中,32bit有符号参数可根据精度量化为8bit无符号参数,可显著降低系统内存占用。此外,原先的32bit有符号乘法与加法便被简化为了8bit无符号乘法、加法以及移位运算,大大简化了运算并降低了系统功耗。
在本实施例中,对于混合精度量化神经网络的十二个残差块中的所有卷积层,均采用1bit量化。针对每个第二卷积层,均可执行下述操作:
利用符号函数Sign将第二卷积层的特征输入与权重中大于0的部分量化为1,且小于0的部分量化为-1,得到1bit特征输入和1bit权重。而基于1bit特征输入和1bit权重,利用公式yr=popcount(xnor(ab,wb))计算出每个第二卷积层的特征输出yr;其中,ab,wb分别代表1bit量化后的1bit特征输入、1bit权重;xnor运算为同或运算;popcount运算为位运算。
具体来说,在单bit量化后,第二卷积层的特征输入和权重仅存在1和-1的数值,则特征输出yr便可通过简单的xnor运算和popcount运算得到,从而避免了卷积所需的大量浮点数乘加运算,能够简化运算并提高语音唤醒速度。
在本实施例中,对于混合精度量化神经网络中所有的BN层的特征输入和特征输出,均采用4bit量化。即:采用所述公式对所述残差块中的所有BN层的特征输入和特征输出进行4bit量化;此时,clamp的截断范围为[0,63]。
具体来说,针对每个BN层的特征输入,计算得到所述BN层的特征输入对应的量化因子和零点偏移量,再利用所述公式对所述BN层的特征输入进行4bit量化;将所述BN层的特征输入对应的量化因子作为参与计算的参数对应的量化因子,计算出对应的零点偏移量,再利用所述公式对参与计算的参数进行4bit量化,从而对特征输出的计算简化为4bit无符号数的减法与乘法运算。
在本实施例中,对所述残差块中的所有BN层的特征输入和特征输出采取与8bit量化采用相同的方法(公式),不同之处在于,此时量化后取值范围quantize_range=63,故截断函数clamp的范围为[0,63]。因改变了截断函数clamp,因此该公式的结果由8bit参数变为了4bit参数,可用于4bit量化。由此可见,4bit量化和8bit量化采用的公式相同,唯一不同在于截断函数clamp的范围,可根据不同的需求选择性执行4bit量化和8bit量化。
为了便于说明和解释本实施例,下面采用具体的示例进行说明。
为了简化计算,减小内存占用,本实施例将γ与β分别固定为1和0,再进行量化。
其中,xi'、μB、均使用相同的缩放因子进行4bit无符号量化。具体来说,针对特征输入xi',其量化前取值范围float_range和量化后取值范围quantize_range,此时quantize_range=63;然后利用求量化因子的公式S=2a, 得到特征输入对应的量化因子,再据此得到特征输入对应的零点偏移量Z,并根据公式q=clamp(round(r*S―Z)),对特征输入进行4bit量化。此时量化后取值范围quantize_range=63,故截断函数clamp的范围为[0,63]。
此外,针对参与计算的参数μB和也采用和特征输入相同的量化因子,并据此得出零点偏移量Z,再利用上述公式对各参数进行4bit量化,从而将归一化计算简化为4bit无符号数的减法与乘法运算。结合BN层的特征输出计算公式y'=γ·x'+β,BN层的所有计算便可简化为4bit无符号数的减法与乘法运算。最终,整个混合精度量化神经网络中,仅存在1bit、4bit、8bit的参数与计算,大大降低了语音唤醒系统的内存占用与功耗。
以上是针对不同计算精度的要求,进行不同的混合精度量化。其中1bit量化部分可以将原本的32bit乘法与加法运算简化为xnor运算与popcount运算,4bit量化、8bit量化可以将32bit乘加法运算简化为8bit乘加运算以及量化因子所需的移位运算;这两种运算简化,大大减少了混合精度量化神经网络的计算复杂度,从而降低了语音唤醒系统功耗与唤醒延时。
在上述网络结构的基础上,混合精度量化神经网络按照下述方式训练得到:
得到语音数据集;
在上述网络结构的基础上,利用语音数据集结合混合精度量化训练神经网络模型,得到混合精度量化神经网络。
具体来说,混合精度量化神经网络主要分为训练阶段与测试阶段。语音数据集包含训练语音数据和测试语音数据。
在训练阶段中,训练语音数据进行特征提取得到对数梅尔频谱特征输入,输入到混合精度量化神经网络中。混合精度量化神经网络通过对经典残差网络ResNet14按照每一层对于计算精度的要求,选择性进行1bit、4bit、8bit混合精度量化得到的,再结合训练语音数据中的标签对模型进行训练,从而更新网络中的权重,并得到4bit、8bit所需的量化因子与零点偏移量,以及1bit、4bit、8bit量化后的各层权重,最终得到训练完成的模型作为语音唤醒分类器使用。在测试阶段,则可利用训练完成的语音唤醒分类器对从测试语音数据提取来的特征进行推理判定,如果是唤醒词,则唤醒系统,反之不唤醒。
在本实施例中,采用经典残差神经网络ResNet14作为初始模型,并在神经网络训练阶段对其中各网络层选择性的进行1bit(单bit)量化、4bit量化、8bit量化的混合精度量化,并保存训练完成后的量化因子、零点偏移量、权重用于语音唤醒实际应用阶段。最终,大大降低了语音唤醒服务的参数量与计算量,显著提高了唤醒速度并降低语音唤醒系统功耗。
在经过上述训练之后得到混合精度量化神经网络,并处理待处理语音信号对应的对数梅尔频谱特征,输出概率最大的一类作为分类结果。在本实施例中,混合精度量化神经网络的分类结果按照“N个关键词”、“非关键词”、“静音”进行划分,每个关键词作为一类。
步骤104,若对数梅尔频谱特征对应的分类结果为唤醒词且已超过设定时限,唤醒语音唤醒设备。
若对数梅尔频谱特征对应的分类结果为唤醒词,则判断对数梅尔频谱特征对应的唤醒时间是否超过设定时限,若是,则唤醒语音唤醒设备。此时,语音唤醒设备可发出语音,例如“在”、“在呢”回应用户,表示语音唤醒设备唤醒成功。
若对数梅尔频谱特征对应的分类结果为“非关键词”或者“静音”,则语音唤醒设备不响应即可。
在实际应用中,每得到一帧语音信号即可按照上述方案进行处理。
为了验证本实施例公开的混合精度量化神经网络的效果。本实施例利用混合精度量化神经网络和全精度ResNet14网络分别对语音信号进行处理。其中,混合精度量化神经网络通过将32bit全精度输入进行混合精度量化后计算。全精度ResNet14网络直接对32bit全精度输入进行计算。两者使用的参数量(bit)、浮点数计算量FLOPs和准确率如表1所示。
表1
模型 | 参数量(bit) | FLOPs | 准确率(%) |
全精度ResNet14 | 25.32M | 38M | 95.4 |
本发明的混合精度量化神经网络 | 0.94M | 3.3M | 95.1 |
从表1可知,本发明中的基于混合精度量化神经网络的语音唤醒服务,唤醒准确率为95.1%,与传统的基于全精度ResNet14网络的语音唤醒服务相比准确率损失仅为0.3%,却减少了91.3%的浮点计算量,以及节约了96.3%的参数量。由此可见,本发明中的方案大大减小了语音唤醒服务中的神经网络模型的参数量与计算量,从而降低了语音唤醒服务所占内存、功耗与唤醒延时,提供了一种全新的低功耗语音唤醒设计思路以及芯片设计思路。
基于与前述实施例中同样的发明构思,本发明实施例还公开了一种基于混合精度量化神经网络的语音唤醒系统,该系统可部署在语音芯片中,也可以部署在语音唤醒设备中。参看图3,该系统包括:
语音唤醒设备的麦克风单元301,用于采集待处理语音信号;
特征提取单元302,用于对所述待处理语音信号进行特征提取,得到对数梅尔频谱特征;
模型处理单元303,用于将所述对数梅尔频谱特征输入混合精度量化神经网络,确定所述对数梅尔频谱特征对应的分类结果;其中,所述混合精度量化指,针对网络中每一层对参数计算精度的要求,对每一层的参数和运算采用不同的量化位数进行参数量化及运算简化;
判定模块304,用于若所述对数梅尔频谱特征对应的分类结果为唤醒词且已超过设定时限,唤醒所述语音唤醒设备。
基于与前述实施例中同样的发明构思,本发明实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文任一方法的步骤。
基于与前述实施例中同样的发明构思,本发明实施例还公开了一种语音唤醒设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现前文任一方法的步骤。
本发明与传统的使用全精度神经网络作为分类器的语音唤醒服务相比,使用混合精度量化的方式,将网络中原本的32bit参数(特征输入、特征输出、权重),分别量化为1/4/8bit的参数,大大降低了神经网络的参数量,显著减少语音唤醒服务的内存占用。
本发明中的混合精度量化与传统量化(以最常用的8bit的量化为例)相比,针对网络中每一层对参数计算精度不同要求,采用不同的量化位数,在保证的精度前提下,进一步降低了网络的参数量与计算复杂度,并且成功将1bit量化与4bit、8bit这类多bit量化方法相结合,提供了一种全新的低功耗语音唤醒思路以及芯片设计思路。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (12)
1.一种基于混合精度量化神经网络的语音唤醒方法,其特征在于,所述方法包括:
利用语音唤醒设备的麦克风采集待处理语音信号;
对所述待处理语音信号进行特征提取,得到对数梅尔频谱特征;
将所述对数梅尔频谱特征输入混合精度量化神经网络,确定所述对数梅尔频谱特征对应的分类结果;其中,所述混合精度量化指,针对网络中每一层对参数计算精度的要求,对每一层的参数和运算采用不同的量化位数进行参数量化及运算简化;
若所述对数梅尔频谱特征对应的分类结果为唤醒词且已超过设定时限,唤醒所述语音唤醒设备。
2.如权利要求1所述的方法,其特征在于,所述混合精度量化神经网络,包括:依次连接的第一卷积层、批标准化BN层、线性整流单元ReLU激活函数、十二个以上的残差块、最大池化层、全连接层;
每个所述残差块包括:第二卷积层、批标准化BN层、线性整流单元ReLU激活函数以及一条捷径;
在每个所述残差块中,所述捷径连接当前残差块中的第二卷积层的输入端与所述BN层的输出端,用于复制第二卷积层的输入,并与所述BN层的输出相加得到总和;总和作为当前残差块中的ReLU激活函数的输入以及下一残差块的输入;最后残差块的输出进入所述最大池化层进行降采样后,输入到所述全连接层计算概率;
其中,首层卷积层与最后一层全连接层采用8bit量化;所述残差块中的所有第二卷积层采用1bit量化;所述残差块中的所有BN层的特征输入和特征输出采用4bit量化。
3.如权利要求2所述的方法,其特征在于,所述所述首层卷积层与最后一层全连接层采用8bit量化,具体包括:
针对所述首层卷积层与所述最后一层全连接层,采用公式q=clamp(round(r*S―Z))对全精度输入进行8bit量化,得到无符号8bit特征输入及其量化因子和零点偏移量;其中,所述首层卷积层中的全精度输入为所述语音数据集对应的对数梅尔频谱特征输入;
其中,q为量化后的无符号参数,比特位跟随clamp为截断函数的范围改变;clamp为截断函数,范围在[0,255]之间;round为四舍五入函数;r为全精度输入,32bit;S为量化因子,S=2a,quantize_range为量化后取值范围,float_range为量化前取值范围,float_range=(rmax-rmin),max、rmin分别为32bit全精度输入r的最大值与最小值;Z为零点偏移量,Z=int(rmin*S),Z的范围限制在[0,255]之间,int为取整函数;
采用所述公式对权重进行8bit量化,得到无符号8bit权重及其量化因子和零点偏移量;其中,所述无符号8bit权重的每个通道均对应有各自的量化因子和零点偏移量。
4.如权利要求3所述的方法,其特征在于,所述所述首层卷积层与最后一层全连接层采用8bit量化之后,所述方法还包括:
基于所述无符号8bit特征输入及其量化因子和零点偏移量,所述无符号8bit权重及其量化因子和零点偏移量,将所述首层卷积层与最后一层全连接层中的乘法计算简化为:
((Qa+Za)/Sa)*((Qw+Zw)/Sw)=(Qa*Qw+Za*Zw+Za*Qw+Zw*Qa)/(Sa*Sw);其中,Qa表示所述无符号8bit特征输入,Za表示所述无符号8bit特征输入对应的零点偏移量,Sa表示所述无符号8bit特征输入对应的量化因子,Qw表示所述无符号8bit权重,Zw表示所述无符号8bit权重对应的零点偏移量,Sw表示所述无符号8bit权重对应的量化因子;
Qa*Qw、Za*Zw、Za*Qw、Zw*Qa均可采用8bit无符号乘法器实现,Sa*Sw利用移位操作来实现,累加计算采用8bit无符号加法器实现。
5.如权利要求2所述的方法,其特征在于,所述所述残差块中的所有第二卷积层采用1bit量化,具体包括:
针对每个所述第二卷积层,利用符号函数Sign将所述第二卷积层的特征输入与权重中大于0的部分量化为1,且小于0的部分量化为-1,得到1bit特征输入和1bit权重。
6.如权利要求5所述的方法,其特征在于,所述对所述残差块中的所有第二卷积层采用1bit量化之后,所述方法还包括:
针对每个所述第二卷积层,基于所述1bit特征输入和所述1bit权重,利用公式yr=popcount(xnor(ab,wb))计算出每个所述第二卷积层的特征输出yr;其中,ab,wb分别代表1bit量化后的1bit特征输入、1bit权重;xnor运算为同或运算;popcount运算为位运算。
7.如权利要求4所述的方法,其特征在于,所述残差块中的所有BN层的特征输入和特征输出采用4bit量化,具体包括:
采用所述公式对所述残差块中的所有BN层的特征输入和特征输出进行4bit量化;此时,clamp的截断范围为[0,63]。
8.如权利要求7所述的方法,其特征在于,所述采用所述公式对所述残差块中的所有BN层的特征输入和特征输出进行4bit量化,具体包括:
针对每个BN层的特征输入,计算得到所述BN层的特征输入对应的量化因子和零点偏移量,再利用所述公式对所述BN层的特征输入进行4bit量化;
将所述BN层的特征输入对应的量化因子作为参与计算的参数对应的量化因子,计算出对应的零点偏移量,再利用所述公式对参与计算的参数进行4bit量化,从而对特征输出的计算简化为4bit无符号数的减法与乘法运算。
9.如权利要求2-8任一权项所述的方法,其特征在于,所述混合精度量化神经网络按照下述方式训练得到:
得到语音数据集;
利用所述语音数据集结合混合精度量化训练并测试神经网络模型,得到所述混合精度量化神经网络。
10.一种基于混合精度量化神经网络的语音唤醒系统,其特征在于,包括:
语音唤醒设备的麦克风单元,用于采集待处理语音信号;
特征提取单元,用于对所述待处理语音信号进行特征提取,得到对数梅尔频谱特征;
模型处理单元,用于将所述对数梅尔频谱特征输入混合精度量化神经网络,确定所述对数梅尔频谱特征对应的分类结果;其中,所述混合精度量化指,针对网络中每一层对参数计算精度的要求,对每一层的参数和运算采用不同的量化位数进行参数量化及运算简化;
判定模块,用于若所述对数梅尔频谱特征对应的分类结果为唤醒词且已超过设定时限,唤醒所述语音唤醒设备。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-9任一项所述方法的步骤。
12.一种语音唤醒设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-9任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211672509.1A CN116013293A (zh) | 2022-12-26 | 2022-12-26 | 一种基于混合精度量化神经网络的语音唤醒方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211672509.1A CN116013293A (zh) | 2022-12-26 | 2022-12-26 | 一种基于混合精度量化神经网络的语音唤醒方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116013293A true CN116013293A (zh) | 2023-04-25 |
Family
ID=86020313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211672509.1A Pending CN116013293A (zh) | 2022-12-26 | 2022-12-26 | 一种基于混合精度量化神经网络的语音唤醒方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116013293A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116189667A (zh) * | 2023-04-27 | 2023-05-30 | 摩尔线程智能科技(北京)有限责任公司 | 语音处理模型的量化压缩方法、装置、设备和存储介质 |
-
2022
- 2022-12-26 CN CN202211672509.1A patent/CN116013293A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116189667A (zh) * | 2023-04-27 | 2023-05-30 | 摩尔线程智能科技(北京)有限责任公司 | 语音处理模型的量化压缩方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen et al. | FxpNet: Training a deep convolutional neural network in fixed-point representation | |
CN110718211B (zh) | 一种基于混合压缩卷积神经网络的关键词识别系统 | |
CN110175641B (zh) | 图像识别方法、装置、设备和存储介质 | |
CN110717585B (zh) | 神经网络模型的训练方法、数据处理方法和相关产品 | |
WO2018125623A1 (en) | Neural network processor | |
WO2020001401A1 (zh) | 深度神经网络中的网络层运算方法及装置 | |
WO2021115176A1 (zh) | 语音识别方法及相关设备 | |
US11704556B2 (en) | Optimization methods for quantization of neural network models | |
CN116013293A (zh) | 一种基于混合精度量化神经网络的语音唤醒方法及系统 | |
CN112233675B (zh) | 一种基于分离卷积神经网络的语音唤醒方法及系统 | |
Choi et al. | Retrain-less weight quantization for multiplier-less convolutional neural networks | |
Langroudi et al. | Alps: Adaptive quantization of deep neural networks with generalized posits | |
CN114579743A (zh) | 基于注意力的文本分类方法、装置及计算机可读介质 | |
Liu et al. | EERA-KWS: A 163 TOPS/W always-on keyword spotting accelerator in 28nm CMOS using binary weight network and precision self-adaptive approximate computing | |
CN114707637A (zh) | 一种神经网络量化部署方法、系统及存储介质 | |
CN111126557B (zh) | 神经网络量化、应用方法、装置和计算设备 | |
CN112085175B (zh) | 基于神经网络计算的数据处理方法和装置 | |
CN113780523A (zh) | 图像处理方法、装置、终端设备及存储介质 | |
EP3040852A1 (en) | Scaling for block floating-point data | |
US20230161555A1 (en) | System and method performing floating-point operations | |
Gong et al. | QCNN inspired reconfigurable keyword spotting processor with hybrid data-weight reuse methods | |
Hsieh et al. | A multiplier-less convolutional neural network inference accelerator for intelligent edge devices | |
Nicodemo et al. | Memory requirement reduction of deep neural networks for field programmable gate arrays using low-bit quantization of parameters | |
CN112735469B (zh) | 低内存语音关键词检测方法、系统、介质、设备及终端 | |
He et al. | Background noise adaptive energy-efficient keywords recognition processor with reusable DNN and reconfigurable architecture |
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 |