adds configurable input and output device ids for local audio

This commit is contained in:
TheCodingLand
2025-02-07 19:23:18 +01:00
parent 4d25582e16
commit 8da7a42137

View File

@@ -6,7 +6,8 @@
import asyncio
from concurrent.futures import ThreadPoolExecutor
from typing import Optional
from typing import Annotated, Optional
from typing_extensions import Doc
from loguru import logger
@@ -26,8 +27,13 @@ except ModuleNotFoundError as e:
raise Exception(f"Missing module: {e}")
class LocalTransportParams(TransportParams):
input_device_index: Annotated[int, Doc("Index of the input device for local audio")] = 0
output_device_index: Annotated[int, Doc("Index of the output device for local audio")] = 0
class LocalAudioInputTransport(BaseInputTransport):
def __init__(self, py_audio: pyaudio.PyAudio, params: TransportParams):
_params: LocalTransportParams
def __init__(self, py_audio: pyaudio.PyAudio, params: LocalTransportParams):
super().__init__(params)
self._py_audio = py_audio
self._in_stream = None
@@ -46,6 +52,7 @@ class LocalAudioInputTransport(BaseInputTransport):
frames_per_buffer=num_frames,
stream_callback=self._audio_in_callback,
input=True,
input_device_index=self._params.input_device_index,
)
self._in_stream.start_stream()
@@ -69,6 +76,7 @@ class LocalAudioInputTransport(BaseInputTransport):
class LocalAudioOutputTransport(BaseOutputTransport):
_params: LocalTransportParams
def __init__(self, py_audio: pyaudio.PyAudio, params: TransportParams):
super().__init__(params)
self._py_audio = py_audio
@@ -89,6 +97,7 @@ class LocalAudioOutputTransport(BaseOutputTransport):
channels=self._params.audio_out_channels,
rate=self._sample_rate,
output=True,
output_device_index=self._params.output_device_index,
)
self._out_stream.start_stream()