Пример #1
0
 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'
         })
Пример #2
0
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()
Пример #3
0
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)
Пример #4
0
    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()
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
 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()
Пример #9
0
    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)
Пример #10
0
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)
Пример #11
0
 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)
Пример #12
0
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]
Пример #13
0
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)
Пример #14
0
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)
Пример #15
0
    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)
Пример #16
0
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, '{')
Пример #17
0
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)
Пример #18
0
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()
Пример #19
0
    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)
Пример #20
0
    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)
Пример #21
0
    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()
Пример #22
0
 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)
Пример #23
0
    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)
Пример #24
0
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()
Пример #25
0
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()
Пример #26
0
 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()
Пример #27
0
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
Пример #28
0
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
Пример #29
0
    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()
Пример #30
0
    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()