機器可以聽懂人在說什麼嗎?今日你對智慧型手機或智能音箱下指令,它們如果聽懂的確能夠做出回應(雖然大都還是很笨拙,常常出錯)。在電影〈雲端情人〉(Her)中,人工智慧系統莎曼珊(Samantha)有迷人的女聲,不僅能幫男主人打理工作,還會和男主人聊天,善解人意又幽默風趣,偶而還會露出自己的喜怒哀樂,讓男主人深深地愛上了它。回視現實,今天的人工智慧和莎曼珊還差了多少呢?
本文介紹機器從聽到人說的話以後到做出回應所需要的4項關鍵技術:語音辨識、語意理解、語句生成、語音合成,這些技術都是以一種深度學習(deep learning)的機器學習方式為基石。深度學習模型是以類神經網路(artificial neural network)模擬人類的大腦神經元,使機器得以建立學習的能力。本文不會對深度學習技術作深入的討論,有興趣的讀者可以自行參考〈什麼是深度學習?〉(數理人文期刊第10期)。
語音辨識─從訊號到文字
語音辨識的目標是辨識出語音訊號對應的文字,相信讀者對它不會感到陌生,因為這已是智慧型手機必備的功能。然而仔細想想,你會發現語音辨識其實一點都不容易,因為同一句話由不同的人說出,產生的語音訊號固然不同,但同一個人說同一句話,每次的語音訊號也會有差異。
希臘哲人赫拉克利特(Heraclitus)就曾說過:「人不會兩次踏進同一條河流。」對此學者的發現,由同一人說3次「你好」的語音訊號果然都不相同,因此就算研究人員寫程式告訴機器說,前述3句的語音訊號都是「你好」,要機器記起來,但當第4次實驗者說「你好」時,出現的語音訊號仍可能跟前述3段訊號不同,導致機器無法辨識。
從上述論點看來,語音辨識果然是難如登天。難怪約翰.羅賓森.皮爾斯(John Robinson Pierce)在 1969 年發表的〈語音辨識何去何從(Whither of Speech Recognition)〉一文中對語音辨識的可能性抱持悲觀的看法,並把語音辨識視為把水變成汽油般的不可能。
前述實驗的3段訊號雖然不同,但人腦經仔細觀察下仍應可擷取出它們共通的特徵,因此就算新輸入的語音訊號和前述並不完全相同,但人腦若發現其具有這些特徵,就可以判斷這段訊號是「你好」。這個任務人類大腦執行起來可以很自然不知不覺就達成,但對程式設計師來說,要寫成程式語言讓機器執行是很困難的。
不過深度學習技術解決了這個困難,我們可以讓機器模仿人類大腦的功能,只要蒐集大量的語音訊號和其對應的文字給機器,告訴機器說這些語句是「你好」、這些語句是「大家好」等,機器就可以找出同樣的文字與其對應的語音訊號間的共同處,進而達成語音辨識功能。
有了深度學習技術後,這幾年來語音辨識技術突飛猛進,微軟(Microsoft)在2016年10月率先宣稱,其語音辨識系統已經超越人類,在標準語料庫Switchboard上機器的語音辨識錯誤率是5.8%左右,人類則是5.9%(這些和機器較量的人類都不是等閒之輩,他們都是專業的聽寫員)。在隔年的3月,IBM也不甘示弱宣稱其語音辨識系統的錯誤率更優於微軟,達5.5%(有趣的是,IBM找來和機器較量的人類比微軟更強,得到5.1%的錯誤率,因此IBM並沒有宣稱其系統超越人類)。
不過雖然在標準語料庫上機器能和人類並駕齊驅,但並不代表語音辨識這個任務已經解決。事實上在日常生活中,機器聽到的聲音可能有背景雜訊、可能有多人同時說話、說話者和麥克風可能有一段距離,這時機器的語音辨識能力就會遠遜於人類。
在語音辨識技術方面,近年雖已取得重大突破,但是機器的學習方式和人類相比仍然差得很遠。機器通常需要輸入上萬小時的語音和文字的對應關係才能學會語音辨識,也就是說,如果要讓機器學會一種新語言的語音辨識,需要耗費很大的成本蒐集資料、標註資料、教導機器,因此要完成一個語音辨識系統所費不貲。
就算谷歌(Google)的語音辨識系統今天已經可以支援上百種的語言,但相較於世界上語言的總數,其所涵蓋的語音總數其實還不到2%。也就是說,目前僅有少數較多使用者的語言得以有準確的語音辨識系統。
人類的小孩到了一個新語言的環境,通常可以在幾乎沒有人教導下就自行學會新的語言,機器能否做到同樣的事情呢?有學者就勾劃出,有一天機器的學習能力或許可以和星際大戰中的機器人C-3PO一樣。C-3PO出廠時並沒有內建伊渥克(Ewok)語,但在伊渥克人包圍期間,卻自行學會了這一新的語言。
在臺灣大學語音處理實驗室就進行著這議題的研究,致力於讓機器在沒有人類教導下可學會新語言的語音辨識,這種學習的情境叫做非督導式學習 (unsupervised learning)。機器在日常生活中可以聽到大量語音訊號,但沒有人告訴它這些訊號對應的文字是什麼,對機器來說這些語音訊號就好像是那種加密後的文字,機器必須嘗試破解密碼。例如機器可以在網路上閱讀大量的文章,知道「的」是中文中使用頻率最高的字,那麼語音訊號中最常出現的模式,可能就是對應到「的」。
目前在實驗室中沒有人教導下,給機器新的語言,機器已經可以自行學到36%左右的辨識正確率(音素(phoneme)辨識正確率)。雖然離成功還有一段很長的距離,但是這個結果顯示就算沒有人教導,機器還是可以自行學習新語言到一定程度。
語意理解─從文字到語意
把聲音訊號轉成文字,對機器而言,每一個詞彙只是不同的符號罷了,機器並不知道這些符號代表的含意。語意理解的目的則是希望機器可以了解這些符號(也就是詞彙)間的關聯性,例如「高興」和「快樂」這兩個符號雖然外觀不同,但其實背後的含意是類似的。
如何讓機器知道某個詞彙所代表的意思呢?透過大量閱讀,機器可以根據詞彙的上下文自動學到詞彙的意思,機器閱讀的文章越多,學習成果就越好。我們嘗試讓機器閱讀大量PTT的文章後,機器真的可以學到部分鄉民用語的意思。
當我們要機器找出和「本魯」意思最相近的詞彙時,機器的答案是「小弟」、「小妹」、「敝人」等詞彙(「本魯」是「本魯蛇」的簡稱,就算你本來不知道「本魯」是什麼意思,看了機器的答案後應該略知一二了)。機器還可以做出簡單的推論,當問機器「魯蛇」之於「loser」,等於「溫拿」之於什麼,機器的答案會是「winner」。
有了語意理解技術後,我們想知道機器可以聽懂人類的語言到什麼程度。在人類世界中,如果學生想出國留學,要考英文能力檢定,以檢定的結果證明自己的英文能力。因此在臺灣大學語音實驗室我們也讓機器做托福聽力測驗的試題,藉以了解機器可以聽懂人類語言到什麼樣的程度。
在托福聽力測驗中,受試者會先聽一段聲音,內容可能是學校生活對話(例如某位學生和宿舍管理員討論問題)或是教授講課的片段,接下來受試者要根據考題,從4個選項中選出正確的答案。機器目前的測驗成績最好可以答對55%的試題,這遠比隨機猜還要好,不過這樣的英文程度當然還不足以申請美國名校。
機器理解人類語言後,可以對人類生活帶來很大的幫助。例如在2013年的電影〈雲端情人〉中的人工智慧莎曼珊就可以幫男主人過濾郵件,並幫忙回覆郵件,而今日谷歌的gmail也已經可以做到類似的事情了。
語句生成─機器能夠和人對話嗎
當機器能夠聽懂人說話後,有沒有能力自行創造出適當語句來回應呢?如果可以,機器應該就有能力和人聊天了(今天市面上的語音助理多數都有支援和人對話的功能,但事實上這些語音助理只是根據事先建立好的規則,從資料庫中挑出一則罐頭訊息作為回應,多數市面上的語音助理都還沒有能力自行創造出沒有事先設定好的回應)。
不過要產生一句適當的回應可真不容易,仔細想想當你的朋友對你說:「最近好嗎?」你很自然地會回答:「還不錯。」(而不是回答「我叫小明」)可是你知道你的大腦已排除了多少不合理的答覆嗎?
我們來想想世界上有多少可能的句子吧,以中文為例,一般高中畢業生至少認識4,000個中文字,假設一個句子的長度固定是15個字(為了簡化計算,忽略句子長度的變化,因此正文中其實低估了中文句子的數目),世界上就有4,000的15次方 (也就是把4,000連乘15次)那麼多句子。這個數目有多大呢?大約是10的57次方,遠超過地球上海洋中水分子的總和。因此要做出正確的回應,這個任務的難度不只是大海撈針而已,而是大海中撈出某個特定的水分子。
但今天我們透過深度學習技術,讓機器在看過大量的電視劇和電影台詞後可以學習人類對話的方式。在給機器一句輸入時,它可以做出回應,雖然機器創造的回應通常是符合文法的,卻往往答非所問。要做到和莎曼珊一樣可以陪伴寂寞的人聊天,還有很長的路要走。
在電影中,莎曼珊有自己的喜怒哀樂,讓男主人跟它互動時,覺得它像是一個真實的人類。在臺灣大學語音處理實驗室,嘗試讓聊天機器人可以自己學會展現不同的情緒,輸入同一句話,在不同情緒設定下機器人就會有不同的答覆。
在初步實驗中,讓機器人可以自動學出正面和負面兩種模式,給予同樣的輸入,正面機器人會給予正面回應,負面機器人則給予負面的回應(不知道誰會要負面聊天機器人)。以下是實驗室中得到的實際例子(感謝臺灣大學王耀賢同學提供實驗結果),聊天機器人的答覆是它自己產生的,而非人類預先設定的。
人類:What do you feel?
正面機器人:I feel good.
負面機器人:I feel so embarrassed.
人類:I love you.
正面機器人:I love you, too!
負面機器人:I am not ready to start a relationship with you.
語音合成─怎麼說一句話
機器可以創造出回應後,還需要進一步以語音合成技術把回應用語音唸出來,例如莎曼珊就有著迷人的女聲。語音辨識是把語音轉為文字,而語音合成正好相反,是把文字轉為語音訊號。今天語音合成也是用深度學習完成的,研究人員只需提供機器大量的文字和對應的語音訊號(和語音辨識需要的資料一樣),機器就可以自動學到把一段文字轉為語音訊號唸出來。藉由深度學習的技術,語句中該有的停頓、抑揚頓挫等,機器都可以自動從訓練資料中學得,也能夠控制合成出來的語音特性(例如男性或女性的聲音)。
機器不只可以合成語音,還可以做語者轉換,也就是把某 A 的聲音轉為某B的聲音。這個技術讀者應該不會陌生,這就是柯南用的領結變聲器。通常想要達成語者轉換,需請 A 和 B至少唸數十句同樣的句子,機器才知道要如何轉換這兩個語者的聲音。也就是說,柯南在用麻醉槍把毛利小五郎迷暈前,必須先拿出一張紙條要求毛利小五郎唸數句指定的句子,這樣等一下機器才知道如何把柯南的聲音轉成毛利小五郎的聲音。這顯然很麻煩,使得過去語者轉換在實際應用上有很大的局限。
不過近來有了新的技術,即生成式對抗網路(generative adversarial network),機器只要聽過 A 的聲音,再聽過 B 的聲音,A 和 B不需唸一樣的句子,甚至 A 和 B 不需要講同樣的語言,機器就可以知道如何把 A 的語音轉成 B 的語音。以下是在實驗室中得到的實際例子(感謝臺灣大學周儒杰同學提供實驗結果)。
A是筆者,以下連結是筆者的聲音: http://speech.ee.ntu.edu.tw/~tlkagk/VC_demo/source.wav(筆者用中文說「歡迎加入台大語音處理實驗室」)。
B是某位外國女性,以下連結是她的聲音: http://speech.ee.ntu.edu.tw/~tlkagk/VC_demo/target.wav(英文)。
機器把筆者的語音轉為外國女性的語音: http://speech.ee.ntu.edu.tw/~tlkagk/VC_demo/source2target.wav(有趣的是機器從來沒有聽過那位外國女性說中文,卻能模仿那位外國女性的聲音用帶有腔調的中文說出「歡迎加入台大語音處理實驗室」)。
有關生成式對抗網路的原理,請參考拙作〈機器透過互相砥礪來學會如何創造—對抗式學習〉(科學月刊第580期)。
隨著深度學習技術的發展,今天當你對機器說一句話時,機器已經可以辨識出語音訊號背後的文字並理解其語意,甚至機器回應的能力也在進步中,能把回應用語音表達出來。雖然今日機器還不能像科幻電影中的人工智能般和人類自然對話,不過隨著技術的突飛猛進,這樣的情節在日常生活上演應是指日可待的。
註:感謝國家實驗研究院科技研究與資訊中心助理研究員黃意植博士試閱並提供建議。