有趣生活

当前位置:首页>科技>聊天机器人智能能控制电脑还能和你聊天的机器人

聊天机器人智能能控制电脑还能和你聊天的机器人

发布时间:2026-07-21阅读(1)

导读作为复仇者联盟的智慧和财富担当,你是否羡慕托尼斯塔克,给不了你小辣椒,给不了你钢铁战甲,就用python实现一个贾维斯吧。利用python的GUI编程,结合....

作为复仇者联盟的智慧和财富担当,你是否羡慕托尼斯塔克,给不了你小辣椒,给不了你钢铁战甲,就用python实现一个贾维斯吧。利用python的GUI编程,结合图灵机器人和百度语音识别,给你一个能控制电脑还能和你智能对话聊天的桌面软件

第三方库

pip install pyttsx3

pip install requests

pip install pypiwin32

pip install PyAudio

  1. 完成这个桌面软件,首先你得先创建桌面软件

导入第三方库

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>

  1. 完成了通过文字输入来操控电脑,接下来我们事先通过语音来控制

这里我们需要引入第二份文件进行录制音频,然后借助百度的语音识别转成文字

from aip import AipSpeechimport 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 pyttsx3import requestsimport jsondef 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 AipSpeechimport Recorderimport Controlimport pyttsx3import requestsimport jsondef 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 datadef 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轴# 此处有坑,不是*,而是xmaster.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”即可,希望能对你有所帮助

Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图