1 概述
在現(xiàn)代社會,“懶人科技”大行其道,。當面臨眾多繁瑣的按鍵操作和菜單選擇的時候,,簡單地說出指令,是最具有人情味的人機操作界面,。讓身邊的各種電子設備可“聽從”人類的語音,,是從電影“星球大戰(zhàn)”就開始的科技發(fā)展目標。雖然目前的科技還不能做到讓計算機完全理解人類的所有自然語音,,但是可以在一定程度上實現(xiàn)這個夢想,。
2 特定人語音識別技術及原理
特定人語音識別(ASR,Auto Speech Recognition)技術是基于“關鍵詞語列表”的識別技術,,它是對大量的語音數據(相當于對數千人采集的數萬小時的有效聲音數據)經語言學家語音模型分析,,建立數學模型,并經過反復訓練提取基元語音的細節(jié)特征,,以及提取各基元間的特征差異,,得到在統(tǒng)計概率最優(yōu)化意義上的各個基元語音特征,最后才由資深工程師將算法以及語音模型轉換成硬件芯片并應用在嵌入式系統(tǒng)中,。
ASR技術每次識別的過程就是把用戶說出的語音內容,,通過頻譜轉換為語音特征,再將這個轉換后的語音特征和“關鍵詞語列表”中的條目一一進行匹配,,最優(yōu)匹配的一條即作為識別結果,。比如ASR技術在語音控制的手機應用中,這個“關鍵詞語列表”的內容就是電話本中的人名,、手機的菜單命令或手機存儲卡中的歌曲名字,。不論這個列表的條目內容是什么,只需要用戶設置相關的寄存器,,就可以把相應的待識別條目內容以字符形式傳遞給識別引擎,。
由此可見,語音識別芯片完成的工作就是:把MIC(麥克風)輸入的聲音進行頻譜分析后提取語音特征,,再和關鍵詞語列表中的關鍵詞語進行對比匹配,,最后找出得分最高的關鍵詞語作為識別結果輸出。
通常基于ASR技術的語音識別芯片能在兩種情況下給出識別結果:
①外部送入預定時間的語音數據(比如5 s的語音數據),,芯片對這些語音數據運算分析后,,給出識別結果。
②外部送入語音數據流,,語音識別芯片通過端點檢測(VAD,,Voice Activity Detection)技術檢測出用戶停止說話,把用戶開始說話到停止說話之間的語音數據進行運算分析后,,給出識別結果,。
對于第一種情況,可以理解為設定了一個定時錄音(如5 s的語音數據),,芯片在5 s后會停止把聲音送入識別引擎,,并且根據已送入引擎的語音數據計算出識別結果。
對于第二種情況,,需要了解VAD的工作原理:VAD技術是在一段語音數據流中,,判斷出哪個時間點是人聲音的開始,哪個時間點是人聲音的結束,。判斷的依據是,,在背景聲音的基礎上有了語音發(fā)音,則視為聲音的開始,。而后,,檢測到一段持續(xù)時間的背景音(比如600 ms),則視為人聲說話結束,。通過VAD判斷出人聲說話的區(qū)域后,,語音識別芯片會把這期間的聲音數據進行識別處理,計算出識別結果,。
除了以上兩種情況外,,語音識別算法無法“主動”地判斷出是否識別出了一個結果。這是因為,,在計算過程中的任何時刻,,語音識別器都會對已送人識別芯片的聲音數據進行分析,并根據匹配程度為識別列表中的關鍵詞語進行打分,,最匹配的打分最高,。但是,由于識別算法不知道用戶后面是否還繼續(xù)說話,,所以無法主動地判斷已經識別出的結果,。
3 語音識別芯片LD3320的工作原理
3.1 語音識別系統(tǒng)原理結構
LD3320語音識別芯片采用的就是ASR技術,圖1就是由LD3320和單片機(或嵌入式系統(tǒng))組成的語音識別系統(tǒng)原理框圖,。圖中給出了LD3320的內部原理結構,,本文中選用的MCU是STC10L08XE單片機,。
語音識別芯片LD3320是ICRoute公司的產品,它采用ASR技術,,提供了一種脫離按鍵,、鍵盤、鼠標,、觸摸屏等GUI操作方式且基于語音的用戶界面VUI(Voice User Interface),,使得用戶對該系統(tǒng)的操作更簡單、快速和自然,。
用戶只需要把識別的關鍵詞語以字符串的形式傳送進芯片,即可以在下次識別中立即生效,。比如,,用戶在51等主控MCU的編程中,簡單地通過設置芯片的寄存器,,把諸如“你好”這樣的識別關鍵詞語的內容動態(tài)地傳入芯片中,,芯片就可以識別所設定的關鍵詞語了。每個關鍵詞語可以是單字,、詞組,、短句或者任何的中文發(fā)音的組合?;贚D3320的語音識別系統(tǒng)可以隨著使用流程,,在運行時動態(tài)地更改關鍵詞語列表的內容,這樣可以用一個系統(tǒng)支持多種不同的場景,,同時也不需要用戶作任何的錄音訓練,。
3.2 LD3320的用戶使用模式
LD3320有兩種用戶使用模式,即“觸發(fā)識別模式”和“循環(huán)識別模式”,。用戶可以通過編程,,設置兩種不同的用戶使用模式。
觸發(fā)識別模式:系統(tǒng)的主控MCU在接收到外界一個觸發(fā)后(比如用戶按動某個按鍵),,啟動LD3320芯片的一個定時識別過程(比如5 s),,要求用戶在這個定時過程中說出要識別的語音關鍵詞語。這個過程結束后,,需要用戶再次觸發(fā)才能再次啟動一個識別過程,。
循環(huán)識別模式:系統(tǒng)的主控MCU反復啟動識別過程。如果沒有人說話就沒有識別結果,,則每次識別過程的定時到時后再啟動一個識別過程,;如果有識別結果,則根據識別作相應處理后(比如播放某個聲音作為回答)再啟動一個識別過程,。
4 語音識別系統(tǒng)軟硬件設計
4.1 硬件系統(tǒng)設計
由圖l可知,,由LD3320組成的語音識別系統(tǒng)硬件有單片機(或嵌入式系統(tǒng))及LD33202,。圖2和圖3分別是由單片機STC10L08XE構成的主控芯片和由LD3320A構成的語音識別主系統(tǒng)。
4.2 軟件系統(tǒng)設計
語音識別的操作順序是:先進行語音識別的初始化,,然后寫入識別列表,,系統(tǒng)即開始進行語音識別,并準備好中斷響應函數,,打開中斷允許位,。這里如果不用中斷方式,也可以通過查詢方式工作,。在“開始識別”后,,讀取寄存器B2H的值,如果為21H就表示有識別結果產生,。
下面是語音識別的初始化程序段,,按照以下序列來設置寄存器:
初始化后是寫入識別列表。識別列表的規(guī)則是:每個識別條目對應一個特定的編號(1個字節(jié)),,不同識別條目的編號可以相同,,而且不用連續(xù)。LD3320芯片最多支持50個識別條目,,每個識別條目是標準普通話的漢語拼音(小寫),,每2個字(漢語拼音)之間用1個空格間隔。表1是一個簡單的例子,。
圖4是由LD3320組成的語音識別系統(tǒng)主程序流程,,圖5是語音識別系統(tǒng)中斷服務程序流程。
5 聲控電視遙控器
聲控電視遙控器最有用的地方是,,在更換頻道時可以直接說出頻道名稱,,而不是去記憶頻道名稱和頻道數字的聯(lián)系。同時,,在使用電視遙控器時,,遙控器是用電池工作,不能讓識別芯片一直處于工作狀態(tài),。因此在設計時,,可以在遙控器上設置一個大一點的按鍵,用戶在使用時,,按一下這個按鍵,,啟動LD3320語音識別芯片,此時可以播放一聲“嘀”的提示音,,然后在限定的時間內(如5s),,接收用戶的語音命令,并給出識別結果,。比如用戶說“體育臺”,,識別芯片把識別結果提供給遙控器的主控MCU,。隨后遙控器的主控MCU就根據事先設定好的對應關系,發(fā)出對應頻道的紅外編碼,,實現(xiàn)換臺,。可以不加確認過程直接換臺,。圖6為聲控電視遙控器工作流程,。
結語
這種語音識別系統(tǒng)也容易引起誤識別,如當用戶說的內容不在識別列表內時,,必然會引起誤識別,。為了克服這些缺點,降低誤識別率,,可在設定好要識別的關鍵詞語后,,再添加一些與識別列表內的單詞有聯(lián)系的任意其他詞匯,用來吸收錯誤識別,,從而達到降低誤識別率的目的。
由LD3320組成的語音識別系統(tǒng)有很廣泛的應用,,如語音控制的點歌系統(tǒng),、語音控制的手機、音控智能導航儀,、音控智能家電產品等,。