用途:在 JavaScript/TypeScript 项目中通过 Deepgram Conversational STT v2 / Flux 的 /v2/listen WebSocket 进行轮次感知(turn-aware)的流式语音转写。适用于需要轮次事件而非单纯词流的对话式语音界面,且不想引入完整 Voice Agent 运行时的场景。若需 v1 转写或预录音频 REST,应改用 deepgram-js-speech-to-text;需要内置 think+speak 的托管助手用 deepgram-js-voice-agent;需要情感与摘要等分析用 deepgram-js-audio-intelligence。
主要能力:接收 Flux 风格事件,如 Connected、TurnInfo、FatalError。连接参数包括 model、encoding、sample_rate、eager_eot_threshold、eot_threshold、eot_timeout_ms、keyterm、tag、mip_opt_out。Socket 方法含 sendMedia、sendCloseStream、sendListenV2Configure、waitForOpen。自定义封装在 src/CustomClient.ts 中提供 createConnection 别名及仅 Node 可用的 ping 辅助方法。示例见 examples/26-transcription-live-websocket-v2.ts 与 examples/27-deepgram-session-header.ts。可安装中心技能获取跨语言产品知识:npx skills add deepgram/skills。
使用方式:先 require('dotenv').config() 并用 DEEPGRAM_API_KEY 初始化 DeepgramClient。随后调用 deepgramClient.listen.v2.createConnection({ model: 'flux-general-en' }),注册 message 处理器解析事件类型,再 connect() 并 await waitForOpen()。通过 sendMedia(chunk) 发送音频,结束时用 sendCloseStream({ type: 'CloseStream' }) 关闭。createConnection 是惰性的,应在注册处理器后再调用 connect()。
限制:当前仓库生成的 ListenV2Model 类型仅暴露 flux-general-en,产品文档提及的 flux-general-multi / language_hint 尚未在 SDK 类型中体现。此技能仅支持 /v2/listen WebSocket,没有 REST 路径。关闭应使用 sendCloseStream 而非 v1 的 sendFinalize。ping() 仅限 Node,浏览器中会抛错。容器化音频应省略 encoding,原始 PCM/Opus 流则保留。400 错误可能表示账户或端点尚未启用。仓库内 reference.md 目前未记录 listen.v2,应以 src/CustomClient.ts 和 src/api/resources/listen/resources/v2/client/{Client,Socket}.ts 为准。