语音信号谱分析及去噪处理.docx
《语音信号谱分析及去噪处理.docx》由会员分享,可在线阅读,更多相关《语音信号谱分析及去噪处理.docx(9页珍藏版)》请在冰豆网上搜索。
![语音信号谱分析及去噪处理.docx](https://file1.bdocx.com/fileroot1/2023-2/4/65f76561-2f50-482f-8f14-33bb6de15447/65f76561-2f50-482f-8f14-33bb6de154471.gif)
语音信号谱分析及去噪处理
实验三:
语音信号谱分析及去噪处理
1、实验目的
(1)通过对实际采集的语音信号进行分析和处理,获得数字信号处理实际应用的认识。
(2)掌握数字信号谱分析的知识。
(3)掌握数字滤波器设计的知识,并通过对语音信号的去噪处理,获得数字滤波器实际应用的知识。
2、实验内容
(1)用麦克风自行采集两段语音信号[高频噪声、人声+高频噪声](.wav格式)。
(2)通过Matlab读入采集信号,观察其采样频率,并绘图采样信号。
(3)通过Matlab对语音信号进行谱分析,分析出噪声的频带。
(4)设计一滤波器,对叠加入噪声的语音信号进行去噪处理。
绘图并发声去噪后的信号。
3、实验步骤
(1)利用麦克风采集一段5s以内的语音信号。
利用格式工厂软件对语音信号进行预处理。
通常语音信号为单声道,采样频率为8000Hz,语音信号为.wav格式。
(2)通过Matlab读入语音信号及其采样频率(使用Matlab库函数wavread),在Matlab软件的workspace工作平台上观察读入的语音信号,在Matlab中,对入的语音信号为一维矩阵。
应注意,库函数wavread自动将语音信号幅度归一化[-1,1]区间范围。
使用Matlab库函数plot绘图语音信号,并使用库函数sound发音语音信号。
(3)分析噪声的频谱。
在这里进行谱分析的目的,是了解噪声信号的频谱特性,为去噪滤波器的技术指标提供依据。
(4)通过Matlab对语音信号进行谱分析。
应注意,对信号进行谱分析,在实验一中已经详细介绍过。
在这里进行谱分析的目的,是了解本段语音信号的频谱特性,为去噪滤波器的技术指标提供依据。
(5)根据语音信号及噪声信号的频谱特性,自行设计一滤波器,对叠加入噪声的语音信号进行去噪处理。
最后绘图并发声去噪后的信号。
应注意,数字滤波器的实际应考虑实际需求,合理制定滤波器的技术指标。
4、实验原理
用麦克风采集一段语音信号,绘制波形并观察其频谱,添加一段随机信号,给定相应的滤波器指标,用脉冲响应不变法设计的一个满足指标的巴特沃斯IIR滤波器,对该语音信号进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析。
5、实验内容
设计流程图
语音信号滤波去噪——使用双线性变换法设计的巴特沃斯滤波器的设计流程如图
原始语音信号的频谱分析
源代码:
clearall;
%语音信号的读入和打开,画出语音信号的频谱图
[x,fs]=wavread('')%调用音频文件,采样值放在x中,fs为采样频率
x=x(:
1);%取矩阵x的第一列赋值到x矩阵中
FS=length(x);%矩阵x的长度
f=0:
fs/FS:
(FS-1)*fs/FS;%生成一个一维数组赋给f
X=fft(x,4096);%对信号做4096点FFT变换
magX=abs(X);%取X的幅值给magX
t=(0:
FS-1)/fs;
subplot(2,1,1);plot(t,x);%绘制原始语音信号的时域波形图
title('原始语音信号时域波形图');
xlabel('时间/n');
ylabel('幅值/n');
gridon;
f=fs*(0:
511)/1024;%生成一个一维数组赋给f
figure
(1)
subplot(2,1,2);plot(magX);
title('原始信号频域图');
gridon;
加入一个随机噪声
%利用下列程序对原始语音信号进行加噪处理,并绘制出加随机噪声后语音信号的时域图和频谱图。
noise_mu=0;%取噪声的均值为0
noise_var=;%取噪声的方差为
x_noise=randn(size(x)).*sqrt(noise_var)+noise_mu;%语句产生与原始语音长度相同的随机噪声
x1=x+x_noise;%把这个噪声添加到原始语音中,得到加噪语音信号
ts=1/fs;
ta=(length(x)-1)/fs;
t=0:
ts:
ta;
figure
(2);subplot(2,1,1);
plot(t,x1);%绘制加随机噪声后语音信号时域图
title('加随机噪声后语音信号时域图');
xlabel('t');ylabel('x1');gridon;
y2=fft(x1,1024);%对信号做1024点FFT变换
f=fs*(0:
511)/1024;
subplot(2,1,2);%绘制原始语音信号的频率响应图
plot(f,abs(y2(1:
512)));
title('加随机噪声后的语音信号频谱图')
xlabel('f/Hz');ylabel('幅度');gridon;
根据指标设计IIR数字滤波器
低通滤波器的性能指标:
fp=1200Hz,fs=1100Hz,ft=8000Hz,As=20db,Ap=1dB
%根据指标设计IIR数字滤波器
Fp=1200;%阻带截止频率
Fs=1100;%通带截止频率
Ft=8000;%采集频率
As=20;%通带波纹Ap=1
Ap=1;%阻带波纹As=20
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
fp=2*Ft*tan(wp/2);
fs=2*Ft*tan(ws/2);
[n,wn]=buttord(wp,ws,Ap,As,'s');%求低通滤波器的阶数和截止频率
[b,a]=butter(n,wn,'s');%求S域的频率响应的参数
[B,A]=bilinear(b,a,1);%双线性变换实现S域到Z域的变换
[h,w]=freqz(B,A);%根据参数求出频率响应
figure(3);
plot(w*8000*pi,abs(h));
进行低通滤波,比较滤波前后语音信号的波形及频谱
%进行低通滤波,比较滤波前后语音信号的波形及频谱:
Y=fft(x1);
y1=filter(B,A,x1);%利用滤波器对语音信号滤波
Y1=fft(y1);
n=0:
length(x1)-1;
t=(0:
FS-1)/fs;
figure(4);
subplot(2,2,1);plot(t,x1);title('未滤波语音波形');
subplot(2,2,2);plot(t,y1);title('滤波后语音波形');
subplot(2,2,3);plot(n,Y);title('未滤波语音频谱');
subplot(2,2,4);plot(n,Y1);title('滤波后语音频谱');
sound(y1,fn,nbits);%滤波后语音回放
6、结果分析
由图中滤波前后波形比较可看出,经过滤波后的波形比原波形的振幅有所减小,去除了很多由于噪声所产生的干扰;从滤波前后的频谱比较可以看出经过滤波后除了原本的声音外,中间由于噪声产生的频谱波形已经滤除;经过MATLAB仿真,听滤波前后的声音,可以听出有明显的滤波效果。
因此利用双线性变换法设计的巴特沃斯滤波器已经达到了设计的要求。