1. 讀取wav文件
使用scipy.io.wavfile
import scipy.io.wavfile as wav
fs, signal = wav.read(filename)
fs是wav文件的采樣率,signal是wav文件的內(nèi)容,filename是要讀取的音頻文件的路徑。我們將signal繪制出來就是下圖這個樣子。

image.png
2. 使用python_speech_features提取特征
①M(fèi)FCC:
默認(rèn)提取的特征維度是13,通常的做法是將該特征進(jìn)行一階差分和二階差分,并將結(jié)果進(jìn)行合并。
from python_speech_features import *
import numpy as np
def get_mfcc(data, fs):
wav_feature = mfcc(data, fs)
d_mfcc_feat = delta(wav_feature, 1)
d_mfcc_feat2 = delta(wav_feature, 2)
feature = np.hstack((wav_feature, d_mfcc_feat, d_mfcc_feat2))
return feature
參數(shù)介紹:
內(nèi)容來源于 金澤夕
https://www.cnblogs.com/zhuimengzhe/p/10223510.html
mfcc:
python_speech_features.base.fbank(signal, samplerate=16000, winlen=0.025, winstep=0.01, nfilt=26, nfft=512, lowfreq=0, highfreq=None, preemph=0.97, winfunc=<function >)
- signal - 需要用來計算特征的音頻信號,應(yīng)該是一個N*1的數(shù)組
- samplerate - 我們用來工作的信號的采樣率
- winlen - 分析窗口的長度,按秒計,默認(rèn)0.025s(25ms)
- winstep - 連續(xù)窗口之間的步長,按秒計,默認(rèn)0.01s(10ms)
- numcep - 倒頻譜返回的數(shù)量,默認(rèn)13
- nfilt - 濾波器組的濾波器數(shù)量,默認(rèn)26
- nfft - FFT的大小,默認(rèn)512
- lowfreq - 梅爾濾波器的最低邊緣,單位赫茲,默認(rèn)為0
- highfreq - 梅爾濾波器的最高邊緣,單位赫茲,默認(rèn)為采樣率/2
- preemph - 應(yīng)用預(yù)加重過濾器和預(yù)加重過濾器的系數(shù),0表示沒有過濾器,默認(rèn)0.97
- ceplifter - 將升降器應(yīng)用于最終的倒譜系數(shù)。 0沒有升降機(jī)。默認(rèn)值為22。
- appendEnergy - 如果是true,則將第0個倒譜系數(shù)替換為總幀能量的對數(shù)。
- winfunc - 分析窗口應(yīng)用于每個框架。 默認(rèn)情況下不應(yīng)用任何窗口。 你可以在這里使用numpy窗口函數(shù) 例如:winfunc=numpy.hamming
返回: 一個大小為numcep的numpy數(shù)組,包含著特征,每一行都包含一個特征向量。
delta:
python_speech_features.base.delta(feat, N)
- feat - 一個大小為特征數(shù)量的numpy數(shù)組,每一行都有一個特征向量
- N - 對于每一幀,計算delta特征根據(jù)前后N幀
- 返回:一個大小為特征數(shù)量的numpy數(shù)組,包含有delta特征,每一行都有一個delta向量
②logfbank
def get_fbank(data, fs):
wav_feature = logfbank(data, fs)
return wav_feature
參數(shù)介紹:
python_speech_features.base.logfbank(signal, samplerate=16000, winlen=0.025, winstep=0.01, nfilt=26, nfft=512, lowfreq=0, highfreq=None, preemph=0.97)
- signal - 需要用來計算特征的音頻信號,應(yīng)該是一個N*1的數(shù)組
- samplerate - 我們用來工作的信號的采樣率
- winlen - 分析窗口的長度,按秒計,默認(rèn)0.025s(25ms)
- winstep - 連續(xù)窗口之間的步長,按秒計,默認(rèn)0.01s(10ms)
- nfilt - 濾波器組的濾波器數(shù)量,默認(rèn)26
- nfft - FFT的大小,默認(rèn)512
- lowfreq - 梅爾濾波器的最低邊緣,單位赫茲,默認(rèn)為0
- highfreq - 梅爾濾波器的最高邊緣,單位赫茲,默認(rèn)為采樣率/2
- preemph - 應(yīng)用預(yù)加重過濾器和預(yù)加重過濾器的系數(shù),0表示沒有過濾器,默認(rèn)0.97
- 返回: 一個包含特征的大小為nfilt的numpy數(shù)組,每一行都有一個特征向量