基於聽覺特性的Mel頻率倒譜分析
心理學研究表明:人類對於聲音音調的感覺其實都不是線性的
客觀上:用頻率表示
主觀上:音調的單位用Mel標度
- 公式
根據人耳對低頻信號比對高頻信號更敏感這一原則,研究者根據心理學實驗得到了類似於耳蝸作用的一組濾波器組 ,這就是Mel頻率濾波器組。濾波器組一般爲20-40個(26個最好)三角形濾波器
Mel-頻率
目的:模擬人耳對不同頻率語音的感知
人類對不同頻率語音有不同的感知能力
- 1kHz以下,與頻率成線性關係
- 1kHz以上,與頻率成對數關係
Mel頻率定義:1Mel—1kHz音調感知程度的1/1000
Mel頻率倒譜系數(Mel Frequency Cepstrum Coefficient, MFCC)
MFCC計算過程
- 將信號進行分幀,預加重和加漢明窗處理,然後進行短時傅立葉變換得到其頻譜
- 對於每一幀,計算週期功率譜
- 將Mel濾波器應用到功率譜中,計算每個濾波器的能量和
- 將每個濾波器的輸出取對數(模仿人耳對數式感知聲強、壓縮動態範圍),得到相應頻帶的對數功率譜
- 對每個對數能量進行離散餘弦變換(DCT,濾波器通常都有交疊,因此濾波器能量彼此相關;DCT對能量進行去相關),得到26個MFCC係數
- 保留DCT的2-13個係數,其餘係數捨去(因爲DCT的高階係數代表濾波器能量的快速變化,事實證明這些快速變化影響語音識別的表現,所以我們去除高階係數)
- 這種直接得到的MFCC特徵作爲靜態特徵,將這種靜態特徵做一階和二階差分,得到相應的動態特徵(二階差分:一階差分的差分)
MFCC將人耳的聽覺感知特性和語音的產生機制相結合,因此目前大多數語音識別系統中廣泛使用這種特徵
過程:
- 語音輸入
- 預處理
- 數字化
- 特徵提取——整段語音最後變成一系列特徵向量
- 增加一階特徵(“delta”)
- 增加二階特徵(“acceleration”)
- 合併特徵
MFCC特徵參數:
- 26個濾波器,12個MFCC係數,外加短時能量
- 即:靜態特徵13維+一階特徵13維+二階特徵13維 共39維
clear all;
%讀取語音信號
[x1,fs]=audioread('jia.wav');
x2=audioread('jia1.wav');
x3=audioread('yi.wav');
% 幀長
wlen=256;
% 幀移
inc=128;
%MEL濾波器個數
p=24;
% 幅值歸一化
x1=x1/max(abs(x1));
x2=x2/max(abs(x2));
x3=x3/max(abs(x3));
%調用函數z_mfcc,計算mfcc參數
ccc1=z_mfcc(x1,fs,p,wlen,inc);
ccc2=z_mfcc(x2,fs,p,wlen,inc);
ccc3=z_mfcc(x3,fs,p,wlen,inc);
%比較mfcc參數
figure(1)
ccc_1=ccc1(:,1);
ccc_2=ccc2(:,1);
plot(ccc_2,'-g');hold on
plot(ccc_1,'-b');
xlabel('甲和甲1的MFCC比較','fontsize',12);
ylabel('幅值','fontsize',12);
figure(2)
ccc_1=ccc1(:,1);
ccc_3=ccc3(:,1);
plot(ccc_3,'-g');hold on
plot(ccc_1,'-b');
xlabel('甲和乙的MFCC比較','fontsize',12);
ylabel('幅值','fontsize',12);
效果: