音频加载疑难解答

本页面旨在介绍如何安装 torchaudio 后端,并提供音频加载问题的排查步骤。

简介

在大多数情况下,SpeechBrain 依靠 torchaudio 加载音频文件。如果你遇到问题,请首先尝试更新 torchaudio。同时请确保你的 PyTorch 版本与安装的 torchaudio 版本兼容。

截至 torchaudio 2.2.0,支持三种后端:ffmpegsoxsoundfile。torchaudio 在其可选依赖文档中说明了如何找到这些后端。

你可以通过运行 torchaudio.list_audio_backends() 来确定你的环境中哪些后端可用。

警告

如果初始化失败,后端可能*静默*加载失败,并会被排除在此列表之外。

警告

并非所有后端都能支持任何编解码器。 例如,在撰写本文时,torchaudio 的 SoX 后端无法处理 MP3,SoundFile 后端无法处理 AAC(通常是 .m4a),这两种格式都存在于一些流行的语音数据集中。然而,大多数常见格式通常都得到所有后端的良好支持(.wav/.ogg vorbis/opus/.flac)。

开发者须知及 torchaudio 2.x 的重大变更

在 torchaudio <2.x 中,后端是通过 torchaudio.set_audio_backend 选择的。此函数在 torchaudio 的 2.x 分支中已被弃用并删除,SpeechBrain 中也不再使用。从那时起,后端(可选地)通过 torchaudio.load()torchaudio.info()backend 参数选择。

安装/排除后端故障

ffmpeg

torchaudio 为 特定范围 的 ffmpeg 版本编译其 ffmpeg 后端。

ffmpeg 通常已经安装在常见的 Linux 发行版上。在 Ubuntu 上,可以通过 sudo apt install ffmpeg 安装。

根据你的操作系统版本,你安装的 ffmpeg 版本可能不受 torchaudio 支持(如果太新或太旧)。如果你认为情况如此,可以尝试安装由 conda-forge 提供的特定版本的 ffmpeg 包。

有关更多详细信息,请参阅torchaudio 可选依赖文档

SoundFile

torchaudio 可以使用 soundfile 作为音频后端,它依赖于 libsndfile

从 SoundFile 0.12.0 开始,此包捆绑了适用于多种平台的预构建 libsndfile。有关更多详细信息,请参阅项目页面。

SoX

从 torchaudio 0.12.0 开始,SoX 后端不再支持 mp3 文件。

从 torchaudio 2.1.0 开始,torchaudio 不再自行编译和捆绑 SoX,并期望由系统提供。

如果你从早期版本升级,并且无法再加载音频文件,这可能是原因。在这种情况下,你可能需要安装 SoX 或使用不同的后端。