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 接口封装
  • ASR → Agent → TTS 内部流式组合管线

本功能暂不实现客户端 WebSocket 通信。涉及日程等其他业务模块的接口调用通过可替换的业务服务边界接入;真实持久化由对应业务模块负责。

实现原则

  • ASR、LLM 和 TTS 均使用异步接口
  • ASR 使用 realtime WebSocket 接收增量和最终转写
  • LLM 使用流式文本和增量 Function Call
  • TTS 使用句段切分方式降低首段音频延迟
  • 多个 TTS 句段允许受控并发,但音频必须按文本顺序输出
  • 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 审核、CI 通过并合并
  • PR 3:实现 TTS 与内部流式组合管线

    • 实现阿里云 Qwen-Audio-TTS HTTP 接口
    • 实现 LLM 最终文本句段切分
    • 仅将 AgentTextDelta(最终回答)和 AgentQuestion.speech_text 交给 TTS
    • 不合成 System Prompt、ASR 文本、Tool Call/Tool Result、AgentCompleted 或内部错误
    • 实现 TTS 受控并发
    • 保证音频片段按文本顺序输出
    • 组合 ASR、Agent 和 TTS
    • 提供内部异步处理入口
    • 增加 fake provider 端到端测试

当前 PR 2 边界

  • 不包含 ASR 到 Agent 的组合管线
  • 不包含 TTS、文本句段切分或音频输出
  • 不包含 FastAPI WebSocket endpoint 和客户端协议
  • 不包含真实地图 Provider
  • Agent 通过注入的 ScheduleAgentService 使用业务边界;真实数据库持久化由业务模块负责
  • 不包含会话持久化、全局会话表或同一会话并发保护
  • 不支持只修改某一次周期发生实例;当前支持修改整个日程或整个周期系列
  • 用户位置不暴露给 Agent;后续由会话/工具基础设施使用可信位置上下文处理 POI 默认范围

完成标准

  • 三个 PR 均合并到组织仓库 main
  • 所有自动化测试通过
  • .env.example 包含所需配置,但不包含真实密钥
  • ASR 最终转写可以触发 Agent
  • Agent 文本可以按句段触发 TTS
  • 音频片段按文本顺序输出
  • Issue 清单由开发者手动更新

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions