搭建一个属于自己的语音对话机器人
“零基礎--?搭建一個屬于自己的機器人”
首先請想象一下,當你回到家,只有一個人在家,但卻沒有人聊天,然后你發(fā)出了一個命令,電腦便開始自動與你對話,而你不需要打字,不需要看屏幕,因為她會自己發(fā)出聲音,回應你的問題,以及問候。
01—編程思路很重要
有一個好的想法,并把它用代碼實現(xiàn)出來,怎么實現(xiàn),這就比較重要了。
首先,想一下,假如沒有看這篇文章,你們會怎么去實現(xiàn)自動回復的機器人,然后再來看我的解決方式,因為我這個也不是最優(yōu)的解決方式。
思路:
1、首先想到的是宏觀的,我想要說話,然后讓機器立馬做出響應,并通過喇叭回答我們,這是我們的需求。
2、我們把他拆分,變成一些小的需求。
(1)我要說話,會產生聲音,系統(tǒng)不能翻譯聲音,那我們要記錄下我們發(fā)出的聲音。
(2)將聲音轉化為文字。
(3)將文字發(fā)送給自己訓練的機器人,但自己訓練機器人比較難,這時候使用第三方接口,自動回復,就像公眾后臺的小靈機器人一樣。
3、那我們具體的流程就出來了。
聲音---->音頻文件----->調用第三方接口(語音識別)------->文字------->發(fā)送給圖靈機器人------->機器人做出回復------->返回文字------->文字轉語音---->輸出并發(fā)出聲音。
突然感覺一陣頭暈
,怎么調來調去的。
02—語音生成音頻文件
語音生成文件,我們需要錄音,并保存到文件中,那python要怎么實現(xiàn)啟動錄音并保存文件呢?
好好想一想!
這里需要導入一個模塊,正所謂,那里不會導哪里!嘿嘿,python就是這么強。
導入模塊,這里需要安裝一個pip install pyaudio
import wave from pyaudio import PyAudio,paInt16有興趣的可以去了解一下,繼續(xù)來看實現(xiàn)代碼
def save_wave_file(filename,data):#保存音頻文件wf=wave.open(filename,'wb')wf.setnchannels(1)wf.setsampwidth(2)wf.setframerate(8000)wf.writeframes(b"".join(data))wf.close()def my_record():#實現(xiàn)錄音pa=PyAudio()stream=pa.open(format = paInt16,channels=1,rate=8000,input=True,frames_per_buffer=2000)my_buf=[]count=0print("正在錄音")while count<2*15:#控制錄音時間,15秒audio= stream.read(2000)my_buf.append(audio)count+=1# print('.')save_wave_file('01.wav',my_buf)#調用保存音頻文件函數stream.close()print("錄音完成!")語音生成音頻文件搞定
03—音頻文件轉文字
我們已經在上面獲取到了音頻文件,那要怎么把音頻文件轉化為文字呢?
我們繼續(xù):
這里可以使用第三方的語音識別接口,這里我使用的事百度的接口,因為比較簡單,相關的api大家可以自己去研究一下。
導入模塊:pip install baidu_aip
from aip import AipSpeech導入我們需要的模塊名,然后將音頻文件發(fā)送給出去,返回文字。
這里的三個參數就交給大家去獲取了。
def audio_word():APP_ID = ''API_KEY = ''SECRET_KEY = ''client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)def get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()ret = client.asr(get_file_content('01.wav'), 'wav', 16000, {'dev_pid': 1537, })print(ret)#獲取識別到的文字這里我沒有做異常處理,來考驗一下大家的能力,給大家鏈接讓大家自己動手試一下,
這是百度的文檔,和開放平臺,需要使用的可以申請一個自己的應用試一下:
相關文檔??? http://ai.baidu.com/docs#/ASR-Online-Python-SDK/top
開放平臺? ?https://console.bce.baidu.com/ai/#/ai/speech/app/detail~appId=608501
04—與機器人對話
好了,到這里了,我們的聲音成功轉化為文字,然后呢?
這次再調用第三方接口,做自動應答。
這里我調用的是圖靈機器人,大家也可以去了解一下。
因為某些原因,這里我直接使用了平臺對話框的聊天機器人,
如下(這里需要導入requests模塊):
def tu_ling(text):url = "http://www.tuling123.com/robot-chat/robot/chat/227960/jwt7"data = {"perception": {"inputText": {"text": text}}, "userInfo": {"userId": "demo123"}}header = {"Referer": "http://www.tuling123.com/member/robot/1140264/center/frame.jhtml?page=0&child=0","User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4094.1 Safari/537.36"}tuling = requests.post(url, json=data, headers=header)conent = tuling.json()我是不會告訴你,這里我使用的是爬蟲的方式的
05—文字轉換為語音
好了,(敲黑板)重點,前年沒有考,去年沒有考,今年一定考
我們要把文字轉換為語音,使用輸出設備輸出,怎么弄?
怎么辦?再導入一個模塊呀!
pip install Pywin32導入成功之后,我安裝的時候,pywin32好像是python2的代碼,需要修改幾個地方,讓它支持python3
然后就是調用
import win32com.client speaker = win32com.client.Dispatch("SAPI.SpVoice") speaker.Speak("我是語音助手,小靈!")好了我們的語音伙伴就這么搞定了。
?
分解開來看,感覺是不是非常簡單呢!還等什么,自己也制造一個吧!
相關推薦:
?自動操作瀏覽器之--無界面selenium爬蟲
自動打開瀏覽器,自動進行操作
python實現(xiàn)祝福彈框
微信自動添加好友
python爬蟲教程
在公眾號后臺回復? :? ? “語音機器人”? ?獲取完整代碼,以及有關的插件。
歡迎關注我們喲!
總結
以上是生活随笔為你收集整理的搭建一个属于自己的语音对话机器人的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Perforce使用指南_forP4V
- 下一篇: 自动生成_橙瓜码字小说自动生成器,对话描