HI,欢迎来到起点商标网!
24小时服务QQ:2880605093

结合语音活性检测和滑动窗噪声估计的信噪比计算方法与流程

2021-01-28 13:01:49|310|起点商标网
结合语音活性检测和滑动窗噪声估计的信噪比计算方法与流程

本发明属于人工智能技术领域,涉及语音识别,具体涉及一种结合语音活性检测和滑动窗噪声估计的信噪比计算方法。



背景技术:

语音应用场景日渐丰富,不同的应用场景往往都是伴随着噪声的。这些语音相关应用需求比如分贝检测议等工具,语音识别、阵列信号处理等等语音技术也会需要信噪比或者根据信噪比来优化体验。因此需要获取准确的信噪比估计,首先需要对背景噪声进行一个较为准确的实时估计,其次需要决定什么时候去对信噪比进行更新。



技术实现要素:

为克服现有技术存在的缺陷,本发明公开了一种结合语音活性检测和滑动窗噪声估计的信噪比计算方法。

本发明所述结合语音活性检测和滑动窗噪声估计的信噪比计算方法,包括以下步骤:

s1.对输入的带噪语音进行逐帧处理,每帧数据对其进行短时傅里叶变换后得到频谱y(k,l),其中k为频点频率,l为帧数;

s2.设置滑动窗,对窗内频谱的每一个频点的最小值进行持续更新;

所述持续更新的具体方式为:

以第一帧每个频点的频谱幅度平方值之和作为背景能量初始值;从第二帧开始,该帧每个频点与该帧前且位于窗内全部帧的相同频点值进行比较并选择最小值,在求得单一频点的最小值后,对该帧逐频点更新,得到该帧全频段的背景能量最小值;

s3.求出每一帧的帧能量frame_energy和帧谱熵frame_entropy;

s4.根据帧能量frame_energy和帧谱熵frame_entropy是否同时大于各自的设定门限值,判断是否处于语音活性检测状态;

s5.处于语音活性检测状态时,进行帧信噪比的求取和更新。

优选的:所述步骤s2中,背景能量最小值的更新方程为:

其中min(k,l)为频点k的更新前最小值,frame_energy为帧能量;back_energy(l)为第l帧的背景能量;α为背景能量平滑参数,n为傅里叶变换的点数。

优选的:第l帧的帧能量

帧谱熵frame_entropy,采取以下公式进行估计,其中n为傅里叶变换的点数:

p(k,l)为每一个频点的功率谱占整帧功率谱的比重,其中k是频点频率,l是帧数。

优选的:所述步骤s4中设定门限值与背景谱熵线性相关,

第l帧的所述背景谱熵back_entropy(l)的计算公式为:

;其中β为背景帧谱熵平滑参数,l为帧数。

优选的:所述步骤s4具体为:

当帧能量frame_energy和帧谱熵frame_entropy同时大于各自的设定门限值,定义该状态为状态1,否则为状态2;

在状态1下,语音计数帧voice_frame的值加1,安静计数帧silence_frame的值为0;

在状态2下,安静计数帧silence_frame的值加1,语音计数帧voice_frame的值为0;

仅在状态1连续出现次数达到设定的状态1次数阈值,判断语音活性检测状态为1,即认为处于语音活性检测状态。

优选的:所述步骤s5中帧信噪比在语音活性检测状态为1时根据如下公式求得,

第l帧的帧信噪比:

γ为帧信噪比平滑参数,frame_energy(l)为第l帧的帧能量,back_energy(l)为第l帧的背景能量。

本发明通过语音活性检测状态控制帧信噪比的更新时机,可以判断出环境即时状态,从而更为有效和准确的更新帧信噪比。

附图说明

图1是本发明所述信噪比计算方法的一个具体实施方式流程示意图。

具体实施方式

下面对本发明的具体实施方式作进一步的详细说明。

本发明所述结合语音活性检测和滑动窗噪声估计的信噪比计算方法,包括以下步骤:

