Awesome Python Scientific Audio:做音频研究,这些 Python 工具你得知道

正文顶部截图

做音频方向的科研,离不开各种工具库。从读取音频文件、提取特征,到跑深度学习模型,每一步都需要趁手的 Python 包。

但问题来了,音频相关的 Python 库散落在各处,质量参差不齐,找起来费劲。

awesome-python-scientific-audio 这个仓库做的事情很简单:把和科学音频研究相关的 Python 工具做了一次系统整理,按功能分成十几个类别,总共收录了 67 个包。

仓库目前拿到了 1,694 个 Star,不算特别火爆,但对做音频研究的人来说,这份清单的实用价值很高。

README区域截图

音频读写

最基础的需求是把音频文件读进来、写出去。这个类别里有几个常用的库:

audioread 是一个跨平台的音频解码库,底层支持 GStreamer、Core Audio、MAD、FFmpeg 等多种后端,基本上什么格式都能处理。PySoundFile 基于 libsndfile,配合 NumPy 使用,读写速度很快。pydub 提供了更高层的接口,裁剪、拼接、转格式这些操作一行代码就能搞定。

如果需要处理音频的元数据,比如 ID3 标签、专辑信息这类,mutagen 可以读写各种格式的音频元数据。tinytag 则专注于轻量级的元数据读取,支持 MP3、OGG、FLAC、WAV。

数字信号处理

DSP 是音频研究的基础。这个分类下的工具覆盖了从滤波器设计到频谱分析的各个环节。

pyFFTW 是 FFTW 的 Python 封装,做快速傅里叶变换性能很好。PyWavelets 实现了离散小波变换。pyroomacoustics 可以模拟房间声学,生成房间脉冲响应,在麦克风阵列和语音增强研究中用得很多。

pyfar 这个库值得关注,它专门为声学信号设计,提供了从文件读取、DSP 处理到可视化的完整工具链。NSGT 实现了非平稳 Gabor 变换和常 Q 变换,适合做音乐信号的时频分析。

特征提取

做音频分类或识别,特征提取是绕不开的环节。

librosa 是这个领域最知名的库,提供了频谱质心、MFCC、色度特征等常用特征的计算接口,文档和教程都很完善。essentia 是 MTG 开发的音乐特征提取库,C++ 内核加 Python 绑定,性能出色,支持低级和高级特征的提取。

audioFlux 是一个相对新的库,专注于音频和音乐分析的特征提取。aubio 用 C 写的,提供了节拍检测、音高检测等功能,也有 Python 接口。

语音处理

语音相关的工具在这个清单里占了很大比重。

SpeechRecognition 封装了多个语音识别引擎和 API,支持在线和离线识别。deepspeech 是 Mozilla 开源的预训练语音识别模型。pyannote.audio 专注于说话人分割,用神经网络实现,在会议记录、多人对话场景下效果不错。

pyAudioAnalysis 集成了特征提取、分类和说话人分割功能,是一个比较全面的音频分析工具。py-webrtcvad 是 WebRTC 语音活动检测器的 Python 接口,判断音频里哪些部分有人说话。

做语音质量评估的话,pypesq 封装了 PESQ 评分计算,pystoi 实现了短时客观可懂度指标。

数据增强

训练模型需要大量数据,音频数据增强是扩充数据集的常用手段。

audiomentations 提供了加噪声、时间拉伸、音高偏移等增强操作,使用方式和图像增强库类似。muda 专门为音乐数据增强设计。pydiogment 也是一个音频数据增强库,功能类似。

音乐信息检索

MIR 是一个比较细分的研究方向,这个类别里的工具都很专业。

librosa 同时也属于这个分类,它的节拍检测、结构分析功能在 MIR 研究中广泛使用。madmom 在节拍检测、起始检测和和弦识别上有很强的表现。mir_eval 提供了各种 MIR 任务的评估指标,包括源分离评估。msaf 专注于音乐结构分析。

深度学习

深度学习在音频领域的应用越来越广,这个分类收录了几个专门面向音频的深度学习工具。

TorchAudio 是 PyTorch 官方的音频处理库,数据加载和预处理都很方便。Kapre 为 Keras 提供了音频预处理层,可以直接在模型里做频谱计算。nnAudio 用一维卷积网络加速音频处理,基于 PyTorch 实现。

其他类别

除了上面这些,清单还收录了数据增强、感知模型、源分离、MIDI 处理、实时音频、Web 音频等方向的工具。

源分离方面有 NUSSL,它是一个完整的源分离框架,支持传统 DSP 方法和深度学习方法。MIDI 处理方面有 Music21、Pretty-MIDI、mido 等。实时音频方面有 PYO 和 python-sounddevice。

仓库还整理了相关的教程、书籍和论文。入门推荐看 Numpy 和 Scipy 的官方教程,进阶可以看 Meinard Müller 的《Fundamentals of Music Processing》,配套有 Python 练习。

做音频研究的 Python 开发者,可以把这个仓库当成一个工具索引来用。按需查阅,找到适合自己研究方向的库,比漫无目的地搜索效率高很多。

练习。

做音频研究的 Python 开发者,可以把这个仓库当成一个工具索引来用。按需查阅,找到适合自己研究方向的库,比漫无目的地搜索效率高很多。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