声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2354|回复: 1

[滤波] 做语音信号滤波分析的进来看下

[复制链接]
发表于 2007-1-12 13:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
@@@@@@@@@@@@@@@@@@@@@@@@@@主界面@@@@@@@@@@@@@@@@@@@@@@@@@
%主体界面
h=figure('Visible','off');
set(h,'color',[0.1 0.7 1],'position',[200 100 650 400],...
    'name','语音信号滤波分析',...
    'NumberTitle','off','pointer','cross',...
    'Units','pixels','Resize','on');
set(h,'Visible','on');
S=['欢迎您使用这个语音信号滤波分析工具!'];
helpdlg(S,'help text');
%控件
A=uicontrol('parent',h ,'style','pushbutton','Units','points','position',[70 250 100 25],...
            'String','原始信号','callback','OriginalSignal');
      
B=uicontrol('parent',h,'style','pushbutton','Units','points','position',[70 210 100 25],...
             'String','加入高斯白噪声','callback','AddNoise') ;
C=uicontrol('parent',h,'style','pushbutton','Units','points','position',[70 170 100 25],...
             'String','布拉克曼低通滤波器滤波','callback','Filter1') ;
         
D=uicontrol('parent',h,'style','pushbutton','Units','points','position',[70 130 100 25],...
             'String','巴特沃斯低通滤波器滤波','callback','Filter2') ;
         
E=uicontrol('parent',h,'style','text','Units','points','position',[45 50 400 25],...
             'String','@Made by cocower,thanks for your using!  If you want to conmunicate with me,please call the number:0732-8682185.') ;
         clear;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@回调函数1@@@@@@@@@@@@@@@@@@@@@@@@
function[]=OriginalSignal();
[x,fs,bits]=wavread('d:\cc.wav');%播放原始信号
wavplay(x,fs);
N=length(x);%返回采样点数
t=(1:N)/fs;
df=fs/N;%采样间隔
n1=1:N/2;
f=(n1-1)*df;%频带宽度
figure(2);
plot(x,'LineWidth',2);%信号的时域波形
title('原始信号的时域波形');
xlabel('时间/t');
ylabel('幅值/A');
y0=fft(x);%快速傅立叶变换
figure(3);
plot(f,20*log10(abs(y0(n1))));%离散信号的频谱图
title('原始信号的频谱图');
xlabel('频率/Hz');
ylabel('幅值/db');
grid;
@@@@@@@@@@@@@@@@@@@@@@@@@@回调函数2@@@@@@@@@@@@@@@@@@@@@@@@
function[]=AddNoise();
[x,fs,bits]=wavread('d:\cc.wav');%播放原始信号
N=length(x);%返回采样点数
t=(1:N)/fs;
df=fs/N;%采样间隔
n1=1:N/2;
f=(n1-1)*df;%频带宽度
y1=awgn(x,45);%加入高斯白噪声,信噪比为45
wavplay(y1,fs);%播放加噪信号
figure(4);
plot(y1,'LineWidth',2);%信号的时域波形
title('加噪后信号的时域波形');
xlabel('时间/t');
ylabel('幅值/A');
y2=fft(y1);
figure(5);
plot(f,20*log10(abs(y2(n1))));
title('加噪后信号的频谱图');
xlabel('频率/Hz');
ylabel('幅值/db');
grid;

@@@@@@@@@@@@@@@@@@@@@@@@@@@回调函数3@@@@@@@@@@@@@@@@@@@@@@@@@@
function[]=Filter1();
[x,fs,bits]=wavread('d:\cc.wav');%播放原始信号
N=length(x);%返回采样点数
t=(1:N)/fs;
df=fs/N;%采样间隔
n1=1:N/2;
f=(n1-1)*df;%频带宽度
y1=awgn(x,45);%加入高斯白噪声,信噪比为45
%*****************************布拉克曼滤波器设计*************************
Window=blackman(35); %长度为35的布拉克曼窗Window
b=fir1(34,0.1,Window);%产生低通布拉克曼滤波器
H=freqz(b,1,512);
figure(6);
plot(abs(H));
title('布拉克曼滤波器的频率响应');
%**********************************************************************
ys=fftfilt(b,y1);%信号送入滤波器滤波,ys为输出
fftwave=fft(ys);%将滤波后的语音信号进行快速傅立叶变换
figure(7);
plot(f,20*log10(abs(fftwave(n1))));
title('布拉克曼滤波器滤波后信号的频谱图');
xlabel('频率/Hz');
ylabel('幅值/db');
grid;
wavwrite(ys,fs,'d:\cc1.wav');%把滤波后的信号写入d:\cc1.wav中
[g,fs,bits]=wavread('d:\cc1.wav');%语音回放
wavplay(g,fs);
@@@@@@@@@@@@@@@@@@@@@@@@@@@回调函数4@@@@@@@@@@@@@@@@@@@@@@@@@
function[]=Filter2();
[x,fs,bits]=wavread('d:\cc.wav');%播放原始信号
N=length(x);%返回采样点数
t=(1:N)/fs;
df=fs/N;%采样间隔
n1=1:N/2;
f=(n1-1)*df;%频带宽度
y1=x+0.01*randn(size(x));%加入均匀白噪声
%************************巴特沃斯滤波器设计*****************************
FS=1;
%通带、阻带截止频率
Fl=0.08;Fh=0.15;
%频率预畸
wp=(Fl/FS)*2*pi; %临界频率采用角频率表示
ws=(Fh/FS)*2*pi; %临界频率采用角频率表示
OmegaP=2*FS*tan(wp/2);
OmegaS=2*FS*tan(ws/2);
[k,Wn]=buttord(OmegaP,OmegaS,1.1,60,'s');
[b,a]=butter(k,Wn,'s');
%freqs(b,a) %设计模拟的
[bz,az]=bilinear(b,a,FS); %映射为数字的
% 绘制结果
H=freqz(bz,az,1024,FS,'whole');
figure(8);
plot(abs(H));
title('巴特沃斯滤波器的频率响应');
%**********************************************************************
ys=filter(bz,az,y1);%信号送入滤波器滤波,ys为输出
fftwave=fft(ys);%将滤波后的语音信号进行快速傅立叶变换
figure(9);
plot(f,20*log10(abs(fftwave(n1))));
title('巴特沃斯滤波器滤波后信号的频谱图');
xlabel('频率/Hz');
ylabel('幅值/db');
grid;
wavwrite(ys,fs,'d:\cc2.wav');%把滤波后的信号写入d:\cc2.wav中
[v,fs,bits]=wavread('d:\cc2.wav');%语音回放
wavplay(v,fs);
@@@@@@@@@@@@@@@@@@@@@@@@@@程序结束@@@@@@@@@@@@@@@@@@@@@@@@


高手能把这个程序做完美就好了(主界面接收滤波器参数),请会做的将修改后的程序跟一下贴,谢谢!!
回复
分享到:

使用道具 举报

发表于 2007-7-8 12:06 | 显示全部楼层
高手请教下你!我换了音频信号~可得出来的图六和图八是错的!是不是要改参数啊??

[ 本帖最后由 zhlong 于 2007-7-8 13:16 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 21:27 , Processed in 0.057870 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表