基于树莓派的语音对话机器人
本文实例为大家分享了基于树莓派的语音对话机器人,供大家参考,具体内容如下
第一部分代码
arecord-D"plughw:1"-fS16_LE-r16000-d3/home/pi/Desktop/voice.wav
第二部分代码
#coding:utf-8 importsys importjson importurllib2 importbase64 importrequests reload(sys) sys.setdefaultencoding(“utf-8”) defget_access_token(): url=“https://openapi.baidu.com/oauth/2.0/token” body={ “grant_type”:”client_credentials”, “client_id”:”此处填写自己的client_id”, “client_secret”:”此处填写自己的client_secret”, } r=requests.post(url,data=body,verify=True) respond=json.loads(r.text) returnrespond["access_token"] defyuyinshibie_api(audio_data,token): speech_data=base64.b64encode(audio_data).decode(“utf-8”) speech_length=len(audio_data) post_data={ “format”:“wav”, “rate”:16000, “channel”:1, “cuid”:“B8-27-EB-BA-24-14”, “token”:token, “speech”:speech_data, “len”:speech_length } url="http://vop.baidu.com/server_api" json_data=json.dumps(post_data).encode("utf-8") json_length=len(json_data) #print(json_data) req=urllib2.Request(url,data=json_data) req.add_header("Content-Type","application/json") req.add_header("Content-Length",json_length) #print("asrstartrequest\n") resp=urllib2.urlopen(req) #print("asrfinishrequest\n") resp=resp.read() resp_data=json.loads(resp.decode("utf-8")) ifresp_data["err_no"]==0: returnresp_data["result"] else: print(resp_data) returnNone defasr_main(filename,tok): try: f=open(filename,“rb”) audio_data=f.read() f.close() resp=yuyinshibie_api(audio_data,tok) returnresp[0] exceptException,e: print“e:”,e return“识别失败”.encode(“utf-8”)
第三部分代码
#coding:utf-8 importrequests importjson importsys reload(sys) sys.setdefaultencoding("utf-8") defTuling(words): Tuling_API_KEY="此处填写自己的TurlingKEY" body={"key":Tuling_API_KEY,"info":words.encode("utf-8")} url="http://www.tuling123.com/openapi/api" r=requests.post(url,data=body,verify=True) ifr: date=json.loads(r.text) printdate["text"] returndate["text"] else: returnNone
第四部分代码
#coding:utf-8 importsys importurllib2 importjson importos importyuyinshibie reload(sys) sys.setdefaultencoding("utf-8") defyuyinhecheng_api(tok,tex): cuid="B8-27-EB-BA-24-14" spd="4" url="http://tsn.baidu.com/text2audio?tex="+tex+"&lan=zh&cuid="+cuid+"&ctp=1&tok="+tok+"&per=3" #printurl #response=requests.get(url) #date=response.read() returnurl deftts_main(filename,words,tok): voice_date=yuyinhecheng_api(tok,words) f=open(filename,"wb") f.write(voice_date) f.close()
第五部分代码
#coding:utf-8 importos importtime importyuyinhecheng importTurling importyuyinshibie tok=yuyinshibie.get_access_token() switch=True whileswitch: os.system('sudoarecord-D"plughw:1"-fS16_LE-r16000-d3/home/pi/Desktop/voice.wav') time.sleep(0.5) info=yuyinshibie.asr_main("/home/pi/Desktop/voice.wav",tok) if'关闭'.encode("utf-8")ininfo: whileTrue: os.system('sudoarecord-D"plughw:1"-fS16_LE-r16000-d10/home/pi/Desktop/voice.wav') time.sleep(10) info=yuyinshibie.asr_main("/home/pi/Desktop/voice.wav",tok) if'开启'.encode("utf-8")ininfo: break url="http://tsn.baidu.com/text2audio?tex=开启成功&lan=zh&cuid=B8-27-EB-BA-24-14&ctp=1&tok="+tok+"&per=3" os.system('mpg123"%s"'%url) elif'暂停'.encode("utf-8")ininfo: url="http://tsn.baidu.com/text2audio?tex=开始暂停&lan=zh&cuid=B8-27-EB-BA-24-14&ctp=1&tok="+tok+"&per=3" os.system('mpg123"%s"'%url) time.sleep(10) url="http://tsn.baidu.com/text2audio?tex=暂停结束&lan=zh&cuid=B8-27-EB-BA-24-14&ctp=1&tok="+tok+"&per=3" os.system('mpg123"%s"'%url) continue else: tex=Turling.Tuling(info) url=yuyinhecheng.yuyinhecheng_api(tok,tex) os.system('mpg123"%s"'%url) time.sleep(0.5)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。