You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

201 lines
6.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import random
import pyttsx3
import requests
import yuyin as yy
import urllib
import renlian as rl
import wenshidu as wsd
import mensuo as ms
import MySQL as m
import time
import lighting as l
string_01 = ['01。','02。','03。','04。','05。','06。','07。','08。','09。','10。','11。','12。','13。','14。']
class RobotSay():
def __init__(self):
# 初始化语音
self.engine = pyttsx3.init() # 初始化语音库
# 设置语速
self.rate = self.engine.getProperty('rate')
self.engine.setProperty('rate', self.rate - 20)
self.engine.setProperty('voice', 'zh+f2')
def say(self, msg):
# 输出语音
self.engine.say(msg) # 合成语音
self.engine.runAndWait()
robotSay = RobotSay()
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()
def Say():
# while True:
'''speak.my_record() #录音
text = readTalk.predict()['result'][0] #调用百度AI接口, 将录音转化为文本信息
'''
yy.record()
text = yy.asr_updata()
# if("退出" in text):
# break
print("本人说:", text) #输出文本信息
reply(text)
return text
'''
response_dialogue = talkWithRobot(text) #调用青云客机器人回答文本信息并返回
print("青云客说:", response_dialogue) #输出回答文本信息
robotSay.say(response_dialogue) #播放回答信息
return text
'''
def Key(msg):
response_dialogue = msg
print("小溪说:", response_dialogue) # 输出回答文本信息
robotSay.say(response_dialogue) # 播放回答信息
def check_record(id, function):
num = m.check_select("max(number)")[0][0]+1
t = time.strftime('%Y-%m-%d %H:%M:%S')
name = m.rl_Nselect("name", id)[0][0]
m.check_insert(str(num), id, name, function, t)
def reply(msg):
text = msg
if('' == text):
time.sleep(0.5)
# Key('正在实现功能')
elif ("人脸识别" in text or "人脸检测" in text):
Key("正在进行人脸识别。。。")
rl.f_scan_face()
elif ("录入" in text):
num = m.rl_select("count(id)")
if(num == 0):
Key("正在进行初次人脸录入。。。")
rl.f_rec_face()
else:
id = rl.check_face()
if id != 0:
check_record(id, "录入人脸信息")
Key("正在进行人脸录入。。。")
rl.f_rec_face()
else:
Key("正在退出人脸录入。。。")
elif("修改人员" in text):
Key("请说出自己的用户编号") #如果是一位数请说0X如果是两位及以上正常说即可
id = yy.record_text()
# print(id)
if ('不知道' in id):
Key("进行人脸检测确认用户。")
id = rl.check_face()
if (id != 0):
check_record(id, "修改人员信息")
rl.rl_message_update(id)
elif(id not in string_01): #############优化
Key("不存在该用户")
else:
id = id[1: len(id) - 1]
result = m.rl_select("id")
results = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] ###############优化
for i in range(0, len(result)):
results[i] = result[i][0]
# print(results)
if (int(id) in results):
check_record(id, "修改人员信息")
rl.rl_message_update(id)
else:
Key("不存在该用户")
elif("查看人员" in text):
id = rl.check_face()
if (id != 0):
check_record(id, "查看人员信息")
results = m.rl_select("*")
for i in range(0, len(results)):
print(results[i])
Key("已将信息打印出来。请查看!")
time.sleep(5)
else:
Key("未识别到人脸信息,将随机说出一个具有权限的用户")
a = random.randint(1,m.rl_select("count(id)")[0][0])
name = m.rl_Nselect("name", str(a))
Key(name[0][0])
elif("删除人员" in text):
id = rl.check_face()
if (id != 0):
check_record(id, "删除人员信息")
Key("即将对"+id+"号用户的信息进行删除")
m.rl_delete(id)
Key("删除成功")
elif("权限" in text or "记录" in text):
id = rl.check_face()
if (id != 0 ):
check_record(id, "查看权限操作记录")
results = m.check_select("*")
for i in range(0 , len(results)):
print(results[i])
Key("已将记录打印出来。请查看!")
time.sleep(5)
elif( "视频监控" in text):
Key("即将进入视频监控。")
rl.manual_video()
elif("自动监控" in text):
Key("即将进入自动监控。")
id = rl.auto_video()
print("本次监控编号为:"+id)
elif("温湿度" in text):
Key("正在检测温湿度。")
wsd.wsd()
elif('开门' in text or '打开门锁' in text):
# check = rl.check_face()
# if check == 1:
# Key("正在打开门锁。。。")
# ms.km()
id = rl.check_face()
if(id != 0):
check_record(id, "门锁控制")
Key("正在打开门锁。")
ms.lock_control()
elif("打开" in text and "灯光" in text):
l.L_control_open(text)
elif("关闭" in text and "灯光" in text):
l.L_control_close(text)
elif ("退出" in text):
Key("正在退出程序。")
else:
Key(talkWithRobot(text))