📜  计算 mfcc python (1)

📅  最后修改于: 2023-12-03 15:27:57.889000             🧑  作者: Mango

计算MFCC的Python

MFCC (Mel频率倒谱系数) 是一种用于语音信号处理的特征抽取方法,它模仿人类听觉系统的特性,对语音信号进行分析,得出一系列能够反映语音特性的数字表示。在语音识别、语音合成、说话人识别等领域有广泛的应用。本文将介绍如何使用Python计算MFCC。

安装依赖

为了计算MFCC,我们需要安装一些Python的库:

  • NumPy: 数组计算库
  • SciPy: 科学计算库,包括FFT(快速傅里叶变换)
  • Python_speech_features: 计算MFCC和其他语音特征的Python库,它依赖于NumPy和SciPy库。
  • wave: 读取音频文件的Python库

安装命令如下:

pip install numpy scipy python_speech_features
计算MFCC

以下是一个简单的Python程序,用于计算一个音频文件的MFCC:

import wave
import numpy as np
from scipy.fftpack import dct
from python_speech_features import mfcc
from python_speech_features import delta
from python_speech_features import logfbank

# 打开WAV文件
filename = "test.wav"
with wave.open(filename,'rb') as w:
    framerate = w.getframerate()
    frames = w.readframes(w.getnframes())
    signal = np.frombuffer(frames,dtype=np.short)

# 计算MFCC
mfcc_feat = mfcc(signal,framerate)

# 计算MFCC的一阶和二阶导数
d_mfcc_feat = delta(mfcc_feat,2)
dd_mfcc_feat = delta(d_mfcc_feat,2)

# 输出结果
print("MFCC:", mfcc_feat)
print("Delta of MFCC:", d_mfcc_feat)
print("Delta-Delta of MFCC:", dd_mfcc_feat)

程序首先打开一个音频文件,然后使用NumPy从其中读取音频信号。接下来,它使用python_speech_features库中的mfcc()函数计算MFCC。然后,它计算MFCC的一阶和二阶导数,并输出结果。

参数说明

mfcc()函数有一些可选参数,用于调整MFCC的计算方式。以下是一些常用参数:

  • winlen: 分析窗口的长度(以秒为单位),默认值为0.025秒
  • winstep: 分析窗口之间的距离(以秒为单位),默认值为0.01秒
  • numcep: 要计算的MFCC系数数量,默认值为13
  • nfilt: 滤波器数量,默认值为26
  • nfft: 在应用快速傅里叶变换之前,输入信号将被零填充到nfft点,默认为512个点

在使用mfcc()函数时,可以通过关键字参数将这些值传递给它。例如,要计算40个MFCC系数而不是默认的13个,可以这样调用mfcc()函数:

mfcc_feat = mfcc(signal,framerate,numcep=40)
总结

在本文中,我们介绍了如何使用Python计算MFCC,包括读取音频文件、计算MFCC、计算MFCC的一阶和二阶导数。我们还讨论了一些常用的mfcc()函数参数。这些知识可帮助您在语音信号处理中更好地使用MFCC。