matlab语音去噪程序
时间: 2023-12-06 21:37:43 浏览: 92
基于Matlab的语音信号去噪处理系统
5星 · 资源好评率100%
以下是MATLAB语音去噪的一个简单程序:
```matlab
% 读入语音信号
[x, fs] = audioread('noisy_speech.wav');
% 绘制语音信号的波形图
subplot(2,1,1);
plot(x);
title('Noisy Speech');
xlabel('Time (s)');
ylabel('Amplitude');
% 计算语音信号的功率谱密度
nfft = 2^nextpow2(length(x));
X = fft(x, nfft);
psd = X.*conj(X) / length(X);
% 绘制语音信号的频谱图
f = fs/2*linspace(0,1,nfft/2+1);
subplot(2,1,2);
plot(f, 10*log10(psd(1:nfft/2+1)));
title('Power Spectral Density');
xlabel('Frequency (Hz)');
ylabel('Power/Frequency (dB/Hz)');
% 对语音信号进行去噪
y = wdenoise(x);
% 绘制去噪后的语音信号的波形图
figure;
subplot(2,1,1);
plot(y);
title('Denoised Speech');
xlabel('Time (s)');ylabel('Amplitude');
% 计算去噪后的语音信号的功率谱密度
Y = fft(y, nfft);
psd_y = Y.*conj(Y) / length(Y);
% 绘制去噪后的语音信号的频谱图
subplot(2,1,2);
plot(f, 10*log10(psd_y(1:nfft/2+1)));
title('Power Spectral Density');
xlabel('Frequency (Hz)');
ylabel('Power/Frequency (dB/Hz)');
% 回放去噪后的语音信号
sound(y, fs);
```
该程序首先读入了一个带噪声的语音信号,然后绘制了语音信号的波形图和功率谱密度图。接着,使用MATLAB中的`wdenoise`函数对语音信号进行去噪,并绘制了去噪后的语音信号的波形图和功率谱密度图。最后,使用MATLAB中的`sound`函数回放去噪后的语音信号。
阅读全文