音乐分析与可视化

2024-05-27 11:17:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我对用Python编程一个音乐可视化工具很感兴趣。

第一个问题是如何从音乐中获取信息?比如音量、频率、转速等。 从哪里来的?从声卡还是真正的音乐文件?

我是从声卡上猜出来的,但是我怎么才能访问声卡和想要的信息呢?最好采用独立于平台的方式(必须使用Linux)。 我已经读过一些关于傅里叶变换的书,但我不确定这是否是最好的方法。

我考虑过使用OpenGL来实现可视化,但我仍然愿意提出建议。

我已经看过那些维基页面,但还没有找到答案: http://wiki.python.org/moin/Audio/
http://wiki.python.org/moin/PythonInMusic


Tags: 工具org信息http音乐可视化编程方式
3条回答

另一个工具是librosa。除了默认操作之外,它还提供Beat tracking来获取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 also said

beats will be in frames. You can convert them to actual time using

librosa.frames_to_time(beats)

我还没试过。

不再是一个好答案,因为Echo Nest API不再可用。只因历史原因离开

考虑一下Echo NestAPI,它可以完美地与Python一起工作,并将返回有关每分钟跳动(可能是您想要的而不是RPM)、平均振幅,甚至任何音频文件的“可跳舞性”的信息。您需要一个API密钥,但除此之外,它是免费的,并且工作良好。

它也有操作音乐的代码,通过他们的回声巢混音包。下面是他们的示例代码:

"""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")

如果您正在寻找一个跨平台的音频库,我强烈建议您使用FMOD这只是岩石。还有一个wrapper可以在python中使用它(尽管我从未使用过它)。
它将提供一些功能,如将频谱从盒子中取出。
如果你想分析音频文件,我的choix算法是beat spectrum。它通过比较音乐的每个短样本与其他样本来计算相似度矩阵。一旦计算出相似矩阵,就可以得到每个时间间隔T的每个样本对{S(T);S(T+1)}之间的平均相似性:这是拍谱。
它允许获取音频序列的BPM,但可以做更多的事情,比如识别音乐的不同部分,定位相似示例之间的转换。我不知道你所说的“可视化音频”到底是什么意思,但我认为这个算法应该为你提供足够的信息,以便开始将图像与音频同步(如果你想这样做的话)。

相关问题 更多 >

    热门问题