Python:.wav 文件的光谱质心?

Posted

技术标签:

【中文标题】Python:.wav 文件的光谱质心?【英文标题】:Python: Spectral Centroid for a .wav file? 【发布时间】:2014-08-12 19:20:31 【问题描述】:

我需要定义一个“光谱质心”函数来分析音频文件,但我无法将数学公式转换为代码。如果有人可以帮助我,那就太好了,我没有想法。

有问题的公式是:

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

这是我如何将数学公式转换为代码的示例。我对此很陌生,所以一个小动作仍然很有挑战性。我找到了关于几何质心的信息,但没有找到关于光谱质心的信息..

【问题讨论】:

【参考方案1】:

我以前从未实现过,但据我了解***公式,它应该是这样的:

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

【讨论】:

【参考方案2】:

另一种可能性是使用 librosa 的spectral_centroid 方法。 音频特征提取有很多有用的方法:Spectral Centroid

【讨论】:

以上是关于Python:.wav 文件的光谱质心?的主要内容,如果未能解决你的问题,请参考以下文章

使用光谱聚类对看不见的点进行聚类

使用光谱 python 读取 .img envi 文件

Python遥感图像处理应用篇(十四):GDAL 读取多光谱数据为二维数组并存入csv文件

Python遥感图像处理应用篇(十四):GDAL 读取多光谱数据为二维数组并存入csv文件

Python拖放,获取文件名[关闭]

Python/K-means 聚类:具有随机颜色的颜色质心