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 是唯一支持类文件对象的后端。