def speaker(self, mode): """ 播音器 :param mode: 模式 :return: """ if mode == 'ding': self.log('write', { 'log': 'XiaolanSpeakerEvent:StartRecording', 'level': 'info' }) speaker.ding() elif mode == 'dong': self.log('write', { 'log': 'XiaolanSpeakerEvent:RecordingComplete', 'level': 'info' }) speaker.dong() elif mode == 'speak': self.log('write', { 'log': 'XiaolanSpeakerEvent:Speak', 'level': 'info' }) speaker.speak() elif mode == 'TextEmpty': self.log('write', { 'log': 'XiaolanSpeakerEvent:TextNull', 'level': 'info' }) speaker.speacilrecorder() else: self.log('write', { 'log': 'Error:UnknowSpeakerCommands', 'level': 'warning' })
def main(tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() m = hashlib.md5() host = 'http://api.fanyi.baidu.com/api/trans/vip/translate' appid = '20180425000150592' apikey = 'gN56Mdv4mh2KJ0Ko2p6v' asktext = '请问您要翻译什么?请在滴一声后说出内容,文言文也可以翻译哦!' bt.tts(asktext, tok) speaker.speak() speaker.ding() r.tsrecord() speaker.dong() tstext = bs.stt('./voice.wav', tok) signf = appid + tstext + '1435660288' + apikey m.update(signf) sign = m.hexdigest() data = 'q=' + tstext + '&from=auto&to=zh&appid=' + appid + '&salt=1435660288&sign=' + sign url = host + data r = requests(url) json = r.json() print json tsback = ['trans_result'][0]['dst'] saytext = tsback bt.tts(saytext, tok) speaker.speak()
def start(text, token): """ 启动 :param text: 文本 :param token: token :return: """ r = recorder() bt = baidu_tts() bs = baidu_stt(1, 'a', 2, '{') song_list = ["冲鸭冲鸭.mp3", "招财进宝.mp3", "毒液前来.mp3", "跟着我一起.mp3"] ycy = "杨超越,1998年7月31日出生于江苏省盐城市,中国内地流行乐女歌手,女子演唱组合CH2、火箭少女101成员。 2017年,加入女子演唱组合CH2,从而正式出道,并签约了多家游戏平台,为高校电竞比赛做内容推广;同年,随CH2相继推出了《启航》、《听雪恋歌》等单曲。2018年,参加腾讯视频女团青春成长节目《创造101》,最终获得第3名,并加入女子演唱组合火箭少女101;8月18日,随火箭少女101推出组合首张EP专辑《撞》;9月23日,推出首支个人单曲《跟着我一起》;11月15日,推出第2支个人单曲《冲鸭冲鸭》;11月27日,推出第3支个人单曲《招财进宝》;12月15日,获得“影响中国”年度人物荣誉盛典年度演艺人物奖。2019年,她被评选为LikeTCCAsia亚太区最美100张面孔第3位、中国区最美100张面孔第1位呢!" bt.tts(ycy, token) speaker.speak() bt.tts("我这里还有杨超越姐姐唱的歌哦~要不要听一听呢?", token) speaker.speak() speaker.ding() r.record() speaker.dong() text = bs.stt("./voice.wav", token) if "不" in text: bt.tts("哦,那好吧~再见啦", token) speaker.speak() else: bt.tts("那你想要听什么呢?不知道的话,可以说随机哦~", token) speaker.speak() speaker.ding() r.record() speaker.dong() text = bs.stt("./voice.wav", token) if "随机" in text: speaker.play(song_list[random.randint(0, 4)]) else: kugou_request(text)
def paly(self, song_name, tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() m = xlMusic() while song_name != None: speaker.play() bt.tts('请问还要听什么吗?可以输入指令,如,这首歌叫什么,或者,搜索歌曲', tok) speaker.speak() speaker.ding() r.record() speaker.dong() commands = bs.stt('./voice.wav', tok) command = m.command_choose(commands, tok) if command == 'sui_ji': m.sui_ji(services, tok) elif command == 'sou_suo': m.sou_suo(services, tok) elif command == 'exit': bt.tts('谢谢使用,下次再见', tok) speaker.speak() os.system('python /home/pi/xiaolan/xiaolan/xldo.py b') break elif command == 're': bt.tts('对不起,我没有听清楚您说了什么?', tok) speaker.speak() m.main(tok) else: bt.tts('对不起,发生了故障', tok) speaker.speak()
def main(self, tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() h = hass() bt.tts('欢迎使用小蓝专用智能家居控制系统!请在,滴,一声之后说出指令,目前仅支持homeassistant', tok) speaker.speak() speaker.ding() r.record() speaker.dong() commands = bs.stt('./voice.wav', tok) while commands == None: sorry = '对不起,我没有听清楚,请重复一遍' bt.tts(sorry, tok) speaker.speak() speaker.ding() r.record() speaker.speak() commands = bs.stt('./voice.wav', tok) if commands != None: break else: pass #print commands[6:-2] hass.choose_command(commands)
def main(self, tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() m = xlMusic() url = 'http://tingapi.ting.baidu.com/v1/restserver/ting?' services = { 'musicurl_get': 'method=baidu.ting.song.play&songid=', 'search': 'method=baidu.ting.search.catalogSug&query=', 'hot': 'method=baidu.ting.song.getRecommandSongList&song_id=877578&num=12' } bt.tts('欢迎使用小蓝音乐播放器,云服务使用百度音乐', tok) speaker.speak() bt.tts('请问您要随机播放还是搜索播放?', tok) speaker.speak() speaker.ding() r.record() speaker.dong() try: commands = bs.stt('./voice.wav', tok) m.command_choose(commands, tok) except TypeError: speaker.speak() speaker.ding() r.record() speaker.dong() m.command_choose(commands, tok)
def main(self, tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() gpioc = gpioc() bt.tts('请说出要控制的针脚和控制模式,如打开针脚十七', tok) speaker.speak() speaker.ding() r.record() speaker.dong() text = bs.stt('./voice.wav', tok) while text == None or text == '': bt.tts('对不起,我没有听清楚您说了什么,请说出要控制的针脚和控制模式,如打开针脚十七', tok) speaker.speak() speaker.speak() speaker.ding() r.record() speaker.dong() text = bs.stt('./voice.wav', tok) if text != None or text != '': break else: pass gpio_n = gpioc.choose_gpio(text, tok) gpio_m = gpioc.choose_mode(text, tok) if gpio_n == 'none': os.system('python /home/pi/xiaolan/xldo.py awaken') else: if gpio_m == 'none': os.system('python /home/pi/xiaolan/xldo.py awaken') else: gpio.output(gpio_n, gpio_m)
def main(self, tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() e = email() mail_host = 'smtp.qq.com' #这里默认qq邮箱,可以更改 mail_user = '' #邮箱账户 mail_pass = '' #邮箱密码 mail_port = '465' #与邮箱服务商相通 sender = '*****@*****.**' receivers = [] bt.tts('欢迎使用小蓝邮件助手,请问您有什么需要吗', tok) speaker.speak() speaker.ding() r.record() speaker.dong() commands = bs.stt('./voice.wav', tok) command = e.command_choose(commands, tok) if command == 'send': e.send(mail_host, mail_user, mail_pass, mail_port, sender, tok) else: bt.tts('对不起,我们还暂时不支持该功能', tok) speaker.speak()
def convenstation(): speaker.ding() r.record() speaker.dong() text = self.bs.stt('./voice.wav', self.tok).Remove(str.Length - 1) if text == None or text == '': speaker.speacilrecorder() else: intentdict = xlnlu.xl_intent(text) sk.getskills(intentdict, text)
def convenstation(): b = baidu_stt(1, 3, 2, '{') r = recorder() s = skills() speaker.ding() r.record() speaker.dong() tok = b.get_token() text = b.stt('./voice.wav', tok) intent = nlp.get_intent(text) s.getskills(intent, text, tok)
def convenstation(): speaker.ding() r.record() speaker.dong() text = self.bs.stt('./voice.wav', self.tok).replace(',', '') text = self.xl.replacenumber(text) if text == None or text == '': speaker.speacilrecorder() else: intentdict = xlnlu.xl_intent(text) sk.getskills(intentdict[a][0], text)
def main(tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r.recorder() asktext = '请问您要设定什么时候的闹钟?要重复请在开头说重复闹钟,默认单次,重复闹钟请说出重复日期哦!' bt.tts(asktext, tok) speaker.speak() speaker.ding() r.record() speaker.dong() settext = bs.stt('./voice.wav', tok) if settext[0:3] == '重复闹钟': clockmode = 'reclock' reclocktime = settext[4:6]
def convenstation(tok): bs = baidu_stt(1, 2, 3, 4) bt = baidu_tts() r = recorder() s = skills() speaker.ding() r.record() speaker.dong() text = bs.stt('./voice.wav', tok) intent = nlp.get_intent(text) s.getskills(intent, text, tok)
def main(tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r.recorder() bt.tts('请问您要设定什么时候的闹钟?', tok) speaker.speak() bt.tts('支持下午几点的说法', tok) speaker.speak() speaker.ding() r.exrecord() speaker.dong() text = bs.stt('./voice.wav', tok).replace(',', '') if '重复闹钟' in text: if '下午' in text or '上午' in text: text = text.choose_date(text, text.rfind('重复闹钟'), tok)
def main(self, tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() m = xlMusic() welcome = '欢迎使用小蓝音乐播放器,云服务使用百度音乐' ask = '请问您要随机播放还是搜索播放?' url = 'http://tingapi.ting.baidu.com/v1/restserver/ting?' services = { 'musicurl_get': 'method=baidu.ting.song.play&songid=', 'search': 'method=baidu.ting.search.catalogSug&query=', 'hot': 'method=baidu.ting.song.getRecommandSongList&song_id=877578&num=12' } bt.tts(welcome, tok) speaker.speak() bt.tts(ask, tok) speaker.speak() speaker.ding() r.record() speaker.dong() try: commands = bs.stt('./voice.wav', tok) except TypeError: speaker.speak() speaker.ding() r.record() speaker.dong() command = m.command_choose(commands, tok) else: if command == 'sui_ji': m.sui_ji(services, tok) elif command == 'sou_suo': m.sou_suo(services, tok) elif command == 'exit': bt.tts('谢谢使用,下次再见', tok) speaker.speak() os.system('python /home/pi/xiaolan/xiaolan/xldo.py b') elif command == 're': bt.tts('对不起,我没有听清楚您说了什么?', tok) speaker.speak() m.main(tok)
def xlonly(tok): saytext1 = '老爸,老妈,你们好啊,我是你们儿女派来的私人助理,小蓝' saytext3 = '有什么吩咐吗?' saytext2 = saytext1.encode('utf-8', 'strict') saytext4 = saytext3.encode('utf-8', 'strict') bt = baidu_tts() bt.tts(saytext2, tok) speaker.speak() bt.tts(saytext4, tok) speaker.speak() speaker.ding() recorder.record() speaker.dong() bs = baidu_stt(1, token, 2, '{')
def convenstation(tok): bs = baidu_stt(1, 2, 3, 4) bt = baidu_tts() r = recorder() s = skills() speaker.ding() r.record() speaker.dong() text = bs.stt('./voice.wav', tok).Remove(str.Length - 1) if text == None: speaker.speacilrecorder() else: intent = nlu.get_intent(text, tok) s.getskills(intent, text, tok)
def main(tok): bt = baidu_tts() yt = youdao_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() selfset = setting.setting() hash = hashlib.md5() bt.tts('您好,请说出您的快递单号和快递公司', tok) speaker.speak() speaker.ding() r.exrecord() speaker.dong() idss = bs.stt('./voice.wav', tok) ids = number_choose(ids, tok) requestData = { 'OrderCode': ids, 'ShipperCode': service, 'LogisticCode':'12345678' } data = { 'EBusinessID': '1349773', 'RequestType': '1002', 'RequestData': parse.quote(str(requestData)), 'DataType': '2', } strings = str(requestData) + '1f0c5c35-67a8-495f-b3ab-a7fc534a826f' string = strings.encode(encoding='UTF-8',errors='strict') hashs.update(string) s = hashs.hexdigest().encode('utf-8') y = base64.b64encode(s) z = str(y, 'utf-8') data['DataSign'] = parse.quote(z, 'utf-8') r = requests.post('http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx', data=data) json = r.json() try: bt.tts(json['Traces'][-1]['AcceptStation'], tok) speaker.speak() except KeyError: bt.tts('对不起,包裹信息查询失败', tok) speaker.speak()
def start(self, tok): #判断 bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() h = hass() welcome = '欢迎使用小蓝专用智能家居控制系统!请在,滴,一声之后说出指令' bt.tts(welcome, tok) speaker.speak() speaker.ding() r.record() speaker.dong() text = bs.stt('./voice.wav', tok) while text == None: sorry = '对不起,我没有听清楚,请重复一遍' bt.tts(sorry, tok) speaker.speak() speaker.ding() r.record() speaker.speak() text = bs.stt('./voice.wav', tok) if text != None: break texts = str.encode(encoding='UTF-8', errors='strict') if '打开' in text: cortolthings = texts[6:-2] cortolmode = 'turn_on' h.cortol(cortolthings, cortolmode, tok) elif '关闭' in text: cortolthings = texts[6:-2] cortolmode = 'turn_off' h.cortol(cortolthings, cortolmode, tok) elif '查看' in text: if '传感器' in text: getstatethings = texts[6:-5] getmode = 'sensor' h.sensor(getstatethings, tok) if '红外' in text: if '学习' in text: h.study(tok) else: h.usuallycortol(text, tok)
def sou_suo(self, services, song_name, tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() m = xlMusic() url = 'http://tingapi.ting.baidu.com/v1/restserver/ting?' if song_name == '' or song_name == None: bt.tts('请问您要听什么歌?', tok) speaker.speak() speaker.ding() r.record() speaker.dong() song_name = bs.stt('./voice.wav', tok) else: get_song_id_rawj = requests.get(url + services['search'] + song_name) get_song_id_j = get_song_id_rawj.json() try: id = get_song_id_j['song'][song_name_c]['songid'] except KeyError: try: id = get_song_id_j['song'][0]['songid'] except KeyError: bt.tts('对不起,播放错误') speaker.speak() else: pass else: get_song_url_rawj = requests.get(url + services['musicurl_get'] + id) get_song_url_j = get_song_url_rawj.json() song_name = get_song_url_j['songinfo']['title'] song_url_f = get_song_url_j['bitrate']['file_link'] song_url = (song_url_f.replace('\', ' '')) download = requests.get(song_url) with open("/home/pi/xiaolan/xiaolan/musiclib/music.mp3", "wb") as code: code.write(download.content) m.play(song_name, tok)
def paly(self, song_name, tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() m = xlMusic() while song_name != None: speaker.play() bt.tts('请问还要听什么吗?可以输入指令,如,这首歌叫什么,或者,搜索歌曲', tok) speaker.speak() speaker.ding() r.record() speaker.dong() m.command_choose(bs.stt('./voice.wav', tok), tok) else: bt.tts('对不起,发生了故障', tok) speaker.speak()
def main(self, tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() m = maps() bt.tts('欢迎使用小蓝地图技能', tok) speaker.speak() bt.tts('支持查找路线,附近有什么服务等,如:从这里到美丽公园怎么走?,又比如:美丽公园附近有什么吃的?', tok) speaker.speak() bt.tts('请说出您的需要', tok) speaker.speak() speaker.ding() r.record() speaker.dong() text = bs.stt('./voice.wav', tok) command = m.choose_command(text, tok)
def main(self, tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() h = hass() bt.tts('欢迎使用小蓝专用智能家居控制系统!请在,滴,一声之后说出指令,目前仅支持homeassistant', tok) speaker.speak() speaker.ding() r.record() speaker.dong() commands = bs.stt('./voice.wav', tok) while commands == None: sorry = '对不起,我没有听清楚,请重复一遍' bt.tts(sorry, tok) speaker.speak() speaker.ding() r.record() speaker.speak() commands = bs.stt('./voice.wav', tok) if commands != None: break else: pass #print commands[6:-2] command = hass.choose_command(commands) if command == 'turn_on': h.cortol('turn_on', commands[6:-2], tok) elif command == 'turn_off': h.cortol('turn_off', commands[6:-2], tok) elif command == 'get_sensor': if '传感器' in command: getstatemode = 'sensor' else: getstatemode = 'switch' h.sensor(getstatemode, commands[6:-3], tok)
def main(tok): setting = selfset.setting() APPKEY = selfset['news']['key'] url = 'http://v.juhe.cn/toutiao/index?type=' r = recorder() bt = baidu_tts() bs = baidu_stt(1, 'a', 2, '{') bt.tts('请问您要听什么新闻?', tok) speaker.speak() speaker.ding() r.record() speaker.dong() text = bs.stt('./voice.wav', tok) if '国内新闻' in text: r = requests.post(url + 'guonei' + '&key=' + APPKEY) json = r.json() bt.tts(json['result']['data'][random.randint(0, 9)]['title'], tok) speaker.speak() elif '国际新闻' in text: r = requests.post(url + 'guoji' + '&key=' + APPKEY) json = r.json() saytext = json['result']['data'][random.randint(0, 9)]['title'] bt.tts(saytext, tok) speaker.speak() elif '科技新闻' in text: r = requests.post(url + 'keji' + '&key=' + APPKEY) json = r.json() bt.tts(json['result'][random.randint(0, 9)]['title'], tok) speaker.speak() elif '体育新闻' in text: r = requests.post(url + 'tiyu' + '&key=' + APPKEY) json = r.json() bt.tts(json['result'][random.randint(0, 9)]['title'], tok) speaker.speak() else: r = requests.post(url + 'top' + '&key=' + APPKEY) json = r.json() bt.tts(json['result'][random.randint(0, 9)]['title'], tok) speaker.speak()
def main(tok): bt = baidu_tts() yt = youdao_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() selfset = setting.setting() hash = hashlib.md5() bt.tts('您好,请说出您要查询的快递单号', tok) speaker.speak() speaker.ding() r.exrecord() speaker.dong() requestData = { 'OrderCode': '', 'ShipperCode': 'YTO', 'LogisticCode': number_choose(bs.stt('./voice.wav', tok), tok) } data = { 'EBusinessID': selfset['express']['EBusinessID'], 'RequestType': '1002', 'RequestData': urllib.urlencode(str(requestData)), 'DataType': '2', } hash.update(str(requestData) + selfset['express']['key'], encoding='utf-8') data['DataSign'] = urllib.urlencode(base64.b64encode(hash.hexdigest())) json = requests.post( 'http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx', data=data, headers='application/x-www-form-urlencoded;charset=utf-8') try: bt.tts(json['Traces'][-1]['AcceptStation'], tok) speaker.speak() except KeyError: bt.tts('对不起,包裹信息查询失败', tok) speaker.speak()
def send(self, mail_host, mail_user, mail_pass, mail_port, sender, tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() e = email() receivers = [] bt.tts('请问您要给谁发送邮件呢?格式为,邮箱数字加邮箱服务商,如,一五二六七八九,QQ邮箱', tok) speaker.speak() speaker.ding() r.tsrecord() speaker.dong() receivers[0] = bs.stt('./voice.wav', tok) bt.tts('请问您要发送什么内容?', tok) speaker.speak() speaker.ding() r.tsrecord() speaker.dong() messages = bs.stt('./voice.wav', tok) message = MIMEText(messages, 'plain', 'utf-8') message['From'] = Header("小蓝邮件代发", 'utf-8') message['To'] = Header("You", 'utf-8') subject = '小蓝邮件代发' message['Subject'] = Header(subject, 'utf-8') try: smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, mail_port) smtpObj.login(mail_user,mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) bt.tts('邮件发送成功', tok) speaker.speak() except smtplib.SMTPException: bt.tts('无法发送邮件', tok) speaker.speak()
def main(tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() youdao = youdao_tts() appKey = selfset['ts']['appkey'] secretkey = selfset['ts']['secretkey'] httpClient = None myurl = '/api' q = 'good' bt.tts('请问您要翻译的是什么语言?', tok) speaker.speak() speaker.ding() r.record() speaker.dong() fromLang = lang_choose(bs.stt('./voice.wav', tok), tok) bt.tts('请问您要翻译为什么语言?', tok) speaker.speak() speaker.ding() r.record() speaker.dong() toLang = lang_choose(bs.stt('./voice.wav', tok), tok) bt.tts('请说出您要翻译的内容', tok) speaker.speak() speaker.ding() r.tsrecord() speaker.dong() tstext = bs.stt('./voice.wav', tok) salt = random.randint(1, 65536) sign = appKey+q+str(salt)+secretKey m1 = md5.new() m1.update(sign) sign = m1.hexdigest() myurl = myurl + '?appKey=' + appKey + '&q=' + urllib.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign try: httpClient = httplib.HTTPConnection('openapi.youdao.com') httpClient.request('GET', myurl) #response是HTTPResponse对象 response = httpClient.getresponse() json = json.loads(response.read()) try: youdao.tts('第一种意思为,' + json['translation'][0] + ',第二种意思为,' + json['translation'][1], toLang) speaker.speak() except: youdao.tts('翻译结果为' + json['translation'][0], toLang) speaker.speak() except Exception, e: print e
def main(tok): r = recorder() bt = baidu_tts() url = 'https://snowboy.kitt.ai/api/v1/train/' apikey = '78ee816d9bfc8fb0e01341d4408e3f23fbbc9b03' askf = '第一次训练录音开始,请在滴一声之后说出,blueberry' asks = '第二次训练录音开始,请在滴一声之后说出,blueberry' askt = '第三次训练录音开始,请在滴一声之后说出,blueberry' bt.tts(askf, tok) speaker.speak() speaker.ding() r.train_f_record() speaker.dong() bt.tts(asks, tok) speaker.speak() speaker.ding() r.train_s_record() speaker.dong() bt.tts(askt, tok) speaker.speak() speaker.ding() r.train_t_record() speaker.dong() wav1 = "/home/pi/xiaolan/musiclib/train_f.wav" wav2 = "/home/pi/xiaolan/musiclib/train_s.wav" wav3 = "/home/pi/xiaolan/musiclib/train_t.wav" out = "/home/pi/xiaolan/snowboy/blueberry.pmdl" data = { "name": hotword_name, "language": language, "age_group": age_group, "gender": gender, "microphone": microphone, "token": token, "voice_samples": [{ "wave": get_wave(wav1) }, { "wave": get_wave(wav2) }, { "wave": get_wave(wav3) }] } response = requests.post(endpoint, json=data) if response.ok: with open(out, "w") as outfile: outfile.write(response.content) print "Saved model to '%s'." % out trueback = "Saved model to '%s'." % out bt.tts(tureback, tok) speaker.speak() else: print "Request failed." print response.text
def cortol(self, cortolthings, cortolmode, tok): #智能家居中的灯、开关控制于此(支持一句话插件) bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() h = hass() url = 'http://hassio.local' port = '8123' passwd = 'y20050801' headers = {'x-ha-access': passwd, 'content-type': 'application/json'} domains = h.service() e_id = h.e_id() cortolthings = unicode(cortolthings, "utf-8", "ignore") try: if cortolmode == 'turn_on': if e_id[cortolthings] != None: if 'switch' in e_id[cortolthings]: color_name = 'a' service = '/api/services/switch/turn_on' elif 'light' in e_id[cortolthings]: ask = '请问要设置什么颜色,可以忽略' bt.tts(ask, tok) speaker.speak() speaker.ding() r.record() speaker.dong() color_name_f = bs.stt('./voice.wav', tok) if color_name_f != None: color_name = h.chosecolor(color_name_f) else: color_name = 'a' service = '/api/services/light/turn_on' elif 'automation' in e_id[cortolthings]: color_name = 'a' service = '/api/services/automation/turn_on' elif cortolmode == 'turn_off': if e_id[cortolthings] != None: if 'switch' in e_id[cortolthings]: color_name = 'a' service = '/api/services/switch/turn_off' elif 'light' in e_id[cortolthings]: color_name = 'a' service = '/api/services/light/turn_off' elif 'automation' in e_id[cortolthings]: color_name = 'a' service = '/api/services/automation/turn_off' except KeyError: sorry = '对不起,控制设备不存在,请注意!控制设备的名称得跟在homeassistant上设置的friendly,name一样' bt.tts(sorry, tok) speaker.speak() except TypeError: sorry = '对不起,控制设备不存在,请注意!控制设备的名称得跟在homeassistant上设置的friendly,name一样' bt.tts(sorry, tok) speaker.speak() except ValueError: sorry = '对不起,控制设备不存在,请注意!控制设备的名称得跟在homeassistant上设置的friendly,name一样' bt.tts(sorry, tok) speaker.speak() else: pass try: cortole_id = e_id[cortolthings] if color_name == 'a': dataf = {"entity_id": cortole_id.encode('utf-8')} data = json.dumps(dataf) else: dataf = { "color_name": color_name, "entity_id": cortole_id.encode('utf-8') } data = json.dumps(dataf) except KeyError: sorry = '对不起,控制设备不存在,请注意!控制设备的名称得跟在homeassistant上设置的friendly,name一样' bt.tts(sorry, tok) speaker.speak() except TypeError: sorry = '对不起,控制设备不存在,请注意!控制设备的名称得跟在homeassistant上设置的friendly,name一样' bt.tts(sorry, tok) speaker.speak() except ValueError: sorry = '对不起,控制设备不存在,请注意!控制设备的名称得跟在homeassistant上设置的friendly,name一样' bt.tts(sorry, tok) speaker.speak() else: print data cortolback = requests.post(url + ':' + port + service, headers=headers, data=data) if cortolback.status_code == 200 or cortolback.status_code == 201: sayback = '执行成功' bt.tts(sayback, tok) speaker.speak() else: sayback = '执行错误' bt.tts(sayback, tok) speaker.speak()
def cortol(self, cortolmode, cortolthings, tok): bt = baidu_tts() bs = baidu_stt(1, 2, 3, 4) r = recorder() h = hass() setting = setting.setting() url = setting['smarthome']['url'] port = setting['smarthome']['port'] passwd = setting['smarthome']['passwd'] service = '/api/states' headers = {'x-ha-access': passwd, 'content-type': 'application/json'} try: e_id = h.e_id(tok) cortolthings = unicode(cortolthings, "utf-8", "ignore") if cortolmode == 'turn_on': if e_id[cortolthings] != None: if 'switch' in e_id[cortolthings]: color_name = 'none' service = '/api/services/switch/turn_on' elif 'light' in e_id[cortolthings]: bt.tts('请问要设置什么颜色,可以忽略', tok) speaker.speak() speaker.ding() r.record() speaker.dong() text = bs.stt('./voice.wav', tok) color_name = h.choose_color(text) service = '/api/services/light/turn_on' if cortolmode == 'turn_off': if e_id[cortolthings] != None: if 'switch' in e_id[cortolthings]: color_name = 'none' service = '/api/services/switch/turn_off' elif 'light' in e_id[cortolthings]: color_name = 'none' service = '/api/services/light/turn_off' if color_name != 'none': dataf = { "color_name": color_name, "entity_id": e_id[cortolthings].encode('utf-8') } data = json.dumps(dataf) else: dataf = {"entity_id": e_id[cortolthings].encode('utf-8')} data = json.dumps(dataf) except KeyError: bt.tts( '对不起,控制设备不存在,请注意!控制设备的名称得跟在homeassistant上设置的friendly,name一样', tok) speaker.speak() except TypeError: bt.tts( '对不起,控制设备不存在,请注意!控制设备的名称得跟在homeassistant上设置的friendly,name一样', tok) speaker.speak() except ValueError: bt.tts( '对不起,控制设备不存在,请注意!控制设备的名称得跟在homeassistant上设置的friendly,name一样', tok) speaker.speak() else: #print data r = requests.post(url + ':' + port + services, headers=headers, data=data) if cortolback.status_code == 200 or cortolback.status_code == 201: bt.tts('执行成功', tok) speaker.speak() else: bt.tts('执行错误', tok) speaker.speak()