diff --git a/src/pipecat/services/nvidia/sagemaker/stt.py b/src/pipecat/services/nvidia/sagemaker/stt.py index 33b6a574f..5b95a6218 100644 --- a/src/pipecat/services/nvidia/sagemaker/stt.py +++ b/src/pipecat/services/nvidia/sagemaker/stt.py @@ -46,15 +46,15 @@ from pipecat.utils.tracing.service_decorators import traced_stt @dataclass -class NvidiaSageMakerWSSTTSettings(STTSettings): - """Settings for NvidiaSageMakerWebsocketSTTService. +class NvidiaSageMakerSTTSettings(STTSettings): + """Settings for NvidiaSageMakerSTTService. Parameters: language: ISO-639-1 language code passed to NIM (e.g. ``en-US``). """ -class NvidiaSageMakerWebsocketSTTService(STTService): +class NvidiaSageMakerSTTService(STTService): """NVIDIA Nemotron ASR STT service using SageMaker bidirectional streaming. Maintains a persistent HTTP/2 bidi-stream session to the SageMaker endpoint @@ -65,16 +65,16 @@ class NvidiaSageMakerWebsocketSTTService(STTService): Example:: - stt = NvidiaSageMakerWebsocketSTTService( + stt = NvidiaSageMakerSTTService( endpoint_name=os.getenv("SAGEMAKER_ASR_ENDPOINT_NAME"), region=os.getenv("AWS_REGION", "us-west-2"), - settings=NvidiaSageMakerWebsocketSTTService.Settings( + settings=NvidiaSageMakerSTTService.Settings( language="en-US", ), ) """ - Settings = NvidiaSageMakerWSSTTSettings + Settings = NvidiaSageMakerSTTSettings def __init__( self, @@ -82,7 +82,7 @@ class NvidiaSageMakerWebsocketSTTService(STTService): endpoint_name: str, region: str = "us-west-2", sample_rate: int | None = None, - settings: NvidiaSageMakerWSSTTSettings | None = None, + settings: NvidiaSageMakerSTTSettings | None = None, ttfs_p99_latency: float | None = 1.5, **kwargs, ): @@ -301,6 +301,8 @@ class NvidiaSageMakerWebsocketSTTService(STTService): delta, self._user_id, time_now_iso8601(), + language=self._settings.language, + result=msg, ) ) @@ -313,7 +315,9 @@ class NvidiaSageMakerWebsocketSTTService(STTService): transcript, self._user_id, time_now_iso8601(), + language=self._settings.language, result=msg, + finalized=True, ) ) await self._handle_transcription(transcript, True) diff --git a/src/pipecat/services/nvidia/sagemaker/tts.py b/src/pipecat/services/nvidia/sagemaker/tts.py index 81ffd28bf..8a0e3cd5d 100644 --- a/src/pipecat/services/nvidia/sagemaker/tts.py +++ b/src/pipecat/services/nvidia/sagemaker/tts.py @@ -35,7 +35,7 @@ from pipecat.utils.tracing.service_decorators import traced_tts @dataclass class NvidiaSageMakerTTSSettings(TTSSettings): - """Settings for NvidiaSageMakerHTTPTTSService. + """Settings for NVIDIA SageMaker TTS services. Parameters: voice: NIM voice name (e.g. ``Magpie-Multilingual.EN-US.Aria``). @@ -79,7 +79,6 @@ class NvidiaSageMakerHTTPTTSService(TTSService): endpoint_name: Name of the deployed SageMaker endpoint. region: AWS region where the endpoint lives. sample_rate: Output sample rate in Hz. Defaults to bot's pipeline rate. - params: Deprecated — use ``settings`` instead. settings: Runtime-updatable settings (voice, language). **kwargs: Forwarded to :class:`TTSService`. """ @@ -218,17 +217,7 @@ class NvidiaSageMakerHTTPTTSService(TTSService): await self.start_tts_usage_metrics(text) -@dataclass -class NvidiaSageMakerWSTTSSettings(TTSSettings): - """Settings for NvidiaSageMakerWebsocketTTSService. - - Parameters: - voice: NIM voice name (e.g. ``Magpie-Multilingual.EN-US.Aria``). - language: BCP-47 language code passed to NIM (e.g. ``en-US``). - """ - - -class NvidiaSageMakerWebsocketTTSService(InterruptibleTTSService): +class NvidiaSageMakerTTSService(InterruptibleTTSService): """NVIDIA Magpie TTS service using SageMaker bidirectional streaming. Maintains a persistent HTTP/2 bidi-stream session to the SageMaker endpoint @@ -238,17 +227,17 @@ class NvidiaSageMakerWebsocketTTSService(InterruptibleTTSService): Example:: - tts = NvidiaSageMakerWebsocketTTSService( + tts = NvidiaSageMakerTTSService( endpoint_name=os.getenv("SAGEMAKER_MAGPIE_ENDPOINT_NAME"), region=os.getenv("AWS_REGION", "us-west-2"), - settings=NvidiaSageMakerWebsocketTTSService.Settings( + settings=NvidiaSageMakerTTSService.Settings( voice="Magpie-Multilingual.EN-US.Aria", language="en-US", ), ) """ - Settings = NvidiaSageMakerWSTTSSettings + Settings = NvidiaSageMakerTTSSettings def __init__( self, @@ -256,7 +245,7 @@ class NvidiaSageMakerWebsocketTTSService(InterruptibleTTSService): endpoint_name: str, region: str = "us-west-2", sample_rate: int | None = None, - settings: NvidiaSageMakerWSTTSSettings | None = None, + settings: NvidiaSageMakerTTSSettings | None = None, **kwargs, ): """Initialize the SageMaker WebSocket TTS service. @@ -507,4 +496,4 @@ class NvidiaSageMakerWebsocketTTSService(InterruptibleTTSService): yield None except Exception as e: logger.error(f"{self}: TTS error: {e}") - yield ErrorFrame(error=f"NvidiaSageMakerWebsocketTTSService error: {e}") + yield ErrorFrame(error=f"NvidiaSageMakerTTSService error: {e}")