日程提醒时添加提示词:日程提醒
authorazao <821478748@qq.com>
Thu, 16 Oct 2025 01:42:48 +0000 (09:42 +0800)
committerazao <821478748@qq.com>
Thu, 16 Oct 2025 01:42:48 +0000 (09:42 +0800)
收到语音留言后震动并等待10S,按下按键后可触发语音留言,否则不操作

2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/ai_VC.py
2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/ai_alarm.py

index 040e1ea..0ee91e4 100644 (file)
@@ -1371,6 +1371,11 @@ class AI_dev(Abstract):
                 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:
@@ -2496,7 +2501,11 @@ class AI_VC(Abstract):
         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  = ""
@@ -2879,6 +2888,9 @@ class AI_VC(Abstract):
         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
@@ -3927,11 +3939,12 @@ class AI_VC(Abstract):
                             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:
                                 #开始上传语音
@@ -4141,6 +4154,30 @@ class AI_VC(Abstract):
         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])))
@@ -5288,6 +5325,10 @@ class AI_VC(Abstract):
             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
index 23444e5..da0cd5d 100644 (file)
@@ -936,6 +936,7 @@ class schedule(Abstract):
                     AringTimes = 1
                 repeat_sentence = (self.base_sentence + ",") * AringTimes  # 重复5次并加逗号分隔
                 final_sentence = repeat_sentence.rstrip(",")
+                final_sentence = "日程提醒: " + final_sentence
                 self.schedule_play_timer.stop()
                 self.schedule_play_count = AringTimes
                 self.schedule_play_count_tmp=1