摘要
這一章將進入機器人語音交互的學習,讓機器人能跟人進行語音對話交流。這是一件很酷的事情,本章將涉及到語音識別、語音合成、自然語言處理方面的知識。本章內容:
1.語音交互相關技術
要機器人能完成跟人對話,涉及到語音識別、語音合成、自然語言處理等技術。簡單點說,語音識別就是將人的聲音轉換成文字便於機器人計算與理解;語音合成就是將機器人要說的文字內容轉換為聲音;自然語言處理相當於機器人的大腦,負責回答提問。整個語音交互的過程,如圖1。
(圖1)語音交互過程
1.1.語音識別
語音識別技術,也被稱為自動語音識別Automatic Speech Recognition(ASR),其目標是將人類的語音中的詞匯內容轉換為計算機可讀的輸入,例如按鍵、二進制編碼或者字符序列,如圖2。
(圖2)語音識別
語音識別技術所涉及的領域包括:信號處理、模式識別、概率論和信息論、發聲機理和聽覺機理、人工智能等等。語音識別技術的最重大突破是隱馬爾科夫模型Hidden Markov Model的應用。從Baum提出相關數學推理,經過Labiner等人的研究,卡內基梅隆大學的李開復最終實現了第一個基於隱馬爾科夫模型的非特定人大詞匯量連續語音識別系統Sphinx。此后嚴格來說語音識別技術並沒有脫離HMM框架。當然神經網絡方法是一種新的語音識別方法,人工神經網絡本質上是一個自適應非線性動力學系統,模擬了人類神經活動的原理,具有自適應性、並行性、魯棒性、容錯性和學習特性,其強的分類能力和輸入-輸出映射能力在語音識別中都很有吸引力。但由於存在訓練、識別時間太長的缺點,目前仍處於實驗探索階段。
1.2.語音合成
語音合成是語音識別的逆過程,也稱為文字轉語音(TTS),它是將計算機自己產生的、或外部輸入的文字信息轉變為可以聽得懂的、流利的漢語或其他口語輸出的技術。如圖3。
(圖3)語音合成
TTS過程包括這些步驟:語言處理,在文語轉換系統中起着重要的作用,主要模擬人對自然語言的理解過程,文本規整、詞的切分、語法分析和語義分析,使計算機對輸入的文本能完全理解,並給出后兩部分所需要的各種發音提示;韻律處理,為合成語音規划出音段特征,如音高、音長和音強等,使合成語音能正確表達語意,聽起來更加自然;聲學處理,根據前兩部分處理結果的要求輸出語音,即合成語音。
1.3.自然語言處理
有了語音識別和語音合成,要讓機器人能智能的對答如流的和人交談,還需要賦予機器人以靈魂。自然語言處理技術(NLP)就是來賦予聊天機器人內在靈魂的。
NLP是計算機領域與人工智能領域中的一個重要分支。由於數據的大幅度增強、計算力的大幅度提升、深度學習實現端到端的訓練,深度學習引領人工智能進入有一個高潮。人們也逐漸開始將如日中天的深度學習方法引入到NLP領域,在機器翻譯、問答系統、自動摘要等方向取得成功。經過互聯網的發展,很多應用積累了足夠多的數據可以用於學習。當數據量增大之后,以支持向量機(SVM)、條件隨機場(CRF)為代表的傳統淺層模型,由於模型過淺,無法對海量數據中的高維非線性映射做建模,所以不能帶來性能的提升。然而,以CNN、RNN為代表的深度模型,可以隨着模型復雜度的增大而增強,更好貼近數據的本質映射關系。一方面,深度學習的word2vec的出現,使得我們可以將詞表示為更加低維的向量空間。另一方面,深度學習模型非常靈活,使得之前的很多任務,可以使用端到端的方式進行訓練。
(圖4)基於深度學習的自然語言處理過程
為了讓大家更好的理解基於深度學習的自然語言處理過程,舉一個比較通用的模型,如圖4。問題句子通過Seq2Seq循環神經網絡進行預處理和編碼,然后進入答案搜索,接着通過DQN強化學習網絡對問答策略進程學習。這樣,隨着時間的推移,問答系統回答問題的水平會越來越高,就達到了不斷在線學習的目的了。
后記
------SLAM+語音機器人DIY系列【目錄】快速導覽------
第1章:Linux基礎
第2章:ROS入門
第3章:感知與大腦
第4章:差分底盤設計
第5章:樹莓派3開發環境搭建
第6章:SLAM建圖與自主避障導航
2.google-cartographer機器人SLAM建圖
第7章:語音交互與自然語言處理
第8章:高階拓展
2.centos7下部署Django(nginx+uwsgi+django+python3)
----------------文章將持續更新,敬請關注-----------------
如果大家對博文的相關類容感興趣,或有什么技術疑問,歡迎加入下面的《SLAM+語音機器人DIY》QQ技術交流群,一起討論學習^_^
關於我們:
視頻教程:
https://www.bilibili.com/video/av61448040