[英]How can I extract mfcc features for audio and pass it to the cnn to train the model?
如何使用 MFCC 算法提取音频特征并将其与卷积神经网络一起使用来训练 model?
我已经使用 MFCC 提取了音频的特征,并且文件包含浮点列,但我无法区分这些列?
for filename in os.listdir(directoryName):
if filename.endswith('.wav'): # only get MFCCs from .wavs
(rate,sig) = wav.read(directoryName + "/" +filename)
mfcc_feat = mfcc(sig,rate)
fbank_feat = logfbank(sig,rate)
outputFile = resultsDirectory + "/" + os.path.splitext(filename)[0] + ".csv"
file = open(outputFile, 'w+')
numpy.savetxt(file, fbank_feat, delimiter=",")
file.close() # close file
The values contained in the csv file like this.
7.01E+00 5.94E+00 5.28E+00 5.25E+00 5.24E+00
5.87E+00 3.53E+00 3.61E+00 2.32E+00 2.13E+00
5.68E+00 8.36E-01 1.75E-01 -8.48E-01 1.77E+00
7.96E+00 6.12E+00 5.47E+00 4.66E+00 4.34E+00
6.29E+00 4.34E+00 3.51E+00 3.15E+00 2.30E+00
6.37E+00 5.34E+00 4.76E+00 3.98E+00 3.77E+00
4.72E+00 1.62E+00 3.09E+00 1.66E+00 1.37E+00
6.14E+00 5.82E+00 5.12E+00 4.11E+00 3.76E+00
7.49E+00 3.79E+00 2.25E+00 5.03E+00 5.69E+00
5.89E+00 4.88E+00 5.88E+00 6.22E+00 6.19E+00
音频信号的 MFCC 特征是一个时间序列。 如果您的输入音频在 44100 kHz 时为 10 秒,并且 MFCC 有 1024 个样本跳跃大小(大约 23 毫秒),那么您将获得 430 帧,每个帧都有 MFCC 系数(可能为 20)。
为了用卷积神经网络对其进行分类,您需要将其拆分为实际大小的固定大小分析 windows。 例如,43 个 MFCC 帧 window 将对应大约 1 秒。 CNN 的输入是 43x20x1 的形状。 如果您想要重叠分析 windows(可以提高性能,但会增加计算时间) - 然后在计算下一个 window 时向前跳少于 43 帧。
这是示例 Python 代码的答案。 它显示为 mel-spectrogram,但可以通过将 librosa.feature.melspectrogram() 调用替换为librosa.feature.melspectrogram()
librosa.feature.mfcc()
适应 MFCC。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.