資源簡介
提取mfcc特征
代碼片段和文件信息
#?coding=utf-8
#?計算每一幀的MFCC系數
import?numpy
from?sigprocess?import?audio2frame
from?sigprocess?import?pre_emphasis
from?sigprocess?import?spectrum_power
from?scipy.fftpack?import?dct
#?首先,為了適配版本3.x,需要調整xrange的使用,因為對于版本2.x只能使用range,需要將xrange替換為range
try:
????xrange(1)
except:
????xrange?=?range
def?calcMFCC_delta_delta(signal?samplerate=16000?win_length=0.025?win_step=0.01?cep_num=13?filters_num=26
?????????????????????????NFFT=512?low_freq=0?high_freq=None?pre_emphasis_coeff=0.97?cep_lifter=22
?????????????????????????appendEnergy=True):
????‘‘‘計算13個MFCC+13個一階微分系數+13個加速系數一共39個系數
????‘‘‘
????feat?=?calcMFCC(signal?samplerate?win_length?win_step?cep_num?filters_num?NFFT?low_freq?high_freq
????????????????????pre_emphasis_coeff?cep_lifter?appendEnergy)??#?首先獲取13個一般MFCC系數
????result1?=?derivate(feat)
????result2?=?derivate(result1)
????result3?=?numpy.concatenate((feat?result1)?axis=1)
????result?=?numpy.concatenate((result3?result2)?axis=1)
????return?result
def?calcMFCC_delta(signal?samplerate=16000?win_length=0.025?win_step=0.01?cep_num=13?filters_num=26?NFFT=512
???????????????????low_freq=0?high_freq=None?pre_emphasis_coeff=0.97?cep_lifter=22?appendEnergy=True):
????‘‘‘計算13個MFCC+13個一階微分系數
????‘‘‘
????feat?=?calcMFCC(signal?samplerate?win_length?win_step?cep_num?filters_num?NFFT?low_freq?high_freq
????????????????????pre_emphasis_coeff?cep_lifter?appendEnergy)??#?首先獲取13個一般MFCC系數
????result?=?derivate(feat)??#?調用derivate函數
????result?=?numpy.concatenate((feat?result)?axis=1)
????return?result
def?derivate(feat?big_theta=2?cep_num=13):
????‘‘‘計算一階系數或者加速系數的一般變換公式
????參數說明:
????feat:MFCC數組或者一階系數數組
????big_theta:公式中的大theta,默認取2
????‘‘‘
????result?=?numpy.zeros(feat.shape)??#?結果
????denominator?=?0??#?分母
????for?theta?in?numpy.linspace(1?big_theta?big_theta):
????????denominator?=?denominator?+?theta?**?2
????denominator?=?denominator?*?2??#?計算得到分母的值
????for?row?in?numpy.linspace(0?feat.shape[0]?-?1?feat.shape[0]):
????????tmp?=?numpy.zeros((cep_num))
????????numerator?=?numpy.zeros((cep_num))??#?分子
????????for?t?in?numpy.linspace(1?cep_num?cep_num):
????????????a?=?0
????????????b?=?0
????????????s?=?0
????????????for?theta?in?numpy.linspace(1?big_theta?big_theta):
????????????????if?(t?+?theta)?>?cep_num:
????????????????????a?=?0
????????????????else:
????????????????????a?=?feat[int(row)][int(t?+?theta?-?1)]
????????????????if?(t?-?theta)?1:
????????????????????b?=?0
????????????????else:
????????????????????b?=?feat[int(row)][int(t?-?theta?-?1)]
????????????????s?+=?theta?*?(a?-?b)
????????????numerator[int(t?-?1)]?=?s
????????tmp?=?numerator?*?1.0?/?denominator
????????result[int(row)]?=?tmp
????return?result
def?calcMFCC(signal?samplerate=16000?win_length=0.025?win_step=0.01?cep_num=13?filters_num=26?NFFT=512
?????????????low_freq=0?high_freq=None?pre_emphasis_coeff=0.97?cep_lifter=22?ap
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2020-12-09?19:36??MFCC\
?????文件????????9286??2020-11-10?16:19??MFCC\calcmfcc.py
?????文件?????????920??2020-11-19?17:08??MFCC\getWave.py
?????文件????????4526??2020-11-22?22:58??MFCC\MFCC_test.py
?????文件????????5878??2020-11-10?15:20??MFCC\sigprocess.py
評論
共有 條評論