torchaudio¶
I/O¶
torchaudio 頂層模組提供了以下函式,便於處理音訊資料。
獲取音訊檔案的訊號資訊。 |
|
從源載入音訊資料。 |
|
將音訊資料儲存到檔案。 |
|
列出可用的後端 |
後端和分發器¶
解碼和編碼媒體是一個高度複雜的過程。因此,TorchAudio 依賴於第三方庫來執行這些操作。這些第三方庫稱為 backend (後端),TorchAudio 當前集成了以下庫。
請參閱安裝以瞭解如何啟用後端。
按照慣例,TorchAudio 的 I/O 後端一直在執行時根據可用性進行全域性設定。然而,這種方法不允許應用程式使用不同的後端,並且不適合大型程式碼庫。
基於這些原因,在 v2.0 中,我們引入了分發器 (dispatcher),這是一種允許使用者為每次函式呼叫選擇後端的新機制。
啟用分發器模式後,所有 I/O 函式都接受額外的關鍵字引數 backend,該引數指定所需的後端。如果指定的後端不可用,函式呼叫將失敗。
如果未明確選擇後端,函式將根據優先順序順序和庫可用性選擇要使用的後端。
下表總結了各個後端。
優先順序 |
後端 |
支援的作業系統 |
注意 |
|---|---|---|---|
1 |
FFmpeg |
Linux, macOS, Windows |
使用 此後端支援各種協議,例如 HTTPS 和 MP4,以及類檔案物件。 |
2 |
SoX |
Linux, macOS |
使用 此後端不支援類檔案物件。 |
3 |
SoundFile |
Linux, macOS, Windows |
有關支援的編解碼器,請參閱官方文件。 此後端支援類檔案物件。 |
分發器遷移¶
我們正在將 I/O 函式遷移到使用分發器機制,這會帶來多項更改,其中一些涉及破壞向後相容性的更改,並要求使用者更改其函式呼叫方式。
(計劃的) 更改如下。有關最新資訊,請參閱 https://github.com/pytorch/audio/issues/2950
在 2.0 版本中,引入了音訊 I/O 後端分發器。使用者可以透過設定環境變數
TORCHAUDIO_USE_BACKEND_DISPATCHER=1來選擇使用分發器。在 2.1 版本中,分發器成為 I/O 的預設機制。
在 2.2 版本中,已移除舊有的全域性後端機制。實用函式
get_audio_backend()和set_audio_backend()不再起作用 (no-op)。
此外,我們從 libsox 後端移除了對類檔案物件的支援,因為 FFmpeg 後端更好地支援此功能,並簡化了構建過程。因此,從 2.1 版本開始,FFmpeg 和 Soundfile 是唯一支援類檔案物件的後端。