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