self.VC_satrt_kws_flag = 0
self.session_id = ""
self.stop_voice_timer=osTimer()
+ self.pwk_cnt_voice = 0 #不听语音后,积攒的次数,需要一起播放
+ self.pwk_notice_flag = 0#是否处于积攒留言状态(用来实现单次提醒)
EventMesh.subscribe("AI_key_press", self.AI_key_press)
EventMesh.subscribe("BT_AI_key_press", self.BT_AI_key_press)
EventMesh.subscribe("stop_AI_record", self.stop_AI_record)
EventMesh.subscribe("set_VC_stop_play_audio_flag", self.set_VC_stop_play_audio_flag)
EventMesh.subscribe("set_yuyinaudio_flag",self.set_yuyinaudio_flag)
EventMesh.subscribe("get_yuyinaudio_flag",self.get_yuyinaudio_flag)
+ EventMesh.subscribe("set_pwk_cnt_voice",self.set_pwk_cnt_voice)
+ EventMesh.subscribe("get_pwk_cnt_voice",self.get_pwk_cnt_voice)
EventMesh.subscribe("exit_voice_message_mode",self.exit_voice_message_mode) #超时未退出语音留言模式
EventMesh.subscribe("come_meet_mode",self.come_meet_mode)#进入会议模式
EventMesh.subscribe("exit_meet_mode",self.exit_meet_mode)#退出会议模式
EventMesh.subscribe("rate_change",self.rate_change)#直接修改语速
EventMesh.subscribe("get_history_voice_flag",self.get_history_voice_flag)#获取查找历史留言状态
EventMesh.subscribe("set_history_voice_flag",self.set_history_voice_flag)#修改查找历史留言状态
+ EventMesh.subscribe("clean_unread_vocie",self.clean_unread_vocie)#修改查找历史留言状态
EventMesh.subscribe("get_wait_voice_flag",self.get_wait_voice_flag)#获取60S等待留言播放定时器状态
EventMesh.subscribe("set_wait_voice_flag",self.set_wait_voice_flag)#修改60S等待留言播放定时器状态
+ EventMesh.subscribe("rate_move",self.rate_move)#NLP修改语速
# EventMesh.subscribe("get_voicerupt_flag",self.get_voicerupt_flag)#获取留言播放状态
# EventMesh.subscribe("chenggong_tone",self.chenggong_tone)
EventMesh.publish("set_storage_config",["speech_rate",self.speech_rate])
print("set_speech_rate:{}".format(self.speech_rate))
def rate_move(self,event,msg):#设置语速(模糊(快/慢一点))
- if msg == 1:#增大
+ if msg == 1 and self.speech_rate<50:#增大
self.speech_rate += 10
else:#减小
- self.speech_rate -= 10
+ if self.speech_rate >-50:
+ self.speech_rate -= 10
EventMesh.publish("set_storage_config",["speech_rate",self.speech_rate])
print("set_speech_rate:{}".format(self.speech_rate))
def set_history_voice_flag(self,event,msg):
print("历史留言标记修改为:{}".format(msg))
self.history_voice_flag = msg
-
+ def clean_unread_vocie(self,event,msg):
+ self.pwk_cnt_voice = 0
+ self.pwk_notice_flag = 0
+ EventMesh.publish("set_app_new_voice_flag",0)
def audio_test(self,event = None, msg = None):
self.VC_Speech_Start()
self.VC_Play_Start()
def set_yuyinaudio_flag(self, event=None, msg = None):
self.voice_flag=0
+
+ #留言主动拒听
+ def get_pwk_cnt_voice(self, event=None, msg = None):
+ return self.pwk_cnt_voice
+
+ def set_pwk_cnt_voice(self, event=None, msg = None):
+ self.pwk_cnt_voice=msg
+
#会议
def get_meetaudio_flag(self, event=None, msg = None):
return self.meet_flag
def get_audio_play_state(self, event=None, msg = None):
return self.audio_play_state
+
+
def come_meet_mode(self, event=None, msg = None):
if self.meet_flag == 0: #还是为0就提示进入会议纪要模式
EventMesh.publish("send_meet_open_flag_to_iot")#创建会议
self.alarm_play_flag = 0
self.voice_choose_flag = 1
elif self.AI_TTS_str == "" and self.AI_new_voice_url != "" and self.music_play_flag == 0:
- if EventMesh.publish("get_history_voice_flag") == 1:
- EventMesh.publish("publish_AI_btnInfo",{"func":self.AI_client_new_voice})#播放留言
- self.recv_voice = 0#当留言列表为空,留言播放标志清空
- else:
- self.voice_cnt = 0
- print("定时器开启222222222")
- self.voice_timer.start(1000,1,self.voice_judge)
+ # if EventMesh.publish("get_history_voice_flag") == 1:
+ EventMesh.publish("publish_AI_btnInfo",{"func":self.AI_client_new_voice})#播放留言
+ self.recv_voice = 0#当留言列表为空,留言播放标志清空
+ # else:
+ # self.voice_cnt = 0
+ # print("定时器开启222222222")
+ # 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 jsload_data["event"] == "audio.convert.completed":#音频转成完成没有出错 接口
self.VC_state = VC_State_End
+ if self.pwk_notice_flag == 1:#只有在播放的时候才会去计数
+ self.pwk_cnt_voice -= 1#减1
+ print("未读留言又-1,当前留言剩余数量为:{}".format(self.pwk_cnt_voice))
+ if self.pwk_cnt_voice == 0:#积累的留言已经全部播完
+ self.pwk_notice_flag = 0
+ self.voice_notice = 1#开启回复
if self.voice_choose_flag == 1:#播放完语音后,有冲突的时候关闭
self.voice_choose_flag = 0
self.Close_flag = 1
# EventMesh.publish("update_play_new_voice_info")
EventMesh.publish("play_new_voice_list")
print("是否未读:{},是否播完:{}".format(EventMesh.publish("get_wait_voice_flag"),len(EventMesh.publish("get_play_new_voice_list"))))
- if len(EventMesh.publish("get_play_new_voice_list")) ==0:#还在未读并且列表为空
- self.wait_first_flag = 0
- print("未读留言播完,清空标志")
- EventMesh.publish("set_history_voice_flag",0)
+ # if EventMesh.publish("get_wait_voice_flag") == 1 and len(EventMesh.publish("get_play_new_voice_list")) ==0:#还在未读并且列表为空
+ # self.wait_first_flag = 0
+ # print("未读留言播完,清空标志")
+ # EventMesh.publish("set_wait_voice_flag",0)
+ # EventMesh.publish("set_history_voice_flag",0)
EventMesh.publish("update_play_new_voice_info")#更新已读状态
self.recv_voice = 0
self.LocalRespondingEnded_timerout = 8
self.voice_cnt += 1
# print("语音留言定时器cnt = {}".format(self.voice_cnt))
if self.voicerupt_flag == 1:#按键被按下
+ self.pwk_notice_flag = 1#表示进入收听
self.AI_VC_start()
- self.voice_notice = 1
EventMesh.publish("publish_AI_btnInfo",{"func":self.AI_client_new_voice})#播放留言
self.voicerupt_flag = 0 #标志位置0
self.voice_cnt = 0
print("进入留言定时器1,留言清空!!!!!")
EventMesh.publish("update_play_new_voice_info")#更新已读状态
self.voice_timer.stop()
+ if self.pwk_cnt_voice > 0:
+ EventMesh.publish("get_new_voice_msg_S")
if self.voice_cnt > 15:#10S后退出播放,5S是为了给语音提示留时间
self.voice_cnt = 0
self.recv_voice = 0#进入留言定时器,留言清空
print("已收到最新留言!!!!!")
# EventMesh.publish("set_motor_time",[1,1,5,8,4])#设置马达参数
self.AI_new_voice_url = new_voice_url
- EventMesh.publish("play_tts",["您有一条语音留言,10秒内按下中间键可以收听",1])
+ # if self.pwk_cnt_voice == 0 and self.pwk_notice_flag == 0:#并且不在多条留言的状态
+ # EventMesh.publish("play_tts",["您有一条语音留言,10秒内按下中间键可以收听",1])
+ if self.pwk_notice_flag == 0 and EventMesh.publish("get_app_new_voice_flag"):#不处于播放状态并且是小程序下发的语音而不是请求的
+ self.pwk_cnt_voice += 1#加上当前这条
+ EventMesh.publish("set_app_new_voice_flag",0)
+ print("voice_add_to = {}".format(self.pwk_cnt_voice))
+ print("self.pwk_notice_flag = {}".format(self.pwk_notice_flag))
+ if self.pwk_cnt_voice >0:
+ if self.pwk_notice_flag == 0:
+ tts_str = "您有" + str(self.pwk_cnt_voice) + "条语音留言,10秒内按下中间键可以收听"
+ EventMesh.publish("play_tts",[tts_str,1])
if is_close_VC != None:
self.Close_flag = is_close_VC
if self.AI_VC_send_data_queue.empty()!=True:
EventMesh.publish("play_his_voice",[url,1,time])
if len(EventMesh.publish("get_play_new_voice_list")) == 0:#列表为空才清零
EventMesh.publish("set_history_voice_flag",0)#修改标志位
-
else:
EventMesh.publish("play_new_voice",[url,1])
break
-
pass
def update_play_new_voice_info(self,event,msg): #更新播放语音留言信息
date_tmp = utime.localtime()
elif "查看历史留言" in cmd :#当指令中有查看历史留言时,调用历史留言接口
EventMesh.publish(WEB_CMD_ENUM.GET_NEW_VOICE_MSG_S)
EventMesh.publish("set_history_voice_flag",1)#修改标志位
+ EventMesh.publish("clean_unread_vocie")#清空未读多条一起下发记录
pass
#NLP指令
pass
else:#未读留言
for da in voice_list:
- new_voice_list.append(da)
+ new_voice_list.append(da)
if len(new_voice_list) > 0:
pass
EventMesh.publish("set_play_new_voice_list",new_voice_list)
EventMesh.publish("play_new_voice_list")
+ else:#正常留言
+ if EventMesh.publish("get_pwk_cnt_voice") >= 0:
+ for da in voice_list:
+ new_voice_list.append(da)
+ if len(new_voice_list) > 0:
+ pass
+ EventMesh.publish("set_play_new_voice_list",new_voice_list)
+ EventMesh.publish("play_new_voice_list")
def set_history_board_flag(self,event,msg):
self.history_board_flag = msg
def __init__(self):
super().__init__()
self._1M_flag = 0#判断一分钟定时器是否开启中
+ self.app_new_voice_flag = 0#app是否下发留言
+ EventMesh.subscribe("get_app_new_voice_flag",self.get_app_new_voice_flag)
+ EventMesh.subscribe("set_app_new_voice_flag",self.set_app_new_voice_flag)
def send(self, event, msg):
print("send new_voice_msg_list{}".format(msg))
# 通过websocket发送到服务器端
@param event:new_voice_msg_list
@param msg: 接收到的下行数据
"""
+ self.app_new_voice_flag = 1#标志位为1
self._1M_timer = osTimer()#多发留言间隙时间60S
new_voice_list = []
if "data" in msg:
EventMesh.publish("play_new_voice_list")
else:#当有音频在播放时,存下来开始倒计时
pass
- if self._1M_flag == 0:
+ if self._1M_flag == 0 :
print("等待留言60S倒计时开启")
self._1M_timer.start(60000, 1, self._1M_timer_cb)
self._1M_flag = 1
EventMesh.publish("set_wait_voice_flag",1)#修改60S标志位
self._1M_flag = 0
self._1M_timer.stop()
+ def get_app_new_voice_flag(self,event,msg):
+ return self.app_new_voice_flag
+ def set_app_new_voice_flag(self,event,msg):
+ self.app_new_voice_flag = msg
class IOTWeb_put_voice_msg_stateProtoCol(ProtoCol):
"""put_voice_msg_state"""
TYPE = "put_voice_msg_state"