首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFCC特征提取

MFCC特征提取
EN

Stack Overflow用户
提问于 2019-07-06 06:25:11
回答 1查看 3.9K关注 0票数 2

我想提取音频文件的mfcc特征在8000赫兹采样与帧大小为20毫秒和10毫秒重叠。librosa.feature.mfcc()函数的参数必须是什么。下面编写的代码是否指定20 the块与10 the重叠?

代码语言:javascript
复制
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秒。这是否意味着我会得到24 mfccs的所有(1800/0.01)-1块音频?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-06 09:09:28

1800秒在8000赫兹下明显是1800 * 8000 = 14400000样品。如果你的跳跃长度是160,你得到了大致的14400000 / 160 = 90000 MFCC值,每个24维。因此,这显然不是(1800 / 0.01) - 1 = 179999 (约为2倍)。

请注意,我在计算中使用了大致的方法,因为我只使用了跳长,而忽略了窗口长度。跳长是每个步骤移动窗口的样本数。有多少啤酒花你可以适合取决于你是否垫以某种方式。如果您决定不垫,帧的数量也取决于您的窗口大小。

回到你的问题:你必须扪心自问,10毫秒是多少样本?

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

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

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

代码语言:javascript
复制
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)

希望这能有所帮助。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56911774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档