基于Matlab的语音信号分析与处理+简单的小波变换去噪恢复代码(含GUI界面)

该博客展示了如何使用Matlab进行语音信号分析,包括读取、播放语音信号,进行FFT变换及频谱图绘制。此外,还探讨了如何添加噪声并使用IIR低通滤波器进行信号恢复。最后,提供了简单的GUI界面来交互操作这些过程。
摘要由CSDN通过智能技术生成

语音信号分析与处理部分代码为:

[x,fs]=audioread('music.wav'); %打开语音信号
 sound(x,fs); %播放语音信号
N=length(x); %长度
n=0:N-1;
w=2*n*pi/N;
y1=fft(x); %对原始信号做FFT变换
figure(1);
subplot(2,1,1);
plot(n,x) %做原始语音信号的时域波形图
title('原始语音信号时域图');
xlabel('时间t');
ylabel('幅值');
subplot(2,1,2); %做原始语音信号的频谱图
plot(w/pi,abs(y1));
title('原始语音信号频谱')
xlabel('频率Hz');
ylabel('幅度');

%加入噪声
[x,fs]=audioread('music.wav');
n=length(x);
x_p=fft(x,n);
f=fs*(0:n/2-1)/n;
figure(1)
subplot(2,1,1);
plot(x);
title('原始语音信号采样后的时域波形');
xlabel('时间轴')
ylabel('幅值A')
subplot(2,1,2);
plot(f,abs(x_p(1:n/2)));
title('原始语音信号采样后的频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
noise=0.005*randn(1,n);
x_z=x+noise';
sound(x_z,fs)
n=length(x);
x_zp=fft(x_z,n);
f=fs*(0:n/2-1)/n;
figure(2)
subplot(2,1,1);
plot(x_z);
title('加噪语音信号时域波形');
xlabel('时间轴')
ylabel('幅值A')
subplot(2,1,2);
plot(f,abs(x_zp(1:n/2)));
title('加噪语音信号频谱图');
xlabel('频率Hz');
ylabel('频率幅值');


提取声音
[pyr,fs]=audioread('music.wav');%声音读取


%原始信号时域和频域波形
n=length(pyr);
pyr1=fft(pyr,n);     %快速傅里叶变换
figure(1)
subplot(2,2,1);
plot(pyr);  
xlabel('时间');
ylabel('幅度');
title('初始信号波形');   %绘出时域波
grid on
subplot(2,2,2);      %绘出频域频谱
plot(abs(fftshift(pyr1)));
title('初始信号频谱');
xlabel('频率');
ylabel('幅度');
grid on
% pause(10);
 
%加入噪声
noise=0.01*randn(n,1);%加噪声
s=pyr+noise;
%pause;
sound(s,fs);  %播放加噪的语音
n=length(s);   %画出加噪之后,其时域频域
S=fft(s,n);
figure(2)
subplot(2,1,1)
plot(s);
title('加噪声后信号波形')
xlabel('时间');
ylabel('幅度');

  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值