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  


加噪完成
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章