MATLAB 语音文件批量加入随机噪音

          语音加噪,网上类似的教程有很多,其中绝大多数都是固定的加入一种等长噪音,最近跑TIMIT数据,需要随机不等长的噪音来训练数据。

      具体要求是有语音1000条(记为X1),随机噪音有50条(记为X2),都是不等长的往这1000条语音中随机加入50条噪音中的一条,产生随机噪音的话用rand+round函数,其中rand函数产生随机数是从0开始的,记得最后加上1.使之产生的随机数可以从1开始

[csharp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. noise=round(rand(1,1)*(len1-1))+1;  %

len1是噪音的数

语音的批量处理这里就不讲了哈,下面说一下我的加噪思想,判读语音的长度,是X1长还是X2长。如果x1长,曾需要判断是噪音的几倍,然后增加噪音长度,如果是噪音长度长,则截取噪音长度使之与语音长度等长,代码如下

[csharp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1.          
  2. lx1=length(x1);          %求语音长度,x1是读取的语音数据 
  3. lx2=length(x2);          %求噪音长度,x2是读取的噪音数据 
  4. if (lx1>=lx2)            %如果语音的长度大于噪音的长度         
  5.     stem=[]              %每次循环之后数组要置空             
  6.     a=fix(lx1/lx2)+1;    %求得语音长度是噪音的整数倍          
  7.     for f=1:a  
  8.         stem=[stem;x2];  %增加噪音的长度,使噪音长度比语音长度长        
  9.     end     
  10.     b=stem(1:lx1,1);     %截取增加后的噪音长度 其长度等于正常语音的长度      
  11.     x11=x1+b;            %语音加噪,本质就是两条语音能量的叠加   
  12. else                     %如果噪音长度大于语音长度     
  13.     c=x2(1:lx1,1);       %截取造成程度等于正常语音长度  
  14.     x11=x1+c;            %语音加噪   
  15. end  

 
加噪完成
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值