当前位置:文档之家› 应用Matlab对含噪声语音信号进行频谱分析及滤波

应用Matlab对含噪声语音信号进行频谱分析及滤波

应用Matlab对含噪声语音信号进行频谱分析及滤波
应用Matlab对含噪声语音信号进行频谱分析及滤波

一、实验内容

录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;在语音信号中增加正弦噪声信号(自己设置几个频率的正弦信号),对加入噪声信号后的语音信号进行频谱分析;给定滤波器的性能指标,采用窗函数法和双线性变换设计数字滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比试听,分析信号的变化。

二、实现步骤

1.语音信号的采集

利用Windows下的录音机,录制一段自己的话音,时间在1 s内。然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,(可用默认的采样频率或者自己设定采样频率)。

2.语音信号的频谱分析

要求首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。

在采集得到的语音信号中加入正弦噪声信号,然后对加入噪声信号后的语音号进行快速傅里叶变换,得到信号的频谱特性。并利用sound试听前后语音信号的不同。

分别设计IIR和FIR滤波器,对加入噪声信号的语音信号进行去噪,

画出并分析去噪后的语音信号的频谱,并进行前后试听对比。

3.数字滤波器设计

给出数字低通滤波器性能指标:如,通带截止频率fp=10000 Hz,阻带截止频率fs=12000 Hz(可根据自己所加入噪声信号的频率进行阻带截止频率设置),阻带最小衰减Rs=50 dB,通带最大衰减Rp =3 dB(也可自己设置),采样频率根据自己语音信号采样频率设定。

报告内容

一、实验原理

含噪声语音信号通过低通滤波器,高频的噪声信号会被过滤掉,得到清晰的无噪声语音信号。

二、实验内容

录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;在语音信号中增加正弦噪声信号(自己设置几个频率的正弦信号),对加入噪声信号后的语音信号进行频谱分析;给定滤波器的性能指标,采用窗函数法和双线性变换设计数字滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比试听,分析信号的变化。给出数字低通滤波器性能指标:如,通带截止频率fp=10000 Hz,阻带截止频率fs=12000 Hz (可根据自己所加入噪声信号的频率进行阻带截止频率设置),阻带最小衰减Rs=50 dB,通带最大衰减Rp=3 dB(也可自己设置),采样频率根据自己语音信号采样频率设定。

三、实验程序

1、原始信号采集和分析

clc;clear;close all;

fs=10000; %语音信号采样频率为10000

x1=wavread('C:\Users\acer\Desktop\'); %读取语音信号的数据,赋给x1

sound(x1,40000); %播放语音信号

y1=fft(x1,10240); %对信号做1024点FFT变换

f=fs*(0:1999)/1024;

figure(1);

plot(x1) %做原始语音信号的时域图形

title('原始语音信号');

xlabel('time n');

ylabel('fuzhi n');

figure(2);

plot(f,abs(y1(1:2000))); %做原始语音信号的频谱图形

title('原始语音信号频谱')

xlabel('Hz');

ylabel('fuzhi');

2、加入噪声

y=wavread('C:\Users\acer\Desktop\');

y=y(:,1); %矩阵维度置换成1 subplot(2,2,1);

plot(y);

title('加噪前的时域曲线');

N=length(y)-1;

n=0:1/fs:N/fs;

x=*sin(40*pi*n); %设置正弦噪声信号

x=x.'; %置换成矩阵

z=y+x; %添加噪声

subplot(2,2,2);

plot(z);

title('加噪后的时域曲线');

sound(z,40000)

3、IIR滤波器设计

clc;clear;close all;

fs=22050;x1=wavread('C:\Users\acer\Desktop\');

x1=x1(:,1)

t=0:1/22050:(size(x1)-1)/22050; %设置并添加噪声信号d=*sin(40*pi*t);

d=d.';

x2=x1+d;

wp=*pi;ws=*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滤波器设计

clear all

fs=22050; %设置采样频率

x1=wavread('C:\Users\acer\Desktop\');%读取声音

x1=x1(:,1)

f=fs*(0:1023)/1024; %F=([1:N]-1)*Fs/N; %换算成实际的频率值

t=0:1/22050:(length(x1)-1)/22050; %定义噪声信号

d=[*sin(40*pi*t);]';

x2=x1+d; %加噪声

N=30;

b1=fir1(N,,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

相关主题
文本预览
相关文档 最新文档