MCPcopy Create free account
hub / github.com/ARM-software/AVH / _readAudio

Method _readAudio

interface/vstream/python/vsi_audio_server.py:485–534  ·  view source on GitHub ↗

Read audio data from the current source. Args: size: Number of bytes to read. Returns: audio_data: The read audio data as a bytearray, or empty if no data is available.

(self, size)

Source from the content-addressed store, hash-verified

483 logger.info("_disableStream: stream disabled")
484
485 def _readAudio(self, size):
486 """
487 Read audio data from the current source.
488
489 Args:
490 size: Number of bytes to read.
491 Returns:
492 audio_data: The read audio data as a bytearray, or empty if no data is available.
493 """
494 logger.debug(f"_readAudio: size={size} bytes")
495
496 audio_data = bytearray()
497
498 if not self.active:
499 logger.error("_readAudio: stream not active")
500 return audio_data
501
502 if self.eos:
503 logger.debug("_readAudio: end of stream")
504 return audio_data
505
506 try:
507 if self.filename == None:
508 # Read from microphone buffer
509 while len(self.audio_buffer) < size:
510 # Wait for enough data
511 time.sleep(0.01) # Wait 10ms
512
513 # Now we have enough data
514 audio_data = bytearray(self.audio_buffer[:size])
515 del self.audio_buffer[:size]
516
517 logger.debug(f"_readAudio: read {len(audio_data)} bytes from microphone buffer")
518
519 else:
520 # Read from wave file
521 frames_to_read = size // (self.channels * (self.sample_bits // 8))
522 frames_data = self.wave_file.readframes(frames_to_read)
523
524 if len(frames_data) > 0:
525 audio_data = bytearray(frames_data)
526 logger.debug(f"_readAudio: read {len(audio_data)} bytes from file")
527 else:
528 self.eos = True
529 logger.debug("_readAudio: end of file reached")
530
531 except Exception as e:
532 logger.error(f"_readAudio: error reading audio data: {e}")
533
534 return audio_data
535
536 def _writeAudio(self, data):
537 """

Callers 1

runMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected