智能聊天机器人系统
# 智能聊天機器人系統
# 1.系統簡介
# 隨著社會的各個公司以及大學對人工智能技術的深入研究和快速發展,人工智能技術將逐步應用到
# 方方面面。智能聊天機器人系統是基于各類傳感器收集人類語音數據(智能電視、智能空調,
# 智能冰箱、智能音箱等電器的使用情況)并進行控制,通過算法模型的設計、優化和應用,
# 來達到真正的人機交互,開啟人類的智能生活。
# 2.技術要求和限制條件
# 1)根據項目小組討論情況,確定系統實現的方向,第三方接口的選擇等;
# 2)根據數據業務模型,構建信息交互轉換平臺,提供項目優化方案;
# 3)按照智能助手系統為人類提供的功能,給出各模塊的設計,提供語音識別、語音合成等功能。
# 系統開始,按1對話開始,你說話,機器人和你說話
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# 采樣時間SECONDS = second# 創建一個pyaudio對象p = pyaudio.PyAudio()frames = list()# 創建流對象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("錄音結束!!!")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'# 獲取文件內容
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'# 把內容傳給圖靈機器人獲取聊天內容
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')# 生成請求對象http_post = urllib.request.Request(API_URL, data=req, headers={'content-type':'application/json'})response = urllib.request.urlopen(http_post)# 以utf8解碼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']# 把圖靈機器人返回的答復傳給百度AI合成語音
def get_yuyin(response_text):client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)result = client.synthesis(response_text, 'zh', 1, {'vol': 5,})# 識別正確返回語音二進制 錯誤則返回dict 參照下面錯誤碼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.與智能機器人聊天")print("0.退出")# 聊天菜單
def menu_chat():print("1.語音聊天")print("2.文字輸入")# 語音聊天
def yuyin_chat():while 1:# 把語音存到 test.wav 中,錄入時間為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("請輸入文字:")while 1:# 獲取輸入的文字print("[無名氏]:",end=' ')content = input("")n = get_text(content)if n:break# 獲取機器人的回復
def get_text(content):# 把內容傳給圖靈機器人獲取聊天內容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("請選擇:")if n == '1':menu_chat()n = input("請選擇:")if n == '1' :print("提示:說出 bye/拜/再見 退出")yuyin_chat()elif n== '2':print("提示:輸入 bye/拜/再見 退出")wenzi_chat()print("期待你的下次聊天!!!")
總結
- 上一篇: Coursera自动驾驶课程第18讲:T
- 下一篇: ARM胆子大了:X3超大核单核性能比12