【问题标题】:How can I extract mfcc features for audio and pass it to the cnn to train the model?如何提取音频的 mfcc 特征并将其传递给 cnn 以训练模型?
【发布时间】:2020-01-24 13:56:12
【问题描述】:

如何使用 MFCC 算法提取音频特征并将其与卷积神经网络一起使用来训练模型?

我已经使用 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

【问题讨论】:

    标签: python conv-neural-network mfcc


    【解决方案1】:

    音频信号的 MFCC 特征是一个时间序列。如果您的输入音频在 44100 kHz 时为 10 秒,MFCC 的跳数为 1024 个样本(大约 23 毫秒),那么您将获得 430 帧,每个帧都有 MFCC 系数(可能为 20)。

    为了使用卷积神经网络对其进行分类,您需要将其拆分为实际大小的固定大小的分析窗口。例如,一个 43 MFCC 帧窗口将对应于大约 1 秒。 CNN 的输入是 43x20x1 的形状。如果您想要重叠分析窗口(可以提高性能,但会增加计算时间) - 在计算下一个窗口时向前跳少于 43 帧。

    这里是an answer with example Python code。它显示为 mel-spectrogram,但可以通过将对 librosa.feature.melspectrogram() 的调用替换为 librosa.feature.mfcc() 来适应 MFCC。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-11
      • 2021-11-16
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 2018-10-25
      相关资源
      最近更新 更多