<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
簡要說明:
最近兩天需要做一個python的小程式, 就是實現人與智慧機器人(智慧對話介面)的對話功能,目前剛剛測試了一下可以實現, 就是能夠實現個人與機器的智慧對話(語音交流)。
總體的思路:
大家可以設想一下, 如果要實現人與機器的智慧對話, 肯定要有以下幾個步驟:
這裡可以安裝很多現成的庫函數, 輔助我們系統的實現。
需要準備的環境
以下是需要安裝的一些python依賴包
接下來我會逐步實現以上每個功能,最後再組合起來。
接收使用者的語音輸入,並將其存為音訊檔
import time import wave from pyaudio import PyAudio, paInt16 framerate = 16000 # 取樣率 num_samples = 2000 # 取樣點 channels = 1 # 聲道 sampwidth = 2 # 取樣寬度2bytes FILEPATH = '../voices/myvoices.wav' #該檔案目錄要存在 #用於接收使用者的語音輸入, 並生成wav音訊檔(wav、pcm、mp3的區別可詳情百度) class Speak(): #將音訊資料儲存到wav檔案之中 def save_wave_file(self, filepath, data): wf = wave.open(filepath, 'wb') wf.setnchannels(channels) wf.setsampwidth(sampwidth) wf.setframerate(framerate) wf.writeframes(b''.join(data)) wf.close() # 進行語音錄製工作 def my_record(self): pa = PyAudio() # 開啟一個新的音訊stream stream = pa.open(format=paInt16, channels=channels, rate=framerate, input=True, frames_per_buffer=num_samples) my_buf = [] # 存放錄音資料 t = time.time() print('正在講話...') while time.time() < t + 5: # 設定錄音時間(秒) # 迴圈read,每次read 2000frames string_audio_data = stream.read(num_samples) my_buf.append(string_audio_data) print('講話結束') self.save_wave_file(FILEPATH, my_buf) #儲存下錄音資料 stream.close()
呼叫百度AI介面, 識別音訊檔並以文字資訊返回
之前使用過好幾次百度AI的介面,我的畢業設計<線上課堂學生異常行為與分析>也是使用到了百度的智慧平臺,個人偵錯的話有很多免費產品,總體來說百度在人工智慧領域做得還是相當不錯的。
在呼叫百度AI介面之前,需要首先進入百度AI開放平臺,搜尋語音識別。
點選立即使用,沒有賬號的話可以先建立一個賬號,然後領取免費的資源使用
我之前已經建立1個了, 假設再次點選建立
系統會自動勾選上語音識別介面,直接建立應用即可,之後會有 AppID、 API Key、Secret Key, 之後呼叫百度介面直接呼叫即可。
可以檢視介面檔案,進行具體的介面操作
前奏準備好, 便可以直接呼叫介面進行語音識別
from aip import AipSpeech """ 你的 APPID AK SK """ APP_ID = '25990397' API_KEY = 'iS91n0uEOujkMIlsOTLxiVOc' SECRET_KEY = '' #此處填寫自己的金鑰 """呼叫介面, 呼叫BaiDu AI 介面進行錄音、語音識別""" client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) class ReadWav(): # 讀取檔案 def get_file_content(self, filePath): with open(filePath, 'rb') as fp: return fp.read() def predict(self): # 呼叫百度AI的介面, 識別本地檔案 return client.asr(self.get_file_content('../voices/myvoices.wav'), 'wav', 16000, { 'dev_pid': 1537, }) readWav = ReadWav() #範例化方法 print(readWav.predict()) #呼叫識別方法, 並輸出
執行結果 ( 音訊檔存的錄音是: 你叫什麼名字呀?)
{'corpus_no': '7087884083428433929', 'err_msg': 'success.', 'err_no': 0, 'result': ['你叫什麼名字呀?'], 'sn': '255158586831650276613'}
請求智慧機器人, 傳送文字資訊, 返回智慧聊天內容
之前我們老師推薦我使用圖靈機器人的智慧聊天,後來發現認證一直無法通過,且需要付費。
後來發現了一個免費、無需註冊、只需要傳送get請求就可實現聊天的青雲客智慧機器人,直接呼叫介面即可。
程式碼如下:
def talkWithRobot(msg): url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg={}'.format(urllib.parse.quote(msg)) html = requests.get(url) return html.json()["content"] print(talkWithRobot("你好呀!"))
輸出:
喲~ 都好都好
將回答資訊轉化為語音檔案並輸出
此處需要匯入pyttsx3包,具體程式碼如下:
import pyttsx3 class RobotSay(): def __init__(self): # 初始化語音 self.engine = pyttsx3.init() # 初始化語音庫 # 設定語速 self.rate = self.engine.getProperty('rate') self.engine.setProperty('rate', self.rate - 50) def say(self, msg): # 輸出語音 self.engine.say(msg) # 合成語音 self.engine.runAndWait() robotSay = RobotSay() robotSay.say("你好呀") #會講出 ~你好呀(女聲) 複製程式碼
組合成為自動聊天機器人(它很硬氣)
程式碼如下:
def talkWithRobot(msg): url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg={}'.format(urllib.parse.quote(msg)) html = requests.get(url) return html.json()["content"] robotSay = RobotSay() speak = Speak() readTalk = ReadWav() while True: speak.my_record() #錄音 text = readTalk.predict()['result'][0] #呼叫百度AI介面, 將錄音轉化為文字資訊 print("本人說:", text) #輸出文字資訊 response_dialogue = talkWithRobot(text) #呼叫青雲客機器人回答文字資訊並返回 print("青雲客說:", response_dialogue) #輸出回答文字資訊 robotSay.say(response_dialogue) #播放回答資訊
執行結果(發現它很硬氣)
"""
正在講話...
講話結束...
本人說: 你好呀。
青雲客說: 喲~ 都好都好
正在講話...
講話結束...
本人說: 你叫什麼名字呀?
青雲客說: 我是小美人菲菲呀~
正在講話...
講話結束...
本人說: 哇,那你多美呀。
青雲客說: 你似有問題多啲囉!
正在講話...
講話結束...
本人說: 我好看嗎?
青雲客說: 你真是個地道的美人啊。就是說你只有在地道里才算美人,因為地道里沒燈
正在講話...
講話結束...
本人說: 你可真是個小可愛呀。
青雲客說: 呀,你怎麼知道。。。我就是啊。。
正在講話...
講話結束...
本人說: 不和你說了。
青雲客說: 不說拉倒
"""
到此這篇關於Python 實現簡單智慧聊天機器人的文章就介紹到這了,更多相關Python 實現聊天機器人內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45