音訊課程文件
流式傳輸音訊資料
並獲得增強的文件體驗
開始使用
流式傳輸音訊資料
音訊資料集面臨的最大挑戰之一是它們的龐大體積。一分鐘未壓縮的CD質量音訊(44.1kHz,16位)需要佔用超過5MB的儲存空間。通常,一個音訊資料集會包含數小時的錄音。
在前面的部分中,我們使用了MINDS-14音訊資料集的一個非常小的子集,然而,典型的音訊資料集要大得多。例如,SpeechColab的GigaSpeech的xs
(最小)配置只包含10小時的訓練資料,但下載和準備需要超過13GB的儲存空間。那麼,當我們想在更大的分割上進行訓練時會發生什麼呢?同一個資料集的完整xl
配置包含10,000小時的訓練資料,需要超過1TB的儲存空間。對於我們大多數人來說,這遠遠超出了典型硬碟的規格。我們需要額外付費購買儲存空間嗎?或者有沒有辦法我們可以在沒有磁碟空間限制的情況下在這些資料集上進行訓練?
🤗 Datasets透過提供流式傳輸模式來解決這個問題。流式傳輸允許我們在迭代資料集時逐步載入資料。我們不是一次性下載整個資料集,而是每次載入一個示例。我們迭代資料集,在需要時即時載入和準備示例。這樣,我們只加載我們正在使用的示例,而不是那些我們不使用的示例!一旦我們完成了一個示例,我們就會繼續迭代資料集並載入下一個示例。
流式傳輸模式與一次性下載整個資料集相比有三個主要優點:
- 磁碟空間:當我們迭代資料集時,示例會一個接一個地載入到記憶體中。由於資料不會本地下載,因此沒有磁碟空間要求,因此您可以使用任意大小的資料集。
- 下載和處理時間:音訊資料集很大,需要大量時間來下載和處理。透過流式傳輸,載入和處理是即時完成的,這意味著您可以在第一個示例準備好後立即開始使用資料集。
- 輕鬆實驗:您可以對少量示例進行實驗,以檢查您的指令碼是否正常工作,而無需下載整個資料集。
流式傳輸模式有一個注意事項。在不使用流式傳輸的情況下下載完整資料集時,原始資料和處理後的資料都會本地儲存到磁碟。如果我們要重新使用此資料集,我們可以直接從磁碟載入處理後的資料,跳過下載和處理步驟。因此,我們只需執行一次下載和處理操作,之後我們就可以重複使用準備好的資料。
在流式傳輸模式下,資料不會下載到磁碟。因此,下載的資料和預處理的資料都不會被快取。如果我們要重新使用資料集,則必須重複流式傳輸步驟,音訊檔案會再次即時載入和處理。因此,建議下載您可能多次使用的資料集。
如何啟用流式傳輸模式?很簡單!只需在載入資料集時設定streaming=True
即可。其餘部分將為您處理好。
gigaspeech = load_dataset("speechcolab/gigaspeech", "xs", streaming=True)
就像我們對下載的MINDS-14子集應用了預處理步驟一樣,您也可以以完全相同的方式對流式資料集執行相同的預處理。
唯一的區別是您不能再使用Python索引(即gigaspeech["train"][sample_idx]
)訪問單個樣本。相反,您必須遍歷資料集。以下是如何在流式傳輸資料集時訪問示例:
next(iter(gigaspeech["train"]))
輸出
{
"segment_id": "YOU0000000315_S0000660",
"speaker": "N/A",
"text": "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>",
"audio": {
"path": "xs_chunks_0000/YOU0000000315_S0000660.wav",
"array": array(
[0.0005188, 0.00085449, 0.00012207, ..., 0.00125122, 0.00076294, 0.00036621]
),
"sampling_rate": 16000,
},
"begin_time": 2941.89,
"end_time": 2945.07,
"audio_id": "YOU0000000315",
"title": "Return to Vasselheim | Critical Role: VOX MACHINA | Episode 43",
"url": "https://www.youtube.com/watch?v=zr2n1fLVasU",
"source": 2,
"category": 24,
"original_full_path": "audio/youtube/P0004/YOU0000000315.opus",
}
如果您想預覽大型資料集中的幾個示例,請使用take()
獲取前n個元素。讓我們獲取gigaspeech資料集中的前兩個示例:
gigaspeech_head = gigaspeech["train"].take(2)
list(gigaspeech_head)
輸出
[
{
"segment_id": "YOU0000000315_S0000660",
"speaker": "N/A",
"text": "AS THEY'RE LEAVING <COMMA> CAN KASH PULL ZAHRA ASIDE REALLY QUICKLY <QUESTIONMARK>",
"audio": {
"path": "xs_chunks_0000/YOU0000000315_S0000660.wav",
"array": array(
[
0.0005188,
0.00085449,
0.00012207,
...,
0.00125122,
0.00076294,
0.00036621,
]
),
"sampling_rate": 16000,
},
"begin_time": 2941.89,
"end_time": 2945.07,
"audio_id": "YOU0000000315",
"title": "Return to Vasselheim | Critical Role: VOX MACHINA | Episode 43",
"url": "https://www.youtube.com/watch?v=zr2n1fLVasU",
"source": 2,
"category": 24,
"original_full_path": "audio/youtube/P0004/YOU0000000315.opus",
},
{
"segment_id": "AUD0000001043_S0000775",
"speaker": "N/A",
"text": "SIX TOMATOES <PERIOD>",
"audio": {
"path": "xs_chunks_0000/AUD0000001043_S0000775.wav",
"array": array(
[
1.43432617e-03,
1.37329102e-03,
1.31225586e-03,
...,
-6.10351562e-05,
-1.22070312e-04,
-1.83105469e-04,
]
),
"sampling_rate": 16000,
},
"begin_time": 3673.96,
"end_time": 3675.26,
"audio_id": "AUD0000001043",
"title": "Asteroid of Fear",
"url": "http//www.archive.org/download/asteroid_of_fear_1012_librivox/asteroid_of_fear_1012_librivox_64kb_mp3.zip",
"source": 0,
"category": 28,
"original_full_path": "audio/audiobook/P0011/AUD0000001043.opus",
},
]
流式傳輸模式可以將您的研究提升到一個新的水平:您不僅可以訪問最大的資料集,而且可以輕鬆地一次性評估多個數據集上的系統,而無需擔心磁碟空間。與在單個數據集上進行評估相比,多資料集評估可以更好地衡量語音識別系統的泛化能力(參見端到端語音基準測試 (ESB))。
< > 在 GitHub 上更新