一种低信噪比下语音端点检测的改进算法

2021-05-24 07:45章小兵
皖西学院学报 2021年2期
关键词:余弦端点对数

吕 昊,章小兵,蔡 诚

(安徽工业大学 电气与信息工程学院,安徽 马鞍山 243000)

语音端点检测的目的是从一段带噪语音中根据语音段和噪声段的不同特征对两者进行区分,进而检测出语音起止点位置。目前,语音端点检测的方法一般可分为特征阈值检测法、模式识别法以及新兴理论法等[1-2]。由于模式识别法和新兴理论法存在复杂度高、运算量大,应用性差等缺点,其应用与发展受到了限制,因此特征阈值检测成为实时语音检测的研究热点[3]。常用的特征阈值检测方法包括短时能量法、谱熵法、谱距离法等[4-6]。这些方法在高信噪比环境下有较好的检测效果,但随着信噪比的不断下降,检测效果也愈来愈差,有些方法甚至会失效[7]。以本文所要对比的传统能零比法为例,该方法在高信噪比环境下可以较为准确地检测出语音信号的端点,但当信噪比在5 dB及以下时端点检测准确率则发生骤降[8]。

因此,本文提出一种将Boll的改进谱减与对数能量-自相关夹角余弦比相结合的端点检测方法。首先采用Boll的改进谱减法对带噪语音进行降噪,然后求出每帧语音信号的对数能量和自相关函数余弦角值,利用对数能量在有话段中的特征数值大于噪声段的特征数值以及自相关函数余弦角值在有话段中的数值小于噪声段中数值的特点,并将两者作比值处理,从而拉开有话段与噪声段之间的参数差距。经实验验证,该方法在低信噪比下有更高的端点检测准确率。

1 谱减法降噪

1.1 基本谱减法的降噪原理

一段语音信号x(n)经过预处理得第i帧语音信号为xi(m),它的帧长为N。在对任一帧信号xi(m)进行快速傅里叶变换之后,可以得到以下公式

k=0,1,…,N-1

(1)

然后通过对Xi(k)求解,能得到各个分量的相角及幅值,幅值可以表示为|Xi(k)|,同样相角可表示为

(2)

已知前导噪声段的时长和帧数分别是IS、NIS,就能得到其平均能量值

(3)

谱减算法如下式

(4)

式中,a、b这两个常数分别被称为过减因子和增益补偿因子。

但是,由于噪声的频谱特点,其功率谱随机变化且变化的区间很广,两个最值之比可涉及数个数量级,而且峰值和均值之比也能达到六倍甚至更高。所以就算减掉噪声谱,仍会因为功率谱残余分量的存在而最终在听觉上形成残留噪声。因此为了减少残留噪声以降低其带来的检测误差,必须在基本谱减法基础之上进行改进[9]。

1.2 Boll的改进谱减法

S.F.Boll在1979年给出了一种改进的谱减法[10],他主要在以下方面对基本谱减法做了改进:

1.2.1 运用信号的频谱幅值或功率谱进行谱减

(5)

噪声段的平均谱值为

(6)

式中的γ=1或2,(γ=1时采用谱幅值;γ=2时采用功率谱)[11]。式(5)中α、β分别为过减因子和增益补偿因子。

1.2.2 计算平均谱值

任意帧语音信号xi(m)做快速傅里叶变换可得

k=0,1,…,N-1

(7)

其中,Xi(k)中的下标i表示第i帧,然后在相邻帧之间计算平均值:

(8)

对于第i帧将在Xi-M(k),Xi-M+1(k),…,Xi(k),…,Xi+M(k)这2M+1帧之间计算平均值,这种计算方式的目的是获得更小的谱估计方差。

1.2.3 减小噪声残留

在1.1小节中提到过由于噪声会有部分的残留,所以在谱减后的语音中往往会含有“音乐噪声”。

从式(5)中可提取出谱减法的关键为

(9)

其中,|Xi(k)|γ为谱幅值,D(k)为谱均值。

Boll的改进谱减法通过适当增加减去的噪声量,在一定程度上减少了噪声残留,有效地抑制了音乐噪声[12],降低了检测误差,为后面进行端点检测奠定了良好的基础。

Boll的改进谱减法运算示意图如图1所示。

图1 Boll的改进谱减法运算示意图

2 语音端点检测

2.1 对数能量

设有一段语音信号的时间序列为x(n),对其进行预处理得到第i帧语音信号为xi(m),则有

xi(m)=ω(n)*x((i-1)*inc+n)

