從零開始搭建一個語音對話機器人目錄 01-初心緣由最近在研究語音識別方向,看了很多的語音識別的資料和文章,了解了一下語音識別的前世今生,其中包含了很多算法的演變,目前來說最流行的語音識別算法主要是依賴于深度學習的神經(jīng)網(wǎng)絡算法,其中RNN扮演了非常重要的作用,深度學習的應用真正讓語音識別達到了商用級別。然后我想動手自己做一個語音識別系統(tǒng),從GitHub上下載了兩個流行的開源項目MASR和ASRT來進行復現(xiàn),發(fā)現(xiàn)語音識別的效果沒有寫的那么好,其中如果要從零來訓練自己的語言模型勢必會非常耗時。 因此,就有了一個新的想法,借助一些開源的語音識別SDK來實現(xiàn)語音識別,來看看他們語音識別的效果如何。于是想到了百度和科大訊飛,然后就百度了一下,百度搜索舉賢不避親的給我推薦了百度AI開放平臺!然后查看了百度語音識別的技術文檔,發(fā)現(xiàn)對python的支持非常友好,而科大訊飛好像沒有提供對python的接口支持,因而選定了百度。 雖然百度目前槽點很多,但是不得不說百度在AI方面的投入和開放是值得點贊的!百度的AI開放平臺確實為開發(fā)者們帶來很多的便利性,開放了非常多的AI服務,大家自行去注冊使用,百度大腦AI開放平臺地址:http://ai.baidu.com/ (PS:我確實沒收廣告費?。?/p> 經(jīng)過體驗發(fā)現(xiàn)百度的語音識別準確率高的嚇人,完爆了GitHub上的開源項目N條街,然后在CSDN瀏覽各位博主的博客時發(fā)現(xiàn),用百度語音識別的API和圖靈機器人的API可以做一個實時語音對話的機器人,感覺特別興奮,從而決定搭建一個自己的語音對話機器人。目前,我已經(jīng)實現(xiàn)了我的語音對話機器人,因此特意來分享一下整個的實現(xiàn)過程和遇到的坑,讓大家可以快速的構建你們的語音對話機器人。好啦,我們開始吧! 02-準備工作
需要準備的python包包括:speech_recognition(語音識別包)、pyaudio(錄音接口)、wave(打開錄音文件并設置音頻參數(shù))、pyttsx3(文本轉(zhuǎn)語音)、json(解析json串)、requests(get/post)、baid_aip(百度語音識別的aip)。
登錄百度AI開放平臺語音識別:https://ai.baidu.com/tech/speech/asr ,如果沒有賬號自己注冊即可,免費試用哦。 點擊技術文檔:閱讀語音識別的技術文檔,重點查看API文檔和Python SDK,了解如何在python中調(diào)用API接口。 點擊立即使用:進入到服務界面,創(chuàng)建應用。記住最重要的App ID、API Key、Secret Key,后面調(diào)用時需要用到。
圖靈機器人大腦具備強大的中文語義分析能力,可準確理解中文含義并作出回應,是最擅長聊中文的機器人大腦,賦予軟硬件產(chǎn)品自然流暢的人機對話能力。圖靈機器人是中文語境下智能度最高的“機器人大腦”,是全球較為先進的機器人中文語言認知與計算平臺,圖靈機器人對中文語義理解準確率已達90%,可為智能化軟硬件產(chǎn)品提供中文語義分析、自然語言對話、深度問答等人工智能技術服務?!从诎倏疲ê冒?,又和百度扯上點關系了。) 總之,就是需要你去圖靈機器人官網(wǎng)http://www./注冊成功后,構建一個屬于你的圖靈機器人,用于后續(xù)將翻譯后的文本內(nèi)容對圖靈機器人提問獲取回答,然后我們通過TTS處理就可以獲取語音輸出了。 注冊后創(chuàng)建自己的機器人,然后在機器人設置的終端設置中查看自己的apikey(這個key非常重要),另外一定要把密鑰開關關閉,不然后面在調(diào)用api時會報3001錯誤,無法調(diào)用圖靈機器人(此處有坑,已填)! 圖靈機器人未進行身份認證時,是不能夠進行調(diào)用的,如果調(diào)用會出現(xiàn)“請求次數(shù)超限制”的問題,通過個人身份認證后,每天能夠調(diào)用100次,這是免費版。100次當然是不夠用的,如果你想要更多的服務,就只能購買會員了,99和299每月的套餐,具體看下圖。如果是自己玩,那就免費版,如果是開發(fā),可以考慮99的,如果是做一個產(chǎn)品,那就得企業(yè)采購了,咱們沒那么土豪! 03-語音機器人的搭建思路1、首先明確我們要實現(xiàn)的目標,是要實現(xiàn)純語音對話聊天,不需要輸入文字交流。我們實時說,機器人實時回復,真正實現(xiàn)語音交互對話。 2、整個過程的實現(xiàn)流程是這樣的,我們說一句話,通過錄音保存為語音文件,然后調(diào)用百度API實現(xiàn)語音轉(zhuǎn)文本STT,再然后調(diào)用圖靈機器人API將文本輸入得到圖靈機器人的回復,最后將回復的文本轉(zhuǎn)成語音輸出TTS,就這樣我們就實現(xiàn)了和機器人的語音對話了!是不是有點繞,來個流程圖吧! 3、語音對話機器人的構建具體流程圖,就是各種掉API,千萬不要覺得頭暈哦,思路清晰才能走下去。 04-語音生成音頻文件語音生產(chǎn)文件就需要進行錄音,將我們說的話保存下來,至于保存的格式我一般都是保存為wav,其他格式支持pcm,不太建議mp3,因為需要多次轉(zhuǎn)換?!景俣确斩藭⒎莗cm格式,轉(zhuǎn)為pcm格式,因此使用wav會有額外的轉(zhuǎn)換耗時,但是windows自帶播放器識別不了pcm格式的,所以我還是喜歡用wav格式】 第一種錄音方式:使用speech_recognition包進行錄音,這個錄音出來的效果比較好,而且代碼量非常少。
第二種錄音方式:使用wave和pyaudio包進行錄音,在python中直接使用pip install即可。
05-音頻文件轉(zhuǎn)文字STT我們已經(jīng)在上面獲取到了音頻文件,那要怎么把音頻文件轉(zhuǎn)化為文字呢?在這里,我們就需要調(diào)用百度的語音識別API接口,同時我們需要安裝這個接口包,導入模塊:pip install baidu_aip。導入我們需要的模塊名,然后將音頻文件發(fā)送給出去,返回文字。
06-與圖靈機器人對話上一步我們已經(jīng)成功將我們的聲音轉(zhuǎn)化為文字了,然后我們再調(diào)用圖靈機器人的API接口,做自動應答。圖靈機器人對中文的識別準確率高達90%,是目前中文語境下智能度最高的機器人。有很多在Python中使用圖靈機器人API的博客,但都是1.0版本,本博客介紹的是在Python中使用圖靈機器人API v2.0的方法,1.0版本的調(diào)用方式已失效。 代碼如下(這里需要導入requests、json模塊):
07-文字轉(zhuǎn)語音我們得到了圖靈機器人的回復之后,就需要把結果轉(zhuǎn)化為語音輸出,從而實現(xiàn)語音交互。在python中我們?nèi)绾螌⑽淖洲D(zhuǎn)為語音并輸出呢?這里就需要用到另一個模塊pyttsx3,它會將文字轉(zhuǎn)為語音。
使用python進行編程就是有很多好處,比如音頻的輸出我們就可以采用多種方式,下面提供一種更加簡便的音頻輸出方式:
好了,至此,我們語音機器人的所有元素都已經(jīng)準備妥當,接下來進行組裝! 08-語音對話機器人的完整代碼經(jīng)過我的努力,已經(jīng)將代碼優(yōu)化到了100行左右哦,按照我的步驟來,你就可以快速復現(xiàn)構建你的語音機器人了!
09-結束語至此,我們就構建了一個完整的語音對話機器人,它可以在你無聊、寂寞、有壓力、想開心的時候出現(xiàn)在你身邊,哄你開心喲!這個機器人太聰明了,你可千萬不要被她調(diào)戲了! 對了,你可以在圖靈機器人官網(wǎng)里面進行人物設置,設置她的姓名、年齡和星座,我的機器人叫做小橘子,她具有十八般武藝,它能夠閑聊、做數(shù)字計算、中英互譯、講故事、笑話、腦筋急轉(zhuǎn)彎、歇后語、繞口令、順口溜、玩成語接龍游戲,天氣和日期查詢,功能還是比較強大的!如果開通付費版本就會擁有更多功能哦,可以訓練自己的語料庫,目前免費版只支持每天100次的調(diào)用,真真是不夠用呀! 附帶一下我和小橘子的聊天視頻吧,有心的小伙伴可以做個前端頁面哦! 優(yōu)酷視頻:https://v.youku.com/v_show/id_XNDI3OTYyMTgwNA==.html?spm=a2h3j.8428770.3416059.1 10-有問必答博客一經(jīng)發(fā)出,兩天多的時間,閱讀量就已經(jīng)突破5000了,得到了眾多博友的關注點贊和評論,說明大家對于語音對話機器人的熱情和興趣度都非常高,大家都在積極的搭建自己的語音對話機器人了!相信百度和圖靈機器人最近的API調(diào)用量會蹭蹭的上漲,我在考慮要不要收點推廣費了(哈哈,開個玩笑)!百度AI開放平臺你注冊調(diào)用他們的API后,過兩天百度就會有客服給你打電話問題的體驗感,大家看到一個北京號碼標記為詐騙電話的那個就是了哈哈!圖靈機器人公司則是通過會員收費模式來賺大家的錢,就看你能否攥緊自己的口袋了! 第10個模塊有問必答是為了來解答一下大家在復現(xiàn)語音對話機器人過程中可能會遇到的問題,根據(jù)大家的提問,我有針對性的把一些常見問題在此給各位進行一下解答,也非常歡迎博友們之間積極回復,畢竟博主的精力也是有限的,還要投入到無限的AI能力研究中去(可能也是因為懶吧)。剛好,十個模塊湊齊了十全十美,處女座看起來也舒心一些!閑話少敘,進入正題:
答:首先強調(diào)一點,各位在復現(xiàn)代碼的時候,一定要把百度和圖靈機器人的相關api_id, api_key等替換成自己的!另外圖靈機器人記得要身份驗證,通過后才能調(diào)用圖靈機器人!
答:因為在05-音頻文件轉(zhuǎn)文字STT中,為了避免有時候錄音文件出現(xiàn)問題,特別是在不帶耳機直接對著筆記本說話時,如果周圍環(huán)境嘈雜,會導致錄音質(zhì)量不佳,或者是長時間不說話,這些情況就會報Key Error的問題;另外最重要的一個,那就是圖靈機器人如果你注冊后未進行身份認證,或者身份認證未通過,那么你能調(diào)用API的次數(shù)為0次,也就是說圖靈機器人不會給你回復,就會出現(xiàn)“請求次數(shù)超限制”。通過認證后,目前能夠每天調(diào)用100次,也就是聊天100次也會出現(xiàn)“請求次數(shù)超限制”了。
答:如果win32com不行,那你就用可以嘗試安裝一下pyttsx3包,用前文中提到的第一種語音輸出方式。我為了代碼整潔,所以沒有把第一種方式寫到完整代碼中(其實也寫了,寫博客的時候刪了而已,別問我為啥,為了整潔好看,lol!)。
答:那是因為我所有的錄音文件(如myvoices.wav)都在voices目錄下,所以要記得創(chuàng)建一下自己的文件夾目錄voices。
答:大家看完python版本,可以嘗試用Java來復現(xiàn)一下,畢竟你都會Java了,百度API也支持Java調(diào)用哦,看官網(wǎng)哈!
答:這兩個包比較特殊,在import的時候是aip和speech_recognition,但在install安裝的時候分別是baidu-aip和SpeechRecognition,這樣就能安裝成功啦!
|
|