adds configurable input and output device ids for local audio
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user