语音增强报告(谱减法和维纳滤波)

更新时间:2023-07-22 23:53:58 阅读: 评论:0

语音增强报告(谱减法和维纳滤波)
Speech Enhancement
一、语音增强方法的理论分析 (2)
1.引言 (2)
2.语音增强算法 (2)
很爱很爱你 日文版2.1谱减法 (2)
2.2 Wiener滤波法 (3)
二、谱减法 (5)
1.算法实现 (5)
2.改善算法,减少音乐噪声 (9)
三、Wiener滤波法 (11)
1.算法实现 (11)
2.迭代Wiener滤波的算法实现 (14)
四、Wiener滤波法与谱减法的比较 (17)
五、参考文献 (17)
一、语音增强方法的理论分析
1.引言
语音增强的目标是从含有噪声的语音信号中提取尽可能纯净的原始语音。然而,由于干扰通常都是随机的,从带噪语音中提取完全纯净的语音几乎不可能。在这种情况下,语音增强的目的主要有两个:一是改进语音质量,消除背景噪音,使听者乐于接受,不感觉疲劳,这是一种主观度量;二是提高语音可懂度,这是一种客观度量。这两个目的往往不能兼得,所以实际应用中总是视具体情况而有所侧重的。
带噪语音的噪声类型可以分为加性噪声和非加性噪声。加性噪声有宽带的,窄带的,平稳的,非平稳的,白噪声,有色噪声,等;非加性噪声如乘性噪声,卷积噪声等。一般,语音增强处理的噪声指环境中的噪声,而这些噪声主要是高斯白噪声,这种噪声一般符合如下的假设:
(1)噪声是加性的。
vermeer(2)噪声是局部平稳的。局部平稳是指一段加噪语音中的噪声,具有和语音
段开始前那段噪声相同的统计特性,且在整个语音段中保持不变。也就是说,可
ime以根据语音开始前那段噪声来估计语音中所叠加的噪声统计特性。怎么快速祛斑
(3)噪声与语音统计独立或不相关。
2.语音增强算法
根据语音和噪声的特点,出现了很多种语音增强算法。比较常用的有噪声对消法、谱相减法、维纳滤波法、卡尔曼滤波法、FIR 自适应滤波法等。此外,随着科学技术的发展又出现了一些新的增强技术,如基于神经网络的语音增强、基于HMM 的语音增强、基于听觉感知的语音增强、基于多分辨率分析的语音增强、基于语音产生模型的线性滤波法、基于小波变换的语音增强方法、梳状滤波法、自相关法、基于语音模型的语音增强方法等。
此处主要介绍谱减法和wiener滤波法。
2.1谱减法
使用谱减法是假设:
①噪声叠加;
②声与语音不相关;
③对纯净语音无先验知识;
③对统计噪声有先验知识。
带噪语音模型为:
y(n)=x(n)+v(n)
式中,y(n)是带噪语音,s(n)是纯净语音,v(n)是噪声。对式子两边进行傅立叶变换,得
Y(k)=X(k)+N(k)
由于对噪声的统计参数的未知,所以在实际应用中,通常使用非语音段噪声谱的均值来作为对噪声谱N(k)的估计,
则对纯净语音幅度谱的估量表示为
把带噪语音的相位当作是纯净语音的相位,那么纯净语音频谱的估量为
2.2 wiener滤波法
一个线性系统,如果它的单位样本响应为h(n),当输入一个随机信号x(n),且
)
(
)
(
)inc
沸水反应堆(n
n
s
n
+
=
其中s(n)表示信号,)
(n
υ表示噪声,则输出y(n)为
∑-=
m m
n
x
m
h
n
y)
(
)
(
)
(
我们希望x(n)通过线性系统h(n)后得到的y(n)尽量接近于s(n),因此称y(n)为s(n)的估计值,用)
(ˆn
s表示,即
)bridgelux
)
(n
after effect
s
n
y=
维纳滤波器的输入—输出关系为:
h(n)
)
)
(n
s
n
y=
)
(
长春新东方学校)
(
)
(n
n
s
n
+
=
如上图所示。这个线性系统h(n)称为对于s(n)的一种估计器。
如果我们以s与分别表示信号的真值与估计值,而用e(n)表示它们之间的误差,即
)
)
(
)
(n
s
n
s
n
e-
=
显然,e(n)可能是正的,也可能是负的,并且它是一个随机变量。因此,用它的均方值来表达误差是合理的,所谓均方误差最小即它的平方的统计平均值最小:
[][]2
2)ˆ
(
)
(s
s
E
n
e
E-
=最小
已知希望输出为:
1
ˆ()()()()N m y n s
n h m x n m -===-∑ 误差为:
1
0ˆ()()()()()()N m e n s n s
n s n h m x n m -==-=--∑ 均方误差为:
12
20()(()()())N m E e n E s n h m x n m -=⎡⎤⎡⎤=--⎢⎥⎣⎦
⎣⎦
∑ 上式对()  m=0,1,,N-1h m 求导得到:
1
02(()()())()0
0,1,21N opt m E s n h m x n m x n j j N -=⎡⎤---==-⎢⎥⎣⎦
进一步得:
[][]
1
0()()()()()0,1,1N opt m E s n x n j h m E x n m x n j j N -=-=--=-∑
从而有:
1
0()()()
0,1,2,,1N xs opt xx m R j h m R j m j N -==-=-∑
于是就得到N 个线性方程:
(0)(0)(0)(1)(1)(1)(1)1(1)(0)(1)(1)(0)(1)(2)1(1)(0)(1)(1)(2)(1)(0)
xs xx xx xx xs xx xx xx xs xx xx xx j R h R h R h N R N j R h R h R h N R N j N R N h R N h R N h N R ==+++--⎧⎪==+++--⎪
⎪⎪=--=-+-++-⎩ 写成矩阵形式为:
(0)
(1)(1)(0)(0)(1)(0)(2)(1)(1)(1)(2)
(0)(1)(1)xx xx xx xs xx xx xx xs xx xx xx xs R R R N R h R R R N R h R N R N R R N h N -⎡⎤⎡⎤
⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢
⎥⎢
⎥⎢⎥----⎣⎦⎣⎦⎣⎦anyone
简化形式:xx xs R H R = 其中:H=[h(0) h(1)
h(N-1)]'是滤波器的系数
[](0),(1),(1)'xs xs xs xs R R R R N =-是互相关序列
(0)
(1)(1)(1)(0)(2)(1)(2)
(0)xx xx xx xx
xx xx xx xx xx xx R R R N R R R N R R N R N R -⎡⎤⎢⎥-⎢
⎥=⎢⎥⎢
--⎣⎦
是自相关矩阵
由上可见,设计维纳滤波器的过程就是寻求在最小均方误差下滤波器的单位脉冲响应或传递函数的表达式,其实质就是解维纳-霍夫(Wiener -Hopf )方程。另外,设计维纳滤波器要求已知信号与噪声的相关函数。
二、谱减法
1.算法实现
%Spectral Subtraction Algorithm  winsize=256; %窗长
n=0.05; % 噪声电平
[speech,fs,nbits]=wavread('speech_clean.wav'); % 读入数据
size=length(speech);
numofwin=floor(size/winsize); % 帧数
%加窗
ham=hamming(winsize)'; %Generates Hamming Window
hamwin=zeros(1,size); %Vector for window gain
enhanced=zeros(1,size); %Vector for enhanced speech
%产生带噪声信号
x=speech'+ n*randn(1,size); %Contaminates signal with white noi
%噪声估计
noi=n*randn(1,winsize); %Sample of noi
N = fft(noi);
nmag= abs(N); %Estimated noi magnitude spectrum
for q=1:2*numofwin-1
frame=x(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2); %50 percent overlap
hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+ham; %Window gain %对带噪声语音进行DFT
y=fft(frame.*ham);
mag = abs(y); %Magnitude Spectrum
pha = angle(y); %Pha Spectrum
%幅度谱减
for i=1:winsize
if mag(i)-nmag(i)>0
clean(i)= mag(i)-nmag(i);
el
clean(i)=0;
end
end
%在频域中重新合成语音
spectral= clean.*exp(j*pha);
%IDFT 并重叠想加
enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+real(ifft(sp ectral));
end
%除去汉宁窗引起的增益
for i=1:size
if hamwin(i)==0
enhanced(i)=0;
el
enhanced(i)=enhanced(i)/hamwin(i);
end
end
SNR1 = 10*log10(var(speech')/var(noi)); %加噪语音信噪比
SNR2 = 10*log10(var(speech')/var(enhanced-speech')); %增强语音信噪比
wavwrite(x,fs,nbits,'noi.wav'); %输出带噪信号
wavwrite(enhanced,fs,nbits,'enhanced.wav'); %输出增强信号
t=1:size;
figure(1),subplot(3,1,1);plot(t/fs,speech'); %原始语音波形
xlabel('time(s)');
title(['Original Voice (n=',num2str(n),')' ]);
figure(2),specgram(speech'); %原始语音语谱
title(['Original Voice (n=',num2str(n),')' ]);
figure(1),subplot(3,1,2); plot(t/fs,x);
xlabel('time(s)');
title(['Noi Added (SNR=',num2str(SNR1),'dB)']);
figure(3),specgram(x); %加噪语音语谱
title(['Noi Added (SNR=',num2str(SNR1),'dB)']);
figure(1),subplot(3,1,3);plot(t/fs,enhanced);
xlabel('time(s)');
title(['Improved Voice (SNR=',num2str(SNR2),'dB)']);
figure(4),specgram(enhanced); %增强语音语谱
title(['Improved Voice (SNR=',num2str(SNR2),'dB)']);

本文发布于:2023-07-22 23:53:58,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1111716.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:语音   噪声   增强   信号   统计   算法   误差
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图