From 0594a203fc754c6c4f3023625daea035c8c407ab Mon Sep 17 00:00:00 2001 From: Fabrice Lamant Date: Wed, 6 Aug 2025 14:28:06 +0200 Subject: [PATCH 1/2] Add new region parameter to Gladia --- env.example | 3 ++- .../foundational/07j-interruptible-gladia.py | 1 + .../foundational/13c-gladia-transcription.py | 1 + examples/foundational/13c-gladia-translation.py | 1 + src/pipecat/services/gladia/stt.py | 17 +++++++++++++++-- 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/env.example b/env.example index 9058ef8cf..ea99c567e 100644 --- a/env.example +++ b/env.example @@ -44,6 +44,7 @@ FIREWORKS_API_KEY=... # Gladia GLADIA_API_KEY=... +GLADIA_REGION=... # Google GOOGLE_API_KEY=... @@ -135,4 +136,4 @@ SAMBANOVA_API_KEY=... SENTRY_DSN=... # Heygen -HEYGEN_API_KEY=... \ No newline at end of file +HEYGEN_API_KEY=... diff --git a/examples/foundational/07j-interruptible-gladia.py b/examples/foundational/07j-interruptible-gladia.py index 6505bb81e..6ebfb8071 100644 --- a/examples/foundational/07j-interruptible-gladia.py +++ b/examples/foundational/07j-interruptible-gladia.py @@ -55,6 +55,7 @@ async def run_bot(transport: BaseTransport, runner_args: RunnerArguments): stt = GladiaSTTService( api_key=os.getenv("GLADIA_API_KEY", ""), + region=os.getenv("GLADIA_REGION"), params=GladiaInputParams( language_config=LanguageConfig( languages=[Language.EN], diff --git a/examples/foundational/13c-gladia-transcription.py b/examples/foundational/13c-gladia-transcription.py index 87d2bc49a..7fbb6ad9d 100644 --- a/examples/foundational/13c-gladia-transcription.py +++ b/examples/foundational/13c-gladia-transcription.py @@ -47,6 +47,7 @@ async def run_bot(transport: BaseTransport, runner_args: RunnerArguments): stt = GladiaSTTService( api_key=os.getenv("GLADIA_API_KEY"), + region=os.getenv("GLADIA_REGION"), # live_options=LiveOptions(language=Language.FR), ) diff --git a/examples/foundational/13c-gladia-translation.py b/examples/foundational/13c-gladia-translation.py index fe9711c26..5eb52f044 100644 --- a/examples/foundational/13c-gladia-translation.py +++ b/examples/foundational/13c-gladia-translation.py @@ -56,6 +56,7 @@ async def run_bot(transport: BaseTransport, runner_args: RunnerArguments): stt = GladiaSTTService( api_key=os.getenv("GLADIA_API_KEY"), + region=os.getenv("GLADIA_REGION"), params=GladiaInputParams( language_config=LanguageConfig( languages=[Language.EN], # Input in English diff --git a/src/pipecat/services/gladia/stt.py b/src/pipecat/services/gladia/stt.py index cef89f1c0..3e7fd3a2a 100644 --- a/src/pipecat/services/gladia/stt.py +++ b/src/pipecat/services/gladia/stt.py @@ -14,7 +14,8 @@ import asyncio import base64 import json import warnings -from typing import Any, AsyncGenerator, Dict, Optional +from typing import Any, AsyncGenerator, Dict, Literal, Optional +from urllib.parse import urlencode import aiohttp from loguru import logger @@ -203,6 +204,7 @@ class GladiaSTTService(STTService): self, *, api_key: str, + region: Optional[Literal["us-west", "eu-west"]] = "eu-west", url: str = "https://api.gladia.io/v2/live", confidence: float = 0.5, sample_rate: Optional[int] = None, @@ -217,6 +219,7 @@ class GladiaSTTService(STTService): Args: api_key: Gladia API key for authentication. + region: Region used to process audio. eu-west or us-west. Defaults to eu-west. url: Gladia API URL. Defaults to "https://api.gladia.io/v2/live". confidence: Minimum confidence threshold for transcriptions (0.0-1.0). sample_rate: Audio sample rate in Hz. If None, uses service default. @@ -241,6 +244,7 @@ class GladiaSTTService(STTService): ) self._api_key = api_key + self._region = region self._url = url self.set_model_name(model) self._confidence = confidence @@ -337,6 +341,13 @@ class GladiaSTTService(STTService): return settings + def _get_endpoint_url(self) -> str: + query_params = dict() + query_params["region"] = self._region or "eu-west" + query = urlencode(query_params) + + return f"{self._url}?{query}" + async def start(self, frame: StartFrame): """Start the Gladia STT websocket connection. @@ -485,11 +496,13 @@ class GladiaSTTService(STTService): async def _setup_gladia(self, settings: Dict[str, Any]): async with aiohttp.ClientSession() as session: async with session.post( - self._url, + self._get_endpoint_url(), headers={"X-Gladia-Key": self._api_key, "Content-Type": "application/json"}, json=settings, ) as response: if response.ok: + response_text = await response.json() + logger.error(f"Gladia response: {response_text}") return await response.json() else: error_text = await response.text() From e576fa481f572a2344986e8ef6362c988c48e1a3 Mon Sep 17 00:00:00 2001 From: Fabrice Lamant Date: Wed, 6 Aug 2025 15:31:10 +0200 Subject: [PATCH 2/2] Add new region feature for GladiaSTTService in CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d4a97762f..a552daed8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,6 +46,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added Chinese, Japanese, Korean word timestamp support to `CartesiaTTSService`. +- Added `region` parameter to `GladiaSTTService`. Accepted values: eu-west (default), us-west. + ### Changed - System frames are now queued. Before, system frames could be generated from