背景
MVP 需要支持客户端通过同一条 WebSocket 连接实时上传麦克风音频,并由后端在接收音频分片的同时转发给 ASR,最终将 ASR 文本交给 LLM 生成可确认的日程草稿。
功能范围
- 支持
voice.stream.start 和 voice.stream.end 控制消息。
- 支持 WebSocket Binary Frame 音频分片接收。
- 限制音频格式、采样率、声道数和最大录音时长。
- 使用有界队列实现客户端到 ASR 的实时流式转发和背压。
- 使用阿里云
server_vad 完成语音断句,并发发送音频与接收识别事件。
- 聚合 ASR 最终文本并调用 LLM 生成结构化日程草稿。
- 通过
voice.parse.result 异步推送成功或失败结果。
- 在断连、超限和第三方服务异常时释放后台任务与连接资源。
- 避免第三方 WebSocket 关闭握手造成额外长时间等待。
验收标准
- 客户端可以完成握手、开始音频流、发送二进制音频、结束音频流并收到结构化结果。
voice.stream.ended 先于对应的 voice.parse.result 返回。
- 同一设备同一时间只能存在一个活动音频流。
- ASR 和 LLM 错误可以区分阶段并返回统一失败消息。
- 覆盖正常流程、非法参数、空音频、超限、断连和第三方失败测试。
- 后端完整测试和代码质量检查通过。
背景
MVP 需要支持客户端通过同一条 WebSocket 连接实时上传麦克风音频,并由后端在接收音频分片的同时转发给 ASR,最终将 ASR 文本交给 LLM 生成可确认的日程草稿。
功能范围
voice.stream.start和voice.stream.end控制消息。server_vad完成语音断句,并发发送音频与接收识别事件。voice.parse.result异步推送成功或失败结果。验收标准
voice.stream.ended先于对应的voice.parse.result返回。