1 / 3
文档名称:

MATLAB对语音信号加随机噪声及去噪程序.docx

格式:docx   大小:15KB   页数:3页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MATLAB对语音信号加随机噪声及去噪程序.docx

上传人:cby201601 2019/1/7 文件大小:15 KB

下载得到文件列表

MATLAB对语音信号加随机噪声及去噪程序.docx

文档介绍

文档介绍:%对语言信号做原始的时域波形分析和频谱分析
 
[y,fs,bits]=wavread('C:\Documents and Settings\Administrator\桌面\');
%  sound(y,fs)      % 回放语音信号
n=length(y)  %选取变换的点数 
y_p=fft(y,n);      %对n点进行傅里叶变换到频域
f=fs*(0:n/2-1)/n;   % 对应点的频率
figure(1)
subplot(2,1,1);
plot(y);                    %语音信号的时域波形图
title('原始语音信号采样后时域波形');
xlabel('时间轴')
ylabel('幅值 A')
subplot(2,1,2);
plot(f,abs(y_p(1:n/2)));     %语音信号的频谱图
title('原始语音信号采样后频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
 
 
%对音频信号产生噪声
 
  L=length(y)        %计算音频信号的长度
  noise=*randn(L,2);  %产生等长度的随机噪声信号(这里的噪声的大小取决于随机函数的幅度倍数)
  y_z=y+noise;        %将两个信号叠加成一个新的信号——加噪声处理   
  %sound(y_z,fs)
%对加噪后的语音信号进行分析
n=length(y);  %选取变换的点数 
y_zp=fft(y_z,n);      %对n点进行傅里叶变换到频域
f=fs*(0:n/2-1)/n;   % 对应点的频率
figure(2)
subplot(2,1,1);
plot(y_z);                    %加噪语音信号的时域波形图
title('加噪语音信号时域波形');
xlabel('时间轴')
ylabel('幅值 A')
subplot(2,1,2);
plot(f,abs(y_zp(1:n/2)));     %加噪语音信号的频谱图
title('加噪语音信号频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
 
对加噪的语音信号进行去噪程序如下:
 
fp=1500;fc=1700;As=100;Ap=1;
(以上为低通滤波器的性能指标)
 
wc=2*pi*fc/fs; wp=2*pi*fp/fs;
wdel=wc-wp;
beta=*(As-);
N=ceil((As-8)/);
wn= kaiser(N+1,beta);
ws=(wp+wc)/2/pi;
b=fir1(N,ws,wn);
figure(3);
freqz(b,1);         
(此前为低通滤波器设计阶段)——接下来为去除噪声信号的程序——
x=fftfilt(b,y_z);
X=fft(x,n);
figure(4);
subplot(2,2,1);plot(f,abs(y_zp));
title('滤波前信号的频谱');
subplot(2