use*_*226 3 python audio centroid
我需要定义一个“频谱质心”函数来分析音频文件,但我无法将数学公式转换为代码。如果有人能帮助我那就太好了,我没有主意了。
有问题的公式是:
http://en.wikipedia.org/wiki/Spectral_centroid
我已经能够通过以下方式计算信号的频谱平坦度
def spectral_flatness(x):
X_f = fft(x)
N = len(X_f)
magnitude = abs(X_f[:N/2])
sf = geom_mean(magnitude) / aritm_mean(magnitude)
return sf
Run Code Online (Sandbox Code Playgroud)
这是我如何将数学公式转换为代码的示例。我对此很陌生,所以一个小举动仍然非常具有挑战性。我找到了有关几何质心的信息,但没有找到有关光谱质心的信息。
我以前从未实现过这个,但据我了解维基百科公式,它应该是这样的:
import numpy as np
def spectral_centroid(x, samplerate=44100):
magnitudes = np.abs(np.fft.rfft(x)) # magnitudes of positive frequencies
length = len(x)
freqs = np.abs(np.fft.fftfreq(length, 1.0/samplerate)[:length//2+1]) # positive frequencies
return np.sum(magnitudes*freqs) / np.sum(magnitudes) # return weighted mean
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6058 次 |
| 最近记录: |