Enable the audio stream for input (microphone/file) or output (file/speakers). Initializes the PyAudio stream or wave file as needed. Returns: None
(self)
| 367 | return (data, pyaudio.paContinue) |
| 368 | |
| 369 | def _enableStream(self): |
| 370 | """ |
| 371 | Enable the audio stream for input (microphone/file) or output (file/speakers). |
| 372 | |
| 373 | Initializes the PyAudio stream or wave file as needed. |
| 374 | Returns: |
| 375 | None |
| 376 | """ |
| 377 | if self.active: |
| 378 | logger.info("_enableStream: stream already active") |
| 379 | return |
| 380 | |
| 381 | self.eos = False |
| 382 | self.audio_buffer.clear() |
| 383 | |
| 384 | try: |
| 385 | if self.filename == None: |
| 386 | # Use microphone/speakers |
| 387 | if self.pyaudio_obj is None: |
| 388 | logger.error("_enableStream: PyAudio object is not initialized") |
| 389 | return |
| 390 | |
| 391 | audio_format = self._get_pyaudio_format() |
| 392 | |
| 393 | if self.mode == MODE_AUDIO_INPUT: |
| 394 | logger.debug("_enableStream: use microphone for input streaming") |
| 395 | self.stream = self.pyaudio_obj.open( |
| 396 | format=audio_format, |
| 397 | channels=self.channels, |
| 398 | rate=self.sample_rate, |
| 399 | input=True, |
| 400 | input_device_index=self.device, |
| 401 | frames_per_buffer=self.chunk_size, |
| 402 | stream_callback=self._audio_callback_input |
| 403 | ) |
| 404 | self.stream.start_stream() |
| 405 | |
| 406 | if self.mode == MODE_AUDIO_OUTPUT: |
| 407 | logger.debug("_enableStream: use speakers for output streaming") |
| 408 | self.stream = self.pyaudio_obj.open( |
| 409 | format=audio_format, |
| 410 | channels=self.channels, |
| 411 | rate=self.sample_rate, |
| 412 | output=True, |
| 413 | output_device_index=self.device, |
| 414 | frames_per_buffer=self.chunk_size, |
| 415 | stream_callback=self._audio_callback_output |
| 416 | ) |
| 417 | self.stream.start_stream() |
| 418 | |
| 419 | logger.info(f"_enableStream: audio device stream properties: channels={self.channels}, rate={self.sample_rate}, bits={self.sample_bits}") |
| 420 | |
| 421 | else: |
| 422 | # Set file name string for audio file |
| 423 | file = str(self.filename.absolute()) |
| 424 | |
| 425 | logger.debug(f"_enableStream: use audio file: {file}") |
| 426 |
no test coverage detected