发布时间 : 星期二 文章数字信号课程设计报告更新完毕开始阅读51a8b28ff8c75fbfc67db213
具体代码实现:
[x,fs,bits]=wavread('E:\\hbsong.wav'); N=size(x,1);
t=(0:length(x)-1)/fs; f=fs*(0:(N+1)/2-1)/N+1; X=fft(x,N+1);
%加高斯白噪声
z=awgn(x,20); %对信号加信噪比为10的高斯白噪声 N1=size(z,1); %提取采样信号的长度 t=(0:length(z)-1)/fs; %计算样本时刻 f=fs*(0:(N1+1)/2-1)/N1+1; Z=fft(z,N1+1); Wp=2500/fs*2*pi;
Ws=3000/fs*2*pi; %计算对应的数字频率 B=Ws-Wp; n=ceil(1*pi/B); wc=(Wp+Ws)/2;
b=fir1(n-1,wc/pi,'stop',blackman(n));%blackman窗函数滤波 [H,w]=freqz(b,1);
y=fftfilt(b,z); t1=(0:length(y)-1)/fs; Y=fft(y,N1+1);
subplot(2,2,1);
plot(t,z);title('加高斯白噪声后时域图'); subplot(2,2,2);
plot(f,abs(Z(1:(N1+1)/2)));title('滤波前信号频谱图') figure
plot(fs*w/(2*pi),20*log10);title('blackman函数频域响应图'); title('频率响应')
xlabel('频率(Hz)'); ylabel('幅度');
subplot(2,2,3); plot(t1,y)
title('滤波后信号时域图'); xlabel('时间(s)'); ylabel('幅度'); subplot(2,2,4);
plot(f,abs(Y(1:(N1+1)/2))); title('滤波后信号频谱图') xlabel('频率(Hz)'); ylabel('幅度'); sound(y,fs)
二、语音信号的延时和混响
1.设计要求:
(1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样;
(2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图; 将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较;
(3)设计几种特殊类型的滤波器:单回声滤波器,多重回声滤波器,全通结构的混响器,并画出滤波器的频域响应;
(4)用自己设计的滤波器对采集的语音信号进行滤波;
(5)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化; (6)回放语音信号。
2. 设计步骤:
(1)录入原始声音信号;
(2)计算样本时刻和频谱图的频率,并进行N+1点FFT变换; (3)加入单回声;
(4)设计单回声滤波器幅频响应函数; (5)绘出相应时域与频域图;
(6)利用sound函数进行原始信号的语音播放,加单回声后语言播放,以及滤除之后的语言播放;
3.设计实现:
(1)时域图和频域图(加单回声)
原始信号时域图:
滤波后的时域图:
原始信号频域图:
滤波后频域图:
单回声滤波器幅频响应:
(2)具体代码实现(单回声):
[x,fs,bits]=wavread('E:\\mcpass.wav');%原声音信号 n=size(x,1);
t=(0:length(x)-1)/fs; f=fs*(0:(n+1)/2-1)/n+1; X=fft(x,n+1);
a=0.6;%单回声滤波 R=fs*a;
B=[1,zeros(1,R-2),a]; A=[1,zeros(1,R-1)];
y = filter(B,A,x); Y=fft(y,n+1);
[H,W]=freqz(B,A); %求单回声滤波器幅频响应函数 %绘图部分 figure(2);
plot(fs*W/(2*pi),20*log10(abs(H)));title('频率响应'); xlabel('频率(Hz)'); ylabel('幅度'); figure(1);
subplot(4,1,1);
plot(t,x);title('原信号时域'); xlabel('时间(s)'); ylabel('幅度'); subplot(4,1,2);
plot(f,abs(X(1:(n+1)/2)));title('原信号频域'); xlabel('频率(Hz)'); ylabel('幅度'); figure(1);
subplot(4,1,3);
plot(t,y);title('滤波后时域图'); xlabel('时间(s)'); ylabel('幅度'); figure(1);
subplot(4,1,4);
plot(f,abs(Y(1:(n+1)/2)));title('滤波后频域图'); xlabel('频率(Hz)'); ylabel('幅度'); sound(x,fs,bits); sound(y,fs,bits);
(3)时域图与频域图(多重回声)
原始信号时域图与多重信号时域图:
原始信号时域图与多重信号频域图: