【语音处理】基于matlab语音去噪频谱分析【含Matlab源码 1019期】

154 阅读1分钟

一、简介

基于matlab语音去噪频谱分析

二、源代码

clear all
clc
[y,fs]=audioread('5.wav');
% fengzhi=0.43;
buchang=10000;%时间间隔,5.wav感觉要设置更小一点
fengzhi=0.2;%峰值阈值0.23.wav阈值0.43
x=y(:,1);
%sound(y,fs);
n=length(y);
y_p=fft(y,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('点数');
ylabel('频率幅值');
L=length(y);
noise=0.1*randn(L,2);
y_z=y+noise;
%sound(y_z,fs);
n=length(y);
y_zp=fft(y_z,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('点数');
ylabel('频率幅值');%FIR高通加窗滤波?
fp=3000,fc=2700;
wp=2*pi*fp/fs;
ws=2*pi*fc/fs;
Bt=wp-ws;
N0=ceil(11*pi/Bt);
N=N0+mod(N0+1,2);
wc=(wp+ws)/2/pi;
hn=fir1(N-1,wc,'high',bartlett(N));
X=conv(hn,x);
sound(X,fs);
X11=fft(X,n);
f=fs*(0:n/2-1)/n;
figure(3);
[pks,locs] = findpeaks(X,'minpeakheight',fengzhi);

三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、备注

版本:2014a
完整代码或代写加1564658423