跳转到主要内容

多库、跨平台音频解码。

项目描述

使用可用的后端解码音频文件。该库目前支持

使用库的方式如下

with audioread.audio_open(filename) as f:
    print(f.channels, f.samplerate, f.duration)
    for buf in f:
        do_something(buf)

可以通过迭代从 audio_open 返回的对象访问文件中的缓冲区。每个缓冲区都是一个类似字节的对象(bufferbytesbytearray),包含原始 16位小端有符号整数PCM数据。(目前,这些PCM格式参数不可配置,但这可以添加到大多数后端。)

作为音频文件对象的字段提供额外的值

  • channels 是音频通道的数量(一个整数)。

  • samplerate 以Hz给出(一个整数)。

  • duration 是音频的长度,以秒为单位(一个浮点数)。

函数 audio_open 透明地选择一个能够读取文件的后端。(每个后端都在 audioread 包内的模块中实现。)如果没有任何后端成功打开文件,则会引发 DecodeError 异常。此异常仅在文件类型不受后端支持时使用;如果文件不存在,将引发标准的 IOError

audio_open 的第二个可选参数指定要尝试哪些后端(而不是尝试所有后端,这是默认行为)。您可以使用 available_backends 函数获取当前系统上可用的后端列表。

Audioread 支持 Python 3(3.8+)。

示例

包含的 decode.py 脚本演示了如何使用此包将压缩音频文件转换为 WAV 文件。

故障排除

NoBackendError 异常表示库无法找到它需要解码音频的某个库或工具。这可能意味着,例如,您安装了损坏的 FFmpeg。要检查,请在您的 shell 中尝试输入 ffmpeg -version。如果这导致错误,请尝试使用您的操作系统包管理器(例如 apt 或 yum)或 使用 Conda 安装 FFmpeg。

版本历史

3.0.1

修复当 FFmpeg 的版本输出产生过多数据时可能出现的死锁问题。

3.0.0

停止支持 Python 2 和 Python 3 的旧版本。现在,库需要 Python 3.6+。在 FFmpegAudioFile 中增加默认块大小以获得稍快的文件读取速度。缓存后端以提高查找速度(感谢 @bmcfee)。音频文件类现在继承自公共基类 AudioFile

2.1.9

与 GStreamer 1.18 及更高版本正确工作(感谢 @ssssam)。

2.1.8

修复当 FFmpeg 未安装时未处理的 OSError

2.1.7

在 FFmpeg 后端中适当地关闭一些文件句柄(感谢 @RyanMarcus 和 @ssssam)。maddec 后端现在始终产生字节对象,如其他后端(感谢 @ssssam)。解决 GStreamer 后端中的音频数据内存泄漏问题(再次感谢 @ssssam)。现在可以可选地指定 audio_open 应尝试的特定后端(再次感谢 @ssssam)。在 Windows 上,避免打开控制台窗口以运行 FFmpeg(感谢 @flokX)。

2.1.6

修复在 Windows Subsystem for Linux 上的 FFmpeg 后端中发生的“没有这样的进程”崩溃(感谢 @llamasoft)。在较旧的 PyGObject 版本中,在 GStreamer 后端中避免抑制 SIGINT(感谢 @lazka)。

2.1.5

在后端无法解码文件时适当地清理文件句柄。修复 FFmpeg 后端中“N.M”通道计数的解析(感谢 @piem)。在文件使用不受支持的每样本位数(即在 Python < 3.4 中为 24 位样本)时,避免在原始后端中崩溃。将 __version__ 值添加到包中。

2.1.4

修复 FFmpeg 后端中的一个错误,在该错误中,在关闭文件后,程序的标准输入流会“损坏”且不会接收任何输入。

2.1.3

在 GStreamer 后端中使用现代版本的 GLib 时避免一些警告。现在,我们至少需要 GLib 2.32。

2.1.2

修复使用 GStreamer 打开和关闭许多文件时发生的文件描述符泄露。

2.1.1

仅在 README 中修复 ReST 格式。

2.1.0

FFmpeg 后端现在也可以使用 Libav 的 avconv 命令。通过要求 GStreamer >= 1.0 修复一个警告。修复与新 GStreamer 后端相关的某些 Python 3 崩溃(感谢 @xix-xeaon)。

2.0.0

GStreamer 后端现在通过新的 gobject-introspection API 使用 GStreamer 1.x(并与 Python 3 兼容)。

1.2.2

在 Windows 上运行 FFmpeg 时禁用其崩溃对话框。感谢 jcsaaddupuy。

1.2.1

修复打开非原始音频文件时未处理的异常(感谢aostanin)。修复了原始文件后端对Python 3的兼容性。

1.2.0

在Windows上添加对FFmpeg的支持(感谢Jean-Christophe Saad-Dupuy)。

1.1.0

通过标准库的sunau模块添加对Sun/NeXT Au文件的支持(感谢Dan Ellis)。

1.0.3

使用rawread(标准库)后端处理.wav文件。

1.0.2

向ffmpeg进程发送SIGKILL而不是SIGTERM,以避免偶尔的挂起。

1.0.1

当GStreamer无法报告持续时间时,抛出异常而不是静默地将持续时间字段设置为None。

1.0.0

在必要时捕获GStreamer的异常,例如当uridecodebin等组件缺失时。GStreamer后端现在接受相对路径。修复了在流在开始之前结束时(在读取损坏的文件时)GStreamer挂起的问题。对Python 3的初步支持。

0.8

所有解码错误现在都是DecodeError的子类。

0.7

修复通过Unicode文件名打开WAV和AIFF文件。

0.6

使FFmpeg的超时更稳健。在超时时转储FFmpeg输出。修复了Gstreamer后端中偶尔发生的非确定性挂起。修复了MAD后端的文件描述符泄漏。

0.5

修复了FFmpeg无法报告持续时间时的崩溃。修复了FFmpeg填满其stderr输出缓冲区时的挂起。为ffmpeg工具执行添加超时(目前每个4096字节的读取为10秒);如果工具超时,则引发ReadTimeoutError异常。

0.4

修复了FFmpeg后端的通道计数检测问题。

0.3

修复了Gstreamer后端的一个问题,即即使在GstAudioFile被“关闭”后,音频文件也可能仍然打开。

0.2

修复了在某些平台上偶尔发生的GStreamer后端的挂起问题。

0.1

初始发布。

等等

audioread由Adrian Sampson编写。它根据MIT许可证提供。此模块的替代品是decoder.py

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

audioread-3.0.1.tar.gz (116.5 kB 查看散列)

上传时间: 源代码

构建分发

audioread-3.0.1-py3-none-any.whl (23.5 kB 查看散列)

上传时间: Python 3

由以下支持