在 Windows 上构建¶
要在 Windows 上构建 TorchAudio,我们需要启用 C++ 编译器并安装构建工具和运行时依赖项。
我们使用 Microsoft Visual C++ 进行 C++ 编译,使用 Conda 管理其他构建工具和运行时依赖项。
1. 安装构建工具¶
MSVC¶
请按照 https://visualstudio.microsoft.com/downloads/ 上的说明进行操作,并确保安装 C++ 开发工具。
注意
官方二进制分发版使用 MSVC 2019 编译。以下部分使用了 MSVC 2019 Community Edition 的路径。
Conda¶
请按照 https://docs.conda.org.cn/en/latest/miniconda.html 上的说明进行操作。
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-architecture
call "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¶
有关安装 PyTorch 的最新方法,请参考 https://pytorch.ac.cn/get-started/locally/。
以下命令安装 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-enabled 版本时,也会安装 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 仅支持原地构建 (in-place build)。要使用 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 构建过程所需的工具,例如在
MINGW64` 环境中工作的
pkg-config
和 make`。为此,我们使用 MSYS2。
FFmpeg 的官方文档提到了这一点 https://trac.ffmpeg.org/wiki/CompilationGuide/MinGW
请按照 https://www.msys2.org/ 上的说明安装 MSYS2。
注意
在 CI 环境中,通常可以使用 Chocolatery 来安装 MSYS2。
2. 启动 MSYS2¶
使用快捷方式启动 MSYS2 (MINGW64)。

注意
MSYS2 中的 Bash 环境与 Conda 环境兼容性不佳,因此请勿在 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¶
git clone https://github.com/ffmpeg/ffmpeg
cd ffmpeg
git checkout <VERSION>
检出 FFmpeg 源代码。
./configure --toolchain=msvc
make -j
构建
如果构建成功,应该在同一目录中找到 ffmpeg.exe
。请确保您可以运行它。
5. 验证构建¶
检查生成的 FFmpeg 二进制文件可以从 Conda 环境访问