搭建一个属于自己的语音对话机器人
“零基礎(chǔ)--?搭建一個(gè)屬于自己的機(jī)器人”
首先請(qǐng)想象一下,當(dāng)你回到家,只有一個(gè)人在家,但卻沒有人聊天,然后你發(fā)出了一個(gè)命令,電腦便開始自動(dòng)與你對(duì)話,而你不需要打字,不需要看屏幕,因?yàn)樗龝?huì)自己發(fā)出聲音,回應(yīng)你的問題,以及問候。
01—編程思路很重要
有一個(gè)好的想法,并把它用代碼實(shí)現(xiàn)出來(lái),怎么實(shí)現(xiàn),這就比較重要了。
首先,想一下,假如沒有看這篇文章,你們會(huì)怎么去實(shí)現(xiàn)自動(dòng)回復(fù)的機(jī)器人,然后再來(lái)看我的解決方式,因?yàn)槲疫@個(gè)也不是最優(yōu)的解決方式。
思路:
1、首先想到的是宏觀的,我想要說話,然后讓機(jī)器立馬做出響應(yīng),并通過喇叭回答我們,這是我們的需求。
2、我們把他拆分,變成一些小的需求。
(1)我要說話,會(huì)產(chǎn)生聲音,系統(tǒng)不能翻譯聲音,那我們要記錄下我們發(fā)出的聲音。
(2)將聲音轉(zhuǎn)化為文字。
(3)將文字發(fā)送給自己訓(xùn)練的機(jī)器人,但自己訓(xùn)練機(jī)器人比較難,這時(shí)候使用第三方接口,自動(dòng)回復(fù),就像公眾后臺(tái)的小靈機(jī)器人一樣。
3、那我們具體的流程就出來(lái)了。
聲音---->音頻文件----->調(diào)用第三方接口(語(yǔ)音識(shí)別)------->文字------->發(fā)送給圖靈機(jī)器人------->機(jī)器人做出回復(fù)------->返回文字------->文字轉(zhuǎn)語(yǔ)音---->輸出并發(fā)出聲音。
突然感覺一陣頭暈
,怎么調(diào)來(lái)調(diào)去的。
02—語(yǔ)音生成音頻文件
語(yǔ)音生成文件,我們需要錄音,并保存到文件中,那python要怎么實(shí)現(xiàn)啟動(dòng)錄音并保存文件呢?
好好想一想!
這里需要導(dǎo)入一個(gè)模塊,正所謂,那里不會(huì)導(dǎo)哪里!嘿嘿,python就是這么強(qiáng)。
導(dǎo)入模塊,這里需要安裝一個(gè)pip install pyaudio
import wave from pyaudio import PyAudio,paInt16有興趣的可以去了解一下,繼續(xù)來(lái)看實(shí)現(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():#實(shí)現(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:#控制錄音時(shí)間,15秒audio= stream.read(2000)my_buf.append(audio)count+=1# print('.')save_wave_file('01.wav',my_buf)#調(diào)用保存音頻文件函數(shù)stream.close()print("錄音完成!")語(yǔ)音生成音頻文件搞定
03—音頻文件轉(zhuǎn)文字
我們已經(jīng)在上面獲取到了音頻文件,那要怎么把音頻文件轉(zhuǎn)化為文字呢?
我們繼續(xù):
這里可以使用第三方的語(yǔ)音識(shí)別接口,這里我使用的事百度的接口,因?yàn)楸容^簡(jiǎn)單,相關(guān)的api大家可以自己去研究一下。
導(dǎo)入模塊:pip install baidu_aip
from aip import AipSpeech導(dǎo)入我們需要的模塊名,然后將音頻文件發(fā)送給出去,返回文字。
這里的三個(gè)參數(shù)就交給大家去獲取了。
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)#獲取識(shí)別到的文字這里我沒有做異常處理,來(lái)考驗(yàn)一下大家的能力,給大家鏈接讓大家自己動(dòng)手試一下,
這是百度的文檔,和開放平臺(tái),需要使用的可以申請(qǐng)一個(gè)自己的應(yīng)用試一下:
相關(guān)文檔??? http://ai.baidu.com/docs#/ASR-Online-Python-SDK/top
開放平臺(tái)? ?https://console.bce.baidu.com/ai/#/ai/speech/app/detail~appId=608501
04—與機(jī)器人對(duì)話
好了,到這里了,我們的聲音成功轉(zhuǎn)化為文字,然后呢?
這次再調(diào)用第三方接口,做自動(dòng)應(yīng)答。
這里我調(diào)用的是圖靈機(jī)器人,大家也可以去了解一下。
因?yàn)槟承┰?#xff0c;這里我直接使用了平臺(tái)對(duì)話框的聊天機(jī)器人,
如下(這里需要導(dǎo)入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()我是不會(huì)告訴你,這里我使用的是爬蟲的方式的
05—文字轉(zhuǎn)換為語(yǔ)音
好了,(敲黑板)重點(diǎn),前年沒有考,去年沒有考,今年一定考
我們要把文字轉(zhuǎn)換為語(yǔ)音,使用輸出設(shè)備輸出,怎么弄?
怎么辦?再導(dǎo)入一個(gè)模塊呀!
pip install Pywin32導(dǎo)入成功之后,我安裝的時(shí)候,pywin32好像是python2的代碼,需要修改幾個(gè)地方,讓它支持python3
然后就是調(diào)用
import win32com.client speaker = win32com.client.Dispatch("SAPI.SpVoice") speaker.Speak("我是語(yǔ)音助手,小靈!")好了我們的語(yǔ)音伙伴就這么搞定了。
?
分解開來(lái)看,感覺是不是非常簡(jiǎn)單呢!還等什么,自己也制造一個(gè)吧!
相關(guān)推薦:
?自動(dòng)操作瀏覽器之--無(wú)界面selenium爬蟲
自動(dòng)打開瀏覽器,自動(dòng)進(jìn)行操作
python實(shí)現(xiàn)祝福彈框
微信自動(dòng)添加好友
python爬蟲教程
在公眾號(hào)后臺(tái)回復(fù)? :? ? “語(yǔ)音機(jī)器人”? ?獲取完整代碼,以及有關(guān)的插件。
歡迎關(guān)注我們喲!
總結(jié)
以上是生活随笔為你收集整理的搭建一个属于自己的语音对话机器人的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Perforce使用指南_forP4V
- 下一篇: 自动生成_橙瓜码字小说自动生成器,对话描