如何在整个音频文件上调用librosa函数?

乔达斯特

我正在尝试使用Librosa分析短音频文件,尤其是频谱质心函数。但是,此函数在音频文件内的不同帧处输出代表频谱质心的不同值的数组。该文档说,可以n_fft在调用函数时通过指定参数来更改帧大小如果此功能一次分析整个音频文件,而不是在多个时间点输出结果,那对我来说将更加有益。有没有一种方法可以让我指定要使用整个音频文件的帧大小而不是默认时间(即2048个样本)来调用函数还有另一种更好的方法吗?

干杯,谢谢!

亨德里克

FFT窗口(n_fft的长度不仅指定了您需要多少个样本,还指定了结果的频率分辨率(更长n_fft,更好的分辨率)。为了确保许多文件具有可比的结果,您可能希望n_fft对所有文件使用相同的值。

这样一来,说您的文件全部不超过16k个样本。然后,您仍然可以实现合理的运行时间(FFT在O(N log N)中运行)。显然,随着文件大小的增加,这种情况会变得更糟。因此您可以调用spectral_centroid(y=y, n_fft=16384, hop_length=16384, center=False)和,因为hop_length设置为与n_fft计算非重叠窗口的FFT相同的值并且由于n_fft大于所有文件中的最大样本数(在此示例中),因此您应该仅获得一个值。请注意,我设置centerFalse避免进行您的方案不需要的调整。

除了选择一个长的变换窗口之外,您还可以使用STFT计算重叠窗口(或帧)的许多值(这是librosa所做的事情),并像这样简单地对所得值求平均:

import numpy as np
import librosa

y, sr = librosa.load(librosa.ex('trumpet'))
cent = librosa.feature.spectral_centroid(y=y, sr=sr, center=False)
avg_cent = np.mean(cent)
print(avg_cent)

2618.004809523263

后一种解决方案与MIR和我的建议中通常所做的一致请注意,这还允许您使用其他统计功能,例如中位数,可能是您感兴趣的东西,也可能不是您感兴趣的东西。换句话说,您可以确定质心分布,这些质心可能具有更多含义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Pydub和Librosa之间转换音频文件

来自分类Dev

使用 Python/Librosa 问题加载多个音频文件

来自分类Dev

您如何在iOS上录制PCM音频文件?

来自分类Dev

如何在无声的地方批量分割音频文件?

来自分类Dev

如何在Matlab中规范音频文件

来自分类Dev

如何在键盘按键上播放音频文件?

来自分类Dev

如何在语音通道中播放特定的音频文件?

来自分类Dev

如何在WASAPICaptureSharedEventDriven中以原始格式保存音频文件

来自分类Dev

如何在键盘按键上播放音频文件?

来自分类Dev

如何在Android中下载音频文件

来自分类Dev

如何在 ios 中播放 .opus 音频文件

来自分类Dev

如何在javascript中调整音频文件的音量

来自分类Dev

如何在 Firebase 中保存音频文件

来自分类Dev

如何在Windows上调用ELF函数

来自分类Dev

如何在Windows上调用ELF函数

来自分类Dev

如何在子类型上调用函数?

来自分类Dev

如何在Android中将两个音频文件合并为一个音频文件?

来自分类Dev

如何在音频单元扩展(实时过程)中分配内存以播放音频文件?

来自分类Dev

星号,如何播放音频文件

来自分类Dev

如何播放AMR音频文件?

来自分类Dev

如何获得音频文件的总时间?

来自分类Dev

如何同时播放多个音频文件

来自分类Dev

如何遍历音频文件的javascript数组?

来自分类Dev

如何播放音频文件?

来自分类Dev

如何循环播放我的音频文件?

来自分类Dev

如何检测浮点音频文件

来自分类Dev

如何从IsolatedStorage中读取音频文件?

来自分类Dev

如何从jsp页面录制音频文件

来自分类Dev

iOS-如何下载音频文件