1≤n≤N,1≤i≤fn

(10)

其中,ω(n)为窗函数;xi(m)为一帧的数值,n=1,2,…,L,i=1,2,…,fn,N为帧长;inc为帧移长度;fn为总帧数。

则计算第i帧语音信号xi(m)的短时能量公式为

(11)

在这里引入改进的能量计算关系

(12)

其中,AMPi为每帧的能量;a为常数;LEi为第i帧的对数能量。

由于a的存在,相较于传统线性能量而言,不会出现对数能量特征中噪声段特征值过大的问题[13],在一定程度上平稳了语音段的幅值[14]。

2.2 自相关函数余弦角值

如果两个语音信号的自相关函数是一样的或者是成比例的,那么两者也具有相同或相似的功率谱结构,也就是说这两个信号具备极大的相似性。对于相似信号和不相似信号来说,它们的余弦值趋向不同[15]。

其定义如下

(13)

将一段纯噪声作为参考信号x1(n)=ω(n)。对其进行分帧并对任一帧建立它的自相关序列Rw(i,k)。求出所有的自相关函数序后,对其求平均

(14)

得到自相关函数值序列[15]。

对于任意一帧语音信号来说,都可看成两种状态。状态1只有噪声y1(n)=ν(n),状态2同时包含语音和噪声,y2(n)=s(n)+ν(n),s(n)和ν(n)分别表示为一帧噪声和一帧语音信号。

当被测语音为状态1时,Ry(k)=Rν(k),(Ry(k)和Rν(k)分别是y(n)和ν(n)的短时自相关函数),此时y1(n)和ω(n)这两个信号具备很强的相似性,它们的功率谱相同或相似,所以有Ry(k)=pRw(k),cosα趋于1。

当被测语音为状态2时,则

(15)

其中,Rs(k)是s(n)的短时自相关函数

(16)

hRw(k)是语音中自带的噪声,Rs0(k)和Rw(k)正交,Ry(k)=pRw(k)

(17)

因此式(15)可表示为

Ry(k)=Rs0(k)+hRw(k)+pRw(k)

(18)

记作

(19)

其中

(20)

从式(19)可知cosα取决于μ、β和h/p的值,首先元素μ与信噪比的二次方相近;元素β由Rs(k)和Rw(k)的相近水平来决定;h/p则是由信号自身的噪声和噪声模型的相近水平来决定的,且该值基本上趋近于常数。基于此,当信噪比一定时,cosα由元素β来决定。

对于β来说,当被测为噪声信号时,相似度向1趋近,cosα趋于1;当被测为语音信号时,β≪1,cosα趋于0。

2.3 对数能量-自相关夹角余弦比特征计算

根据对数能量和自相关函数余弦角值的性质,即有话段的能量数值大,自相关函数余弦角值cosα趋于0;而在噪声段中,能量数值小,cosα趋于1。由此类比传统能零比,并在符合客观实际和运算规律的基础上对算法优化,得到对数能量-自相关夹角余弦比。本文提出的算法相较于能零比法,更为恰当地拉开了有话段和噪声段之间的差距,不但噪声与语音的边界更加陡峭,而且在语音主峰部分也更加平缓,增强了检测效果。

计算公式如下

(21)

其中,LEi和cosα(i)分别表示第i帧的对数能量和自相关函数余弦角值;λ的目的是调整幅值;μ是一个较小的常数,为了防止cosα(i)为0时出现溢出的情况。

3 改进算法的具体步骤

本文改进算法的具体步骤如下:

1)对原始语音信号进行加窗分帧等预处理。

2)使用Boll的改进谱减法对分帧后的语音信号进行降噪处理,得到谱减后的语音序列。

3)对谱减降噪后的语音序列逐帧计算对数能量LEi和自相关函数余弦角值cosα(i)。

4)根据式(21)可求得第i帧的对数能量-自相关夹角余弦比值Ef(i)。

5)利用双门限法进行端点检测。将步骤4中求得的Ef(i)用作双门限端点检测的特征参数dst1。对dst1设置两个阈值:较高阈值T1和较低阈值T2。当dst1高于T1时则直接判定为语音段,再从dst1在什么时候高于T2来判决语音信号的端点[16](P129)。本文改进算法的流程图如图2所示。

图2 本文改进的端点检测方法流程图

4 仿真实验及结果分析

