fetch-audioset
所有代碼都在github.com/km4sh/fetch-audioset這個repo中。
- scripts文件夾當中包含了下載用的py文件,也有生成下載報告和清理臨時文件的腳本;
- tsv文件夾包含了Google放出的AudioSet(Strong Label)數據集的tsv文件(一種以Tab作爲分隔符的文件);
- info文件夾當中
完整的Blog在這裏:Notion
下載AudioSet主要用的是下載神器youtube-dl
來實現的。可以點擊這裏直達。由於接口原因,貌似沒有可以直接下載音頻的方式,所以需要先下載視頻,再提取音頻。所以主要流程如下:
split_samplename()
將輸入參數處理爲視頻IDytid
和開始時間start
;download_video()
利用ytid將整段視頻下載下來;convert_to_audio()
利用FFmpeg將視頻中的音頻提取出來,順便完成通道壓縮(僅單通道)、採樣率調整(統一44100Hz)以及格式轉換(WAV)等任務。trim_audio()
利用sox工具進行音頻剪切。- 這裏需要說明的是,雖然FFmpeg也可以一同完成剪切任務,單我在之前的下載當中,發現一些利用FFmpeg剪切後的文件長度並不是嚴格的
SampleRate * Duration
個樣點。後來發現部分AudioSet的樣本可能不足十秒,原因是原視頻就不足十秒。不過我也不確定FFmpeg剪切是完全魯棒的,所以我用了更保險的sox工具來進行剪切。
- 這裏需要說明的是,雖然FFmpeg也可以一同完成剪切任務,單我在之前的下載當中,發現一些利用FFmpeg剪切後的文件長度並不是嚴格的
padding_zeros()
如上一步的說明,如果有一些樣本不足十秒,則補零到十秒。這一步可以根據自己的需求選用。checking()
檢查當前文件是否符合要求,主要檢查通道數、採樣率、採樣深度、採樣時間、總樣點數。也是利用sox來獲取的文檔信息,確保準確可讀。
對於下載當中由於網絡等原因出現下載失敗的情況,我們可以用clean.py
來清理一下臨時文件,以及不符合我們設定格式的文件。