发明内容
本申请提供了爆音检测方法和装置,以实现自动检测爆音。
本申请提供的技术方案包括:
一种爆音检测方法,包括:
将待检测的一段语音信号划分为多个语音帧;
对每一语音帧进行快速傅里叶变换处理,计算该语音帧在完成快速傅里叶变换处理后全频段内每一频点下的频域能量值;
利用每一语音帧在全频段内每一频点下的频域能量值计算该语音帧的全频段平均能量值;
计算每一语音帧的低频段平均能量值,并对所有语音帧的低频段平均能量值进行聚类分析,根据聚类结果确定强能量数值范围;
检测每一语音帧的全频段平均能量值是否在所述强能量数值范围,当检测出至少一个语音帧的全频段平均能量值在所述强能量数值范围时,确定待检测的一段语音信号为爆音,当检测出所有语音帧的全频段平均能量值均不在所述强能量数值范围时,确定待检测的一段语音信号不为爆音。
一种爆音检测装置,包括:
划分单元,用于将待检测的一段语音信号划分为多个语音帧;
处理单元,用于对每一语音帧进行快速傅里叶变换处理,计算该语音帧在完成快速傅里叶变换处理后全频段内每一频点下的频域能量值;
计算单元,用于利用每一语音帧在全频段内每一频点下的频域能量值计算该语音帧的全频段平均能量值,并计算每一语音帧的低频段平均能量值E1;
聚类单元,用于对所有语音帧的低频段平均能量值进行聚类分析,根据聚类结果确定强能量数值范围;
检测单元,用于检测每一语音帧的全频段平均能量值是否在所述强能量数值范围,当检测出至少一个语音帧的全频段平均能量值在所述强能量数值范围时,确定待检测的一段语音信号为爆音,当检测出所有语音帧的全频段平均能量值均不在所述强能量数值范围时,确定待检测的一段语音信号不为爆音。
由以上技术方案可以看出,本发明中,通过各个语音帧的全频段平均能量值大小来刻画待检测语音信号在整个全频段的强度,根据各个语音帧的全频段平均能量值是否在强能量值范围来检查待检测的语音信号是否有爆音,即实现了自动在语音信号中动态检测爆音的目的,无需像现有技术那样通过人耳测听从语音信号中检测爆音,相比现有人耳测听节省人力资源。
进一步地,由于爆音本身在各个频段的语音信号能量相对较高,从语谱图可以直观的看到一条“直亮柱”,而本发明通过各个语音帧的全频段平均能量值是否在强能量值范围来检查待检测的语音信号是否有爆音,这完全符合爆音本身的特点,验证了本发明根据各个语音帧的全频段平均能量值是否在强能量值范围来检查待检测的语音信号是否有爆音是合理的。
更进一步地,由于不同语音信号的强度分布各不相同,而本发明只是针对待检测的语音信号确定用于判定语音信号是否为爆音的强能量数值范围,使得确定的强能练数值范围与待检测的语音信号一一对应,这能够保证爆音的检测更加准确。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
在语音信号的语谱图中,假如在2.45秒到2.48秒的时间段内存在爆音。基于爆音的定义,可以知道,2.45秒到2.48秒内各个频段的语音信号能量相对较高,从语谱图可以直观的看到在2.45秒到2.48秒之间有一条“直亮柱”,如图1所示。
也就是说,在语音信号的语谱图中检测到有“直亮柱”的存在就可检测出有爆音。
基于上述思想,本发明提供了图2所示的方法流程:
参见图2,图2为本发明实施例提供的方法流程图。如图2所示,该流程可包括以下步骤:
步骤201,将待检测的一段语音信号划分为多个语音帧。
作为本发明的一个实施例,本发明中,将待检测的一段语音信号划分为多个语音帧可包括:
采用加窗方式将待检测的语音信号划分为多个语音帧,其中,在划分语音帧时按照从待检测的一段语音信号中每移动一个设定平移长度划分一个语音帧,且划分的语音帧的长度为设定加窗宽度。
以设定平移长度为5ms,设定加窗宽度为40ms为例,则对于一个待检测的一段100ms时长的语音信号,划分出的语音帧为:
第一个语音帧:0-40ms,
第二个语音帧:5ms-45ms;
第三个语音帧:10ms-50ms;
第四个语音帧:15ms-55ms;
依次类推,倒数第二个语音帧:55ms-95ms,最后一个语音帧:60ms-100ms。
步骤202,对每一语音帧进行快速傅里叶变换(fft)处理,计算该语音帧在完成fft处理后全频段内每一频点下的频域能量值。
本发明中,每一个语音帧内的样点数为:t*fs,t为帧长,fs为采样率。作为本发明的一个实施例,这里t可为0.04s(即40ms),fs为16000,如此,每一语音帧的样点数为0.04*16000=640。
基于此,优选地,本步骤202具体可为:对每一语音帧做大于640点比如1024点的fft处理,计算全频段内每一频点下幅度的对数值,将该语音帧在每一频点下幅度的对数值作为每一频点下的频域能量值。
步骤203,利用每一语音帧在全频段内每一频点下的频域能量值计算该语音帧的全频段平均能量值E0。
作为本发明的一个实施例,步骤203可为:
将每一语音帧在全频段内每一频点下的频域能量值相加,得到第一计算结果;
将所述第一计算结果除以所述全频段内所有频点的数量,得到的结果作为该语音帧的全频段平均能量值E0。
以全频段为0-8kHz为例,则本步骤203就将将每一语音帧在0-8kHz内每一频点下的频域能量值相加,并除以0-8kHz内所有频点的数量,得到该语音帧的全频段平均能量值E0。
步骤204,计算每一语音帧的低频段平均能量值E1。
每一段语音信号的强度分布各不相同,因此每一段语音信号的能量强度的比较都只能相对于本段语音信号,能量的强弱分区和典型数值都只相对于本段语音信号有意义,并不能对所有语音信号定义出能量值大于某一数值就属于强能量,低于某一数值就是弱能量,只能在某一段特定的语音信号中定义出大于某一数值就属于该段语音信号的强能量范围,低于某一数值就属于该段语音信号的弱能量范围,根据语音的特点,不全是静音的语音(一段全静音的语音意义不大)中总是存在强弱两个分区,尤其在低频段表现非常明显,基于此,本发明通过计算语音帧的低频段平均能量值E1将语音分为强弱两个区域,具体见步骤205,以便后续检测爆音,具体见步骤206。
其中,步骤204中计算每一语音帧的低频段平均能量值E1可包括:
从每一语音帧在全频段内每一频点下的频域能量值中获取属于设定低频段的每一频点下的频域能量值;这里,所述设定低频段是基于全频段确定的,其具体为所述全频段内频率低的频段。比如,全频段为0-8kHz,设定低频段为50Hz-550Hz;
将获取的每一频点下的频域能量值相加,并除以所述设定低频段内所有频点的数量,得到的结果作为该语音帧的低频段平均能量值E1。
步骤205,对所有语音帧的低频段平均能量值E1进行聚类分析,根据聚类结果确定强能量数值范围。
聚类,是将所有语音帧的低频段平均能量值E1分成类或簇的过程,使同一类或簇的低频段平均能量值E1之间具有很高的相似度,而不同类或簇的低频段平均能量值E1相似度低。
作为本发明的一个实施例,本步骤205可采用K-均值(K-means)聚类方法对所有语音帧的低频段平均能量值E1进行聚类分析。下面进行具体描述:
参见图3,图3为本发明实施例提供的对语音帧的E1进行聚类分析的流程图。如图3所示,该流程可包括以下步骤:
步骤301,随机从所有语音帧的低频段平均能量值E1中选取两个低频段平均能量值E1分别作为当前聚类中心。
比如,所有语音帧的低频段平均能量值E1依次为1、2、3、4、5、101、102、103、104、105,则本步骤301可以随机选取1、2作为当前聚类中心,也可随机选取1、101作为当前聚类中心。
步骤302,针对每一低频段平均能量值E1,计算该低频段平均能量值E1到每一当前聚类中心的距离,将该低频段平均能量值E1归为距离其最短的当前聚类中心对应的类。
这里,该低频段平均能量值E1到当前聚类中心的距离具体为该低频段平均能量值E1与当前聚类中心差值的绝对值。
如此,通过步骤302就能将所有的低频段平均能量值E1分为两类,一类对应其中一个当前聚类中心,另一类对应另一个当前聚类中心。
步骤303,针对两个当前聚类中心对应的类,分别计算该类中所有低频段平均能量值E1的平均值,比较该计算的两个平均值是否与两个当前聚类中心相同,如果是,结束当前流程,将两个当前聚类中心对应的类作为最终的聚类结果,如果否,将计算的两个平均值作为当前聚类中心,返回步骤302。
比如,所有语音帧的低频段平均能量值E1依次为1、2、3、4、5、101、102、103、104、105,假如执行到步骤303时,1、2作为当前聚类中心,且存在两个类,一个类与作为当前聚类中心的1对应(记为类1),其包含1,另一个类与作为当前聚类中心的2对应(记为类2),包含2、3、4、5、101、102、103、104、105,计算类1中低频段平均能量值E1的平均值,因为类1中仅包含1,则类1的平均值也就为1,计算类2中所有低频段平均能量值E1的平均值,即(2+3+4+5+101+102+103+104+105)/9,发现类1中低频段平均能量值E1的平均值、类2中低频段平均能量值E1的平均值不与两个当前聚类中心1、2相同,则返回步骤302。
而假如执行到步骤303时,3、103作为当前聚类中心,且存在两个类,一个类与作为当前聚类中心的3对应(记为类3),其包含1、2、3、4、5,另一个类与作为当前聚类中心的103对应(记为类4),包含101、102、103、104、105,计算类3中低频段平均能量值E1的平均值,即(1+2+3+4+5)/5=3,计算类24中所有低频段平均能量值E1的平均值,即(101+102+103+104+105)/5=103,发现类3中低频段平均能量值E1的平均值、类4中低频段平均能量值E1的平均值与两个当前聚类中心3、103相同,结束当前流程,将此时的类3、类4作为最终的聚类结果。
至此,完成图3所示的流程。
需要说明的是,图3只是以K-均值聚类方法为例描述如何对所有语音帧的低频段平均能量值E1进行聚类分析。优选地,本发明在不改变本发明思想的前提下,也可以采用其他方式比如迭代自组织数据分析技术(ISODATA)聚类方法对所有语音帧的低频段平均能量值E1进行聚类分析,这里不再具体限定。
基于图3所示的聚类分析,步骤205中,根据聚类结果确定强能量数值范围可包括:
从作为聚类结果的两个类中选择出包含的低频段平均能量值E1较大的类,比如选择上述的类4,将该选择出的类中的所有低频段平均能量值E1或者部分低频段平均能量值E1作为强能量数值范围。
步骤206,检测每一语音帧的全频段平均能量值E0是否在所述强能量数值范围,当检测出至少一个语音帧的全频段平均能量值E0在所述强能量数值范围时,确定待检测的一段语音信号为爆音,当检测出所有语音帧的全频段平均能量值E0均不在所述强能量数值范围时,确定待检测的一段语音信号不为爆音。
以步骤205确定出的强能量数值范围为101至105为例,则本步骤206检测每一语音帧的全频段平均能量值E0是否在101至105之间,当检测出至少一个语音帧的全频段平均能量值E0在101至105之间时,确定待检测的一段语音信号为爆音,当检测出所有语音帧的全频段平均能量值E0均不在101至105之间时,确定待检测的一段语音信号不为爆音。
至此,完成图2所示的流程。
基于爆音的定义可以知道,爆音在各个频段的语音信号能量相对较高,从语谱图可以直观的看到一条“直亮柱”,如图1所示在2.45秒到2.48秒之间的“直亮柱”,基于此,图2所示流程,本发明用各个语音帧在全频段的平均能量值大小来刻画整个全频段的强度,根据各个语音帧的平均能量值是否在强能量值区域来检查是否有爆音存在是合理的,其能够准确、快捷在一段语音信号中检测出爆音,不需要人耳测听,节省大量人力。
以上对本发明提供的方法进行了描述,下面对本发明提供的装置进行描述:
参见图4,图4为本发明实施例提供的装置结构图。如图4所示,该装置可包括:
划分单元,用于将待检测的一段语音信号划分为多个语音帧;
处理单元,用于对每一语音帧进行快速傅里叶变换fft处理,计算该语音帧在完成快速傅里叶变换处理后全频段内每一频点下的频域能量值;
计算单元,用于利用每一语音帧在全频段内每一频点下的频域能量值计算该语音帧的全频段平均能量值,并计算每一语音帧的低频段平均能量值E1;
聚类单元,用于对所有语音帧的低频段平均能量值进行聚类分析,根据聚类结果确定强能量数值范围;
检测单元,用于检测每一语音帧的全频段平均能量值是否在所述强能量数值范围,当检测出至少一个语音帧的全频段平均能量值在所述强能量数值范围时,确定待检测的一段语音信号为爆音,当检测出所有语音帧的全频段平均能量值均不在所述强能量数值范围时,确定待检测的一段语音信号不为爆音。
优选地,本发明中,所述划分单元可采用加窗方式将待检测的一段语音信号划分为多个语音帧,其中,在划分语音帧时按照从待检测的一段语音信号中每移动一个设定平移长度划分一个语音帧,且划分的语音帧的长度为设定加窗宽度。
优选地,本发明中,所述处理单元计算该语音帧在完成快速傅里叶变换处理后全频段内每一频点下的频域能量值包括:
计算该语音帧在完成快速傅里叶变换处理后全频段内每一频点下幅度的对数值;
将该语音帧在每一频点下幅度的对数值作为每一频点下的频域能量值。
优选地,本发明中,所述计算单元利用每一语音帧在全频段内每一频点下的频域能量值计算该语音帧的全频段平均能量值E0可包括:
将每一语音帧在全频段内每一频点下的频域能量值相加,得到第一计算结果;将所述第一计算结果除以所述全频段内所有频点的数量,得到的结果作为该语音帧的全频段平均能量值E0;
优选地,本发明中,所述计算单元每一语音帧的低频段平均能量值E1包括:
从每一语音帧在全频段内每一频点下的频域能量值中获取属于设定低频段的每一频点下的频域能量值;
将获取的每一频点下的频域能量值相加,并除以所述设定低频段内所有频点的数量,得到的结果作为该语音帧的低频段平均能量值E1。
优选地,本发明中,所述聚类单元对所有语音帧的低频段平均能量值E1进行聚类分析可包括以下步骤:步骤1,随机从所有语音帧的低频段平均能量值E1中选取两个低频段平均能量值E1分别作为当前聚类中心;步骤2,针对每一低频段平均能量值E1,计算该低频段平均能量值E1到每一当前聚类中心的距离,将该低频段平均能量值E1归为距离其最短的当前聚类中心对应的类;步骤3,针对两个当前聚类中心对应的类,分别计算该类中所有低频段平均能量值E1的平均值,比较该计算的两个平均值是否与两个当前聚类中心相同,如果是,结束当前流程,将两个当前聚类中心对应的类作为聚类结果,如果否,将计算的两个平均值作为当前聚类中心,返回步骤2;
基于此,所述聚类单元根据聚类结果确定强能量数值范围包括:从作为聚类结果的两个类中选择出包含的低频段平均能量值E1较大的类,将该选择出的类中的所有低频段平均能量值E1或者部分低频段平均能量值E1作为强能量数值范围。
以上对本发明提供的装置进行了描述。
由以上技术方案可以看出,本发明中,通过各个语音帧的全频段平均能量值大小来刻画待检测语音信号在整个全频段的强度,根据各个语音帧的全频段平均能量值是否在强能量值范围来检查待检测的语音信号是否有爆音,即实现了自动在语音信号中动态检测爆音的目的,无需像现有技术那样通过人耳测听从语音信号中检测爆音,相比现有人耳测听节省人力资源。
进一步地,由于爆音本身在各个频段的语音信号能量相对较高,从语谱图可以直观的看到一条“直亮柱”,而本发明通过各个语音帧的全频段平均能量值是否在强能量值范围来检查待检测的语音信号是否有爆音,这完全符合爆音本身的特点,验证了本发明根据各个语音帧的全频段平均能量值是否在强能量值范围来检查待检测的语音信号是否有爆音是合理的。
更进一步地,由于不同语音信号的强度分布各不相同,而本发明只是针对待检测的语音信号确定用于判定语音信号是否为爆音的强能量数值范围,使得确定的强能练数值范围与待检测的语音信号一一对应,这能够保证爆音的检测更加准确。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。