聊天机器人智能(能控制电脑还能和你聊天的机器人)
作为复仇者联盟的智慧和财富担当,你是否羡慕托尼斯塔克,给不了你小辣椒,给不了你钢铁战甲,就用python实现一个贾维斯吧。利用python的GUI编程,结合图灵机器人和百度语音识别,给你一个能控制电脑还能和你智能对话聊天的桌面软件
第三方库
pip install pyttsx3
pip install requests
pip install pypiwin32
pip install PyAudio
- 完成这个桌面软件,首先你得先创建桌面软件
导入第三方库
from tkinter import *
# 实例化 创建一个GUI对象
master = Tk()
# 设置标题
master.title('贾维斯')
# 设置窗体大小以及出现在屏幕上面的位置
# 宽x高 X轴 Y轴
# 此处有坑,不是*,而是x
master.geometry('300x100 450 300')
master.resizable(False,False)
# 设置标签
# # 网格布局
Label(master,text='输入指令:',font=('黑体',18),fg='blue').grid()
# Label(master,text.txt='结果:',font=('黑体',18),fg='blue').grid(row=1,column=0)
# 设置第一个输入框
entry1 = Entry(master)
# 网格布局
entry1.grid(row=0,column=1)
button1 = Button(master,text='运行',width=10,command=action)
button1.grid(row=1,column=0)
button = Button(master,text='声控',width=10)
button.grid(row=1,column=1)
button.bind("<Button-1>",ok)
button.bind("<ButtonRelease-1>",voiceControl)
# 消息循环
master.mainloop()
2.有了桌面软件之后,需要去完善操控方法
引入另外一份文件
import Control
def action():
# 获取输入框的内容
data = entry1.get().strip()
# 根据内容执行操作
control = Control.Order()
# 运行指令
control.run(data)</pre>
- 完成了通过文字输入来操控电脑,接下来我们事先通过语音来控制
这里我们需要引入第二份文件进行录制音频,然后借助百度的语音识别转成文字
from aip import AipSpeech import Recorder
# 实例化对象
rec = Recorder.Recorder()
def ok(event):
print('开始录音')
rec.start()
def no():
print('结束录音')
# 结束录音
rec.stop()
# 保存音频
file = rec.save('audio')
# 调用百度aip语音识别转义成文字
APP_ID = '16396825'
API_KEY = 'ryPOMzsWAqmI2y5o2nma25uV'
SECRET_KEY = '2LYcqQ23IX01C9YWBQOFec3pUB0YOvvS'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
with open(file,'rb') as fp:
data = fp.read()
result = client.asr(data,'wav',16000,{
'dev_pid':1536
})
print(result)
try:
data = result['result'][0]
except Exception as err:
exit(err)
return data
除了操控还可以智能聊天
import pyttsx3 import requests import json def voiceControl(event): result = no() print(result) # 提取前三位,判断是操控还是聊天 data = result[0:3] order = result[3:] if data =='贾维斯': control = Control.Order() control.run(order) else: show(result) def show(content): # 构造请求参数 request_data = { "key":"d3c006b99ee94e28b6d8340f68577f02", "info":content, "userid":"laoyang" } # 构造请求url url = "http://www.tuling123.com/openapi/api" # 发送请求 result = requests.post(url,request_data) # 转换格式 response = json.loads(result.text) # 语音输出 engine = pyttsx3.init() engine.say(response['text']) engine.runAndWait()
完整代码
from tkinter import * from aip import AipSpeech import Recorder import Control import pyttsx3 import requests import json def action(): # 获取输入框的内容 data = entry1.get().strip() # 根据内容执行操作 control = Control.Order() # 运行指令 control.run(data) # 实例化对象 rec = Recorder.Recorder() def ok(event): print('开始录音') rec.start() def no(): print('结束录音') # 结束录音 rec.stop() # 保存音频 file = rec.save('audio') # 调用百度aip语音识别转义成文字 APP_ID = '16396825' API_KEY = 'ryPOMzsWAqmI2y5o2nma25uV' SECRET_KEY = '2LYcqQ23IX01C9YWBQOFec3pUB0YOvvS' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) with open(file,'rb') as fp: data = fp.read() result = client.asr(data,'wav',16000,{ 'dev_pid':1536 }) print(result) # 如果周围比较吵,会识别不出来 try: data = result['result'][0] except Exception as err: exit(err) return data def voiceControl(event): result = no() print(result) # 提取前三位,判断是操控还是聊天 data = result[0:3] order = result[3:] if data =='贾维斯': control = Control.Order() control.run(order) else: show(result) def show(content): # 构造请求参数 request_data = { "key":"d3c006b99ee94e28b6d8340f68577f02", "info":content, "userid":"laoyang" } # 构造请求url url = "http://www.tuling123.com/openapi/api" # 发送请求 result = requests.post(url,request_data) # 转换格式 response = json.loads(result.text) # 语音输出 engine = pyttsx3.init() engine.say(response['text']) engine.runAndWait() # exit() # 实例化 创建一个GUI对象 master = Tk() # 设置标题 master.title('贾维斯') # 设置窗体大小以及出现在屏幕上面的位置 # 宽x高 X轴 Y轴 # 此处有坑,不是*,而是x master.geometry('300x100 450 300') master.resizable(False,False) # 设置标签 # # 网格布局 Label(master,text='输入指令:',font=('黑体',18),fg='blue').grid() # Label(master,text.txt='结果:',font=('黑体',18),fg='blue').grid(row=1,column=0) # 设置第一个输入框 entry1 = Entry(master) # 网格布局 entry1.grid(row=0,column=1) button1 = Button(master,text='运行',width=10,command=action) button1.grid(row=1,column=0) button = Button(master,text='声控',width=10) button.grid(row=1,column=1) button.bind("<Button-1>",ok) button.bind("<ButtonRelease-1>",voiceControl) # 消息循环 master.mainloop()
最后,小编想说:我是一名python开发工程师,
整理了一套最新的python系统学习教程,
想要这些资料的可以关注私信小编“01”即可,希望能对你有所帮助
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com