python提取mfcc参数(python_speech_features和librosa两个包速度比较)

1.比较代码

import librosa
import os
import time
import numpy as np
import scipy.io.wavfile as wav
import python_speech_features
from python_speech_features import mfcc

#读取某文件夹下的所有.wav文件,并返回文件全称
def file_name(file_dir):
    L = []
    for root, dirs, files in os.walk(file_dir):
        for file in files:
            if os.path.splitext(file)[1] == '.wav':
                L.append(os.path.join(root, file))
        return L
'''
调用python_speech_features包
'''
def mfcc_1(filename):
    fs, wavedata = wav.read(filename)
    mfcc_feature = mfcc(wavedata, fs, winlen=0.064, winstep=0.032, nfilt=13, nfft=1024)  # mfcc系数     # nfilt为返回的mfcc数据维数,默认为13维
    d_mfcc_feat = python_speech_features.base.delta(mfcc_feature, 1)     # feat 为mfcc数据或fbank数据    # N - N为1代表一阶差分,N为2代表二阶差分     # 返回:一个大小为特征数量的numpy数组,包含有delta特征,每一行都有一个delta向量
    d_mfcc_feat2 = python_speech_features.base.delta(mfcc_feature, 2)
    mfccs = np.hstack((mfcc_feature, d_mfcc_feat, d_mfcc_feat2))
    # 返回 帧数*39 的mfccs参数
    return mfccs
'''
调用librosa包
'''
def mfcc_2(filename):
    y, sr = librosa.load(filename, sr=None)
    mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=39)  # n_mfcc为返回的mfcc数据维度
    mfccs=np.array(mfccs)#转成numpy类型
    # 返回 帧数*39 的mfccs参数
    return mfccs.T

def main():
	#定义一些文件路径
    wav_dir="./data"
    filenames=file_name(wav_dir)
    #开始计时
    start_time=time.time()
	#循环读取文件名称并求取mfcc参数
    for filename in filenames:
        mfccs=mfcc_1(filename)
    #结束计时
    end_time=time.time()
    print("程序运行时长",str(end_time-start_time))

if __name__ == '__main__':
    main()

2.结果

本次测试使用的是1200条语音,分别调用python_speech_features和librosa两个包求取39维MFCC参数,由于在后续的训练中需要提取大量语音的mfcc参数,这里比对了两种方法的运行时间:

2.1 调用python_speech_features包生成mfccs参数

程序运行时长 6.4495463371276855 s

2.2 调用librosa包生成mfccs参数

程序运行时长 9.830938816070557 s

在进行的速度方面,使用python_speech_features包生成的速度较快一些。

3. mfccs波形比对

在这里插入图片描述

4. 后续训练差异

这一块的内容,后续会补上。

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王延凯的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值