s1.对输入的带噪语音进行逐帧处理,每帧数据对其进行短时傅里叶变换后得到频谱y(k,l),其中k为频点频率,l为帧数;

s2.设置滑动窗,对窗内频谱的每一个频点的最小值进行持续更新;

所述持续更新的具体方式为:

以第一帧每个频点的频谱幅度平方值作为背景能量初始值;从第二帧开始,该帧每个频点与该帧前且位于窗内全部帧的相同频点值进行比较并选择最小值,在求得单一频点的最小值后,对该帧逐频点更新,得到该帧全频段的背景能量最小值;

s3.求出每一帧的帧能量和帧谱熵frame_entropy;

s4.根据帧能量frame_energy和帧谱熵frame_entropy是否同时大于设定门限值,判断是否处于语音活性检测状态,是则处于,否则不处于;

s5.处于语音活性检测状态时,进行帧信噪比的求取和更新。

具体方式为:

以第一帧每个频点的频谱幅度y(k,l)平方值之和作为背景能量初始值;从第二帧开始,该帧每个频点与该帧前且位于窗内全部帧的相同频点值进行比较并选择最小值,在求得单一频点的最小值后,对该帧逐频点更新,得到该帧全频段的背景能量最小值;

s3.求出每一帧的帧能量和帧谱熵frame_entropy;

s4.根据帧能量frame_energy和帧谱熵frame_entropy是否同时大于各自的设定门限值的连续持续次数,判断是否处于语音活性检测状态;

s5.处于语音活性检测状态时,进行帧信噪比的求取和更新

如图1所示,对输入的带噪语音y进行逐帧处理,以滑动窗更新背景能量最小值,求出每一帧的帧能量和帧谱熵,判断是否处于语音活性检测状态后进行帧信噪比snr的更新输出。

逐帧处理中,每帧数据对其进行短时傅里叶变换后得到频谱y(k,l);其频谱幅度;其中k代表的是频点频率,l代表的是帧数。

设置滑动窗,通过滑动窗对窗内频谱的每一个频点的最小值进行持续更新,并通过平滑策略保证估计出的背景能量值back_energy尽量平滑且不会被突发噪声引起突变;

同时求得帧能量frame_energy和帧谱熵frame_entropy,本方法会将在每一帧分别求得帧能量和帧谱熵值后,将两者的值来和各自的门限值作比较,

根据帧能量frame_energy和帧谱熵frame_entropy,求得语音活性检测状态,如果大于门限值,则语音计数帧加1,否则安静计数帧加1,

例如设置语音计数帧大于5或者安静计数帧大于10则可以用来判断语音的开启或者停止,随即输出语音活性检测状态0/1来确定是否更新信噪比snr。

以下给出滑动窗噪声估计的一个具体流程:

以第一帧内每个频点的频谱幅度平方值之和作为背景能量初始化值,记录为初始的背景能量数据min(k,l)。可以把该滑动窗帧长设定为l=80,即帧的长度能覆盖到中文单音节字的发音时常,但该长度的设置不局限于l=80,因语速和语种而变化。

即每一帧的每个频点都会去和过去窗长l帧内的l-1帧的值去进行比较并选择各频点的最小值,并更新到背景能量数据min(k,l)里。在求得单一频点的背景能量数据min(k,l)后,对其逐频点更新,得到该帧全频段的背景能量最小值,后续运算需要使用该最小值来进行背景能量的更新。

第l帧的背景能量

其中frame_energy为帧能量值。

本发明中可以将背景能量平滑参数α设置为0.9,l为帧数。

以下给出语音活性检测的一个具体流程:

首先需要求取每一帧的帧能量frame_energy,根据时域方法来求取,本发明中提供的具体时域方法供参考,求取方式不限于时域方法,频域方法求取亦可。具体即对频谱幅度的平方进行逐频点相加得到第l帧的帧能量:

,sum表示求和;

