gpt4 book ai didi

feature-extraction - MFCC特征提取,Librosa

转载 作者:行者123 更新时间:2023-12-02 00:16:09 24 4
gpt4 key购买 nike

我想提取以 8000 Hz 采样、帧大小为 20 毫秒和 10 毫秒重叠的音频文件的 mfcc 特征。 librosa.feature.mfcc() 函数的参数必须是什么。下面编写的代码是否指定了具有 10 毫秒重叠的 20 毫秒 block ?

import librosa as l

x, sr = l.load('/home/user/Data/Audio/Tracks/Dev/FS_P01_dev_001.wav', sr = 8000)
mfccs = l.feature.mfcc(x, sr=sr, n_mfcc = 24, hop_length = 160)

音频文件为 1800 秒。这是否意味着我会为所有 (1800/0.01)-1 音频 block 获得 24 个 mfcc?

最佳答案

8000 Hz 下的 1800 秒显然是 1800 * 8000 = 14400000 样本。如果您的跳跃长度是 160,您将大致 14400000/160 = 90000 MFCC 值,每个值有 24 个维度。所以这显然不是 (1800/0.01) - 1 = 179999(相差大约 2)。

请注意,我在计算中使用了粗略,因为我只使用了跳跃长度而忽略了窗口长度。跳跃长度是窗口每一步移动的样本数。您可以适应多少啤酒花取决于您是否以某种方式填充。如果您决定不填充,帧数也取决于您的窗口大小。

回到您的问题:您必须问自己有多少样本是 10 毫秒?

如果 1 s 包含 8000 个样本(这就是 8000 Hz 的意思),那么 0.01 s 中有多少个样本?那是 8000 * 0.01 = 80 个样本。

这意味着您有 80 个样本的跳跃长度和 160 个样本的窗口长度(0.02 秒 - 两倍长)。

现在您应该告诉 librosa 使用此信息,如下所示:

import librosa as l

x, sr = l.load('/home/user/Data/Audio/Tracks/Dev/FS_P01_dev_001.wav', sr = 8000)
n_fft = int(sr * 0.02) # window length: 0.02 s
hop_length = n_fft // 2 # usually one specifies the hop length as a fraction of the window length
mfccs = l.feature.mfcc(x, sr=sr, n_mfcc=24, hop_length=hop_length, n_fft=n_fft)
# check the dimensions
print(mfccs.shape)

希望这对您有所帮助。

关于feature-extraction - MFCC特征提取,Librosa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56911774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com