Skip to content

Commit 8d52340

Browse files
fix(agentkit): flatten Deepgram TTS passthrough params
1 parent 676b93b commit 8d52340

5 files changed

Lines changed: 18 additions & 41 deletions

File tree

README.md

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ pip install agora-agents
2020
## Quick Start
2121

2222
Start with the `Agent` builder: create a client with app credentials, choose your ASR, LLM, and TTS providers, then start a session. Omit vendor API keys for supported Agora-managed models, or provide keys when you want BYOK.
23+
Use `with_interaction_language()` for Agora `asr.language`; provider-specific STT language values remain under `asr.params`.
2324

2425
```python
2526
import os
@@ -29,12 +30,9 @@ from agora_agent import (
2930
Agent,
3031
Agora,
3132
Area,
32-
DataChannel,
3333
DeepgramSTT,
34-
GenericAvatar,
3534
MiniMaxTTS,
3635
OpenAI,
37-
XaiGrok,
3836
expires_in_hours,
3937
)
4038

@@ -56,35 +54,7 @@ def start_conversation() -> str:
5654
app_certificate=app_certificate,
5755
)
5856

59-
agent = Agent(
60-
name=f"conversation-{int(time.time())}",
61-
turn_detection={
62-
"config": {
63-
"speech_threshold": 0.5,
64-
"start_of_speech": {
65-
"mode": "vad",
66-
"vad_config": {
67-
"interrupt_duration_ms": 160,
68-
"prefix_padding_ms": 300,
69-
},
70-
},
71-
"end_of_speech": {
72-
"mode": "vad",
73-
"vad_config": {
74-
"silence_duration_ms": 480,
75-
},
76-
},
77-
},
78-
},
79-
advanced_features={
80-
"enable_rtm": True,
81-
"enable_tools": True,
82-
},
83-
parameters={
84-
"data_channel": DataChannel.RTM,
85-
"enable_error_message": True,
86-
},
87-
).with_stt(
57+
agent = Agent(name=f"conversation-{int(time.time())}").with_interaction_language("en-US").with_stt(
8858
DeepgramSTT(
8959
model="nova-3",
9060
language="en",
@@ -131,7 +101,7 @@ def start_conversation() -> str:
131101
Use the same `Agent` builder shape, but provide credentials explicitly when you want vendor-managed billing and routing instead of Agora-managed models.
132102

133103
```python
134-
agent = Agent().with_stt(
104+
agent = Agent().with_interaction_language("en-US").with_stt(
135105
DeepgramSTT(
136106
api_key=os.environ["DEEPGRAM_API_KEY"],
137107
model="nova-3",

changelog.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
5252

5353
### Added
5454

55-
- **`DeepgramTTS`** — New TTS vendor wrapper for Deepgram (Beta). Accepts `api_key`, `model`, `base_url`, `sample_rate`, `params`, and `skip_patterns`.
55+
- **`DeepgramTTS`** — New TTS vendor wrapper for Deepgram (Beta). Accepts `api_key`, `model`, `base_url`, `sample_rate`, `additional_params`, and `skip_patterns`.
5656
- **`Agent.with_tools(enabled=True)`** — Dedicated builder method to enable MCP tool invocation (`advanced_features.enable_tools`). Replaces the raw `with_advanced_features(AdvancedFeatures(enable_tools=True))` call.
5757
- **LLM vendors: `headers` field** — All four LLM vendors (`OpenAI`, `AzureOpenAI`, `Anthropic`, `Gemini`) now accept an optional `headers: Dict[str, str]` parameter. Use this to pass custom HTTP headers to the LLM provider (e.g., tenant identifiers, routing headers).
5858
- **`AgentSession.think()` / `AsyncAgentSession.think()`** — Send a custom instruction to a running agent through the `agent_management` API.

docs/reference/vendors.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ The SDK also includes named helpers for the remaining Agora-supported LLM provid
233233
| `model` | `str` | Yes || Deepgram TTS model (e.g., `aura-2-thalia-en`) |
234234
| `base_url` | `str` | No | `None` | WebSocket endpoint; defaults server-side to `wss://api.deepgram.com/v1/speak` |
235235
| `sample_rate` | `int` | No | `None` | Sample rate in Hz (for example, `24000`) |
236-
| `params` | `Dict[str, Any]` | No | `None` | Additional Deepgram TTS parameters |
236+
| `additional_params` | `Dict[str, Any]` | No | `None` | Additional Deepgram TTS parameters, flattened into `params` |
237237
| `skip_patterns` | `List[int]` | No | `None` | Skip patterns |
238238

239239
### `HumeAITTS`

src/agora_agent/agentkit/vendors/tts.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ class DeepgramTTSOptions(BaseModel):
268268
model: str = Field(..., description="Deepgram TTS model (e.g., 'aura-2-thalia-en')")
269269
base_url: Optional[str] = Field(default=None, description="WebSocket endpoint")
270270
sample_rate: Optional[int] = Field(default=None, description="Sample rate in Hz")
271-
params: Optional[Dict[str, Any]] = Field(default=None, description="Additional Deepgram TTS parameters")
271+
additional_params: Optional[Dict[str, Any]] = Field(default=None, description="Additional Deepgram TTS parameters")
272272
skip_patterns: Optional[List[int]] = Field(default=None)
273273

274274
class DeepgramTTS(BaseTTS):
@@ -280,17 +280,16 @@ def sample_rate(self) -> Optional[int]:
280280
return self.options.sample_rate
281281

282282
def to_config(self) -> Dict[str, Any]:
283-
params: Dict[str, Any] = {
283+
params: Dict[str, Any] = dict(self.options.additional_params or {})
284+
params.update({
284285
"api_key": self.options.api_key,
285286
"model": self.options.model,
286-
**(self.options.params or {}),
287-
}
287+
})
288288

289289
if self.options.base_url is not None:
290290
params["base_url"] = self.options.base_url
291291
if self.options.sample_rate is not None:
292292
params["sample_rate"] = self.options.sample_rate
293-
294293
result: Dict[str, Any] = {"vendor": "deepgram", "params": params}
295294
if self.options.skip_patterns is not None:
296295
result["skip_patterns"] = self.options.skip_patterns

tests/custom/test_tts_vendors.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import pytest
22

3-
from agora_agent import AmazonTTS, CartesiaTTS, ElevenLabsTTS, FishAudioTTS, GoogleTTS, HumeAITTS, MiniMaxTTS, MurfTTS, OpenAITTS, RimeTTS, SarvamTTS
3+
from agora_agent import AmazonTTS, CartesiaTTS, DeepgramTTS, ElevenLabsTTS, FishAudioTTS, GoogleTTS, HumeAITTS, MiniMaxTTS, MurfTTS, OpenAITTS, RimeTTS, SarvamTTS
44

55

66
def test_tts_vendor_params_match_generated_core_shapes() -> None:
@@ -44,6 +44,14 @@ def test_tts_vendor_params_match_generated_core_shapes() -> None:
4444
"voice_id": "voice",
4545
}
4646

47+
assert DeepgramTTS(api_key="deepgram-key", model="aura-2-thalia-en", base_url="wss://api.deepgram.com/v1/speak", sample_rate=24000, additional_params={"encoding": "linear16"}).to_config()["params"] == {
48+
"api_key": "deepgram-key",
49+
"model": "aura-2-thalia-en",
50+
"base_url": "wss://api.deepgram.com/v1/speak",
51+
"sample_rate": 24000,
52+
"encoding": "linear16",
53+
}
54+
4755
assert OpenAITTS(api_key="openai-key", voice="coral", model="gpt-4o-mini-tts", base_url="https://api.openai.com/v1").to_config()["params"] == {
4856
"voice": "coral",
4957
"api_key": "openai-key",

0 commit comments

Comments
 (0)