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