当前位置:首页 > 基于MATLAB的语音信号的特技处理
数字信号处理课程设计报告
3.2.3滤波器设计
单回声滤波器的系统函数:
H(z)= 1?a?z?(?R) a<1 (3-1) 无限个回声滤波器的系统函数:
H(z)=z?(?R)[1?a?z?(?R)]
a<1 (3-2)
全通结构的混响器的系统函数:
H(z)=[a?z?(?R)]函数filter
函数filter的调用格式为 y=filter(b,a,x)
该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a=1,此时表示FIR滤波器,否则就是IIR滤波器。该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。
[1?a?z*(?R)]
a<1 (3-3)
3.3解决问题的基本思路
(1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样。
(2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图。 (3)将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较。 (4)设计几种特殊类型的滤波器:单回声滤波器,多重回声滤波器,无限个回声滤波器,全通结构的混响器,并画出滤波器的频域响应。
(5)用自己设计的滤波器对采集的语音信号进行滤波。
(6)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。
(7)回放语音信号。
3.4 详细流程图
5
数字信号处理课程设计报告
用wavread从自己的电脑导入Windows下1s语音信号 画出采样后语音信号的时域波形与频谱图。N=2001,和调用fft函数快速傅里叶变换。 对采样后语音信号进行延时30,在调整采样信号的长度,两者相加,就得到混响。 无限个回声滤波器 Bz=[0,0,0,0,0,0,0,0,0,0,1]; Az=[1,0,0,0,0,0,0,0,0,0,-a]; yy1=filter(Bz,Az,x); YY1=fft(yy1,2001); 全通结构的混响器 Bz1=[a,0,0,0,0,0,0,0,0,0,1]; Az1=[1,0,0,0,0,0,0,0,0,0,a]; yy2=filter(Bz1,Az1,x); YY2=fft(yy2,2001); 单回声滤波器 a=0.5; y2=x+z*0.5; Y2=fft(y2,2001); sound(yy1,fs,bits); sound(yy2,fs,bits); sound(y2,fs,bits);
图3-2 语音信号的特技处理设计程序流程图
4 代码编写
%原始信号
x1=wavread('wlx.wav'); %读取信号 figure;plot(x1);title('原始信号');
sound(5*x1,40000); %对原始声音的回放
6
数字信号处理课程设计报告
%采样信号
[x,fs,bits]=wavread('wlx.wav',[10000 40000]);
x=x(:,1); %只取单声道 sound(5*x,fs); %对声音的回放 n1=0:2000; N=size(x,1);
figure;subplot(2,1,1);plot(x);title('采样后语音信号的时域波形');
Y=fft(x,2001); subplot(2,1,2); %对信号做2001点FFT变换
plot(n1(1:1000),Y(1:1000)); title('采样后语音信号的频谱图'); %信号幅度 %延时的信号
[x,fs,bits]=wavread('wlx.wav',[10000 40000]);
x=x(:,1); %只取单声道 n1=0:2000;
z=[zeros(200,1);x]; figure(2); %信号的延时 subplot(2,1,1);plot(z); title('延时后的时域图'); %画出延时后的信号时域图 Z=fft(z,2001);
subplot(2,1,2);plot(n1(1:1000),Z(1:1000)); %延时后的信号频谱图 title('延时后的频谱图 '); sound(5*z,fs); %混响后信号
[x,fs,bits]=wavread('wlx.wav',[10000 40000]); %读取语音信号 x=x(:,1); %只取单声道 n1=0:2000;
z=[zeros(200,1);x]; %对语音信号进行延时
x=[x;zeros(200,1)]; %使语音信号与延时后信号同等长度 y1=x+z; %信号的混响 figure(3);subplot(2,1,1);plot(y1); title('混响的时域图'); %混响时域图
Y1=fft(y1,2001); %对混响信号2001点的FFT变换 subplot(2,1,2);plot(n1(1:1000),Y1(1:1000)); %混响频谱图 title('混响的频谱图');
7
数字信号处理课程设计报告
sound(5*y1,fs); %回放混响后的信号 %单回声滤波器
[x,fs,bits]=wavread('wlx.wav',[10000 40000]); %读取语音信号 x=x(:,1); %只取单声道 n1=0:2000;
a=0.5; %a取小于等于1 z=[zeros(200,1);x]; %对语音信号进行延时
x=[x;zeros(200,1)]; %使语音信号与延时后信号同等长度 y2=x+z*0.5; %信号经单回声滤波 figure;subplot(2,1,1);plot(y2);title('单回声滤波器时域图');
Y2=fft(y2,2001); %对单回声信号做2001点的FFT变换 subplot(2,1,2);plot(n1(1:1000),Y2(1:1000)); %单回声信号频谱图 title('单回声滤波器频谱图');
sound(5*y2,fs,bits); %回放经单回声滤波器后的语音信号 %无限回声滤波器
[x,fs,bits]=wavread('wlx.wav',[10000 40000]); %读取语音信号 x=x(:,1); %只取单声道 n1=0:2000;
a=0.5; %a取小于等于1 Bz=[0,0,0,0,0,0,0,0,0,0,1]; %分子的系数 Az=[1,0,0,0,0,0,0,0,0,0,-a]; %分母的系数
yy1=filter(Bz,Az,x); %FIR滤波器进行滤波 figure(5);subplot(2,1,1);plot(yy1); %无限回声滤波器时域波形 title('无限个回声滤波器时域波形');
YY1=fft(yy1,2001); %经无限回声滤波器后的信号做2001点的FFT变换 subplot(2,1,2);plot(n1(1:1000),YY1(1:1000)); %无限回声滤波器频谱图 title('无限个回声滤波器频谱图 ');
sound(5*yy1,fs,bits); %回放经无限回声滤波器后的语音信号 pause(2); %延时2秒 %全通结构的混响器
8
共分享92篇相关文档