在 Windows 上建置¶
為了在 Windows 上建置 TorchAudio,我們需要啟用 C++ 編譯器並安裝建置工具和執行階段相依性。
我們使用 Microsoft Visual C++ 來編譯 C++,並使用 Conda 來管理其他建置工具和執行階段相依性。
1. 安裝建置工具¶
MSVC¶
請依照 https://visualstudio.microsoft.com/downloads/ 上的指示,並確定已安裝 C++ 開發工具。
注意
官方二進位發行版使用 MSVC 2019 編譯。以下章節使用 MSVC 2019 社群版的路徑。
Conda¶
2. 啟動開發環境¶
在以下內容中,我們需要使用 C++ 編譯器 (cl
) 和 Conda 套件管理器 (conda
)。 我們也為了與 Linux/macOS 相似的體驗而使用 Bash。
為此,需要以下三個步驟。
開啟命令提示字元
啟用開發人員環境
[可選] 啟動 bash
已知以下組合有效。
啟動 Anaconda3 命令提示字元。
請確保
conda
命令可被識別。執行以下命令以啟用開發工具。
我們需要使用 MSVC x64 工具組進行編譯。要啟用此工具組,可以使用
vcvarsall.bat
或vcvars64.bat
檔案,它們位於 Visual Studio 的安裝資料夾下的VC\Auxiliary\Build\
中。更多資訊請參考 https://docs.microsoft.com/en-us/cpp/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line?view=msvc-160#use-vcvarsallbat-to-set-a-64-bit-hosted-build-architecturecall "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
請確認
cl
命令可以被識別。[可選] 使用以下命令啟動 bash。
如果您想要類似 Linux/macOS 的使用者體驗,您可以啟動 Bash。然而,請注意在 Bash 環境中,檔案路徑與原生 Windows 風格不同,並且
torchaudio.datasets
模組無法運作。Miniconda3\Library\bin\bash.exe
3. 安裝 PyTorch¶
請參考 https://pytorch.dev.org.tw/get-started/locally/ 以獲取最新的 PyTorch 安裝方式。
以下命令安裝 PyTorch 的 nightly build 版本。
# CPU-only
conda install pytorch cpuonly -c pytorch-nightly
# With CUDA support
conda install pytorch pytorch-cuda=11.7 -c pytorch-nightly -c nvidia
安裝啟用 CUDA 的版本時,也會安裝 CUDA toolkit。
4. [可選] cuDNN¶
如果您打算建置與 CUDA 相關的功能,請安裝 cuDNN。
從 https://developer.nvidia.com/cudnn 下載 CuDNN,並將檔案解壓縮到與 CUDA toolkit 相同的目錄中。
當使用 conda 時,目錄為 ${CONDA_PREFIX}/bin
、${CONDA_PREFIX}/include
、${CONDA_PREFIX}/Lib/x64
。
5. 安裝外部相依性¶
conda install cmake ninja
6. 建置 TorchAudio¶
現在我們已經準備好所有東西,可以建置 TorchAudio 了。
git clone https://github.com/pytorch/audio
cd audio
# In Command Prompt
python setup.py develop
# In Bash
python setup.py develop
注意
由於建置過程的複雜性,TorchAudio 僅支援就地建置。要使用 pip
,請使用 --no-use-pep517
選項。
pip install -v -e . --no-use-pep517
[可選] 使用自定義 FFmpeg 建置 TorchAudio¶
預設情況下,torchaudio 會嘗試建置支援多個 FFmpeg 版本的 FFmpeg 擴充功能。此過程使用針對特定 CPU 架構(例如 x86_64
)編譯的預建 FFmpeg 函式庫。
如果您的 CPU 不同,則建置過程可能會失敗。為了解決此問題,可以禁用 FFmpeg 整合(透過設定環境變數 USE_FFMPEG=0
)或切換到單一版本的 FFmpeg 擴充功能。
要建置單一版本的 FFmpeg 擴充功能,必須由使用者提供 FFmpeg 二進制檔案,並且可以在建置環境中使用。為此,請安裝 FFmpeg 並設定 FFMPEG_ROOT
環境變數以指定 FFmpeg 的位置。
conda install -c conda-forge ffmpeg
FFMPEG_ROOT=${CONDA_PREFIX}/Library python setup.py develop
[可選] 從原始碼建置 FFmpeg¶
以下章節說明了一種從原始碼建置 FFmpeg 函式庫的方法。
Conda-forge 的 FFmpeg 套件支援主要的編解碼器和 GPU 解碼器,因此一般使用者和開發人員不需要從原始碼建置 FFmpeg。
如果您未使用 Conda,則可以找到預先建置的二進制發行版,或自行建置 FFmpeg。
此外,如果 torchaudio 開發人員需要更新和自定義 FFmpeg 建置的 CI,則本節可能會有所幫助。
1. 安裝 MSYS2¶
為了以一種可從 TorchAudio 開發環境使用的方式建置 FFmpeg,我們需要建置 MINGW64
原生的二進制檔案。為此,我們需要 FFmpeg 建置過程所需的工具,例如 pkg-config
和 make
,這些工具在 MINGW64
環境中運作。為此,我們使用 MSYS2。
FFmpeg 的官方文件提到了這一點 https://trac.ffmpeg.org/wiki/CompilationGuide/MinGW
請按照 https://www.msys2.org/ 上的說明安裝 MSYS2。
注意
在 CI 環境中,通常可以使用 Chocolatery 安裝 MSYS2。
2. 啟動 MSYS2¶
使用快捷方式啟動 MSYS2 (MINGW64)。

注意
MSYS2 中的 Bash 環境與 Conda env 不相容,因此請勿在 MSYS2 環境的 ~/.bashrc
中新增 Conda 初始化腳本。(即 C:\msys2\home\USER\.bashrc
)而是將其新增到 C:\Users\USER\.bashrc
中)
3. 安裝建置工具¶
$ pacman -S mingw-w64-x86_64-make
$ pacman -S mingw-w64-x86_64-yasm
安裝後,您應該具有類似以下的套件:
$ pacman -Qe
base 2020.12-1
base-devel 2022.01-2
filesystem 2023.01-2
mingw-w64-x86_64-make 4.3-1
mingw-w64-x86_64-pkgconf 1.8.0-2
mingw-w64-x86_64-yasm 1.3.0-4
msys2-runtime 3.4.3-5
4. 建置 FFmpeg¶
檢查 FFmpeg 原始碼。
git clone https://github.com/ffmpeg/ffmpeg
cd ffmpeg
git checkout <VERSION>
建置
./configure --toolchain=msvc
make -j
如果建置成功,則應在相同目錄中找到 ffmpeg.exe
。 確保您可以執行它。
5. 驗證建置¶
檢查是否可以從 Conda env 存取產生的 FFmpeg 二進制檔案
現在啟動新的命令提示字元並啟用 TorchAudio 開發環境。確保您可以執行在上一步中產生的 ffmpeg.exe
命令。