torchaudio¶
I/O¶
torchaudio 顶级模块提供以下函数,便于处理音频数据。
获取音频文件的信号信息。 |
|
从源加载音频数据。 |
|
将音频数据保存到文件。 |
|
列出可用的后端 |
后端和调度器¶
媒体解码和编码是一个高度复杂的过程。因此,TorchAudio 依赖第三方库来执行这些操作。这些第三方库被称为 backend,目前 TorchAudio 集成了以下库。
请参考 安装 以了解如何启用后端。
传统上,TorchAudio 会根据运行时可用性全局设置其 I/O 后端。然而,这种方法不允许应用程序使用不同的后端,也不适用于大型代码库。
出于这些原因,在 v2.0 版本中,我们引入了一个分发器(dispatcher),这是一种新机制,允许用户为每个函数调用选择后端。
启用调度器模式后,所有 I/O 函数均接受额外的关键字参数
backend,用于指定所需的后端。如果指定的后端不可用,则函数调用将失败。
如果未明确选择后端,函数将根据优先级顺序和库的可用性来选择要使用的后端。
下表总结了后端。
优先级 |
后端 |
支持的操作系统 |
注意 |
|---|---|---|---|
1 |
FFmpeg |
Linux、macOS、Windows |
使用 此后端支持多种协议(如 HTTPS 和 MP4)以及类文件对象。 |
2 |
SoX |
Linux、macOS |
使用 此后端不支持类文件对象。 |
3 |
SoundFile |
Linux、macOS、Windows |
请参考官方文档以获取支持的编解码器。 此后端支持类文件对象。 |
调度器迁移¶
我们正在将 I/O 函数迁移至使用调度器机制,这一过程涉及多项变更,其中部分属于破坏向后兼容性的变更,需要用户调整其函数调用方式。
计划中的更改如下。有关最新信息, 请参阅 https://github.com/pytorch/audio/issues/2950
在 2.0 版本中,引入了音频 I/O 后端调度器。 用户可以通过设置环境变量选择使用调度器
TORCHAUDIO_USE_BACKEND_DISPATCHER=1。在 2.1 版本中,调度器已成为 I/O 的默认机制。
在 2.2 版本中,已移除旧版全局后端机制。 实用函数
get_audio_backend()和set_audio_backend()已成为空操作(no-op)。
此外,我们从 libsox 后端中移除了对类文件对象的支持,因为 FFmpeg 后端对此提供了更好的支持,同时也简化了构建流程。因此,从 2.1 版本开始,FFmpeg 和 Soundfile 是唯一支持类文件对象的后端。