用途
Deepgram 参考架构面向需要大规模语音转写的系统设计。提供四种参考架构,帮助在构建转写流水线或生产架构时选择合适模式:
- 同步 REST:适用于短文件(<60s)、低并发场景,延迟低、吞吐低、实现简单。
- 异步队列(BullMQ):适用于批量处理、文件 >60s,延迟中等、吞吐高、复杂度中等。
- WebSocket 代理:适用于实时音频与实时场景,延迟实时、吞吐中等、复杂度中等。
- 混合路由器:适用于混合负载,延迟不定、吞吐高、复杂度高。
- 回调模式:适用于文件 >5min、发起后不等待结果(fire-and-forget),无延迟指标、吞吐极高、复杂度低。
主要能力
- 同步 REST 模式:使用 Express 与 @deepgram/sdk,通过
deepgram.listen.prerecorded.transcribeUrl直接调用 API,返回 transcript、confidence、duration、request_id,并在开启 diarize 时返回 utterances。 - 异步队列模式:基于 BullMQ 与 ioredis,Producer 提交转写任务,设置 attempts、指数退避、removeOnComplete;Worker 以 concurrency 与 limiter(每分钟上限)消费任务,处理失败抛出错误。
- WebSocket 代理:基于 ws 的 WebSocketServer,服务端建立 Deepgram 实时连接(模型 nova-3、smart_format、interim_results、utterance_end_ms、linear16、16000Hz、单声道),把转写结果转发给客户端,并将客户端音频转发给 Deepgram,断开时清理连接。
- 混合路由器:TranscriptionRouter 按 estimatedDuration 自动选择模式:>300s 用 callback,>60s 用 async,其余用 sync;也可显式指定 mode。
- 架构图:展示客户端 → API 网关(/transcribe)→ 混合路由器 → 同步/队列/回调 → Deepgram API → 结果存储的数据流。
使用方式
资料给出的使用前提包括:已文档化的音频/转写数据流、同意/保留政策、批准的环境边界、服务与数据负责人;并已评审认证、媒体接入、回调、可观测性、存储与事件响应的接口。示例中:开发环境生产者校验媒体元数据,使用限定范围的 project key 发起请求,接收签名回调,仅记录关联/状态指标;在进入生产金丝雀前,通过 staging 推进同一版本化契约,保留死信/恢复负责人,并确保遥测中不包含音频/转写内容。各模式均提供完整 TypeScript 代码示例,可直接按步骤落地。
适用场景
短音频接口服务、批量文件转写、实时语音转写、以及时长差异较大的混合负载。混合路由器适合希望统一入口并按音频时长自动分流的工作负载。
限制与错误处理
资料列出常见问题与处理:大文件同步超时(选错模式,应改用异步队列或回调);队列积压增长(Worker 过载,需扩展 Worker、提高并发);WebSocket 断连(网络不稳,需带退避的自动重连);未收到回调(端点不可达,需检查 HTTPS 并核实回调 URL)。
资源
Deepgram Architecture Guide、BullMQ Documentation、WebSocket API。