音乐分析与可视化

nae*_*aeg 17 python audio visualization

我对用Python编写音乐可视化器感兴趣.

第一个问题是如何从音乐中获取信息?像音量,频率,转速等等从哪里来?从声卡或实际的音乐文件?

我的猜测来自声卡,但我如何访问声卡和所需信息?最好是以平台独立的方式(Linux是必须的).我已经阅读了一些关于傅里叶变换的内容,但我不确定这是否是最好的方法.

我想过使用OpenGL进行可视化,但我仍然愿意接受建议.

我已经查看了那些wikipages,但还没有找到答案:http : //wiki.python.org/moin/Audio/
http://wiki.python.org/moin/PythonInMusic

jer*_*rge 15

如果您正在寻找一个跨平台的音频库,我强烈建议使用仅仅摇滚的FMOD.还有一个包装器可以在python中使用它(尽管我从未使用它).
它将提供诸如开箱即用的频谱等功能.
如果你想分析音频文件,我的算法拍频谱.它通过将音乐的每个短样本与每个其他短样本进行比较来计算相似度矩阵.一旦计算出相似度矩阵,就可以获得每个时间间隔T的每个样本对{S(T); S(T + 1)}之间的平均相似度:这是拍频谱.
它允许获取音频序列的BPM,但可以更像识别音乐的不同部分,定位类似样本之间的过渡.我不知道你的意思是"视觉化音频",但我认为这个算法应该为你提供足够的信息来开始将图像同步到音频(如果你想做的话).


ser*_*inc 6

另一个工具是librosa.除默认操作外,它还提供节拍跟踪以获得bpm.根据教程,对于节拍跟踪:

import librosa
audio_path = librosa.util.example_audio_file()
# or uncomment the line below and point it at your favorite song:
# audio_path = '/path/to/your/favorite/song.mp3'
y, sr = librosa.load(audio_path)
y_percussive = librosa.effects.hpss(y)
tempo, beats = librosa.beat.beat_track(y=y_percussive, sr=sr)
Run Code Online (Sandbox Code Playgroud)

正如@dionyziz所说,

节拍将在框架中.您可以使用它们将它们转换为实际时间

librosa.frames_to_time(beats)
Run Code Online (Sandbox Code Playgroud)

我没试过这个.