更新静默录音
authorp15692025051 <846603105@qq.com>
Mon, 18 Aug 2025 03:54:32 +0000 (11:54 +0800)
committerp15692025051 <846603105@qq.com>
Mon, 18 Aug 2025 03:54:32 +0000 (11:54 +0800)
2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/voice_record.py

index df074b3..368a49f 100644 (file)
@@ -51,6 +51,7 @@ class VOICE_RECORD(Abstract): #静默录音
         self.open_start = 0 #是否需要超时关闭静默录音
         self.voice_timer_out = osTimer()
         self.voice_mode = 0
+        self.record_fd = None
       
     def post_processor_after_instantiation(self):
         EventMesh.subscribe("start_voice_record", self.start_voice_record)#开始静默录音
@@ -139,6 +140,10 @@ class VOICE_RECORD(Abstract): #静默录音
     #获取录音数据
 
     def Voice_record_thread(self):
+        EventMesh.publish(constants.EVENT.SYSTEM_UP)#唤醒休眠
+        EventMesh.publish("wakeup_BT")
+        self.record_len_tmp = 0
+        self.record_fd_len = 0
         while True:
             try:
                 
@@ -148,11 +153,35 @@ class VOICE_RECORD(Abstract): #静默录音
                 Record_len = self.record.stream_read(Record_read_buf, self.Audio_buf_size)
                 if Record_len > 0:
                     read_buf = bytes(Record_read_buf[:Record_len])
+
+                    # if self.record_fd == None and self.record_fd_len <300*1024:
+                    #     try:
+                    #         uos.remove('/usr/record_data1.pcm')
+                    #     except Exception as e:
+                    #         usys.print_exception(e)
+                    #     self.record_fd = open('/usr/record_data1.pcm','w')
+                    #     self.record_fd_len = 0
+                    # if self.record_fd != None:
+                    #     try:
+                    #         if self.record_fd_len <300*1024:
+                    #             self.record_fd.write(read_buf)
+                    #             print("write record:{}".format(len(read_buf)))
+                    #             self.record_fd_len = self.record_fd_len+len(read_buf)
+                    #         if self.record_fd_len >=300*1024:
+                    #             self.record_fd.close()
+                    #             self.record_fd = None
+                    #     except Exception as e:
+                    #         usys.print_exception(e)
+                    # self.record_len_tmp = self.record_len_tmp+len(read_buf)
+                    # print("write record_len:{} len{}".format(len(read_buf),self.record_len_tmp))
+                    # #print("前10个字节:{} 后10个字节{}".format(Record_read_buf[0:10],Record_read_buf[len(read_buf)-10:len(read_buf)]))
+                    EventMesh.publish("system_sleep_rest")#防止黑屏
+                    #EventMesh.publish("wakeup_BT")
                     try:
                         #发送静默录音数据到iot平台
                         if self.voice_mode == 1: #静默录音开始发送
                             EventMesh.publish("SEND_JINMOAUDIO_TO_IOT",[read_buf,self.msgid_int,self.start_voice_record_flag])
-                            
+                            pass
                         elif self.voice_mode == 2: #语音留言开始
                             
                             EventMesh.publish("SEND_YUYINAUDIO_TO_IOT",[read_buf,self.msgid_int,self.start_voice_record_flag])
@@ -163,9 +192,14 @@ class VOICE_RECORD(Abstract): #静默录音
                     # print("voice Record_len:{}".format(Record_len))
             except Exception as e:
                 usys.print_exception(e)
-            utime.sleep_ms(100)
+            if self.record_fd != None:
+                utime.sleep_ms(1)
+            else:
+                utime.sleep_ms(100)
         self.start_voice_record_flag = 0
         print("Voice_record_thread:exit")
         self.voice_record_thread_id = 0
-        
+        if self.record_fd != None:
+            self.record_fd.close()
+            self.record_fd = None