将提示从震动改为语音提醒:“您有一条语音留言,按下中间键可以收听”
authorazao <821478748@qq.com>
Thu, 16 Oct 2025 06:03:22 +0000 (14:03 +0800)
committerazao <821478748@qq.com>
Thu, 16 Oct 2025 06:03:22 +0000 (14:03 +0800)
2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/ai_VC.py

index 0ee91e4..c0c3c4d 100644 (file)
@@ -2505,6 +2505,7 @@ class AI_VC(Abstract):
         self.voice_cnt = 0 #留言定时器计数
         self.voicerupt_flag = 0#留言选择按键接听标志位
         self.recv_voice = 0 #是否收到留言
+        self.voice_choose_flag = 0#当tts和语音留言冲突时,为了防止语音地址被误清,做标志位在close做判断
 
         self.error_data = []
         self.asr_taskid  = ""
@@ -3937,15 +3938,16 @@ class AI_VC(Abstract):
                             EventMesh.publish("open_led_blue")
                             
                             print("VC:Started!!!!!!!!\r\n")
-                           
+                            print("TTS音频为:{},语音下发地址为:{}".format(self.AI_TTS_str,self.AI_new_voice_url))
                             if self.AI_TTS_str == "" and  self.AI_new_voice_url != "":
                                 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 != "":#遇到tts和语音留言冲突时
-                                # EventMesh.publish("publish_AI_btnInfo",{"func":self.AI_client_VC_synthesis})
+                                EventMesh.publish("publish_AI_btnInfo",{"func":self.AI_client_VC_synthesis})
                                 self.voice_timer.start(1000,1,self.voice_judge) 
-                                self.AI_TTS_str = ""    
+                                self.voice_choose_flag = 1
+                                # self.AI_TTS_str = ""    
                             else:
                                 #开始上传语音
                                 if dev_type != "7PIN_coze" and dev_type != "7PIN" and  dev_type != "7PIN_1_5":
@@ -4083,12 +4085,18 @@ class AI_VC(Abstract):
                             pass
                            
                         elif jsload_data["event"] == "audio.convert.completed":#音频转成完成没有出错 接口
-                            self.LocalRespondingEnded_timerout = 8
+                            
                             self.VC_state = VC_State_End
+                            if self.voice_choose_flag == 1:#播放完语音后,有冲突的时候关闭
+                                self.voice_choose_flag = 0
+                                self.Close_flag = 1
+                                self.LocalRespondingEnded_timerout = 8   
+                                # EventMesh.publish("publish_AI_btnInfo",{"func":self.Close}) 
                             if EventMesh.publish("get_play_new_voice_state")== 1:
                                 EventMesh.publish("set_play_new_voice_state",1)
                                 EventMesh.publish("update_play_new_voice_info")
                                 EventMesh.publish("play_new_voice_list")
+                                
                             pass
                         elif jsload_data["event"] == "audio.convert.failed": #音频转换失败了
                             pass
@@ -4162,15 +4170,18 @@ class AI_VC(Abstract):
     def voice_judger_cb(self):
         self.voice_cnt += 1
         if self.voicerupt_flag == 1:#按键被按下
+           self.AI_VC_start()
            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("进入留言定时器,留言清空!!!!!")
+           print("进入留言定时器1,留言清空!!!!!")
         if self.voice_cnt == 10:#10S后退出播放
            self.voice_timer.stop()
            self.recv_voice = 0#进入留言定时器,留言清空
-           print("进入留言定时器,留言清空!!!!!")
+           if self.voice_choose_flag == 1:#播放完语音后,有冲突的时候关闭
+              self.voice_choose_flag = 0
+           print("进入留言定时器2,留言清空!!!!!")
     def set_voicerupt_flag(self,event,msg):#按键控制留言播放
         self.voicerupt_flag = msg
     def get_voicerupt_flag(self,event,msg):#获取按键控制留言播放状态
@@ -5327,8 +5338,8 @@ class AI_VC(Abstract):
             if new_voice_url != "":
                 self.recv_voice = 1#收到留言
                 print("已收到最新留言!!!!!")
-                EventMesh.publish("set_motor_time",[1,1,5,8,4])#设置马达参数
-                # EventMesh.publish("play_tts",["您有一条语音留言,按下中间键可以收听",1])
+                # 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
@@ -5365,6 +5376,7 @@ class AI_VC(Abstract):
         self.AI_new_voice_url = ""
         print("AI_client_new_voice!!!!!!!!!!!!!!!!!!!!!!!!!!!!!{}".format(json_data))
         self.AI_client_VC_send(ujson.dumps(json_data))
+        
     
     def chenggong_tone(self):
         EventMesh.publish("audio_montage_play",["chenggong.mp3"])    
@@ -5559,7 +5571,10 @@ class AI_VC(Abstract):
         if self.AI_VC_send_data_queue.empty()!=True:
             self.AI_VC_send_data_queue.clear()
         self.play_new_voice_flag = 0 #语音消息播放状态
-        self.AI_new_voice_url ="" #语音播放地址
+        if self.voice_choose_flag == 0:#如果没有未读语音
+            self.AI_new_voice_url ="" #语音播放地址
+            print("关闭并重置语音标志位")
+        print("关闭但是没有重置语音标志位")
         self.AI_ASR_send_buf_len = 0
         #self.AI_WS_connect_Queue.put(self.AI_client_VC)
         EventMesh.publish("close_led")