self.KeyAI_status = 0
if self.KeyAI_status == 0:#按下
+ if EventMesh.publish("get_recv_voice") == 1:#当处于收到留言的时候
+ print("收到留言")
+ EventMesh.publish("set_voicerupt_flag",1)
+ return
+ print("没收到留言")
if self.KeyAI_press == 0 :
EventMesh.publish(constants.EVENT.SYSTEM_UP)#唤醒休眠
if EventMesh.publish("get_play_new_voice_state") == 1:
EventMesh.subscribe("set_vad_silence",self.set_vad_silence)
EventMesh.subscribe("kws_even",self.kws_even)
-
+ self.voice_timer = osTimer()#语音留言10S按下按键确定是否播放的判断定时器
+ self.voice_cnt = 0 #留言定时器计数
+ self.voicerupt_flag = 0#留言选择按键接听标志位
+ self.recv_voice = 0 #是否收到留言
+
self.error_data = []
self.asr_taskid = ""
self.VC_taskid = ""
EventMesh.subscribe("get_yuyinaudio_flag",self.get_yuyinaudio_flag)
EventMesh.subscribe("exit_voice_message_mode",self.exit_voice_message_mode) #超时未退出语音留言模式
EventMesh.subscribe("get_audio_play_state",self.get_audio_play_state)
+ EventMesh.subscribe("set_voicerupt_flag",self.set_voicerupt_flag)#按键中断触发留言播放
+ EventMesh.subscribe("get_recv_voice",self.get_recv_voice)#获取是否收到留言
+ # EventMesh.subscribe("get_voicerupt_flag",self.get_voicerupt_flag)#获取留言播放状态
# EventMesh.subscribe("chenggong_tone",self.chenggong_tone)
pass
print("VC:Started!!!!!!!!\r\n")
if self.AI_TTS_str == "" and self.AI_new_voice_url != "":
- EventMesh.publish("publish_AI_btnInfo",{"func":self.AI_client_new_voice})
+ self.voice_timer.start(1000,1,self.voice_judge)
elif self.AI_TTS_str != "" and self.AI_new_voice_url == "":
EventMesh.publish("publish_AI_btnInfo",{"func":self.AI_client_VC_synthesis})
- elif self.AI_TTS_str != "" and self.AI_new_voice_url != "":
- EventMesh.publish("publish_AI_btnInfo",{"func":self.AI_client_new_voice})
+ elif self.AI_TTS_str != "" and self.AI_new_voice_url != "":#遇到tts和语音留言冲突时
+ # EventMesh.publish("publish_AI_btnInfo",{"func":self.AI_client_VC_synthesis})
+ self.voice_timer.start(1000,1,self.voice_judge)
self.AI_TTS_str = ""
else:
#开始上传语音
self.AI_client_VC_recv_lock = 0
print("AI_client_VC_recv END!!!!!!!!!!!!!!!!!!!!!!!!!!!")
+ def voice_play_10S(self,event,msg):#按键开启留言播放等待10S定时器判断
+ self.voice_timer.start(1000,1,self.voice_judge)
+ #语音留言定时器
+ def voice_judge(self, *args, **kwargs):
+ EventMesh.publish("publish_AI_btnInfo",{"func":self.voice_judger_cb})
+ def voice_judger_cb(self):
+ self.voice_cnt += 1
+ if self.voicerupt_flag == 1:#按键被按下
+ EventMesh.publish("publish_AI_btnInfo",{"func":self.AI_client_new_voice})#播放留言
+ self.voicerupt_flag = 0 #标志位置0
+ self.voice_timer.stop()
+ self.recv_voice = 0#进入留言定时器,留言清空
+ print("进入留言定时器,留言清空!!!!!")
+ if self.voice_cnt == 10:#10S后退出播放
+ self.voice_timer.stop()
+ self.recv_voice = 0#进入留言定时器,留言清空
+ print("进入留言定时器,留言清空!!!!!")
+ def set_voicerupt_flag(self,event,msg):#按键控制留言播放
+ self.voicerupt_flag = msg
+ def get_voicerupt_flag(self,event,msg):#获取按键控制留言播放状态
+ return self.voicerupt_flag
+ def get_recv_voice(self,event,msg):
+ return self.recv_voice
+
def put_record_data(self,data):
#print("下发音频数据1:{}".format(len(data[0])))
new_voice_url = data[0] #音频地址
is_close_VC = data[1]
if new_voice_url != "":
+ self.recv_voice = 1#收到留言
+ print("已收到最新留言!!!!!")
+ EventMesh.publish("set_motor_time",[1,1,5,8,4])#设置马达参数
+ # EventMesh.publish("play_tts",["您有一条语音留言,按下中间键可以收听",1])
self.AI_new_voice_url = new_voice_url
if is_close_VC != None:
self.Close_flag = is_close_VC