Merge pull request #2375 from fabrice404/gladia-region-selection

Gladia region selection
This commit is contained in:
Mark Backman
2025-08-06 07:01:24 -07:00
committed by GitHub
6 changed files with 22 additions and 3 deletions

View File

@@ -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

View File

@@ -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=...
HEYGEN_API_KEY=...

View File

@@ -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],

View File

@@ -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),
)

View File

@@ -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

View File

@@ -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()