@@ -262,9 +262,14 @@ def record(self):
262262 print (f"RecordStream: max_bytes={ max_bytes } , chunk_size={ chunk_size } " )
263263
264264 # Open file for appending audio data (append mode to avoid seek issues)
265- with open (self .file_path , 'ab' ) as f :
266- buf = bytearray (chunk_size )
265+ print (f"RecordStream: Opening file for audio data..." )
266+ t0 = time .ticks_ms ()
267+ f = open (self .file_path , 'ab' )
268+ print (f"RecordStream: File opened in { time .ticks_diff (time .ticks_ms (), t0 )} ms" )
267269
270+ buf = bytearray (chunk_size )
271+
272+ try :
268273 while self ._keep_running and self ._bytes_recorded < max_bytes :
269274 # Check elapsed time
270275 elapsed = time .ticks_diff (time .ticks_ms (), start_time )
@@ -291,13 +296,30 @@ def record(self):
291296 if num_read > 0 :
292297 f .write (buf [:num_read ])
293298 self ._bytes_recorded += num_read
294-
295- # Close the file first, then reopen to update header
299+ finally :
300+ # Explicitly close the file and measure time
301+ print (f"RecordStream: Closing audio data file..." )
302+ t0 = time .ticks_ms ()
303+ f .close ()
304+ print (f"RecordStream: File closed in { time .ticks_diff (time .ticks_ms (), t0 )} ms" )
305+
306+ # Now reopen to update header
296307 # This avoids the massive delay caused by seeking backwards in a large file
297308 # on ESP32 with SD card (FAT filesystem buffering issue)
309+ print (f"RecordStream: Reopening file to update WAV header..." )
310+ t0 = time .ticks_ms ()
311+ f = open (self .file_path , 'r+b' )
312+ print (f"RecordStream: File reopened in { time .ticks_diff (time .ticks_ms (), t0 )} ms" )
313+
298314 print (f"RecordStream: Updating WAV header with data_size={ self ._bytes_recorded } " )
299- with open (self .file_path , 'r+b' ) as f :
300- self ._update_wav_header (f , self ._bytes_recorded )
315+ t0 = time .ticks_ms ()
316+ self ._update_wav_header (f , self ._bytes_recorded )
317+ print (f"RecordStream: Header updated in { time .ticks_diff (time .ticks_ms (), t0 )} ms" )
318+
319+ print (f"RecordStream: Closing header file..." )
320+ t0 = time .ticks_ms ()
321+ f .close ()
322+ print (f"RecordStream: Header file closed in { time .ticks_diff (time .ticks_ms (), t0 )} ms" )
301323
302324 elapsed_ms = time .ticks_diff (time .ticks_ms (), start_time )
303325 print (f"RecordStream: Finished recording { self ._bytes_recorded } bytes ({ elapsed_ms } ms)" )
0 commit comments