Matlab 語譜圖(時頻圖)繪制與分析
語譜圖:先將語音信號作傅里葉變換,然后以橫軸為時間,縱軸為頻率,用顏色表示幅值即可繪制出語譜圖。在一幅圖中表示信號的頻率、幅度隨時間的變化,故也稱“時頻圖”。
%matlab 2016a
%需要先安裝語音處理工具箱(matlab_voicebox)
[Y,FS,WMODE,FIDX]=readwav('sound0_10','s',-1,-1);
%Y為讀到的雙聲道數據
%FS為采樣頻率
%這里的輸入參數sound0_10為雙聲道數字0到10的聲音文件(sound0_10.wav)
%其它參數的功能忘了
Y1 = Y(:,1); %Y為雙聲道數據,取第2通道
plot(Y1); %畫Y1波形圖
grid on;
specgram(Y1,2048,44100,2048,1536);
%Y1為波形數據
%FFT幀長2048點(在44100Hz頻率時約為46ms)
%采樣頻率44.1KHz
%加窗長度,一般與幀長相等
%幀重疊長度,此處取為幀長的3/4
圖1 數字0-10波形圖
圖2 數字0-10語譜圖
圖3
語譜圖簡單分析
1、san(1),si(4),shi(2)聲母相同,圖2中3,4,10三個音的頭部相似。(從圖中還能看出讀音不准,4、10平卷舌不分。本人普通話三級甲等,😦 )
2、語譜圖中低頻部分頻率幅值隨時間的變化趨勢非常清楚地顯示了聲調。
3、從圖3可以預測,結合時域和頻域數據,中文的小詞匯量孤立詞語音識別,應該沒有太大難度。
** 相關文件可參考: https://github.com/hedgeli/ChineseSpeakRecognize **