关于 deepgram-js-conversational-stt
面向 JavaScript / TypeScript 开发者的 Deepgram Flux 对话式语音转文字技能,使用 /v2/listen WebSocket 处理带轮次信息的流式音频,并介绍事件与 SDK 接口。
主要功能
- 01通过 WebSocket 流式转写对话音频
- 02接收 Connected 和 TurnInfo 等事件
- 03配置端点检测与轮次结束参数
- 04提供 Flux 实时转写示例
适用场景
- 01为对话界面识别发言轮次
- 02处理需要轮次事件的实时语音流
- 03在不使用 Voice Agent 运行时的场景集成对话转写
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ deepgram/ deepgram-js-sdk --skill deepgram-js-conversational-stt安装后在 Claude Code 中输入/deepgram-js-conversational-stt确认已加载。
详细介绍
使用 Deepgram Conversational STT / Flux(JavaScript / TypeScript SDK)
通过 /v2/listen 为对话音频提供可感知轮次的流式 STT,并支持显式轮次事件。
何时使用此产品
- 你需要可感知轮次的转写,而不只是词语流。
- 你想使用
TurnInfo和Connected等 Flux 风格的事件。 - 你正在构建对话界面,但不想使用完整的 Voice Agent 运行时。
以下情况请使用其他技能:
- 你需要通用的 v1 转写或预录音频 REST →
deepgram-js-speech-to-text。 - 你需要内置思考和语音功能的托管助手 →
deepgram-js-voice-agent。 - 你需要情感分析和摘要等分析叠加功能 →
deepgram-js-audio-intelligence。
身份验证
require("dotenv").config();
const { DeepgramClient } = require("@deepgram/sdk");
const deepgramClient = new DeepgramClient({
apiKey: process.env.DEEPGRAM_API_KEY,
});
快速开始
来自 examples/26-transcription-live-websocket-v2.ts:
const deepgramConnection = await deepgramClient.listen.v2.createConnection({
model: "flux-general-en",
});
deepgramConnection.on("message", (data) => {
if (data.type === "Connected") {
console.log("Connected:", data);
} else if (data.type === "TurnInfo") {
console.log("Turn Info:", data);
} else if (data.type === "FatalError") {
deepgramConnection.close();
}
});
deepgramConnection.connect();
await deepgramConnection.waitForOpen();
// Swap this for a live mic capture in real apps; the repo example uses
// `createReadStream` over a sample file.
const { createReadStream } = require("node:fs");
const audioStream = createReadStream("samples/spacewalk.wav");
audioStream.on("data", (chunk) => {
deepgramConnection.sendMedia(chunk);
});
audioStream.on("end", () => {
deepgramConnection.sendCloseStream({ type: "CloseStream" });
});
关键参数 / API 接口
- 来自
src/api/resources/listen/resources/v2/client/Client.ts的连接参数:model、encoding、sample_rate、eager_eot_threshold、eot_threshold、eot_timeout_ms、keyterm、tag、mip_opt_out。 - 来自
src/api/resources/listen/resources/v2/client/Socket.ts的套接字方法:sendMedia(...)、sendCloseStream(...)、sendListenV2Configure(...)、waitForOpen()。 - 来自
src/CustomClient.ts的自定义封装新增项:createConnection(...)别名和仅限 Node.js 的ping(...)辅助方法。
限制
- 当前生成的
ListenV2Model类型仅支持"flux-general-en"。 - 产品文档提到了更广泛的 Flux 功能,但目前此仓库生成的类型尚未提供
flux-general-multi/language_hint。
API 参考(分层)
- 仓库内参考:
reference.md目前未记录listen.v2;请将src/CustomClient.ts和src/api/resources/listen/resources/v2/client/{Client,Socket}.ts作为仓库内的权威参考。 - 规范 OpenAPI(REST):https://developers.deepgram.com/openapi.yaml
- 规范 AsyncAPI(WSS):https://developers.deepgram.com/asyncapi.yaml
- Context7:库 ID
/llmstxt/developers_deepgram_llms_txt - 产品文档:
注意事项
- 这里没有 REST 路径。 此技能仅支持
/v2/listenWebSocket。 - 当前仓库的类型定义仅允许
flux-general-en。 将多语言 Flux 支持视为产品功能,SDK 接口目前尚未体现此能力。 - 使用
sendCloseStream关闭,而不是sendFinalize。 Finalize 是 v1 的模式。 ping()仅限 Node.js。src/CustomClient.ts会在浏览器中抛出异常,因为浏览器 WS 的 ping 帧不会向用户开放。createConnection()是惰性调用。 注册处理程序后再调用connect()。- 示例明确提示了访问权限 / 可用性问题。 400 可能表示你的账户或端点尚未启用,而不是套接字代码有误。
- 对于容器化音频,请省略
encoding。 对于原始 PCM / Opus 流,则应保留。
此仓库中的示例文件
examples/26-transcription-live-websocket-v2.tsexamples/27-deepgram-session-header.ts
核心产品技能
如需跨语言的 Deepgram 产品知识——整合后的 API 参考、文档查找工具、专注且可运行的示例方案、第三方集成示例以及 MCP 设置,请安装核心技能:
npx skills add deepgram/skills
此 SDK 提供符合语言惯例的代码技能;deepgram/skills 提供跨语言产品知识(参见 api、docs、recipes、examples、starters、setup-mcp)。
评论
支持 Markdown