智能聊天机器人系统
# 智能聊天機(jī)器人系統(tǒng)
# 1.系統(tǒng)簡介
# 隨著社會(huì)的各個(gè)公司以及大學(xué)對(duì)人工智能技術(shù)的深入研究和快速發(fā)展,人工智能技術(shù)將逐步應(yīng)用到
# 方方面面。智能聊天機(jī)器人系統(tǒng)是基于各類傳感器收集人類語音數(shù)據(jù)(智能電視、智能空調(diào),
# 智能冰箱、智能音箱等電器的使用情況)并進(jìn)行控制,通過算法模型的設(shè)計(jì)、優(yōu)化和應(yīng)用,
# 來達(dá)到真正的人機(jī)交互,開啟人類的智能生活。
# 2.技術(shù)要求和限制條件
# 1)根據(jù)項(xiàng)目小組討論情況,確定系統(tǒng)實(shí)現(xiàn)的方向,第三方接口的選擇等;
# 2)根據(jù)數(shù)據(jù)業(yè)務(wù)模型,構(gòu)建信息交互轉(zhuǎn)換平臺(tái),提供項(xiàng)目優(yōu)化方案;
# 3)按照智能助手系統(tǒng)為人類提供的功能,給出各模塊的設(shè)計(jì),提供語音識(shí)別、語音合成等功能。
# 系統(tǒng)開始,按1對(duì)話開始,你說話,機(jī)器人和你說話
import pyaudio, wave
from aip import AipSpeech
import json
import urllib.request
import os# 采取錄音
def record(second,filename):# 采樣率RATE = 8000# 采樣通道CHANNELS = 2# 采樣精度FORMAT = pyaudio.paInt16# 采樣時(shí)間SECONDS = second# 創(chuàng)建一個(gè)pyaudio對(duì)象p = pyaudio.PyAudio()frames = list()# 創(chuàng)建流對(duì)象stream = p.open(rate=RATE,channels=CHANNELS,format=FORMAT,input=True)print("錄音開始了!!!")data = stream.read(RATE*SECONDS)frames.append(data)stream.stop_stream()stream.close()print("錄音結(jié)束!!!")p.terminate()wf = wave.open(filename,'wb')wf.setnchannels(CHANNELS)wf.setframerate(RATE)wf.setsampwidth(p.get_sample_size(FORMAT))wf.writeframes(b''.join(frames))wf.close()return filename""" 你的 APPID AK SK """
APP_ID = '16720832'
API_KEY = 'Dwur5NHIhoezGptZUGVpe7CN'
SECRET_KEY = 'GNw7Mn6ogcxFScxvwQiMtQMH57riw0NT'# 獲取文件內(nèi)容
def get_file_content(filename):with open(filename,'rb') as fp:return fp.read()# 獲取輸入的語言
def get_content():client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)text_dict = client.asr(get_file_content('test.wav'),'wav',16000,{'dev_pid':1536,})return text_dict["result"]TU_LING = 'dc601668fced41f0bd67a83be3d6999d'
USER_ID = '475665'
API_URL = 'http://openapi.tuling123.com/openapi/api/v2'# 把內(nèi)容傳給圖靈機(jī)器人獲取聊天內(nèi)容
def get_message(message):req = {"reqType":0,"perception": {"inputText": {"text": message},# "inputImage": {# "url": "imageUrl"# },"selfInfo": {"location": {"city": "北京","province": "北京","street": "信息路"}}},"userInfo": {"apiKey": TU_LING,"userId": USER_ID}
}# 將req編碼為json格式utf8req = json.dumps(req).encode('utf8')# 生成請(qǐng)求對(duì)象http_post = urllib.request.Request(API_URL, data=req, headers={'content-type':'application/json'})response = urllib.request.urlopen(http_post)# 以u(píng)tf8解碼responseresponse_str = response.read().decode('utf8')# 解碼response_str 返回python字符串response_dic = json.loads(response_str)response_text = response_dic['results'][0]['values']['text']return response_text# response_dic = json.loads(response_str)
# intent_code = response_dic['intent']['code']# 把圖靈機(jī)器人返回的答復(fù)傳給百度AI合成語音
def get_yuyin(response_text):client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)result = client.synthesis(response_text, 'zh', 1, {'vol': 5,})# 識(shí)別正確返回語音二進(jìn)制 錯(cuò)誤則返回dict 參照下面錯(cuò)誤碼if not isinstance(result, dict):with open('auido.mp3', 'wb') as f:f.write(result)os.system('auido.mp3')# 菜單
def menu():print("歡迎來到fxm樹鹿的私人聊天")print("1.與智能機(jī)器人聊天")print("0.退出")# 聊天菜單
def menu_chat():print("1.語音聊天")print("2.文字輸入")# 語音聊天
def yuyin_chat():while 1:# 把語音存到 test.wav 中,錄入時(shí)間為5秒record(5, "test.wav")# 獲取輸入的語言content = get_content()content =content[0]print("[無名氏]:", end=' ')print(content)n = get_text(content)if n:break# 文字聊天
def wenzi_chat():print("請(qǐng)輸入文字:")while 1:# 獲取輸入的文字print("[無名氏]:",end=' ')content = input("")n = get_text(content)if n:break# 獲取機(jī)器人的回復(fù)
def get_text(content):# 把內(nèi)容傳給圖靈機(jī)器人獲取聊天內(nèi)容message = get_message(content)# 語音輸出get_yuyin(message)print("[小冰]:", end=' ')print(message, end=' ')print("————fxm樹鹿的私人聊天")# 輸入 bye / 拜 退出if content == "bye" or content == "拜" or content == "再見":return 1if __name__ == '__main__':menu()n = input("請(qǐng)選擇:")if n == '1':menu_chat()n = input("請(qǐng)選擇:")if n == '1' :print("提示:說出 bye/拜/再見 退出")yuyin_chat()elif n== '2':print("提示:輸入 bye/拜/再見 退出")wenzi_chat()print("期待你的下次聊天!!!")
總結(jié)
- 上一篇: Coursera自动驾驶课程第18讲:T
- 下一篇: 基于android公交车线路查询论文文献