如何利用ffmpeg和sox進行降噪
你好!本篇博客的降噪思路:通過截取音頻中的已知噪音部分,根據該噪音樣本對整個音頻進行降噪。截取噪音使用ffmpeg,降噪使用sox。
安裝工具
兩個工具的下載地址如下:
- ffmpeg ,下載地址:ffmpeg.org;
- sox ,下載地址:http://sox.sourceforge.net/;
開始降噪
- 將音頻流和視頻流拆分爲2個不同的文件:
視頻: ffmpeg -i input.mp4 -vcodec copy -an tmpvid.mp4
音頻: ffmpeg -i input.mp4 -acodec pcm_s16le -ar 128k -vn tmpaud.wav - 從上一步的音頻結果文件中生成一個噪聲樣本:
ffmpeg -i input.mp4 -acodec pcm_s16le -ar 128k -vn -ss 00:00:00.0 -t 00:00:00.5 noiseaud.wav
-ss: 從開始的時間偏移. (h: m: s.ms).
-t duration: 表示要剪切的音頻段的持續時間(h: m: s.ms),以便下一步用來作爲噪聲文件。
選擇一段沒有語音、只有噪音的音頻(例如,講話者靜音時的那一秒鐘)。 - 使用sox生成噪音profile:
sox noiseaud.wav -n noiseprof noise.prof - 清除音頻流中的噪聲樣本:
sox tmpaud.wav tmpaud-clean.wav noisered noise.prof 0.21
更改0.21以調整採樣率的靈敏度級別(我發現0.2-0.3通常提供最佳結果)。 - 使用ffmpeg將新的音頻和視頻流合併到一起:
ffmpeg -i tmpvid.mp4 -i tmpaud-clean.wav -map 0:v -map 1:a -c:v copy -c:a aac -b:a 128k out.mp4