音频加载疑难解答
本页面旨在介绍如何安装 torchaudio 后端,并提供音频加载问题的排查步骤。
简介
在大多数情况下,SpeechBrain 依靠 torchaudio 加载音频文件。如果你遇到问题,请首先尝试更新 torchaudio。同时请确保你的 PyTorch 版本与安装的 torchaudio 版本兼容。
截至 torchaudio 2.2.0
,支持三种后端:ffmpeg
、sox
和 soundfile
。torchaudio 在其可选依赖文档中说明了如何找到这些后端。
你可以通过运行 torchaudio.list_audio_backends()
来确定你的环境中哪些后端可用。
警告
如果初始化失败,后端可能*静默*加载失败,并会被排除在此列表之外。
警告
并非所有后端都能支持任何编解码器。 例如,在撰写本文时,torchaudio 的 SoX 后端无法处理 MP3,SoundFile 后端无法处理 AAC(通常是 .m4a
),这两种格式都存在于一些流行的语音数据集中。然而,大多数常见格式通常都得到所有后端的良好支持(.wav
/.ogg
vorbis/opus/.flac
)。
推荐的安装步骤
通常,torchaudio 可以直接工作。在某些系统上,可能没有安装可用的后端。我们建议你尝试以下步骤,看是否能解决你的问题
在 Linux 上,如果你有超级用户权限,可以通过你的发行版包管理器安装 ffmpeg 和/或 libsndfile 和/或 SoX。
在 Windows/Linux/macOS 上,你可以尝试通过 Conda 安装 ffmpeg(参阅ffmpeg),这不需要超级用户权限(前提是 Conda 可用)。
在 macOS 上,或者,似乎可以通过 Homebrew 安装 ffmpeg。请确保你安装的版本与 torchaudio 兼容(参阅ffmpeg)。
在 Windows/Linux/macOS 上,SoundFile 开始附带预构建的
libsndfile
,这不需要管理员权限。尝试安装或更新它。有关更多详细信息,请参阅链接页面。
开发者须知及 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 或使用不同的后端。