Skip to content

实现 ASR、LLM Agent 与 TTS 流式处理能力 #183

Description

@yyy-router

功能目标

实现 TimeFlow 服务端内部语音智能处理能力,包括:

  • 阿里云 Qwen-ASR realtime 接口封装
  • OpenAI-compatible Qwen LLM 流式接口封装
  • Agent Function Call 编排
  • 阿里云 Qwen-Audio-TTS 原始 WebSocket 接口封装
  • Agent 可播报事件 → TTS 内部流式组合管线

本功能暂不实现完整客户端语音产品闭环。涉及日程等业务模块的操作通过可替换的业务服务边界接入;真实持久化由对应业务模块负责。

实现原则

  • ASR、LLM 和 TTS 均使用异步接口
  • ASR 使用 realtime WebSocket 接收增量和最终转写
  • LLM 使用流式文本和增量 Function Call
  • TTS 严格使用官方原始 WebSocket 协议:run-taskcontinue-taskfinish-task
  • 一个可播报轮次对应一个 TTS task,同一 task 内按顺序发送多个 continue-task
  • 文本形成完整句段后立即送入 TTS;音频按 Provider 返回顺序输出
  • 第一版不实现句段级独立 task、受控并发或乱序重排
  • Provider 接口与具体模型供应商实现解耦
  • 自动化测试使用 fake transport/provider,不依赖真实 API Key
  • API Key 不得写入日志、测试或 Git 仓库

任务清单

  • PR 1:实现阿里云 Qwen-ASR realtime 接口封装

  • PR 2:实现 Qwen LLM 与 Agent Function Call

    • 实现供应商无关的 LLM 流式契约
    • 实现 OpenAI-compatible Qwen LLM 流式适配器
    • 解析文本增量和 Usage
    • 拼接增量 Function Call
    • 实现工具注册与执行协议
    • 实现串行多轮工具调用循环
    • 增加日程工具 Schema 与现有 ScheduleAgentService 契约映射
    • 实现 request_user_input 结构化反问、暂停与跨轮恢复
    • 增加最大调用轮数和错误处理
    • 工具调用轮次中间文本不向下游暴露为可播报 AgentTextDelta
    • 增加 Fake Provider/LLM/Service 测试与真实 Qwen LLM 冒烟测试
    • 合并:PR feat(intelligence): 实现 Qwen LLM 与 Agent Function Calling #195
  • PR 3:实现 Qwen TTS 与内部流式组合管线

    • 实现供应商无关的 TTS Port 和配置
    • 实现阿里云 Qwen-Audio-TTS 原始 WebSocket Provider
    • 实现单 task、多句段顺序 continue-task
    • 实现 PCM 24kHz 单声道 16bit 流式音频输出
    • 实现增量文本句段切分
    • 仅将最终 AgentTextDelta 和 AgentQuestion.speech_text 交给 TTS
    • 不合成 System Prompt、ASR、Tool Call/Result、AgentCompleted 或内部错误
    • 实现 Agent 事件与 TTS 音频并行处理的内部 Pipeline
    • 实现取消、超时、协议校验和安全错误转换
    • 增加 fake Provider、切分器和 Pipeline 测试
    • 完成真实 Qwen TTS 单句和同 task 多句段冒烟验证
    • Draft PR 审核、CI 通过并合并

PR 3 范围边界

PR 3 包含:

  • TTS 公共契约
  • Qwen-Audio-TTS 官方原始 WebSocket Provider
  • 文本增量切分
  • Agent 可播报事件到 TTS 的内部流式 Pipeline
  • PCM 音频流、取消、超时和错误清理

PR 3 不包含:

  • 完整 ASR → Agent → TTS 产品集成
  • ComposedVoiceAgent 会话生命周期编排
  • Realtime Voice Agent
  • Gateway Composition Root 切换
  • 客户端用户打断和 voice.tts.cancel 协议
  • 地图 Provider
  • 提醒模块完整联动
  • 长连接池或跨 task dispatcher

后续阶段

PR 3 合并后:

  1. 实现组合式 ComposedVoiceAgent,串联 ASR、Agent、反问恢复和 TTS。
  2. 与 Realtime Voice Agent 共同复用统一的 WebSocket 输入、ResultSink 输出及生命周期接口。
  3. 通过启动配置选择 fake、composed 或 realtime 实现,不在同一会话中动态切换。
  4. 在独立集成阶段实现用户打断、断线清理、过期结果抑制及客户端音频取消语义。

完成标准

  • 三个 Provider/Agent 能力 PR 均合并到组织仓库 main
  • 自动化功能测试通过
  • .env.example 包含所需配置,但不包含真实密钥
  • ASR 最终转写可以立即触发 Agent
  • Agent 可播报句段能够在后续文本仍到达时触发 TTS
  • 音频片段按 Provider 返回顺序输出
  • Issue 清单由开发者手动更新

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions