Python 音频分析:properties/values 我可以从中提取什么?

Python Audio Analysis: What properties/values can I extract from it?

我目前正在做一个 tkinter python 学校项目,该项目的唯一目的是从音频文件生成图像,我将选择音频属性并将它们用作值来生成独特的抽象图像从中,但是我不知道我可以分析哪些属性以从中提取值。所以我正在寻找一些关于我可以从中提取值以用于生成具有 Python.

的图像的属性(音频、振幅...等)的指导

这个问题目前的形式非常广泛。 (切记音频不是我的专业领域,所以请留意 audio/audiovisual/generative 领域工作人员的意见。)

您可以采取任何一种方式:找出您想从音频创建哪种图像,然后从那里找出要使用的音频功能。另一种方法也是有效的:选择您想要探索的音频功能,然后考虑如何最好或最有趣地在视觉上表现它。

图像与图像之间存在区别。 对于单个图像,我能想到的最简单的事情是绘制一个正方形网格,其中正方形的视觉 属性(例如正方形大小、填充颜色强度等)被映射到当时的振幅。单个图像将可视化整个轨道的振幅模式。即使是这样一个简单的示例,您也可以做出很多选择(采样频率、网格布局方式(笛卡尔、极坐标)、每个振幅样本的可视化方式(可以是不同的形状、大小、颜色等)。 (与 CinemaRedux 类似的概念,仅对音频更简单) 您可以查看数据可视化领域以获取灵感。 Information is Beautiful 是一个很好的起点。

如果您想生成似乎进入视听领域的图像(例如抽象动画、音频反应动态图形等)。 你的问题最初有标签 Processing tag,我删除了它,但是你可以使用 Processing 的 Python 模式。

在音频可视化方面,我认为 Robert Hogin 的作品是一个很好的例子,请参阅 Magnetosphere and the Audio-generated landscape prototype。他使用频率分析 (FFT) 和一些 smoothing/data 按摩来放大对可视化有用的元素并抑制一些噪音:

(有一些方便的音频库,例如Minim and beads, however I assume you're intresting in using raw Python, not Jython (which is what the official Processing Python mode uses). He is an answer on FFT analysis for visualisation(即使它在Processing Java中,原理也可以应用在Python中)

就我个人而言,到目前为止我只使用 pyaudio 来完成基本的音频任务。我假设您可以将它用于振幅分析,但对于其他更复杂的任务,您可能需要一些额外的东西。 进行快速搜索 librosa 弹出。

如果您不清楚想要实现的目标,请先尝试制作原型,然后从您能想到的最简单的音频分析和视觉元素开始(例如随时间映射到框的振幅)。约束对于创造力来说非常有用,而最小化的方法可以转化为更清晰、最小的视觉效果。

然后您可以查看 FFT、MFCC、起始/节拍检测等

另一个可用于原型设计的工具是 Sonic Visualiser 您可以打开一个轨道并使用一些内置的特征提取器。 (您甚至可以从 Sonic Visualser 导出 XML 或 CSV 数据,您可以在 Python 中 load/parse 并用于渲染图像) 它使用一个插件系统(类似于 DAW 中的 VST 插件,如 Abbleton Live、Apple Logic 等)如果您在运行时需要数据,则称为 Vamp plugins. You can then use the VampPy Python 包装器。

(您可能还想从视听艺术作品使用的其他语言中汲取灵感,例如 PureData + Gems , MaxMSP + Jitter, VVVV 等)

时域:过零率、均方根能量等。 频域:频谱带宽、通量、滚降、平坦度、MFCC等。此外,速度,您可以使用librosa作为Python , link : https://librosa.org/doc/latest/index.html for extraction from a .wav file , which implements Fast Fourier Transfrom and framing.然后您可以将一些统计数据(例如均值、标准差)应用于整个音频文件中上述特征的向量。

提供额外的探索途径:您有一些工具可以定性探索这个(而不是定量使用从上面很好的答案中建议的音频信号)

正如您提到的 objective 是从声音生成独特的抽象图像 - 我建议一个有趣的角度可能是应用一些机器学习技术并从源音频中得出一些情绪分类预测。

例如,您可以使用 essentia 中的 Tensorflow 模型来预测曲目的情绪,并将您 select 的图像与生成的情绪分数相关联。我会建议超越这一点,使用 tkinter 图像创建工具来创建你的情绪映射。使用笔和纸制定您的映射策略 - 某些情绪更 angular 还是循环?你会 select 什么颜色映射,为什么?您有很大的自由来创建这些映射 - 所以从简单开始,因为复杂性自然会增加。

使用一些简单的情绪预测可能对您更有用,因为您对 定性 声音体验比 定量[=] 更有用24=] 作为音频工程师的经验。如果这是任务的要求,我认为这可能值得成为您编写的报告的中心,并记录您的映射决策和报告的设计过程。