transports: some local audio and tk updates
This commit is contained in:
@@ -16,7 +16,7 @@ from pipecat.pipeline.pipeline import Pipeline
|
||||
from pipecat.pipeline.runner import PipelineRunner
|
||||
from pipecat.pipeline.task import PipelineTask
|
||||
from pipecat.services.cartesia import CartesiaTTSService
|
||||
from pipecat.transports.local.audio import LocalAudioTransport, LocalTransportParams
|
||||
from pipecat.transports.local.audio import LocalAudioTransport, LocalAudioTransportParams
|
||||
|
||||
load_dotenv(override=True)
|
||||
|
||||
@@ -25,7 +25,7 @@ logger.add(sys.stderr, level="DEBUG")
|
||||
|
||||
|
||||
async def main():
|
||||
transport = LocalAudioTransport(LocalTransportParams(audio_out_enabled=True))
|
||||
transport = LocalAudioTransport(LocalAudioTransportParams(audio_out_enabled=True))
|
||||
|
||||
tts = CartesiaTTSService(
|
||||
api_key=os.getenv("CARTESIA_API_KEY"),
|
||||
|
||||
@@ -16,7 +16,7 @@ from pipecat.pipeline.runner import PipelineRunner
|
||||
from pipecat.pipeline.task import PipelineTask
|
||||
from pipecat.processors.frame_processor import FrameDirection, FrameProcessor
|
||||
from pipecat.services.whisper import WhisperSTTService
|
||||
from pipecat.transports.local.audio import LocalAudioTransport, LocalTransportParams
|
||||
from pipecat.transports.local.audio import LocalAudioTransport, LocalAudioTransportParams
|
||||
|
||||
load_dotenv(override=True)
|
||||
|
||||
@@ -33,7 +33,7 @@ class TranscriptionLogger(FrameProcessor):
|
||||
|
||||
|
||||
async def main():
|
||||
transport = LocalAudioTransport(LocalTransportParams(audio_in_enabled=True))
|
||||
transport = LocalAudioTransport(LocalAudioTransportParams(audio_in_enabled=True))
|
||||
|
||||
stt = WhisperSTTService()
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ from pipecat.pipeline.runner import PipelineRunner
|
||||
from pipecat.pipeline.task import PipelineTask
|
||||
from pipecat.processors.frame_processor import FrameDirection, FrameProcessor
|
||||
from pipecat.services.whisper import Model, WhisperSTTService
|
||||
from pipecat.transports.local.audio import LocalAudioTransport, LocalTransportParams
|
||||
from pipecat.transports.local.audio import LocalAudioTransport, LocalAudioTransportParams
|
||||
|
||||
load_dotenv(override=True)
|
||||
|
||||
@@ -36,7 +36,7 @@ class TranscriptionLogger(FrameProcessor):
|
||||
|
||||
async def main(input_device: int, output_device: int):
|
||||
transport = LocalAudioTransport(
|
||||
LocalTransportParams(
|
||||
LocalAudioTransportParams(
|
||||
audio_in_enabled=True,
|
||||
audio_out_enabled=False,
|
||||
input_device_index=input_device,
|
||||
|
||||
@@ -26,17 +26,18 @@ except ModuleNotFoundError as e:
|
||||
raise Exception(f"Missing module: {e}")
|
||||
|
||||
|
||||
class LocalTransportParams(TransportParams):
|
||||
input_device_index: int = 0
|
||||
output_device_index: int = 0
|
||||
class LocalAudioTransportParams(TransportParams):
|
||||
input_device_index: Optional[int] = None
|
||||
output_device_index: Optional[int] = None
|
||||
|
||||
|
||||
class LocalAudioInputTransport(BaseInputTransport):
|
||||
_params: LocalTransportParams
|
||||
_params: LocalAudioTransportParams
|
||||
|
||||
def __init__(self, py_audio: pyaudio.PyAudio, params: LocalTransportParams):
|
||||
def __init__(self, py_audio: pyaudio.PyAudio, params: LocalAudioTransportParams):
|
||||
super().__init__(params)
|
||||
self._py_audio = py_audio
|
||||
|
||||
self._in_stream = None
|
||||
self._sample_rate = 0
|
||||
|
||||
@@ -77,11 +78,12 @@ class LocalAudioInputTransport(BaseInputTransport):
|
||||
|
||||
|
||||
class LocalAudioOutputTransport(BaseOutputTransport):
|
||||
_params: LocalTransportParams
|
||||
_params: LocalAudioTransportParams
|
||||
|
||||
def __init__(self, py_audio: pyaudio.PyAudio, params: TransportParams):
|
||||
def __init__(self, py_audio: pyaudio.PyAudio, params: LocalAudioTransportParams):
|
||||
super().__init__(params)
|
||||
self._py_audio = py_audio
|
||||
|
||||
self._out_stream = None
|
||||
self._sample_rate = 0
|
||||
|
||||
@@ -117,7 +119,7 @@ class LocalAudioOutputTransport(BaseOutputTransport):
|
||||
|
||||
|
||||
class LocalAudioTransport(BaseTransport):
|
||||
def __init__(self, params: LocalTransportParams):
|
||||
def __init__(self, params: LocalAudioTransportParams):
|
||||
super().__init__()
|
||||
self._params = params
|
||||
self._pyaudio = pyaudio.PyAudio()
|
||||
|
||||
@@ -34,8 +34,15 @@ except ModuleNotFoundError as e:
|
||||
raise Exception(f"Missing module: {e}")
|
||||
|
||||
|
||||
class TkTransportParams(TransportParams):
|
||||
audio_input_device_index: Optional[int] = None
|
||||
audio_output_device_index: Optional[int] = None
|
||||
|
||||
|
||||
class TkInputTransport(BaseInputTransport):
|
||||
def __init__(self, py_audio: pyaudio.PyAudio, params: TransportParams):
|
||||
_params: TkTransportParams
|
||||
|
||||
def __init__(self, py_audio: pyaudio.PyAudio, params: TkTransportParams):
|
||||
super().__init__(params)
|
||||
self._py_audio = py_audio
|
||||
self._in_stream = None
|
||||
@@ -54,6 +61,7 @@ class TkInputTransport(BaseInputTransport):
|
||||
frames_per_buffer=num_frames,
|
||||
stream_callback=self._audio_in_callback,
|
||||
input=True,
|
||||
input_device_index=self._params.audio_input_device_index,
|
||||
)
|
||||
self._in_stream.start_stream()
|
||||
|
||||
@@ -76,6 +84,8 @@ class TkInputTransport(BaseInputTransport):
|
||||
|
||||
|
||||
class TkOutputTransport(BaseOutputTransport):
|
||||
_params: TkTransportParams
|
||||
|
||||
def __init__(self, tk_root: tk.Tk, py_audio: pyaudio.PyAudio, params: TransportParams):
|
||||
super().__init__(params)
|
||||
self._py_audio = py_audio
|
||||
@@ -103,6 +113,7 @@ class TkOutputTransport(BaseOutputTransport):
|
||||
channels=self._params.audio_out_channels,
|
||||
rate=self._sample_rate,
|
||||
output=True,
|
||||
output_device_index=self._params.audio_output_device_index,
|
||||
)
|
||||
self._out_stream.start_stream()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user