其次需要求取该帧的帧谱熵frame_entropy,最简单的估计方法可采取以下公式对当前帧的谱熵进行估计,其中n为傅里叶变换的点数,因为共轭对称性质,取n/2求和。

帧谱熵frame_entropy,采取以下公式进行估计,其中n为傅里叶变换的点数:

;

在求得以上帧能量frame_energy和帧谱熵frame_entropy之后,还需要求得背景谱熵back_entropy,背景谱熵的更新时机根据是否处于语音活性检测状态进行,即处于语音活性检测状态时,才进行背景谱熵的更新。

背景谱熵back_entropy的平滑方式如下式,第l帧的背景谱熵

其中背景帧谱熵平滑参数β值可以选择为0.95,l为帧数。

所述步骤s4可以具体为:

当帧能量frame_energy和帧谱熵frame_entropy同时大于各自的设定门限,定义该状态为状态1,否则为状态2;

在状态1下,语音计数帧voice_frame的值加1,安静计数帧silence_frame值为0;

在状态2下,安静计数帧silence_frame的值加1,语音计数帧voice_frame值为0。

在逐帧检测状态下,状态1连续出现次数达到设定的状态1次数阈值,判断语音活性检测状态为1,此时处于语音活性检测状态,其他状态下均不处于语音活性检测状态;如果状态2连续出现次数达到设定的状态2次数阈值,语音活性检测状态为0,此时可以判断无语音,系统可以进入省电的待机模式。

以th_energy表示为帧能量的门限,th_entropy表示为帧谱熵的门限。语音活性检测中的门限可参考如下但不局限于如下方式设定,本发明中的设定作为一个具体的实施:

即当前帧能量frame_energy和帧谱熵frame_entropy同时大于各自的门限时,语音计数帧voice_frame值加1,安静计数帧silence_frame值为0;

否则安静计数帧silence_frame值加1,语音计数帧voice_frame值为0;此处计数帧的更新方式表示需要连续语音帧出现,语音计数帧voice_frame值才会加1,否则会清零,同样需要连续静音帧出现时安静计数帧silence_frame值才会加1,否则会清零。即语音计数帧和安静计数帧的增加累积过程中不能出现间断,必须是连续出现的加1状态才能累积,出现中断即清零,重新开始累积。

例如可以设置语音计数帧voice_frame>5,即状态1次数阈值为5,则可判决语音活性检测状态vad_state为1,此时处于语音活性检测状态;

若安静计数帧silence_frame>10,即状态2次数阈值为10,认为语音活性检测状态vad_state为0,此时不处于语音活性检测状态,且认为此时无语音,可以进入系统省电状态。

求得上述的语音活性检测状态vad_state为1,认为处于语音活性检测状态,即可进行帧信噪比的求取和更新。

其中,帧信噪比在处于语音活性检测状态下即语音活性检测状态vad_state为1时候可根据如下公式求得第l帧的帧信噪比

语音活性检测状态vad_state为0时,认为未处于语音活性检测状态,则不进行更新,帧信噪比平滑参数γ值可以为0.8,frame_energy(l),back_energy(l)分别表示第l帧的帧能量和背景能量。

本发明通过语音活性检测状态控制帧信噪比的更新时机,可以判断出环境即时状态,从而更为有效和准确的更新帧信噪比。

前文所述的为本发明的各个优选实施例,各个优选实施例中的优选实施方式如果不是明显自相矛盾或以某一优选实施方式为前提,各个优选实施方式都可以任意叠加组合使用,所述实施例以及实施例中的具体参数仅是为了清楚表述发明人的发明验证过程,并非用以限制本发明的专利保护范围,本发明的专利保护范围仍然以其权利要求书为准,凡是运用本发明的说明书内容所作的等同结构变化,同理均应包含在本发明的保护范围内。

起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。

此文章来源于网络,如有侵权,请联系删除

相关标签: 信噪比傅里叶变换
tips