陳佳碩 付興建
【摘 要】隨著社會(huì)文明的進(jìn)步和科技水平的發(fā)展,人們?cè)跐M(mǎn)足了生存和生活的需要之后,不斷地追求著更高的生活質(zhì)量。如今計(jì)算機(jī)為人類(lèi)服務(wù)已經(jīng)滲入到了生活的每一點(diǎn)一滴。然而,傳統(tǒng)的控制方式已經(jīng)不能滿(mǎn)足當(dāng)今社會(huì)的節(jié)奏需求。使用中文語(yǔ)音作為新的控制方式,可以為用戶(hù)帶來(lái)更好的服務(wù)體驗(yàn)。本文闡述了中文語(yǔ)音識(shí)別系統(tǒng)的搭建方法以及應(yīng)用方向。
【關(guān)鍵詞】語(yǔ)音識(shí)別;中文識(shí)別;人工分詞;控制系統(tǒng)
【中圖分類(lèi)號(hào)】TP311 【文獻(xiàn)標(biāo)識(shí)碼】A
【論文編號(hào)】1671-7384(2014)02-0069-03
引 言
計(jì)算機(jī)如今如此普及,計(jì)算機(jī)發(fā)展速度完全超乎想象。但目前為止,真正具備與人交流功能的電腦還不存在。有這樣一個(gè)圖靈測(cè)試——讓測(cè)試員與被測(cè)試者和一臺(tái)機(jī)器在隔開(kāi)的情況下,通過(guò)一些裝置向被測(cè)試者隨意提問(wèn)。問(wèn)過(guò)一些問(wèn)題后,如果測(cè)試人不能確認(rèn)被測(cè)試者30%的答復(fù)哪個(gè)是人、哪個(gè)是機(jī)器的回答,那么這臺(tái)機(jī)器就通過(guò)了測(cè)試??上У氖牵缃袂闆r下最好的成績(jī)是由俄羅斯專(zhuān)家設(shè)計(jì)的“葉甫根尼”電腦程序,也只是達(dá)到了29.2%。
語(yǔ)音,是人與人交流的一種手段,也是人類(lèi)交流和交換信息中最便捷的工具。退而求其次,要做到通過(guò)圖靈測(cè)試,不如先讓電腦通過(guò)語(yǔ)音作為引信來(lái)幫人類(lèi)做事情。為了充分闡述語(yǔ)音識(shí)別這套系統(tǒng)的原理,本文將小范圍重現(xiàn)語(yǔ)音識(shí)別原理。
對(duì)于語(yǔ)音識(shí)別之后,讓計(jì)算機(jī)去理解人的意思,不可缺少的就是將文字信息轉(zhuǎn)化為計(jì)算機(jī)能理解的內(nèi)容。把計(jì)算機(jī)比作一個(gè)人手中拿著一本象形文字對(duì)照手冊(cè),身處上文說(shuō)的圖靈測(cè)試的房子中。而另一人則在房間外向此房間發(fā)送象形文字問(wèn)題。房間內(nèi)的人只需按照對(duì)照手冊(cè),返回手冊(cè)上的象形文字答案即可。畢竟只需要讓計(jì)算機(jī)懂得我們的意思,并非讓計(jì)算機(jī)來(lái)幫我們?nèi)ニ伎?。因此,只要給予足夠多的“稿紙、筆”以及足夠大的“詞典”即可。
這次我們對(duì)系統(tǒng)的研究使用的是C語(yǔ)言,由于并沒(méi)有采用面向?qū)ο蠡恼Z(yǔ)言來(lái)編程,大部分程序使用的編程并沒(méi)有向“類(lèi)”里面填充“方法”的概念。這套系統(tǒng)硬件開(kāi)發(fā)、硬件編程采用的是51單片機(jī)來(lái)實(shí)現(xiàn),后期的處理則是在上位機(jī)通過(guò)鉤掛系統(tǒng)鉤子讀取內(nèi)存來(lái)實(shí)現(xiàn)。下面,我們將一步一步講述構(gòu)建這個(gè)系統(tǒng)的過(guò)程。
平臺(tái)構(gòu)建
如今,國(guó)外已經(jīng)有很多成品語(yǔ)音識(shí)別系統(tǒng),中文的語(yǔ)音識(shí)別控制系統(tǒng)也有很多的企業(yè)、教育科研機(jī)構(gòu)在做相關(guān)的項(xiàng)目。不過(guò)這些研究卻依然停留在初級(jí)階段。因?yàn)橹形氖鞘澜缟献铍y學(xué)的語(yǔ)言,人來(lái)學(xué)習(xí)尚且如此,更何況人來(lái)教給機(jī)器去識(shí)別。
雖然如此,做語(yǔ)音識(shí)別首先要有一個(gè)平臺(tái)來(lái)去搭建中文語(yǔ)音識(shí)別系統(tǒng)。第一步要做的便是將聲音訊號(hào)轉(zhuǎn)化為電訊號(hào)。這里采用一個(gè)高阻抗麥克風(fēng),作為音源進(jìn)行聲電轉(zhuǎn)化。通常的麥克風(fēng)是三個(gè)端子輸出,分別是兩個(gè)信號(hào)源和一個(gè)接地端。大部分的麥克風(fēng)兩個(gè)端讀入的是相同信號(hào),少部分高品質(zhì)的則讀入的是差分信號(hào)。
麥克風(fēng)的輸入是毫伏級(jí)別,類(lèi)似空氣聲、干擾波都會(huì)使得輸入的信號(hào)有噪波。因此,輸入的兩個(gè)端分別進(jìn)行旁路電容濾波等操作,去除雜波。無(wú)源麥克風(fēng)的輸入電壓過(guò)低,之后要將信號(hào)接入放大器,放大后的信號(hào)才能使得后續(xù)的操作中,模擬—數(shù)字信號(hào)轉(zhuǎn)換器獲得足夠被感應(yīng)的信號(hào)強(qiáng)度。
理論上講,音頻信號(hào)可以看作周期信號(hào),按照傅立葉級(jí)數(shù)定理可知,任何周期函數(shù)都可以用正弦函數(shù)和余弦函數(shù)構(gòu)成的無(wú)窮級(jí)數(shù)來(lái)表示。因此,通過(guò)將音頻信號(hào)進(jìn)行傅立葉級(jí)數(shù)展開(kāi),去除雜波頻段的波形即可得到優(yōu)質(zhì)波形。
而實(shí)踐中,通過(guò)硬件操作步驟較為煩瑣,軟件分析需要時(shí)間較長(zhǎng),出于經(jīng)濟(jì)等方面因素考慮,本系統(tǒng)不采用傅立葉變換來(lái)實(shí)現(xiàn)識(shí)別音頻特性,而采用比較法取波形相似度等方式進(jìn)行識(shí)別。
語(yǔ)音識(shí)別
上文中的信號(hào)經(jīng)過(guò)模擬—數(shù)字轉(zhuǎn)換器轉(zhuǎn)換成為了數(shù)字信號(hào),接入處理器的IO接口線程中,此時(shí),讀入的信號(hào)會(huì)通過(guò)地址總線和IO端口讀入。因此在硬件上,我們使用中斷程序來(lái)進(jìn)行信號(hào)預(yù)處理。
軟件方面中斷程序部分,僅需要將讀入的IO數(shù)據(jù)以數(shù)組形式存放入內(nèi)存即可。
聲音有三要素:音高、響度、音色。讀入的信號(hào)即每個(gè)時(shí)間點(diǎn)的聲音感受器震動(dòng)位置,我們可以通過(guò)電流接入到壓片陶瓷上來(lái)還原聲音,而如果我們要去分析音頻則需要對(duì)照三要素下手。
響度即聲波數(shù)組中的數(shù)值高低,為了讓聲波數(shù)組中的響度和預(yù)存的響度相同,我們通過(guò)統(tǒng)計(jì)整段中有效波形能量數(shù)值和與預(yù)存數(shù)組的能量數(shù)值做比例處理,使得響度和預(yù)存數(shù)組相近。
音高即聲音的頻率,頻率的定義是:?jiǎn)挝粫r(shí)間內(nèi)完成振動(dòng)的次數(shù),是描述振動(dòng)物體往復(fù)運(yùn)動(dòng)頻繁程度的量。通過(guò)聲波數(shù)組尋找相鄰兩點(diǎn)是否為相反數(shù),即可尋找到過(guò)0點(diǎn)次數(shù)得到頻率。這時(shí),時(shí)間段的頻率即可求出,間接可得到整段聲音的頻率。
我們發(fā)現(xiàn),對(duì)音高進(jìn)行頻率化處理,同樣也需要對(duì)預(yù)存數(shù)組進(jìn)行頻率化處理。因此,盡管我們可以去頻率化處理提高識(shí)別精度,但相比對(duì)音頻直接做響度匹配,所謂黑盒操作更易于分析和匹配。
漢語(yǔ)是由聲母和韻母組成的,通過(guò)五聲韻母和聲母匹配,即可收集有限個(gè)聲源。用這些聲源和預(yù)處理的聲音進(jìn)行匹配,即可得出每個(gè)字的讀音。
上述的程序段只是匹配所需要的函數(shù),在外部需要循環(huán)來(lái)賦給數(shù)組對(duì)應(yīng)指針位置才能實(shí)現(xiàn),在對(duì)比中,如何確定開(kāi)頭是一個(gè)難點(diǎn)。因此需要對(duì)音頻數(shù)據(jù)的開(kāi)頭做識(shí)別。在本系統(tǒng)中,采用讀取5個(gè)相鄰數(shù)據(jù),如果連續(xù)的峰值高于30且持續(xù)了超過(guò)25毫秒以上,則判定這個(gè)時(shí)間點(diǎn)為數(shù)據(jù)的開(kāi)始。
在系統(tǒng)中,雖然我們采用了去除抖動(dòng)的算法,但聲音音響處理過(guò)后,也會(huì)丟失一些精度,此處的算法若提高精度,則需要在前期處理做根據(jù)香農(nóng)采樣定理計(jì)算低通信道的最高大碼元傳輸速率,進(jìn)而做精確的采樣以及還原,同時(shí)濾波采用更先進(jìn)的算法來(lái)實(shí)現(xiàn),這里只實(shí)現(xiàn)采樣而不做精細(xì)討論。
人工分詞
中文,全世界有近20億的人在使用。然而,中文的語(yǔ)法是世界上無(wú)章可循的語(yǔ)法之一。古人云:“句讀之不知,惑之不解”,想要用中文交流,就必須知道如何斷句。這樣,才能正常地和人交流,才能清晰地理解對(duì)方的意思。
欲斷句,先斷詞。讓計(jì)算機(jī)來(lái)執(zhí)行控制,而計(jì)算機(jī)處理的卻是整個(gè)詞組。前面步驟已經(jīng)講述了如何將語(yǔ)音識(shí)別成一個(gè)個(gè)的單字,識(shí)別成一個(gè)個(gè)句子。但是中文并不像英文,說(shuō)“我是一個(gè)學(xué)生”這句話的時(shí)候不會(huì)像“I am a student”這樣中間有空格從而判斷詞組。這就需要我們對(duì)句子做一個(gè)特殊的處理——人工分詞。
以“我是一個(gè)學(xué)生”為例,人類(lèi)來(lái)理解這句話,他的意思就是“‘我的職業(yè)屬性是學(xué)生”。從這個(gè)例子可以看出,提取“是”這個(gè)動(dòng)詞為關(guān)鍵字,便可以將前后轉(zhuǎn)變?yōu)橘x值表達(dá)式的形式“我->職業(yè)=學(xué)生”。
優(yōu)先提取出一句話的動(dòng)詞,是分詞處理的關(guān)鍵。但并非每個(gè)動(dòng)詞都可以這樣來(lái)操作,例如,“他鞠躬下臺(tái)”,很明顯“鞠躬”是個(gè)動(dòng)詞,“下臺(tái)”也是一個(gè)動(dòng)詞;如果按照上文中所述,“他->鞠躬=下臺(tái)”就會(huì)出問(wèn)題。為了處理這個(gè)問(wèn)題,我們引入現(xiàn)代漢語(yǔ)中及物動(dòng)詞和不及物動(dòng)詞的概念。將“鞠躬”、“下臺(tái)”這種不及物動(dòng)詞和“打”、“吃”這樣的及物動(dòng)詞分開(kāi)。
當(dāng)然,這需要字典來(lái)處理,借助現(xiàn)代科技的發(fā)展,一本電子版的現(xiàn)代漢語(yǔ)詞典就可以解決這個(gè)問(wèn)題,通過(guò)詞庫(kù)來(lái)查詢(xún)每個(gè)詞語(yǔ)的意思,從而抽離出動(dòng)詞。我們只需要設(shè)計(jì)不及物動(dòng)詞代表動(dòng)作即可,這樣就可以將信息存儲(chǔ)成“他->動(dòng)作=鞠躬&下臺(tái)”。
若是英文,如此做便可以了。但上文說(shuō)過(guò),中文語(yǔ)法是世界上無(wú)章可循的語(yǔ)法之一。英文中設(shè)置了動(dòng)詞字典基本上就處理了大部分問(wèn)題??芍形闹袝?huì)出現(xiàn)如下句子:“今天的比賽在大學(xué)生活動(dòng)中心召開(kāi)?!?/p>
人工模擬電腦來(lái)理解,副詞可以修飾形容詞、修飾動(dòng)詞,用副詞來(lái)修飾試探:比賽可以“不比賽”不能“很比賽”,因此它不是形容詞,而是動(dòng)詞,“我比賽你”這句話不通,因此是不及物動(dòng)詞;“活動(dòng)”和“召開(kāi)”也是同理,是不及物動(dòng)詞。因此這句話要理解成“今天->動(dòng)作=比賽&活動(dòng)&召開(kāi)”。
但不能說(shuō)“今天->動(dòng)作=比賽&活動(dòng)&召開(kāi)”,很顯然這句話真正的意思是“比賽->地點(diǎn)=大學(xué)生活動(dòng)中心”。出現(xiàn)這個(gè)問(wèn)題,核心原因就是計(jì)算機(jī)沒(méi)有把“大學(xué)生活動(dòng)中心”當(dāng)作一個(gè)詞,任何一本字典都不會(huì)去收錄“大學(xué)生活動(dòng)中心”這個(gè)詞。
在中文分詞中,中科天璣出品了一套中文分詞系統(tǒng)架構(gòu),加載頭文件"ICTCLAS50.h"可以用頭文件定義的命令#pragma comment讀取它所提供的數(shù)據(jù)庫(kù)(lib,"ICTCLAS50.lib")
執(zhí)行過(guò)該程序段后,會(huì)將分詞結(jié)果以test.txt的形式保存在硬盤(pán)中。
結(jié) 語(yǔ)
做完人工分詞,基本上也就實(shí)現(xiàn)了讀取用戶(hù)所要達(dá)到的目的。這套系統(tǒng)貫穿底層到軟件層,如果有可能甚至需要設(shè)計(jì)到云端。雖然局部的測(cè)試沒(méi)有出現(xiàn)嚴(yán)重的錯(cuò)誤,但由于時(shí)間原因,并沒(méi)有做綜合測(cè)試。
其中的一些理論和實(shí)踐銜接的地方還存在著不足,一些算法也存在著改進(jìn)的空間,但這些問(wèn)題終將在以后得到解決。也希望這套系統(tǒng)能在最后的實(shí)踐和發(fā)展中真正用于生活,從而提供更好的生活體驗(yàn),為人們體驗(yàn)生活、享受人生做出貢獻(xiàn)。
基金項(xiàng)目:本文系北京市自然科學(xué)基金項(xiàng)目(4132009);北京市屬高等學(xué)校高層次人才引進(jìn)與培養(yǎng)計(jì)劃項(xiàng)目(CIT&TCD201304120);北京市教委科技計(jì)劃項(xiàng)目(KM201211232008)的研究成果。
(作者單位:北京信息科技大學(xué)自動(dòng)化學(xué)院)
參考文獻(xiàn)
何嘉. 基于遺傳算法優(yōu)化的中文分詞研究[D].電子科技大學(xué),2012.
趙培. 中文語(yǔ)音識(shí)別結(jié)果文本分類(lèi)的研究與實(shí)現(xiàn)[D].大連理工大學(xué),2008.
曹衛(wèi)峰. 中文分詞關(guān)鍵技術(shù)研究[D].南京理工大學(xué),2009.
龍樹(shù)全,趙正文,唐華. 中文分詞算法概述[J]. 電腦知識(shí)與技術(shù),2009,10:2605-2607.
宋勇剛. 圖靈測(cè)試:哲學(xué)爭(zhēng)論及歷史地位[J]. 科學(xué)文化評(píng)論,2011,06:42-57.
譚超. 學(xué)習(xí)型中文語(yǔ)音識(shí)別系統(tǒng)研究及實(shí)現(xiàn)[J]. 電腦開(kāi)發(fā)與應(yīng)用,2012,04:35-37.
胡寶潔,趙忠文,曾巒,張永繼. 圖靈機(jī)和圖靈測(cè)試[J]. 電腦知識(shí)與技術(shù),2006,23:132-133.
陳淑芳. 基于51單片機(jī)的教學(xué)實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)[D].中國(guó)海洋大學(xué),2011.
張文國(guó). 中文語(yǔ)音識(shí)別技術(shù)的發(fā)展現(xiàn)狀與展望[J]. 上海微型計(jì)算機(jī),1998,35:46.
張宜. 漢語(yǔ)語(yǔ)音識(shí)別技術(shù)的研究與發(fā)展[J]. 廣西廣播電視大學(xué)學(xué)報(bào),2003,04:18-22.
申小龍. 漢語(yǔ)動(dòng)詞分類(lèi)研究述評(píng)[J]. 綏化師專(zhuān)學(xué)報(bào),1988,04:63-72.