应用Matlab对含噪声语音信号进行频谱分析及滤波.docx
- 文档编号:24682832
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:11
- 大小:211.51KB
应用Matlab对含噪声语音信号进行频谱分析及滤波.docx
《应用Matlab对含噪声语音信号进行频谱分析及滤波.docx》由会员分享,可在线阅读,更多相关《应用Matlab对含噪声语音信号进行频谱分析及滤波.docx(11页珍藏版)》请在冰豆网上搜索。
应用Matlab对含噪声语音信号进行频谱分析及滤波
应用Matlab对含噪声的语音信号进行频谱分析及滤波
一、实验内容
录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;在语音信号中增加正弦噪声信号(自己设置几个频率的正弦信号),对加入噪声信号后的语音信号进行频谱分析;给定滤波器的性能指标,采用窗函数法和双线性变换设计数字滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比试听,分析信号的变化。
二、实现步骤
1.语音信号的采集
利用Windows下的录音机,录制一段自己的话音,时间在1s内。
然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,(可用默认的采样频率或者自己设定采样频率)。
2.语音信号的频谱分析
要求首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。
在采集得到的语音信号中加入正弦噪声信号,然后对加入噪声信号后的语音号进行快速傅里叶变换,得到信号的频谱特性。
并利用sound试听前后语音信号的不同。
分别设计IIR和FIR滤波器,对加入噪声信号的语音信号进行去噪,画出并分析去噪后的语音信号的频谱,并进行前后试听对比。
3.数字滤波器设计
给出数字低通滤波器性能指标:
如,通带截止频率fp=10000Hz,阻带截止频率fs=12000Hz(可根据自己所加入噪声信号的频率进行阻带截止频率设置),阻带最小衰减Rs=50dB,通带最大衰减Rp=3dB(也可自己设置),采样频率根据自己语音信号采样频率设定。
报告内容
一、实验原理
含噪声语音信号通过低通滤波器,高频的噪声信号会被过滤掉,得到清晰的无噪声语音信号。
二、实验内容
录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;在语音信号中增加正弦噪声信号(自己设置几个频率的正弦信号),对加入噪声信号后的语音信号进行频谱分析;给定滤波器的性能指标,采用窗函数法和双线性变换设计数字滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比试听,分析信号的变化。
给出数字低通滤波器性能指标:
如,通带截止频率fp=10000Hz,阻带截止频率fs=12000Hz(可根据自己所加入噪声信号的频率进行阻带截止频率设置),阻带最小衰减Rs=50dB,通带最大衰减Rp=3dB(也可自己设置),采样频率根据自己语音信号采样频率设定。
三、实验程序
1、原始信号采集和分析
clc;clear;closeall;
fs=10000;%语音信号采样频率为10000
x1=wavread('C:
\Users\acer\Desktop\voice.wav');%读取语音信号的数据,赋给x1
sound(x1,40000);%播放语音信号
y1=fft(x1,10240);%对信号做1024点FFT变换
f=fs*(0:
1999)/1024;
figure
(1);
plot(x1)%做原始语音信号的时域图形
title('原始语音信号');
xlabel('timen');
ylabel('fuzhin');
figure
(2);
plot(f,abs(y1(1:
2000)));%做原始语音信号的频谱图形
title('原始语音信号频谱')
xlabel('Hz');
ylabel('fuzhi');
2、加入噪声
y=wavread('C:
\Users\acer\Desktop\voice.wav');
y=y(:
1);%矩阵维度置换成1
subplot(2,2,1);
plot(y);
title('加噪前的时域曲线');
N=length(y)-1;
n=0:
1/fs:
N/fs;
x=1.5*sin(40*pi*n);%设置正弦噪声信号
x=x.';%置换成矩阵
z=y+x;%添加噪声
subplot(2,2,2);
plot(z);
title('加噪后的时域曲线');
sound(z,40000)
3、IIR滤波器设计
clc;clear;closeall;
fs=22050;x1=wavread('C:
\Users\acer\Desktop\voice.wav');
x1=x1(:
1)
t=0:
1/22050:
(size(x1)-1)/22050;%设置并添加噪声信号
d=1.5*sin(40*pi*t);
d=d.';
x2=x1+d;
wp=0.25*pi;ws=0.3*pi;Rp=1;Rs=15;%通阻带截止和通阻带衰减
Fs=22050;Ts=1/Fs;
wp1=2/Ts*tan(wp/2);%将模拟指标转换成数字指标
ws1=2/Ts*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数
[Z,P,K]=buttap(N);%创建butterworth模拟滤波器
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换
[H,W]=freqz(bz,az);%绘制频率响应曲线
figure
(1);
plot(W*Fs/(2*pi),abs(H));grid%滤波器
xlabel('频率/Hz');ylabel('频率响应幅度');title('Butterworth')
f1=filter(bz,az,x2);
figure
(2);
subplot(2,1,1);plot(t,x2);%画出滤波前的时域图
title('滤波前的时域波形');
subplot(2,1,2);plot(t,f1);%画出滤波后的时域图
title('滤波后的时域波形');
sound(f1,40000);%播放滤波后的信号
F0=fft(f1,10240);f=fs*(0:
255)/10240
figure(3)
y2=fft(x2,10240);
subplot(2,1,1);plot(f,abs(y2(1:
256)));%画出滤波前的频谱图
title('滤波前的频谱');xlabel('Hz');ylabel('fuzhi');
subplot(2,1,2);F1=plot(f,abs(F0(1:
256)));%画出滤波后的频谱图
title('滤波后的频谱');xlabel('Hz');ylabel('fuzhi');
4、FIR滤波器设计
clearall
fs=22050;%设置采样频率
x1=wavread('C:
\Users\acer\Desktop\voice.wav');%读取声音
x1=x1(:
1)
f=fs*(0:
1023)/1024;%F=([1:
N]-1)*Fs/N;%换算成实际的频率值
t=0:
1/22050:
(length(x1)-1)/22050;%定义噪声信号
d=[1.5*sin(40*pi*t);]';
x2=x1+d;%加噪声
N=30;
b1=fir1(N,0.3,hamming(N+1));%设计FIR滤波器
M=128;
f0=0:
1/M:
1-1/M;
h1=freqz(b1,10,M);%滤波器幅频响应
f1=filter(b1,10,x2);%滤波
y0=fft(x2,40000);
y00=fft(f1,40000);
sound(f1,40000);%播放滤波后的声音
figure
(1)
plot(f0,abs(h1));%滤波器幅频响应图
title('滤波器幅频响应图')
figure
(2);
subplot(2,1,1);plot(t,x2);%画出滤波前的时域图
title('滤波前的时域波形');
subplot(2,1,2);plot(t,f1);%画出滤波后的时域图
title('滤波后的时域波形');
F0=fft(f1,10240);f=fs*(0:
255)/10240
figure(3)
subplot(211)
plot(f,abs(y0(1:
256)));
title('滤波前频谱')
subplot(212)
plot(f,abs(y00(1:
256)));%滤波后频谱
title('滤波后频谱')
C:
\Users\apple\Desktop\xinhao\最遥远的距离.wav
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用 Matlab 噪声 语音 信号 进行 频谱 分析 滤波
![提示](https://static.bdocx.com/images/bang_tan.gif)