Make region optional and validate Azure STT config

Make `region` optional so users can provide only `private_endpoint`.
Raise ValueError if neither is provided, and warn if both are given
(private_endpoint takes priority).
This commit is contained in:
Mark Backman
2026-03-10 07:40:55 -04:00
parent 0dc95692ba
commit 233867fdfb

View File

@@ -73,7 +73,7 @@ class AzureSTTService(STTService):
self, self,
*, *,
api_key: str, api_key: str,
region: str, region: Optional[str] = None,
language: Optional[Language] = Language.EN_US, language: Optional[Language] = Language.EN_US,
sample_rate: Optional[int] = None, sample_rate: Optional[int] = None,
private_endpoint: Optional[str] = None, private_endpoint: Optional[str] = None,
@@ -87,6 +87,7 @@ class AzureSTTService(STTService):
Args: Args:
api_key: Azure Cognitive Services subscription key. api_key: Azure Cognitive Services subscription key.
region: Azure region for the Speech service (e.g., 'eastus'). region: Azure region for the Speech service (e.g., 'eastus').
Required unless ``private_endpoint`` is provided.
language: Language for speech recognition. Defaults to English (US). language: Language for speech recognition. Defaults to English (US).
.. deprecated:: 0.0.105 .. deprecated:: 0.0.105
@@ -94,7 +95,7 @@ class AzureSTTService(STTService):
sample_rate: Audio sample rate in Hz. If None, uses service default. sample_rate: Audio sample rate in Hz. If None, uses service default.
private_endpoint: Private endpoint for STT behind firewall. private_endpoint: Private endpoint for STT behind firewall.
See https://learn.microsoft.com/en-us/azure/ai-services/speech-service/speech-services-private-link?tabs=portal See https://docs.azure.cn/en-us/ai-services/speech-service/speech-services-private-link?tabs=portal
endpoint_id: Custom model endpoint id. endpoint_id: Custom model endpoint id.
settings: Runtime-updatable settings. When provided alongside deprecated settings: Runtime-updatable settings. When provided alongside deprecated
parameters, ``settings`` values take precedence. parameters, ``settings`` values take precedence.
@@ -126,21 +127,29 @@ class AzureSTTService(STTService):
**kwargs, **kwargs,
) )
speech_config_kwargs: dict[str, Any] = { recognition_language = default_settings.language or language_to_azure_language(
"subscription": api_key, Language.EN_US
"speech_recognition_language": default_settings.language )
or language_to_azure_language(Language.EN_US),
} if not region and not private_endpoint:
raise ValueError("Either 'region' or 'private_endpoint' must be provided.")
if private_endpoint: if private_endpoint:
if region: if region:
logger.warning( logger.warning(
"Both 'region' and 'private_endpoint' provided; 'region' will be ignored." "Both 'region' and 'private_endpoint' provided; 'region' will be ignored."
) )
speech_config_kwargs["endpoint"] = private_endpoint self._speech_config = SpeechConfig(
subscription=api_key,
endpoint=private_endpoint,
speech_recognition_language=recognition_language,
)
else: else:
speech_config_kwargs["region"] = region self._speech_config = SpeechConfig(
subscription=api_key,
self._speech_config = SpeechConfig(**speech_config_kwargs) region=region,
speech_recognition_language=recognition_language,
)
if endpoint_id: if endpoint_id:
self._speech_config.endpoint_id = endpoint_id self._speech_config.endpoint_id = endpoint_id