本次实验过程需要借助到MATLAB软件。实验中所使用的纯净语音,其内容为“蓝天,白云,碧绿的大海”,所用噪声(白噪声、f16、volvo)均选自Noisex-92标准噪声库。另外实验所涉及的语音样本均为8 kHz/16bit的.wav文件。

为了验证在低信噪比环境下本文提出算法的切实性,将上述三种噪声分别叠加在纯净语音上生成不同信噪比(0 dB、-5 dB)环境下的含噪语音然后进行实验,并将其实验效果与能零比、多窗谱谱减能熵比算法进行对比,仿真实验结果如图3—图8。

图3 SNR=0 dB时白噪声环境下端点检测效果对比

图4 SNR=-5 dB时白噪声环境下端点检测效果对比

图5 SNR=0 dB时volvo噪声环境下端点检测效果对比

图7 SNR=0 dB时f16噪声环境下端点检测效果对比

图8 SNR=-5 dB时f16噪声环境下端点检测效果对比

图3、图5和图7,分别是在信噪比SNR=0 dB时叠加白噪声、volvo噪声和f16噪声的仿真实验结果图。观察图5、图7可知,此时传统能零比端点检测在叠加volvo噪声和f16噪声的情况下均出现漏检,且在叠加volvo噪声时在最前边噪声段以及“白云”和“碧”之间的噪声段出现了错检。多窗谱谱减能熵比法在叠加volvo噪声时,最后边的语音段“海”字出现了漏检。而本文提出的算法在信噪比SNR=0 dB时叠加白噪声、volvo噪声和f16噪声的情况下均能将完整的语音段正确检出。

同样,图4、图6和图8分别是在信噪比SNR=-5 dB时叠加白噪声、volvo噪声和f16噪声的仿真实验结果图。在此条件下传统能零比端点检测出现漏检、错检的情况更加严重,甚至面临着失效的境况。多窗谱谱减能熵比法在图4、图6和图8中均出现了不同程度的错检和漏检,且相较于SNR=0 dB时出现错误的频率更高,出错部分更多。而本文算法仅在SNR=-5 dB的volvo噪声环境下,语音段“海”字部分出现漏检,除此之外均能较为准确地将语音端点检测出来。因此由仿真实验波形图可得结论,相较于传统能零比和多窗谱谱减能熵比法,本文提出的方法在低信噪比环境下的端点检测效果更好,稳定性更高,鲁棒性能更强。

另外,为了更加直观地证明本文端点检测算法的可行性和有效性,下面引入端点检测正确率的概念[17]。当信噪比分别在-5 dB、0 dB、5 dB和10 dB时将白噪声叠加到纯净语音“蓝天,白云,碧绿的大海”上生成带噪语音,然后对比传统能零比法、多窗谱谱减能熵比法以及本文算法的端点检测正确率。

端点检测正确率的定义如下:

(22)

其中,

(23)

图9 白噪声下三种算法端点检测正确率

由图9,可以更加清晰地看出当SNR=10 dB时,三种方法的检测准确率都较高且相差不大,但随着信噪比不断下降,直到SNR=-5 dB时,明显看到本文提出的算法比传统能零比和多窗谱谱减能熵比两种方法的检测性能更好。另外从整条折线的趋势来看,本文的算法检测准确率波动小,稳定性高。综上,证明了该算法在低SNR环境下的切实可行性及其研究价值。

5 结语

端点检测作为语音识别系统前端处理中最为关键的部分之一,其检测结果将对系统的后续处理过程产生重要的影响。而语音端点检测准确率低的难题普遍存在于低信噪比环境下,基于此,本文首先通过Boll的改进谱减法对带噪语音降噪,然后通过分析对数能量和自相关函数余弦角值的特点,对两者进行有效的结合,最终得到Boll的改进谱减与对数能量-自相关夹角余弦比相结合的语音端点检测算法。通过在不同的信噪比环境下分别叠加三种不同种噪声的仿真实验,结果明确地证实了在低信噪比环境下本文提出的算法与其他传统端点检测算法相比其检测准确率更高,稳定性更好,为语音识别系统后续环节的处理提供了有力的保障,也为低信噪比环境中语音端点检测的进一步发展打开了新思路。

猜你喜欢
余弦端点对数
非特征端点条件下PM函数的迭代根
含有对数非线性项Kirchhoff方程多解的存在性
指数与对数
指数与对数
不等式求解过程中端点的确定
对数简史
两个含余弦函数的三角母不等式及其推论
实施正、余弦函数代换破解一类代数问题
基丁能虽匹配延拓法LMD端点效应处理
分数阶余弦变换的卷积定理