無論走到哪里,機器人都能聽懂你的鄉音
語音識別是人工智能的一項十分有趣的問題,想想看,人們的語音是多么復雜,不同國家、民族的人,說不同的國家和民族的語言,不同的人,口音不一樣,例如中國還有許多方言,語音也不一樣。一個本事大的人,可能懂七、八種語言,也能聽懂男、女、小孩等等不同人、甚至不同方言的語言。但是要設計一個機器人能聽懂七八種語言,甚至鄉土的方言(例如在民航的接待處服務的機器人),這任務是十分困難的。但是我們可以期待,也許不久的將來就會實現。
再說,要在一篇科普文章中說清語音識別的技術,也有很大的難度。因為它用到了高等數學中的傅里葉變換的技術。也就是要用到時域和頻域的兩個概念,才容易講清楚。那么什么是頻域、什么是時域?也需要花點筆墨來介紹。
簡單地講,例如50周波的正弦波,在時域的圖像上表示是一個連續上下波動的曲線,如果轉換到頻域,就是在頻率軸(橫軸)上的50處一個有幅度的點這不是很簡單嗎!
在上一篇語音合成一文中,已經介紹了人類語音的一些特征(例如說聲母是相當于高頻的噪聲、韻母相當于周期重復的非規則波,聲調是韻母的聲高(頻率)有變化的波等等),這是語音的時域形態。我們也說過,如果用示波器觀看一般人說話的語音波形,是十分復雜,要研究它簡直無從下手。但是經傅里葉轉換到頻域,就發現圖形要簡單得多了,語音波的頻率表現在若干個頻率點上有數值。比如男聲低些,女聲要高一些。小孩子的聲頻更高些。除此之外,在更高的頻率域處有數值,www.twshmhelmet.com,那是噪聲域,相當于聲母的部分,而在較低的頻率點上也有一組數值,是韻母域,這些都表示的是不同說話人的口腔參數,不同人的口型、舌頭形狀不一樣,這組參數也不一樣。所以,在頻域分析語音:是聲母、韻母、是幾聲調、是什么人說的等等,就容易多了。也由此可以想到,人的天賦智能具備了多么復雜的本領,我們的腦子里事先已經存儲好了各種模板數據(屬于頻域數據,)包括各個漢字的讀音、某些已認識人的聲音特征數據,甚至風聲、雨聲、鳥的鳴叫聲等等,因此,人就能判別任何時間聽到的聲音是什么聲音、代表什么文字,這種人所具備的智能也是幾千萬年人類進化而得來的。
設計機器的語音識別,先要在計算機里先存放好標準的語音參數,稱為模板(如果要將識別的語音轉換成文字,計算機里也先存放好了所有漢字的語音參數(可能還分男聲和女聲的數據庫,存儲的數據是對應某種語音的頻域參數,不可能是時域的波形),這個數據庫的建立也可稱為機器的訓練過程。實際操作語音識別時,由麥克風讀入待識別的語音,將輸入數據先轉換成頻域數據,再和標準數據作比較,取參數最接近的作為識別結果,再輸出,輸出的是漢字(或某一國家的文字。)語音轉換成文字還有一個同音字區分的問題,大多數漢語的一個讀音對應多個漢字,有的發音對應許多個漢字,www.twshmhelmet.com,甚至上百個漢字(如音節ji對應的漢字有100多個)要去分辨某個發音是什么漢字,必須采用上下文的辦法,就是看這個讀音的前或后跟隨的是什么漢字(或讀音),是否能組成詞。這些詞組都事先在計算機中存好,經由匹配對比成功的詞來決定該選定的漢字,有時候不是任何讀音都可能找到能匹配的上下文,就可能要從語義來判斷。這就更復雜了。
如果要設計的系統是要尋找說話人是誰,而不是關于具體說的什么,那就只要對比頻域參數就可以了。同樣一句話,不同人說的,波形不同,頻域中的特征數據也不同。
平時我們的耳朵聽取外界的聲音有很強的濾波功能,在噪聲很大的情況下能濾除噪音,辯認出需要聲音(如語音)。聾人用的助聽器,如果僅僅是把聲波放大,就會連同噪聲一起放大,聽起來十分費勁。高級助聽器就有濾除噪音的功能,因而售價就很貴了,因為其中也用了信號處理技術。
順便說一個故事,是說明傅里葉變換、信號處理的本領的。這是上世紀80年代初,美國麻省理工學院的奧本海姆教授來清華講學(我曾擔任他的講課翻譯)演示過的一段語音處理的片段:
一段帕瓦羅蒂的演唱,有場面龐大的樂隊伴奏,當然很好聽。奧本海姆教授演示用了信號處理技術,竟然可以把樂隊伴奏的聲音全部過濾掉,KUKA機器人維修,只剩下了帕瓦羅蒂的唱聲,這就可以單獨欣賞他的純真的歌聲,這里面用到了復雜的濾波技術完全是傅里葉變換的功勞。(他的歌唱頻譜范圍和樂隊演奏聲音的頻譜范圍是不同的。將頻域里的樂隊聲的頻譜信號刪除,再還原到時域就只剩下了人的歌唱聲了。)可見,信號處理的本領之大了。
語音識別技術經過最近幾十年的研究發展,已經十分成熟,能聽人語音發出命令而做事的機器人本領也愈來愈大了。我們清華人在其中作了貢獻,也值得自豪!