多库、跨平台音频解码。
项目描述
使用可用的后端解码音频文件。该库目前支持
Core Audio 在 Mac OS X 上通过 ctypes。 (不需要 PyObjC。)
使用库的方式如下
with audioread.audio_open(filename) as f: print(f.channels, f.samplerate, f.duration) for buf in f: do_something(buf)
可以通过迭代从 audio_open 返回的对象访问文件中的缓冲区。每个缓冲区都是一个类似字节的对象(buffer、bytes 或 bytearray),包含原始 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的散列
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ac5460a5498c48bdf2e8e767402583a4dcd13f4414d286f42ce4379e8b35066d |
|
MD5 | 3de844f9c75b97691da85e0f1ec76e90 |
|
BLAKE2b-256 | dbd287016ca9f083acadffb2d8da59bfa3253e4da7eeb9f71fb8e7708dc97ecd |
audioread-3.0.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4cdce70b8adc0da0a3c9e0d85fb10b3ace30fbdf8d1670fd443929b61d117c33 |
|
MD5 | 5fd661c667005d4e9e1368316f0ee6c1 |
|
BLAKE2b-256 | 578d30aa32745af16af0a9a650115fbe81bde7c610ed5c21b381fca0196f3a7f |