Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ All notable changes to **Pipecat** will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.2.1] - 2026-05-15

### Changed

- Updated NVIDIA SageMaker STT and TTS generated service configs to use
`AWS_REGION` for the SageMaker endpoint region.

## [1.2.0] - 2026-05-15

### Added
Expand Down
18 changes: 9 additions & 9 deletions src/pipecat_cli/registry/_configs.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@
"nvidia_stt": 'NvidiaSTTService(api_key=os.getenv("NVIDIA_API_KEY"))',
"nvidia_sagemaker_stt": (
"NvidiaSageMakerSTTService(\n"
' endpoint_name=os.getenv("NVIDIA_SAGEMAKER_STT_ENDPOINT_NAME"),\n'
' region=os.getenv("NVIDIA_SAGEMAKER_STT_REGION")\n'
" )\n"
' endpoint_name=os.getenv("NVIDIA_SAGEMAKER_STT_ENDPOINT_NAME"),\n'
' region=os.getenv("AWS_REGION")\n'
")\n"
),
"openai_stt": 'OpenAISTTService(api_key=os.getenv("OPENAI_API_KEY"))',
"openai_realtime_stt": 'OpenAIRealtimeSTTService(api_key=os.getenv("OPENAI_API_KEY"))',
Expand Down Expand Up @@ -471,12 +471,12 @@
),
"nvidia_sagemaker_tts": (
"NvidiaSageMakerTTSService(\n"
' endpoint_name=os.getenv("NVIDIA_SAGEMAKER_TTS_ENDPOINT_NAME"),\n'
' region=os.getenv("NVIDIA_SAGEMAKER_TTS_REGION"),\n'
" settings=NvidiaSageMakerTTSService.Settings(\n"
' voice=os.getenv("NVIDIA_SAGEMAKER_TTS_VOICE_ID"),\n'
" ),\n"
" )\n"
' endpoint_name=os.getenv("NVIDIA_SAGEMAKER_TTS_ENDPOINT_NAME"),\n'
' region=os.getenv("AWS_REGION"),\n'
" settings=NvidiaSageMakerTTSService.Settings(\n"
' voice=os.getenv("NVIDIA_SAGEMAKER_TTS_VOICE_ID"),\n'
" ),\n"
")\n"
),
"openai_tts": (
"OpenAITTSService(\n"
Expand Down
19 changes: 17 additions & 2 deletions src/pipecat_cli/registry/service_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,7 @@ class ServiceRegistry:
ServiceDefinition(
value="nvidia_sagemaker_stt",
label="NVIDIA SageMaker",
package="pipecat-ai[nvidia,sagemaker]",
package="pipecat-ai[aws,sagemaker]",
class_name=["NvidiaSageMakerSTTService"],
env_prefix="NVIDIA_SAGEMAKER_STT",
include_params=["endpoint_name", "region"],
Expand Down Expand Up @@ -856,7 +856,7 @@ class ServiceRegistry:
ServiceDefinition(
value="nvidia_sagemaker_tts",
label="NVIDIA SageMaker",
package="pipecat-ai[nvidia,sagemaker]",
package="pipecat-ai[aws,sagemaker]",
class_name=["NvidiaSageMakerTTSService"],
env_prefix="NVIDIA_SAGEMAKER_TTS",
include_params=["endpoint_name", "region"],
Expand Down Expand Up @@ -1062,6 +1062,21 @@ class ServiceRegistry:
# These services have complex initialization logic that cannot be auto-generated
# (e.g., nested InputParams, SessionProperties, or other special requirements)
MANUAL_SERVICE_CONFIGS = {
"nvidia_sagemaker_stt": (
"NvidiaSageMakerSTTService(\n"
' endpoint_name=os.getenv("NVIDIA_SAGEMAKER_STT_ENDPOINT_NAME"),\n'
' region=os.getenv("AWS_REGION")\n'
")"
),
"nvidia_sagemaker_tts": (
"NvidiaSageMakerTTSService(\n"
' endpoint_name=os.getenv("NVIDIA_SAGEMAKER_TTS_ENDPOINT_NAME"),\n'
' region=os.getenv("AWS_REGION"),\n'
" settings=NvidiaSageMakerTTSService.Settings(\n"
' voice=os.getenv("NVIDIA_SAGEMAKER_TTS_VOICE_ID"),\n'
" ),\n"
")"
),
"aws_bedrock_llm": (
"AWSBedrockLLMService(\n"
' aws_region=os.getenv("AWS_REGION"),\n'
Expand Down
6 changes: 2 additions & 4 deletions src/pipecat_cli/templates/server/env.example.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ PLIVO_AUTH_TOKEN=
ASSEMBLYAI_API_KEY=

{% endif %}
{% if stt_service == 'aws_transcribe_stt' or llm_service == 'aws_bedrock_llm' or tts_service == 'aws_polly_tts' or realtime_service == 'aws_nova_realtime' %}
# AWS (STT/LLM/TTS/Realtime)
{% if stt_service == 'aws_transcribe_stt' or stt_service == 'nvidia_sagemaker_stt' or llm_service == 'aws_bedrock_llm' or tts_service == 'aws_polly_tts' or tts_service == 'nvidia_sagemaker_tts' or realtime_service == 'aws_nova_realtime' %}
# AWS (STT/LLM/TTS/Realtime/SageMaker)
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=
Expand Down Expand Up @@ -201,13 +201,11 @@ NVIDIA_MODEL=
{% if stt_service == 'nvidia_sagemaker_stt' %}
# NVIDIA SageMaker (STT)
NVIDIA_SAGEMAKER_STT_ENDPOINT_NAME=
NVIDIA_SAGEMAKER_STT_REGION=

{% endif %}
{% if tts_service == 'nvidia_sagemaker_tts' %}
# NVIDIA SageMaker (TTS)
NVIDIA_SAGEMAKER_TTS_ENDPOINT_NAME=
NVIDIA_SAGEMAKER_TTS_REGION=
NVIDIA_SAGEMAKER_TTS_VOICE_ID= # "Magpie-Multilingual.EN-US.Isabella"

{% endif %}
Expand Down
15 changes: 15 additions & 0 deletions tests/test_service_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,21 @@ def test_get_service_config(self):
assert "DeepgramSTTService" in config
assert "DEEPGRAM_API_KEY" in config

def test_nvidia_sagemaker_configs_use_aws_region(self):
"""Test NVIDIA SageMaker services use shared AWS_REGION."""
stt_config = ServiceLoader.get_service_config("nvidia_sagemaker_stt")
tts_config = ServiceLoader.get_service_config("nvidia_sagemaker_tts")

assert stt_config is not None
assert tts_config is not None
assert 'endpoint_name=os.getenv("NVIDIA_SAGEMAKER_STT_ENDPOINT_NAME")' in stt_config
assert 'endpoint_name=os.getenv("NVIDIA_SAGEMAKER_TTS_ENDPOINT_NAME")' in tts_config
assert 'region=os.getenv("AWS_REGION")' in stt_config
assert 'region=os.getenv("AWS_REGION")' in tts_config
assert "NVIDIA_SAGEMAKER_STT_REGION" not in stt_config
assert "NVIDIA_SAGEMAKER_TTS_REGION" not in tts_config
assert 'voice=os.getenv("NVIDIA_SAGEMAKER_TTS_VOICE_ID")' in tts_config

def test_get_service_import(self):
"""Test retrieving service imports."""
imports = ServiceLoader.get_service_import("deepgram_stt")
Expand Down
Loading