MATLAB音訊訊號處理(一):函式簡易用法(audioread,sound函式)

HUN-lmy發表於2020-12-27

一、讀取音訊檔案

函式名稱:audioread

呼叫格式:

  • [y,Fs] = audioread(filename)
  • [y,Fs] = audioread(filename,samples)

變數含義

filename:檔案的位置加名字,常用的在桌面的檔案,音訊格式為WAV,注意檔名帶引號,特別注意的是,如果檔案是在MATLAB選單欄下的當前檔案路徑下,可以只寫檔名,如果不在這個路徑裡面呼叫,需要把完整的全部地址寫進去,程式如下

[y,Fs]=audioread('C:\Users\Administrator\Desktop\1.wav');

Fs:取樣頻率,1秒內對連續的音訊訊號取的點的個數
y:輸出的音訊數字訊號,預設是n行2列,其中2的意思是,這個音訊訊號是兩個聲道的,n的值等於該音訊訊號的時長乘取樣頻率Fs。
samples :音訊讀取區域,samples其實是一個陣列,意思就是一段音訊比如是1分鐘,但是我只需要讀取一部分,比如0-20s,20s-40s,40s-最後,那麼執行下面程式可以實現

Fs = 48000;         		%%定義取樣頻率(系統預設的)
samples1 = [1,20*Fs];        
samples2 = [20*Fs,40*Fs];
samples3 = [40*Fs,inf];
[y1,Fs]=audioread('1.wav',samples1);
[y2,Fs]=audioread('1.wav',samples2);
[y3,Fs]=audioread('1.wav',samples3);

二、播放音訊檔案

函式名稱:sound

呼叫格式:sound(y,Fs)

播放一個音訊檔案只需要給出兩個引數,好奇的我突發奇想寫了下面幾條語句

[y,Fs]=audioread('1.wav');
sound(y,Fs);
sound(y,0.5*Fs);
sound(y,2*Fs);

依次執行以後發現,改了這個Fs,好像就是改變了語速,也就是Fs是播放音訊的頻率,貌似就簡單完成了語速的調整,當然可以也可以對y進行倍數的調整,看一下效果。不過突然出現個問題,音訊時間太長了,MATLAB一直在那裡放,怎麼讓他停下來呢?只需要在命令列寫下面一條語句,按Enter鍵

>> clear sound
>> 

三、生成音訊檔案

函式名稱:audiowrite

呼叫格式:audiowrite(filename,y,Fs)

y和Fs是需要生成的音訊檔案的音訊資訊和採集頻率,必須事先生成好資料,直接寫會報錯。
下面程式實現了將原音訊訊號擷取了12-26s,並儲存成一個新的檔案,執行程式以後,桌面會多一個名字為2的音訊檔案,格式是.WAV

%%當前預設路徑是桌面

Fs = 48000;
[y,Fs]=audioread('1.wav',[12*Fs,26*Fs]);
audiowrite('2.wav',x1,Fs);

相關文章