关于 api
面向开发者的 Deepgram 语音与音频 API 参考技能,涵盖转写、语音合成、语音 Agent 和音频智能接口,并说明名称相近的 Flux 产品之间的区别。
主要功能
- 01Nova 与 Flux STT 接口指南
- 02Aura 与 Flux TTS 接口指南
- 03Voice Agent API 参考
- 04区域端点与主机说明
- 05认证与 API 域名信息
适用场景
- 01为录制媒体或实时音频选择转写接口
- 02构建对话式语音 Agent 流程
- 03为流式或批量音频选择语音合成方式
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ deepgram/ skills --skill api安装后在 Claude Code 中输入/api确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/agent.mdauth.mdlisten.mdmodels.mdprojects.mdread.mdself-hosted.mdspeak.md详细介绍
Deepgram API
使用 Deepgram 的语音转文本、文本转语音、语音 Agent 和音频智能 API 进行构建。
**“Flux” 指两个独立的产品。**Flux STT 是
/v2/listen上的对话式语音转文本(model=flux-general-en)。Flux TTS 是/v2/speak上的轮次式语音合成(model=flux-{voice}-{language})。它们共用一个名称和一种设计理念——感知轮次、为语音 Agent 打造——但它们是不同的端点,具有不同的模型、参数和消息。当请求只说 “Flux” 时,请确认它是关于转写音频还是生成音频。
快速开始
所有 API 请求都需要通过 API key 或 JWT 进行认证:
- API Key:
Authorization: Token <API_KEY> - JWT:
Authorization: Bearer <JWT>
基础服务器:
- REST 与 STT/TTS WebSocket:
https://api.deepgram.com - Voice Agent WebSocket 以及
GET /v1/agent/settings/think/models:https://agent.deepgram.com
GET /v1/agent/settings/think/models 也位于 agent. 主机上,而不是 api.:它在 api.deepgram.com 上返回 404,在 agent.deepgram.com 上返回 200。其他所有 REST 都留在 api.deepgram.com 上。
区域端点
要将处理保留在某个地理区域内,请替换主机。相同的 API key、相同的路径、相同的 SDK——只有基础 URL 改变。请求绝不会被路由到区域之外:如果该区域不可用,请求会失败而不会回退。
| 区域 | 主机 |
|---|---|
| EU | api.eu.deepgram.com |
| 澳大利亚 | api.au.deepgram.com |
| 印度 | api.in.deepgram.com |
**数据平面是区域性的;Projects 管理 API 不是。**在所有三个区域主机上:
| 端点 | 是否区域化 |
|---|---|
POST /v1/listen、wss://…/v1/listen | 是 |
wss://…/v2/listen | 是 |
POST /v1/speak、wss://…/v1/speak | 是 |
POST /v2/speak、wss://…/v2/speak | 是 |
POST /v1/read | 是 |
wss://…/v1/agent/converse | 是 |
GET /v1/models | 是 |
POST /v1/auth/grant | 是 |
/v1/projects/*(keys、members、usage、billing) | 否——404 |
两条容易让人踩坑的主机规则:
- **Voice Agent 在区域上迁移到
api.主机。**不存在agent.eu.deepgram.com(该名称无法解析)。请使用wss://api.eu.deepgram.com/v1/agent/converse。GET /v1/agent/settings/think/models也随之迁移。在全球范围内它仍留在agent.deepgram.com上。 - **将管理调用保留在
api.deepgram.com上。**把某个客户端的管理调用指向区域主机,/v1/projects会返回 404,因此如果你的应用既做转写又管理 key,请按调用类型拆分基础 URL。
Whisper 模型在这三个区域中的任何一个都不提供服务——请在那里使用 Nova 或 Flux STT 模型。
关于 Deepgram Dedicated 和可自托管主机,请参阅 自定义端点; 关于完整的按区域功能矩阵和 SDK 代码片段,请参阅 区域端点。
Deepgram 的 API 如何协同工作
┌──────────────────────────────┐
│ api.deepgram.com │
└──────────────────────────────┘
│
┌───────────┬───────────┬─────┴─────┬───────────┬───────────┐
▼ ▼ ▼ ▼ ▼ ▼
/v1/listen /v2/listen /v1/speak /v2/speak /v1/read /v1/projects/*
Nova — STT Flux — STT Aura — TTS Flux — TTS Text AI Management
REST + WSS WSS only REST + WSS REST + WSS REST only REST only
┌──────────────────────────────┐
│ agent.deepgram.com │
└──────────────────────────────┘
│
▼
/v1/agent/converse
WebSocket only
audio ──▶ STT ──▶ LLM ──▶ TTS ──▶ audio
(Deepgram orchestrates the full pipeline)
我应该使用哪个 API?
Audio → text (transcription)?
├─ General-purpose transcription (captions, batch, call logs, live streams with custom turn logic)
│ └─ Nova models via /v1/listen
│ ├─ Pre-recorded file → REST POST https://api.deepgram.com/v1/listen?model=nova-3
│ └─ Live stream → WSS wss://api.deepgram.com/v1/listen?model=nova-3
│
└─ Conversational audio / voice-agent-style turn detection
└─ Flux STT models via /v2/listen
└─ Live stream → WSS wss://api.deepgram.com/v2/listen?model=flux-general-en
Text → audio (speech synthesis)?
├─ General-purpose TTS (broadest voice catalog, compressed/containerized audio)
│ └─ Aura models via /v1/speak
│ ├─ One-shot → REST POST https://api.deepgram.com/v1/speak?model=aura-2-thalia-en
│ └─ Low-latency stream → WSS wss://api.deepgram.com/v1/speak?model=aura-2-thalia-en
│
└─ Voice-agent TTS (turn-based lifecycle, barge-in, cross-turn consistency)
└─ Flux TTS models via /v2/speak — model is REQUIRED, and must be flux-*
├─ Pre-render a block → REST POST https://api.deepgram.com/v2/speak?model=flux-alexis-en
└─ Live conversation → WSS wss://api.deepgram.com/v2/speak?model=flux-alexis-en
Full conversational voice agent (audio in, audio out)?
└─ WSS wss://agent.deepgram.com/v1/agent/converse
Deepgram handles STT + your configured LLM + TTS internally
Analyze text for insights?
└─ REST POST /v1/read
(summaries, sentiment, topics, intents)
语音转文本:Nova(/v1/listen)与 Flux STT(/v2/listen)
两个模型系列都在积极维护,且处于行业领先地位。它们解决的是不同的问题——请选择与你的用例相匹配的那个。
Nova(/v1/listen) | Flux STT(/v2/listen) | |
|---|---|---|
| 端点 | /v1/listen | /v2/listen |
| 可用模型 | nova-3(还有 nova-3-medical、nova-3-pharma)、nova-2、nova、enhanced、base | flux-general-en、flux-general-multi |
| 最适合 | 通用转写——字幕、说明文字、通话记录、批处理 | 对话音频——语音 Agent、交互式助手、轮次交替 UI |
| 输出 | 连续的转写流 | 结构化的轮次事件 + 转写(内置轮次状态机) |
| 轮次检测 | 手动(utterance_end_ms、VAD 事件) | 内置(EOT、eager-EOT、turn_index) |
| 传输方式 | REST + WebSocket | 仅 WebSocket |
| 智能叠加功能 | 支持——summarize、sentiment、topics、intents、diarize_model、redact 等 | 不支持——参数集更小、更聚焦;没有 smart_format / diarize_model / punctuate |
| 会话中途重新配置 | 不支持(需重新连接才能更改) | 支持(Configure 消息可实时更新 EOT 阈值、关键词、语言提示和 numerals) |
在以下情况选择 Nova(/v1/listen、model=nova-3):
- 为录制的媒体生成字幕、说明文字或转写
- 对文件进行批处理转写(REST)
- 你需要分析叠加功能(
summarize、sentiment、topics、intents、diarize_model、redact) - 你希望使用 WebSocket 流式传输并搭配自己的轮次检测逻辑
在以下情况选择 Flux STT(/v2/listen、model=flux-general-en):
- 构建交互式语音 Agent 或助手
- 你希望结束轮次检测由系统自动处理
- 你需要低延迟的轮次信号和打断(barge-in)支持
- 你希望在不重新连接的情况下,在会话中途更新 EOT 阈值、关键词、语言提示或
numerals
正在从 Nova 3 迁移到 Flux STT?请参阅官方 Nova 3 → Flux 迁移指南。
文本转语音:Aura(/v1/speak)与 Flux TTS(/v2/speak)
两个 TTS 系列均在积极维护中。/v2/speak 是一个新端点,而非替代品 —— /v1/speak 保持不变,不存在别名、重定向或弃用。这两个系列互不重叠:Aura 语音仅在 /v1/speak 上提供,Flux TTS 语音仅在 /v2/speak 上提供。
Aura(/v1/speak) | Flux TTS(/v2/speak) | |
|---|---|---|
| 端点 | /v1/speak | /v2/speak |
| 模型 | aura-2-*(en、es、de、nl、fr、it、ja)、aura-* | flux-{voice}-{language},例如 flux-alexis-en —— 发布时仅支持英语 |
model 参数 | 可选(默认为 aura-asteria-en) | 必填;传入 aura-* 字符串会被拒绝 |
| 最适用于 | 最广泛的语音目录、多语言、压缩音频、一次性合成 | 语音 Agent —— 流式 LLM 输出、打断、多轮对话 |
| 心智模型 | 文本缓冲区 → 音频流 | 流式优先、基于轮次的对话 |
| 轮次生命周期 | 无 | 每轮:SpeechStarted → 音频 → Flushed → SpeechMetadata(服务端分配的 speech_id) |
| 跨轮次上下文 | 无(重新连接即重置) | 韵律自动跨轮次保持 —— 无需 API 交互 |
| 传输方式 | REST + WebSocket | REST(批处理)+ WebSocket(流式) |
| 流式编码 | linear16、mulaw、alaw | linear16、mulaw、alaw —— 仅原始音频 |
| 批处理编码 | mp3、opus、flac、aac、linear16、mulaw、alaw + container / bit_rate | 相同 —— 但仅限批处理;WebSocket 会拒绝这些编码 |
| 中断 | Clear 丢弃缓冲区,无反馈 | Interrupt → SpeechInterrupted,附带 text_spoken / text_remaining |
| 流中途重新配置 | 否(连接时固定) | 是 —— Configure 仅更新 speed |
speed | 0.7 至 1.5,仅 Aura-2、英语和西班牙语 | 0.5 至 1.5,以 0.05 为步长;当文本带有停顿标记时上限为 1.15(超过则报 PAUSE_SPEED_CAP_EXCEEDED);发音规则见内联控制 |
expressivity | 不支持 | -2…2,默认 0(beta;连接期间固定) |
| 内联控制 | 发音 \{"word":"...","pronounce":"<IPA>"\}(Aura-2 正式可用,英语和西班牙语,输入最多 2000 个字符,可与 speed 组合使用);无停顿控制 | 发音(抢先体验,两种传输方式均支持)仅在 speed 恰好为 1.0 时可用:批处理报 CONTROL_COMBINATION_INVALID,WebSocket 报 DATA-0002;停顿 \{pause:500ms\} 仅限批处理,500 至 3000 ms,以 100 ms 为步长,每个请求最多 8 个 |
Voice Agent provider.version | v1(指定提供方时的默认值) | v2(必填) |
在以下情况选择 Aura(/v1/speak):
- 你需要英语之外的语言,或特定的 Aura 语音
- 你需要在 Voice Agent 中使用压缩输出(
mp3、opus、flac、aac),而 Flux TTS 会返回INVALID_SETTINGS;在批处理 REST 上,两个系列均支持这些编码 - 你已经在使用 Aura,且 Flux TTS 中没有任何功能吸引你迁移 —— v1 保持不变
在以下情况选择 Flux TTS(/v2/speak):
- 构建语音 Agent、电话助手或客服机器人
- 你正在将 LLM token 实时流式传输到扬声器,并希望获得最低的首音频延迟
- 用户可能在响应中途打断,而你需要知道他们实际听到了什么
- 你希望语气跨轮次保持,而无需自行管理状态
- 你正在使用 Flux TTS 语音预渲染固定音频(IVR 提示词、通知)—— 请使用批处理 REST 传输
正在从 Aura 迁移?请参阅官方从 Aura 迁移到 Flux TTS指南和批处理与流式。
API 域
| 域 | REST | WebSocket | 参考 |
|---|---|---|---|
| Listen v1 — STT,Nova 模型 | POST /v1/listen | wss://api.deepgram.com/v1/listen | listen.md |
| Listen v2 — STT,Flux STT(对话式) | — | wss://api.deepgram.com/v2/listen | listen.md |
| Speak v1 — TTS,Aura 模型 | POST /v1/speak | wss://api.deepgram.com/v1/speak | speak.md |
| Speak v2 — TTS,Flux TTS(轮次式) | POST /v2/speak | wss://api.deepgram.com/v2/speak | speak.md |
| Voice Agent | GET agent.deepgram.com/v1/agent/settings/think/models;可复用的 agent 配置位于 /v1/projects/{project_id}/agents(GET、POST)和 /v1/projects/{project_id}/agents/{agent_id}(GET、PUT、DELETE);agent 变量位于 /v1/projects/{project_id}/agent-variables(GET、POST)和 /v1/projects/{project_id}/agent-variables/{variable_id}(GET、PATCH、DELETE) | wss://agent.deepgram.com/v1/agent/converse | agent.md |
| Read(Intelligence) | POST /v1/read | — | read.md |
| Models | GET /v1/models、GET /v1/models/{model_id}、GET /v1/projects/{project_id}/models、GET /v1/projects/{project_id}/models/{model_id};在任一列表调用中加上 include_outdated=true 还会返回非最新版本的模型 | 无 | models.md |
| Projects | /v1/projects/* | — | projects.md |
| Auth | POST /v1/auth/grant | — | auth.md |
| Self-Hosted | /v1/projects/*/self-hosted/* | — | self-hosted.md |
常见错误及避免方法
所有 API
-
功能开关是查询参数,但 Voice Agent 和 v2 的会话中途更新除外。 对于
/v1/listen、/v2/listen、/v1/speak和/v2/speak,初始选项放在 URL 上。对于 Listen,请求体携带音频(REST)或音频帧(WebSocket);对于 Speak,请求体携带文本(REST JSON 的text字段或 WebSocket 的Speak消息)。例外情况:/v1/agent/converse完全没有 URL 查询参数(所有配置都放在Settings消息中);/v2/listen支持在连接后发送Configure消息,以便在会话中途更新 EOT 阈值、关键词、语言提示和numerals;/v2/speak支持发送Configure消息,仅更新speed。另请注意,/v2/listen的参数集比/v1/listen小得多:smart_format、diarize_model和punctuate等开关不可用。 -
速率限制是并发连接数,而不是总请求数。 429 意味着同时打开的连接过多,而不是请求量过高。说话人分离和其他计算密集型功能会进一步减少你的并发配额。限制按项目应用,而不是按 API key 应用,并且因区域而异;API Rate Limits 页面提供了各区域的并发数表格。
STT WebSocket (/v1/listen)
-
以文本帧而非二进制帧发送 KeepAlive。 连接在 10 秒无音频后关闭。静默期间每 3–5 秒以文本(JSON)帧发送
{"type":"KeepAlive"}。以二进制帧发送会导致转写延迟——音频管道会阻塞——而不是静默无操作。 -
绝不要发送空字节负载。 向
/v1/listen发送零长度二进制帧会被视为关闭——它会终止连接。发送前务必检查音频包是否有长度。 -
encoding必须与实际音频格式匹配。 如果encoding=linear16但你发送的是 opus,你会得到 DATA-0000 错误或乱码输出。发送容器化格式(mp3、wav、ogg)时完全省略encoding——Deepgram 会自动检测它们。 -
重连时时间戳会重置。 每个新的 WebSocket 连接都会将时间戳重新从 00:00:00 开始。对于实时应用,请在重连之间维护时间戳偏移,否则你会悄无声息地破坏转写时间线。
TTS WebSocket (/v1/speak)
-
不要发送空文本。
text字段为空的Speak消息会返回 400 错误。发送前务必验证输入。 -
字符速率限制(DATA-0001)意味着放慢速度,而不是重试。 如果你遇到此问题,请降低提交文本块的速度——不要立即重试,否则会使问题加剧。
Flux TTS(/v2/speak)
-
model为必填项,且必须是flux-*音色。 与/v1/speak不同,这里没有默认值——不带model的连接或请求会被拒绝。Aura 字符串在/v2/speak上会被拒绝,而 Flux 音色不由/v1/speak提供;这两个系列从不混用。模型字符串格式为flux-{voice}-{language},例如flux-alexis-en。没有版本段——各代模型在稳定的名称背后滚动更新,与 Flux STT 相同。 -
Flush结束本轮对话——它不是 v1 风格的缓冲区刷新。 没有Finalize;它已并入Flush。音频会在你 flush 之前自行开始流式传输,所以不要等着才发送文本。请使用本轮的SpeechMetadata(而非Flushed)作为轮次结束信号——它在轮次的所有音频发送完毕后到达,并携带计费和计时计数,因此你可以省去客户端的字符数或时长跟踪。服务器会分配本轮的speech_id;切勿自行发送。 -
流式传输仅支持原始音频,并会拒绝任何它无法识别的参数。 WebSocket 发出的是非容器化音频,因此
encoding仅限于linear16(默认)、mulaw或alaw。压缩和容器化编码(mp3、opus、flac、aac)以及container、bit_rate、callback、callback_method和priority参数仅限批处理——将它们发送到 socket 会导致连接失败,任何未知或拼写错误的参数也是如此。需要压缩输出时,请使用批处理 REST 传输。 -
在两次独立生成之间插入空白,因为服务器不会这么做。 文本规范化在合成前运行,但连续的
Speak消息会按原样拼接。先发送"Hello world."再发送"How are you?"会被处理为"Hello world.How are you?",从而产生句子边界伪影。当你把一条回复、一个工具调用结果和另一条回复拼接在一起时,请添加一个空格(或非空白语言对应的正确分隔符)。请发送纯文本:SSML 不会被解释,Flux TTS 唯一支持的标记是其自有的转义内联控制。发音覆盖\{"word":"...","pronounce":"<IPA>"\}在两种传输上均受支持(Early Access),但仅在speed为 1.0 时有效,而暂停标记\{pause:500ms\}仅限批处理。在 socket 上使用暂停标记,或在speed不为 1.0 的 socket 上使用发音控制,会导致连接失败并返回DATA-0002。在批处理POST /v2/speak上,同样的违规行为会返回 400,其err_code会指明所违反的规则:CONTROL_COMBINATION_INVALID(发音与暂停同时使用,或与不为1.0的speed同时使用)、PAUSE_SPEED_CAP_EXCEEDED(暂停标记与高于1.15的speed同时使用)、BREAK_OUT_OF_RANGE(暂停超出 500 至 3000 ms)、BREAK_INCREMENT_INVALID(暂停未落在 100 ms 的网格上)、BREAKS_LIMIT_EXCEEDED(超过 8 个暂停标记,或两个暂停标记之间没有文本),以及BREAK_SYNTAX_INVALID(标记格式错误,例如不带反斜杠的简单标记或转义的结构化标记)。恰好为1.0的speed从不算作速度控制,因此不会触发上述任何一项。参见 Speed, Pause, Pronunciation。
Voice Agent (/v1/agent/converse)
-
在任何音频之前先发送
Settings消息。 Agent 在收到并确认 Settings 配置之前会忽略一切内容。消息顺序是严格要求的。 -
agent.speak.provider.version选择 TTS 系列——而省略agent.speak现在会让你得到 Flux TTS。 将version设为v2使用 Flux TTS,或设为v1使用 Aura;当你指定了 provider 但省略version时,它默认为v1。但如果你完全省略agent.speak,Agent 会默认使用 Flux TTS 及flux-kit-en语音。要切换系列,需同时更改version和model——v1下使用flux-*模型,或v2下使用aura-*模型,都是无效的:{ "agent": { "speak": { "provider": { "type": "deepgram", "version": "v2", "model": "flux-alexis-en" } } } } -
GET /v1/agent/settings/think/models位于agent.deepgram.com,而不是api.deepgram.com。GET /v1/agent/settings/think/models,即你可以在agent.think.provider中指定的 LLM 列表,在api.deepgram.com上返回 404,在agent.deepgram.com上返回 200。相同的密钥,相同的路径;只有主机不同,因此一个硬编码了单一 base URL 的客户端会静默地收到 404,看起来像是缺少某个功能。三个区域性的api.*主机也提供该接口。
Flux STT 模型 (/v2/listen)
-
使用
/v2/listen和flux-general-*模型。 提供两个模型:flux-general-en(英语)和flux-general-multi(多语言,也是唯一接受language_hint/language_hints的模型)。/v1/listen不支持 Flux STT,且仅model=flux不是有效值。对于容器化音频,不要包含language或encoding参数。 -
使用
Configure在会话中途更新 EOT 阈值、关键术语、语言提示和numerals。 与/v1/listen不同,Flux STT 支持连接后进行实时重新配置,因此无需重新连接即可更改轮次检测灵敏度、添加新的关键术语、重新偏置语言检测(仅language_hints、flux-general-multi),或为 PIN 码或订单号开启numerals:{ "type": "Configure", "thresholds": { "eot_threshold": 0.8, "eot_timeout_ms": 3000 }, "keyterms": ["Deepgram"] }服务器会以
ConfigureSuccess响应,它会回显完整的活动配置(包括numerals),而不仅仅是你发送的字段;或者以ConfigureFailure响应,其中携带code和description来标识被拒绝的配置。省略的阈值字段保持其当前值。 -
在轮次之外调用
ForceEndTurn是一个Warning,而不是错误,且套接字保持打开。 在没有进行中的轮次时发送{"type":"ForceEndTurn"}会返回{"type":"Warning","code":"FORCE_END_TURN_NO_ACTIVE_TURN","description":"Received ForceEndTurn while no turn was active; the request was ignored."},连接会继续。不要将其视为致命错误或重新连接。references/listen.md展示了消息结构(ListenV2Warning:code、description、request_id、sequence_id);其中的code是自由字符串,因此像FORCE_END_TURN_NO_ACTIVE_TURN这样的各个代码来自 Force End Turn 文档。当ForceEndTurn确实在轮次中途生效时,产生的TurnInfo会带有event: "EndOfTurn"及trigger: "manual"。trigger为model|manual|timeout,它出现在EndOfTurn上而不出现在其他任何地方,并且它是一个开放枚举,因此要容忍你不认识的值。
Nova 说话人分离(/v1/listen)
- 使用
diarize_model,切勿将其与diarize一同发送。diarize已弃用。diarize_model既可启用说话人分离,又能选择版本,因此无需再传diarize=true——同时发送两者会导致请求失败:400 "diarize_model cannot be used together with diarize or diarize_version."。批处理场景的取值为latest、v1和v2(latest当前即 v2),流式场景的取值为latest或v1。启用说话人分离后,metadata.diarize_info会报告实际运行的是哪个模型({"model_uuid": …, "arch": "v2"}),这是判断latest解析结果的唯一方式。
文本与音频智能(/v1/read、/v1/listen)
-
/v1/read上language为必填项,且会先于其他所有内容进行校验。 没有默认值:省略它会返回400 INVALID_QUERY_PARAMETER,消息为 "Failed to deserialize query parameters: missing fieldlanguage",这会掩盖请求中的所有其他问题。仅支持英语:language=multi会被拒绝,en-US会被接受但回显为en。还有两种/v1/read的形态值得了解:JSON 正文需传入text或url中的恰好一个(两者都传或都不传会给出PAYLOAD_ERROR,且url必须指向纯文本文档,因为音频会给出REMOTE_CONTENT_ERROR),并且它仅支持 POST(GET和 WebSocket 升级均返回 405)。/v1/read上的summarize除true外还接受v2。结果路径因端点而异:/v1/read返回results.summary.text,/v1/listen返回results.summary.short,因此同时处理两者的代码必须分支处理。(sentiment在两个端点上均映射到results.sentiments。) -
在 Nova 流式套接字上,只有
detect_entities可用——另外四项以三种不同方式失败。 支持detect_entities=true,它会把entities放在每条Results消息的顶层,与channel并列,而不是放在channel.alternatives[0]内。另外四项仅适用于预录音频:summarize会在握手阶段失败并返回400 "Summarization is not available for streaming.";topics和intents会在握手阶段失败并返回403 UNAUTHORIZED_FEATURES_REQUESTED,这看起来像是密钥权限问题,即便同一密钥的预录音频topics/intents调用返回 200;sentiment则是陷阱——握手成功,从不发送错误,但结果中根本不会出现 sentiment。
身份验证
- JWT TTL 仅适用于初始握手。 Token 默认 30 秒。一旦 WebSocket 连接建立,Token 过期不会关闭连接——Token 仅在升级请求时需要。
SDK 专属技能
本 api 技能涵盖各 SDK 完全一致的产品契约(端点、查询参数、消息结构)。如需符合语言习惯的代码——导入、异步模式、构建器 API、常见错误——请安装 SDK 专属技能。每个 Deepgram SDK 都会发布 7 个产品技能,命名为 deepgram-{lang}-{product}(例如 deepgram-python-speech-to-text、deepgram-js-voice-agent)。当你安装来自多个 SDK 的技能时,deepgram-{lang}- 前缀可避免冲突。
# Install all skills from a specific SDK
npx skills add deepgram/deepgram-python-sdk # Python
npx skills add deepgram/deepgram-js-sdk # JavaScript / TypeScript
npx skills add deepgram/deepgram-java-sdk # Java
npx skills add deepgram/deepgram-go-sdk # Go
npx skills add deepgram/deepgram-rust-sdk # Rust
npx skills add deepgram/deepgram-dotnet-sdk # C# / .NET
# Or install a specific product skill from one SDK (note the deepgram-{lang}- prefix)
npx skills add deepgram/deepgram-python-sdk --skill deepgram-python-speech-to-text
npx skills add deepgram/deepgram-js-sdk --skill deepgram-js-voice-agent
Swift 和 Kotlin SDK 技能未列出,因为这些仓库不公开,npx skills add 无法访问。如需浏览器相关工作,请打开 browser-agent 技能:它涵盖 npm 上发布的四个 Browser Agent SDK 包(@deepgram/agents、@deepgram/react、@deepgram/ui、@deepgram/agents-widget)。
相关 Deepgram 技能
| 技能 | 用途 |
|---|---|
recipes | 每种语言每个功能的最小可运行代码片段 |
examples | 与第三方平台(Twilio、LiveKit 等)的完整集成示例 |
starters | 可运行的入门应用(框架 × 功能矩阵) |
docs | 浏览 Deepgram 文档 |
audio-intelligence | /v1/listen 上的 summarize、sentiment、topics、intents 和 detect_entities 参数 |
text-intelligence | 用于处理已有文本的 POST /v1/read |
browser-agent | 用于在浏览器中运行 Agent 的 Browser Agent SDK 包 |
cli | 用于 shell 和 CI 工作的 deepctl |
self-hosted | 在你自己的 GPU 上运行 Deepgram |
setup-mcp | 安装 Deepgram MCP 服务 |
文档
- API 参考
- 语音转文本入门
- 文本转语音文档(Aura)
- Flux TTS 概览
- Voice Agent 文档
- Voice Agent TTS 模型
- 音频智能
- 自托管部署
- 区域端点
- 自定义端点
- API 速率限制:每个 API 的分区域并发表;限制按项目生效,而非按 API 密钥
- 处理并发速率限制