数字信号课程设计报告 联系客服

发布时间 : 星期二 文章数字信号课程设计报告更新完毕开始阅读51a8b28ff8c75fbfc67db213

一、语音信号去噪处理

1.设计要求:

(1)在windows系统下的录音机录制一段1s左右的语音信号作为原声信号,在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数;

(2)画出语音信号的时域波形,对采样后的语音进行fft变换,得到信号的频谱特性;对语音信号分别加入正弦噪声和白噪声,画出加噪信号的时域波形和频谱图;

(3)根据对加噪语音信号谱分析结果,确定滤除噪声滤波器的技术指标,设计合适的数字滤波器,并画出滤波器的频域响应;

(4)用所设计的滤波器对加噪的信号进行滤波,在同一个窗口画出滤波前后信号的时域图和频谱图,对滤波前后的信号进行对比,分析信号变化; (5)利用sound(x)回放语音信号,验证设计效果。

2.设计步骤:

(1)找到7s的语音信号,利用函数wavread对语音信号进行信号读取; (2)计算样本时刻和频谱图的频率,并进行N+1点FFT变换; (3)加噪声为5000Hz的正弦信号正弦噪声,采用awgn函数加信噪比为10的高斯白噪声;

(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); %进行N+1点FFT变换

ts=0:1/fs:(size(x)-1)/fs; %将所加噪声信号的点数调整到与原始信号相同 s=x+0.05*sin(2*pi*5000*ts)'; %加噪声为5000Hz的正弦信号正弦噪声 S=fft(s,n+1); %加正弦噪声后的频域 %正弦滤波

wp=2000/fs*2*pi; 00为通带截止频率 ws=3000/fs*2*pi; 000为阻带下限截止频率 Rp=4; %通带波纹 Rs=25; %阻带波纹

T=1/fs;Fs=1/T; %定义采样间隔

Wp=2/T*tan(wp/2); %计算对应的数字频率 Ws=2/T*tan(ws/2);

[N,wn]=buttord(Wp,Ws,Rp,Rs,'s'); %计算滤波器介数和截止频率

[c,d]=butter(N,wn,'s'); %计算滤波器系统函数分子分母系数

[B,A]=bilinear(c,d,Fs); %双线性变换得到数字滤波器系统函数分子分母系数 [Hb,Wc]=freqz(B,A);

sf=filter(B,A,s); %对加噪信号进行滤波

Sf=fft(sf,n+1); %对滤波后进行N+1点FFT变换 %绘图部分 figure(3);

plot(fs*Wc/(2*pi),20*log10(abs(Hb)));title('巴斯低通滤波器频域响应图'); xlabel('频率(Hz)'); ylabel('幅度'); figure(1);

subplot(3,1,1);

plot(t,x);title('原信号时域') xlabel('时间(s)'); ylabel('幅度'); figure(2);

subplot(3,1,1);

plot(f,abs(X(1:(n+1)/2)));title('原信号频域') xlabel('频率(Hz)'); ylabel('幅度'); figure(1);

subplot(3,1,2);

plot(t,s);title('加正弦信号后的时域') xlabel('时间(s)'); ylabel('幅度');

figure(2);

subplot(3,1,2);

plot(f,abs(S(1:(n+1)/2)));title('加正弦信号后的频域图') xlabel('频率(Hz)'); ylabel('幅度'); figure(1)

subplot(3,1,3);

plot(t,sf);title('滤波后的时域图'); xlabel('时间(s)'); ylabel('幅度'); figure(2)

subplot(3,1,3);

plot(f,abs(Sf(1:(n+1)/2))); title('滤波后的频域图'); xlabel('频率(Hz)'); ylabel('幅度'); sound(x); sound(s); sound(sf);

(3)时域图与频域图(加白噪声)

加白噪声后的时域图和滤除之后的时域图:

加白噪声和滤除之后的频域图:

采用blackman函数滤波: