从音频文件中提取音高特征

Ada*_* Xu 10 python audio feature-extraction scipy

我试图从音频文件中提取音高特征,我将用于分类问题.我使用python(scipy/numpy)进行分类.

我想我可以使用频率功能,scipy.fft但我不知道如何使用频率来近似音符.我研究了一下,发现我需要获得色度特征,这些特征将频率映射到12二进制位以获得半音阶的音符.

我认为有一个用于matlab的色度工具箱,但我不认为python有类似的东西.

我该怎么做呢?任何人都可以建议阅读我应该研究的材料吗?

Fra*_*kow 4

您可以将频率映射到音符:

n=12*log_2(f/Cp)+69

n是要计算的 MIDI 音符编号,F频率和CP室内音高(在现代音乐中 440.0 Hz 很常见)。

您可能知道,单一频率并不能产生音高。“音高”源自对谐波声音基音的感觉,即主要由一个单一频率(=基音)的整数倍组成的声音。

如果您想在 Python 中使用色度功能,您可以使用Bregman Audio-Visual Information Toolbox。请注意,色度功能不会为您提供有关音高八度的信息,因此您只能获得有关音级的信息。

from bregman.suite import Chromagram
audio_file = "mono_file.wav"
F = Chromagram(audio_file, nfft=16384, wfft=8192, nhop=2205)
F.X # all chroma features
F.X[:,0] # one feature
Run Code Online (Sandbox Code Playgroud)

从音频中提取音调信息的一般问题称为音调检测

  • 作为对广泛的计算机音乐问题的一般介绍,C.Roads_TheComputerMusicTutorial_(1994 年,剑桥:麻省理工学院出版社)是一本非常易于理解和全面(>1000 页)的参考书。对我来说,M. Müllers _音乐和运动信息检索_(2007 年,柏林,海德堡:Springer)的第一部分很棒(不太全面,更最新,更技术性)。如果您对某个特定主题感兴趣,[ISMIR 会议记录](http://www.ismir.net/proceedings/) 提供了丰富的信息。其他人可能会给你其他(和更好的?)参考。我也会有兴趣。 (2认同)