MATLAB对音频数据预处理

内容:

使用matlab: 1.对音频文件进行脉冲检测; 2.脉冲进行裁剪; 3.进行stft变换生成时频图像;

代码:

提示:使用时只需要修改folder中的地址和脉冲检测门限
例如:将 folder=‘E:\data\Record8.wav’ 改为自己wav文件存放的地址;

clc
clear
folder='E:\data\Record8.wav';%输入文件路径
x=audioread(folder);%读入音频
y=abs(x);%求绝对值
length_y=length(y);
% nosie=wgn(length_y,1,-30); %产生高斯白噪声(length_y行,1列,-30db)
% x=x+nosie; %在原始信号中加入噪声
plot(x)
[up,down]=envelope(y,5000,'peaks');%提取包络,up为上包络,down为下包络。
i=1;j=0;a=0;b=0;%初始化,i、j为计数器,a为记录开关,b记录记录初始点的位置
l=0.03;%记录门限=0.03while i<length_y %遍历信号(x)的每一个点
   if((up(i)>l)&&(a==0))%如果该点处的包络的幅度大于门限,且记录开关为关闭(a=0),那么打开记录开关a,同时记录该点的位置为b,使计数器(j)+1
       a=1;
       b=i;
       j=j+1;
   elseif((up(i)<l)&&(a==1))%如果该点处的包络幅度小于门限,且记录开关为打开(a=1),那么关闭记录开关
       a=0;
   end
   if(a==1)%如果记录开关是开的,那么记录该信号点的幅度
   sig(j,i-b+1)=x(i);%将数值存储在变量sig中,sig的每一行代表一个记录的脉冲
   end
   i=i+1;
end
for i=1:j%遍历sig中的所有脉冲
w = window(@gausswin,127,0.05); %高斯窗,sigma = 0.05
[tfr_STFT,t,f]=tfrstft(sig(i,:)',1:length(sig(i,:)),512,w);%对sig中的每一个脉冲进行短时傅里叶变换,波段设置为512,使用上述高斯窗进行变换
%时频表示
figure; %保留图像
%imagesc(t,f,abs(tfr_STFT));
p=imshow(abs(tfr_STFT)*10,'border','tight','initialmagnification','fit');%图片显示,使用imshow显示的图片不带白边,abs(tfr_STFT)*10是为了让图像更亮
set(gcf,'position',[0,0,1024,1024])%调整图片尺寸,设置为1024*1024像素
axis normal%也是调整图片的
name=num2str(i);%图片名字
saveas(gcf,name,'jpg')%将显示的图像保存在默认路径,默认路径为“F:\R2020\bin”
end
程序使用了时频变换工具包,需要的可以下载一下:Time-Frequency Analysis in Matlab.rar
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值