微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

音乐分析和可视化

如何解决音乐分析和可视化

| 我对用Python编写音乐可视化程序感兴趣。 第一个问题是如何从音乐中获取信息?如体积,频率,rpm等。 从哪里来的?来自声卡还是实际的音乐文件? 我的猜测来自声卡,但是如何访问声卡和所需信息?最好以与平台无关的方式(必须使用Linux)。 我已经读过一些有关傅立叶变换的信息,但是我不确定这是否是最好的方法。 我考虑过使用OpenGL进行可视化,但是我仍然愿意征求建议。 我已经查看了这些维基页面,但尚未找到答案: http://wiki.python.org/moin/Audio/ http://wiki.python.org/moin/PythonInMusic     

解决方法

        如果您正在寻找一个跨平台的音频库,我强烈建议您使用FMOD,它会摇摆不定。还有一个包装器可以在python中使用它(尽管我从未使用过)。 它将提供诸如开箱即用的频谱之类的功能。 如果您想分析音频文件,我的算法就是拍子频谱。它通过比较音乐的每个简短样本来计算相似度矩阵。一旦计算出相似度矩阵,就有可能获得每个时间间隔T的每个样本对{S(T); S(T + 1)}之间的平均相似度:这就是拍频。 它可以获取音频序列的BPM,但可以做更多的工作,例如识别音乐的不同部分,定位相似样本之间的过渡。我不知道“可视化音频”到底是什么意思,但是我认为此算法应该为您提供足够的信息,以开始将图像与音频同步(如果您要这样做)。     ,        另一个用于此的工具是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)
正如@dionyziz所说,   节拍将在帧中。您可以使用将它们转换为实际时间
librosa.frames_to_time(beats)
我还没有尝试过。     ,        由于Echo Nest API不再可用,因此不再是一个好的答案。仅出于历史原因离开 考虑一下与Python完美配合的Echo Nest API,它将返回有关每分钟节拍(可能是您想要的而不是RPM),平均振幅甚至任何音频文件的“可跳舞性”的信息。您需要一个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\")
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。