我对用Python编写一个音乐可视化工具很感兴趣。
第一个问题是如何从音乐中获取信息?比如音量、频率、rpm等等,从哪里来的?来自声卡还是实际的音乐文件?
我的猜测来自声卡,但我如何访问声卡和想要的信息?最好是以独立于平台的方式(Linux是必须的)。我已经读了一些关于傅立叶变换的内容,但我不确定这是不是最好的方法。
我考虑过使用OpenGL进行可视化,但我仍然欢迎您的建议。
我已经看过这些维基页面了,但还没有找到答案:http://wiki.python.org/moin/Audio/
http://wiki.python.org/moin/PythonInMusic
发布于 2011-06-16 01:01:48
如果你正在寻找一个跨平台的音频库,我强烈建议使用FMOD,它太棒了。还有一个wrapper可以在python中使用它(尽管我从来没有用过它)。
它将提供开箱即用的频谱等功能。
如果你想分析音频文件,我的算法就是beat spectrum。它通过比较音乐的每个短样本与其他样本来计算相似度矩阵。一旦计算了相似度矩阵,就有可能获得每个时间间隔T的每个样本对{S(T);S(T+1)}之间的平均相似度:这是拍频频谱。
它允许获得音频序列的BPM,但可以做更多的事情,比如识别音乐的不同部分,定位相似样本之间的过渡。我不知道你所说的“可视化音频”到底是什么意思,但我认为这个算法应该可以为你提供足够的信息来开始同步图像和音频(如果这是你想要做的)。
发布于 2012-09-27 12:02:33
不再是一个好的答案,因为Echo Nest API不再是可用的。离开仅仅是因为历史原因
考虑一下Python,它可以完美地与Echo Nest一起工作,它将返回关于每分钟节拍(可能是你想要的而不是每分钟转速)、平均振幅甚至是任何音频文件的“稀奇度”的信息。你需要一个API密钥,但除此之外,它是免费的,并且运行良好。
它也有通过Echo Nest Remix包操作音乐的代码。下面是他们的示例代码:
"""Reverse a song by playing its beats
forward starting from the end of the song"""
import echonest.audio as audio
# Easy around wrapper mp3 decoding and Echo Nest analysis
audio_file = audio.LocalAudioFile("NeverGonnaTellIt.mp3")
# You can manipulate the beats in a song as a native python list
beats = audio_file.analysis.beats
beats.reverse()
# And render the list as a new audio file!
audio.getpieces(audio_file, beats).encode("NeverGonnaTellItBackwardsByBeat.mp3")https://stackoverflow.com/questions/6356749
复制相似问题