董梅 廖云霞 劉海山 吳鵬
摘要:語音識別是處理語音信號的重要問題,當今社會,人工智能技術(shù)發(fā)展迅速,語音識別技術(shù)已經(jīng)發(fā)展成為行業(yè)領(lǐng)域前列的先進技術(shù)。在以后的發(fā)展過程語音識別技術(shù)仍將發(fā)揮重大作用。語音信號是一種冗余度較高的非平穩(wěn)隨機信號,只有在短時間內(nèi)才認為變化時緩慢的,在這個短的時間區(qū)間內(nèi)語音信號特征保持穩(wěn)定。因此,本課題將對語音信號特征利用LPC技術(shù)和MFCC原理進行提取,利用MATLAB GUI界面設(shè)計系統(tǒng),使之能在行業(yè)領(lǐng)域發(fā)展,同時驗證理論知識。
關(guān)鍵詞:語音信號;語音識別;LPC算法;MFCC算法;MATLAB GUI
中圖分類號:TP368.1 文獻標識碼:A 文章編號:1009-3044(2018)20-0271-04
Design of Speech Signal Feature Extraction System based on Speech Matlab
DONG Mei, LIAO Yun-xia, LIU Hai-shan, WU Peng
(College of Information Science and Technology, Gansu Agricultural University, Lanzhou 730070, China)
Abstract: speech recognition is an important problem in dealing with speech signal. Nowadays, artificial intelligence technology has developed rapidly, and speech recognition technology has developed into the advanced technology in the field of industry. Speech recognition technology will still play an important role in the future development process. Speech signal is a kind of non-stationary random signal with high redundancy. It is considered that the change is slow in a short period of time, and the feature of speech signal remains stable in this short time range. Therefore, this subject will use LPC technology and MFCC principle to extract the feature of speech signal, and use MATLAB GUI interface design system to make it in the industry. Development in the field , while validating the theoretical knowledge.
Key words: speech signal; speech recognition; LPC algorithm; MFCC algorithm; MATLAB GUI
1 引言
語言是人類信息交流的主要工具,在人類的生活中,語音信號無處不在語音信號特征的提取與保存對人類來說是一個巨大的進步。語音信號是一種冗余度較高的非平穩(wěn)隨機信號,只有在短時間內(nèi)才認為變化時緩慢的,在這個短的時間區(qū)間內(nèi)語音信號特征保持穩(wěn)定。[1]正常情況下,我們?nèi)说亩淇梢越邮艿赖乱纛l頻率范圍最大不超過20KHZ,最低不低于60Hz,一般人正常范圍在300Hz—4KHZ[2]。從本質(zhì)上來說,語音是一種模擬信號,在分析和處理的過程中,我們常常需要把模擬信號轉(zhuǎn)換為數(shù)字信號[3]。這樣做的好處是因為數(shù)字語音信號的采集和處理方式比模擬信號更加靈活方便。語音信號的短時平穩(wěn)性和間歇性等這些重要特性[4],為了更加直觀科學的認識語音信號的波形和頻譜,我們可以對語音信號的特征參數(shù)進行客觀分析,同時可以觀察頻譜波形。如果我們需要較為精確的估計語音參數(shù),我們應該充分利用線性預測編碼技術(shù)(LPC)。在語音信號中,預測系數(shù)是非常重要的信息來源,基于人耳聽覺模型的語音特征參數(shù)是倒譜,在語音系統(tǒng)和說話人識別系統(tǒng)中,基于聽覺特性的美爾倒譜系數(shù)(MFCC)是重要參數(shù)之一[,現(xiàn)在被廣泛采用][5]。
信息技術(shù)飛速發(fā)展,語音識別技術(shù)在各個領(lǐng)域滲透于人類社會生活中,而在未來的發(fā)展中,語音識別系統(tǒng)的作用將被更大化地發(fā)揮出來。在建立語音識別系統(tǒng)的過程中,語音信號特征提取將顯得尤為重要[6]。本文主要介紹如何利用MATLAB GUI界面實現(xiàn)語音信號特征提取。
2 語音信號的典型特征和分析技術(shù)
語音信號處理的兩種典型方式是波形顯示和參數(shù)顯示。波形顯示可以直觀的認識語音信號;而參數(shù)顯示則可對語音信號進行深入分析以及匹配語音識別系統(tǒng)和說話人識別的特征。
2.1 LPC算法原理[7]
LPC是線性預測編碼(linear predictive coding,LPC)的縮寫,是常用的且很重要的一種編碼方法。從原理上來看,通過分析話音波形來產(chǎn)生聲道激勵和轉(zhuǎn)移函數(shù)的參數(shù)是LPC,實際上是把對聲音波形的編碼轉(zhuǎn)化成了對這些參數(shù)的編碼,從而使聲音的數(shù)據(jù)量大大地減少。使用LPC分析在接收端得到的參數(shù),將話音通過話音合成器重構(gòu)。實際上,合成器是一個離散的時變線性濾波器,隨著時間逐漸變化,代表著人的話音生成系統(tǒng)模型。時變線性濾波器不僅可以當作預測器使用,也可以當作合成器使用。但在分析話音波形時,我們主要還是將它當作預測器使用,而在合成話音的時候,我們就將它當作話音生成模型使用。模型的參數(shù)和激勵條件可以隨著話音波形的變化,周期性地適合新的需要。
2.2 MFCC算法原理[8]
MFCC(Mel倒譜系數(shù))很形象地模擬了人的聽覺特性,是一種符合人類聽覺特性的語音特征參數(shù)。在對語音信號的預處理之后,我們將提取語音信號的特征參數(shù),一般情況下,我們將語音信號的特征參數(shù)分為兩類:第一類是時域特征參數(shù),通常情況下,一幀語音信號中的各個時域采樣將直接構(gòu)成一個參數(shù)矢量,第二類是變化域特征參數(shù) , 目前,最常用的特征參數(shù)是為頻域。
3軟件總體設(shè)計
MATLAB GUI [9]是一種圖形用戶界面,它是由各種圖形對象(如圖像窗口、圖軸、菜單、按鈕、文本框)等構(gòu)建的,為人機交流信息提供工具和方法.它有兩個方便操作的優(yōu)點,不僅可以把已有的仿真程序潛入進去,而且可以以人機交互的動態(tài)方式把仿真后的圖形化結(jié)果直觀呈現(xiàn),使用者只需要知道操作的步驟,不需要知道代碼的具體內(nèi)容,就可以非常方便的操作界面了。[10]在設(shè)計MATLAB GUI界面的時候,我們可以有兩種方法:第一種是通過編寫m文件,直接可以開發(fā)GUI;第二種是通過利用MATLAB 圖形用戶界面開發(fā)環(huán)境GUIDE 來形成相應m文件.在GUIDE界面中,分為菜單欄和工具欄、用戶控件集、用戶界面編輯窗口等3個部分,它向用戶提供了一個高度有效的集成開發(fā)環(huán)境。
3.1 系統(tǒng)界面的規(guī)劃
要使得該系統(tǒng)能實現(xiàn)對語音信號的波形和典型參數(shù)特征的實時顯示,我們將以下面圖3的原理框圖為主,設(shè)計規(guī)劃我們的GUI界面:
系統(tǒng)功能的主要模塊主要有四部分:時域波形、頻譜分析、倒譜分析、功率譜分析等四個模塊。我們將分別以屏幕、文件以及提示等進行顯示或保存系統(tǒng)理操作的結(jié)果,同時我們將提供統(tǒng)一的輸入輸出操作接口, 而不同算法計算的結(jié)果可在不同目錄下進行保存.該系統(tǒng)的界面模塊將以下圖所示框圖為主來設(shè)計,如圖3:
3.2系統(tǒng)的界面設(shè)計
各界面的設(shè)計主要采用了靜態(tài)文本框、列表框、可編輯文本框、觸控鈕、面板和坐標軸等控件來實現(xiàn)一些功能。各個控件的功能通過編寫其相應的回調(diào)函數(shù)[11]來實現(xiàn)。
3.2.1系統(tǒng)的開始界面
開始界面是軟件開始運行時的主要界面,也是進入語音信號特征提取系統(tǒng)[8]的各個子界面的接口,具有提示用戶操作的作用,主要按鈕是進入系統(tǒng)。如下圖所示:
3.2.2 系統(tǒng)的子界面
在系統(tǒng)的子界面中,我們將對語音進行信號特征提取,在子界面下,有四個主要按鈕(時域波形、頻譜分析、倒譜分析、功率譜分析);以及四個屬性菜單欄(打開、數(shù)據(jù)分析與處理、結(jié)果圖像保存、幫助)。如下圖所示:
3.2.3 語音信號特征提取的具體步驟及分析
1)MALTAB對語音信號的提取
當我們進入到系統(tǒng)界面的時候,我們首先要調(diào)取一段音頻,所以,在調(diào)取音頻之前,我們要將系統(tǒng)界面進行初始化,然后點擊菜單欄下的調(diào)取音頻按鈕,調(diào)取一段文件大小小于8K的音頻文件,調(diào)取的音頻文件格式必須為*wav格式的[12]。我們可以利用wavread函數(shù)對語音信號進行采樣,然后直接設(shè)置采樣頻率和采樣點數(shù)。Matlab程序源代碼如下所示:
[FileName,PathName]= uigetfile('*.wav'); %打開對話框
if ~isequal(FileName, 0) % open(file);
[y, fs]=audioread([PathName FileName]);%x是音頻的數(shù)據(jù)向量,fs是采樣頻率(單位Hz),bits是每一個采樣點的數(shù)據(jù)深度(即比特數(shù))
end
handles.data=y; %x是向量含有的所有數(shù)字的個數(shù),與數(shù)據(jù)的大小有關(guān)
handles.sample=fs; %采樣的頻率 一般為8k
t=length(handles.data)/fs; %采樣的總時間
tt=0:t/length(handles.data):t; %中間計算出來的采樣周期
handles.t=tt(1:length(tt)-1); %作為要顯示圖形的橫坐標
guidata(hObject, handles); %保存更新
axes(handles.axes1); %打開的文件顯示在第二個里
plot(handles.t,y);
ylabel('signal Magnitude ');
xlabel('time(s)');
title('時域波形');
2)語音信號特征波形分析與結(jié)果顯示
語音信號特征提取系統(tǒng)在各個子模塊間的內(nèi)容和分析過程有不同,但其主要的設(shè)計思想理念是一樣的。下面將對語音的信號特征逐一展開論述:
(1)頻譜分析
將時域信號變換至頻域加以分析的方法稱為頻譜分析[13]。頻譜分析的目的是把復雜的時間歷程波形,通過傅里葉變換,將其分解為若干單一的諧波分量來進行研究,從而獲得信號的頻率結(jié)構(gòu)以及各諧波和相位信息。
對于模擬信號來說,進行頻譜分析時,首先,我們要對其進行抽樣,使其離散化,然后我們可以利用離散傅里葉變換(DFT)或者快速傅里葉變換(FFT),分析其幅度(ABS)和相位(ANGLE)的圖像,而對于數(shù)字信號來說,我們則可直接利用離散傅里葉變換或快速傅里葉變換進行分析。其matlab源程序代碼如下:
Fs=handles.sample;
Fs=100;N=256; %采樣頻率和數(shù)據(jù)點數(shù)
n=0:N-1;t=n/Fs; %時間序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信號
y=fft(x,N); %對信號進行快速Fourier變換
mag=abs(y); %求得Fourier變換后的振幅
f=n*Fs/N; %頻率序列
plot(f,mag); %繪出隨頻率變化的振幅
xlabel('頻率/Hz');
ylabel('振幅');
title('N=128');
grid on;
顯示結(jié)果如下:
(2) 倒譜分析
倒譜參數(shù)是重要的語音特征參數(shù),它是對語音進行同態(tài)處理的產(chǎn)物,同態(tài)處理也稱為同態(tài)濾波,實現(xiàn)將卷積關(guān)系變換為求和關(guān)系的分離處理,即解卷。對于語音信號進行解卷,可將語音信號的聲門激勵信息及聲道響應信息分離開來,從而求得聲道共振特性和基音周期,用于語音編碼、合成和識別。其matlab源程序代碼如下:
c=fft(log(abs(handles.data)+eps)); % ×
ms1=handles.sample/1000;
ms20=handles.sample/50;
q=(ms1:ms20)/handles.sample;
axes(handles.axes1);
plot(q,abs(c(ms1:ms20)));
xlabel('倒角');
ylabel('倒譜幅度');
title('倒譜圖');
其結(jié)果顯示如下:
(3)功率譜分析
功率譜是數(shù)字信號處理的主要內(nèi)容之一,主要研究在頻域中,信號的各種特征,這樣做的目的是使被淹沒在噪聲中的有用信號根據(jù)有限數(shù)據(jù)在頻域內(nèi)將其進行提取[14]。離散的非周期序列Xn可以用周期性連續(xù)信號x(t)的頻譜表示,它的幅度頻譜的平方│Xn│2所排成的序列,所以被稱之為該周期信號的“功率譜”。其matlab源程序代碼如下:
fs=handles.sample; %ù
N=1024;
fs=randn(1,N);
Pxx=10*log10(abs(fft(fs).^2)/N);
f=(0:length(Pxx)-1)/length(Pxx);
axes(handles.axes1);
plot(f,Pxx);
xlabel('頻率');
ylabel('功率(dB)');
title('周期圖法N=256')
grid on;
結(jié)果顯示如下:
4 結(jié)語
本文較為簡單的闡述了語音信號特征提取的過程以及系統(tǒng)設(shè)計的原理?;贛ATLAB GUI技術(shù),較為直觀地完成了語音信號特征提取系統(tǒng)的界面設(shè)計和算法設(shè)計,通過系統(tǒng)界面,用戶可以直接上傳和試聽在語音庫中的音頻,然后通過調(diào)取,提取參數(shù),顯示其音頻的波形。MATLAB GUI界面簡單直觀,良好的人機交互功能使操作方便可行。通過該界面可以非常方便地分析語音信號的典型特征,提取語音信號的相關(guān)參數(shù)和信號特征,驗證理論知識。
參考文獻:
[1] 孫尚宏,白珍.MATLAB的語音信號頻譜分析[J].河套學院學報,2016,13(01):72-75.
[2]王光艷,趙曉群,王霞.基于MATLAB GUI的語音信號特征提取系統(tǒng)設(shè)計[J].河北工業(yè)大學學報,2010,39(04):14-18.
[3] 李靜.基于MATLAB的語音信號采集和處理系統(tǒng)的設(shè)計[J].山西大同大學學報(自然科學版),2016,32(02):30-33.
[4]李靜.基于MATLAB的語音信號采集和處理系統(tǒng)的設(shè)計[J].山西大同大學學報(自然科學版),2016,32(02):30-33.
[5] 劉衛(wèi)東,孟曉靜,王艷芬.語音信號處理實驗教學研究探索[J].實驗室研究與探索,2008(04):72-74.
[6]李向吉,劉承璽,王秉均.語音識別中的語音信號特征提取及分析[J].天津通信技術(shù),1996(02):2-7.
[7] 高惠琴,吳阿華.LPC技術(shù)的原理及其在語音信號處理中的應用[J].電聲技術(shù),1985(06):1-6.
[8] 熊偉,羅云貴.語音識別的MFCC算法研究[J].現(xiàn)代商貿(mào)工業(yè),2010,22(03):291-292.
[9]方倪,李丹鳳,胡安正.基于MATLAB的音頻信號處理[J].物理通報,2017(10):94-95.
[10]陳璇,李啟海,朱萬彬,張繼勇,魯秀娥.基于聲卡和MATLAB的音頻信號的采集和處理[J].長春理工大學學報(自然科學版),2010,33(03):71-74.
[11] 王玉林,葛蕾,李艷斌.新型界面開發(fā)工具:MATLAB/GUI[J].無線電通信技術(shù),2008,34(06):50-52.
[12]張節(jié).語音信號的預處理和特征提取技術(shù)[J].電腦知識與技術(shù),2009,5(22):6280-6282.
[13] 張節(jié).語音信號的預處理和特征提取技術(shù)[J].電腦知識與技術(shù),2009,5(22):6280-6282.
[14]潘濤.基于Matlab實現(xiàn)情緒語音功率譜估計的幾種方法運用[J].自動化與儀器儀表,2015(04):184-185+188.