錄音時有背景噪音是在所難免的,可是如果錄完音後可以把背景噪音去掉,那太棒了,尤其是當訊號需要被用於分析時,總不能也把背景雜音一起分析吧,除非他有意義。我不懂去除雜音的原理以及數學運算,但網路上有人分享去除雜音的程式碼。今天就來介紹如何借用別人的程式碼吧。首先,先找到適合自己使用的程式碼連結↓↓↓↓↓
範例來源:Choqueuse Vincent. 2010. Vuvuzela sound denoising algorithm. http://www.mathworks.com/matlabcentral/fileexchange/27912-vuvuzela-sound-denoising-algorithm. on 2014/8/24
步驟一
點選網頁右上角的下載檔案
步驟二
檔案解壓縮後就可以看到m檔案囉,還有一個WAV檔是配合m檔案一起服用的
步驟三
用matlab開啟m檔案,先來幫忙解讀一下,29行是讀取聲音的程式碼
49行是選取的背景音片段起始時間
50行是選取的背景音片段結束時間
118-122行看出除噪後的聲音以"output_signal"變數儲存
看完以後來執行吧
步驟四
對m檔案案右鍵執行
成果
可以看到變數區會變出一堆東西來,並且程式會畫出三張圖與播放聲音,其中我們所需要的output_signal也在變數區當中了,程式碼也很人性的幫我們輸出除噪的音訊檔(程式碼最後面有wavwrite)
透過波型圖與聲紋圖可以發現背景聲音已經去除了,如果你實際執行的話它也會播給你聽差別。
改一下程式碼讓它更好用
第一行改成function指令,可以使變數運算與你的主程式變數區隔離,最後只輸出你所指定的變數,在這邊我輸入3個變數,並要求輸出一個除噪完成的變數。第一個變數會在第7行使用到(指定檔案名稱),第2.3個變數會在27.28行使用到(選定噪音片段起訖秒數)。這樣用起來會更加方便。
之後若要使用這個m檔案時就是輸入
x=denoise_zz(‘1.wav’,0,1); % x是你指定輸出後的變數名稱,可以不要是output_signal。denoise_zz是m檔案的檔名,此部分隨檔名而變。
這樣就只會跑出你要的單一個變數了
作者已經移除這則留言。
回覆刪除