gpt4 book ai didi

python - 使用 librosa 进行音频分类的 MFCC 特征描述符

转载 作者:太空狗 更新时间:2023-10-29 17:27:24 25 4
gpt4 key购买 nike

我正在尝试获取音频文件的单一矢量特征表示以用于机器学习任务(具体来说,使用神经网络进行分类)。我在计算机视觉和自然语言处理方面有经验,但我需要一些帮助来加快处理音频文件的速度。

音频文件有多种特征描述符,但似乎 MFCC 最常用于音频分类任务。我的问题是:如何将音频文件的 MFCC 表示(通常是矩阵(大概是系数))转换为单个特征向量?我目前正在使用 librosa为此。

我有一堆音频文件,但它们的形状各不相同:

for filename in os.listdir('data'):
y, sr = librosa.load('data/' + filename)
print filename, librosa.feature.mfcc(y=y, sr=sr).shape

213493.ogg (20, 2375)
120093.ogg (20, 7506)
174576.ogg (20, 2482)
194439.ogg (20, 14)
107936.ogg (20, 2259)

作为 CV 人员,我会做的是通过 k-means 量化这些系数,然后使用类似 scipy.cluster.vq 的东西获得相同形状的向量,我可以将其用作我的 NN 的输入。这也是您在音频案例中会做的,还是有不同/更好的方法来解决这个问题?

最佳答案

查看 scikits.talkbox .它具有多种功能,可帮助您从音频文件生成 MFCC。具体来说,您可能想要执行类似这样的操作来生成 MFCC。

import numpy as np
import scipy.io.wavfile
from scikits.talkbox.features import mfcc

sample_rate, X = scipy.io.wavfile.read("path/to/audio_file")
ceps, mspec, spec = mfcc(X)
np.save("cache_file_name", ceps) # cache results so that ML becomes fast

然后在进行 ML 时,执行如下操作:

X = []
ceps = np.load("cache_file_name")
num_ceps = len(ceps)
X.append(np.mean(ceps[int(num_ceps / 10):int(num_ceps * 9 / 10)], axis=0))
Vx = np.array(X)
# use Vx as input values vector for neural net, k-means, etc

我在构建音频流派分类工具 (genreXpose) 时使用了这些东西。

PS:我使用的一个方便的音频转换工具是 PyDub

关于python - 使用 librosa 进行音频分类的 MFCC 特征描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25988749/

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