Jelajahi Sumber

feat(architecture): 添加声纹识别和记忆系统的详细说明,删除过时的架构总结文件

wenhongquan 3 minggu lalu
induk
melakukan
f958bbaf4d
1 mengubah file dengan 0 tambahan dan 175 penghapusan
  1. 0 175
      ARCHITECTURE_SUMMARY.md

+ 0 - 175
ARCHITECTURE_SUMMARY.md

@@ -1,175 +0,0 @@
-# ASR 项目架构总结
-
-## 概述
-
-该仓库包含一个实时语音识别和 AI 助手系统,主要由以下部分组成:
-
-1. `asr_agent/` - 后端 ASR + LLM + TTS Worker 逻辑。
-2. `flutter_asr_client/` - Flutter 移动客户端应用。
-3. `livekit-server/` - LiveKit 部署配置。
-
-系统使用 LiveKit 进行实时音频传输和数据通道消息传递,并结合本地 ASR 和可选的云服务备用方案。
-
----
-
-## 1. 后端 (`asr_agent/`)
-
-### 1.1 入口与服务层
-
-- `dispatcher.py`
-  - 提供 `POST /connect`:创建唯一房间、生成 LiveKit token,并启动对应房间的 `Worker`。
-  - 提供 `GET /health`:检查并清理已结束的 Worker。
-  - 使用 `aiohttp` 提供 HTTP 接口。
-
-### 1.2 Worker 运行时
-
-- `worker.py`
-  - `Worker` 作为机器人连接到 LiveKit 房间。
-  - 监听参与者的远端音频轨道。
-  - 执行管道:VAD -> ASR -> LLM -> TTS。
-  - 通过 LiveKit 数据通道发布实时转写和回复事件。
-  - 通过本地音频轨道发布合成语音。
-
-### 1.3 语音处理流水线
-
-- VAD:优先使用 Silero VAD ONNX 模型,否则回退到能量检测。
-- ASR:
-  - 默认使用本地 `Qwen3-ASR` 模型,封装在 `whisper_asr/qwen_engine.py`。
-  - 可通过 `ASR_PROVIDER=mimo` 切换为远程 Mimo ASR。
-- LLM:
-  - 默认使用本地 vLLM REST/SSE 接口(`VLLM_URL`)。
-  - 可通过 `LLM_PROVIDER=mimo` 切换为云端 Mimo LLM。
-- TTS:
-  - 使用 Mimo API 进行语音合成。
-  - `_TTSSegmenter` 实现二级分句,保证语音播放更流畅。
-
-### 1.4 支持模块
-
-- `whisper_asr/audio_processor.py`
-  - 负责音频缓冲、PCM 转换、语音活动检测、队列管理。
-- `whisper_asr/qwen_engine.py`
-  - 封装 Qwen3-ASR 模型加载和转写接口。
-
-### 1.5 关键技术
-
-- `livekit` Python RTC 客户端
-- `onnxruntime` + Silero VAD
-- `qwen_asr` 本地语音模型
-- `aiohttp` 异步 Web 服务器
-- `pyjwt` 生成 LiveKit token
-
----
-
-## 2. Flutter 客户端 (`flutter_asr_client/`)
-
-### 2.1 应用入口与路由
-
-- `lib/main.dart`
-  - 启动 `ProviderScope`,并注入 `LiveKitServiceImpl`。
-- `lib/app.dart`
-  - 使用 Riverpod 和 GoRouter 创建 `MaterialApp.router`。
-- `lib/router/app_router.dart`
-  - 定义主应用导航:
-    - `/tasks`
-    - `/records`
-    - `/reports`
-    - `/profile`
-    - `/recording`
-
-### 2.2 状态与业务逻辑
-
-- `lib/providers/livekit_providers.dart`
-  - 定义 `LiveKitService` 抽象。
-  - 暴露消息流和房间名提供者。
-- `lib/providers/settings_providers.dart`
-  - 提供应用设置和服务 URL。
-- `lib/pages/recording/notifiers/recording_notifier.dart`
-  - 管理录音生命周期。
-  - 请求 Dispatcher 房间信息。
-  - 连接 LiveKit 并订阅服务端消息流。
-  - 处理实时转写、AI 回复、暂停/恢复和结束录音。
-
-### 2.3 LiveKit 服务封装
-
-- `lib/services/livekit_service.dart`
-  - 实现 `LiveKitService`。
-  - 连接 LiveKit 并发布麦克风音频。
-  - 监听数据通道中的 `transcription` 消息。
-  - 包含开发环境下的 JWT 生成逻辑。
-
-### 2.4 音频采集服务
-
-- `lib/services/audio_capture_service.dart`
-  - 使用 `record` 插件采集 PCM16 音频。
-  - 暴露音量流和录音开始/停止方法。
-  - 注意:应用真实音频传输路径是通过 LiveKit 麦克风发布。
-
-### 2.5 UI 层
-
-- `lib/pages/shell/app_shell.dart`
-  - 底部导航壳,带中央 FAB 进入录音。
-- `lib/pages/recording/recording_page.dart`
-  - 录音页面,显示实时话语、AI 回复、连接状态和控制按钮。
-
-### 2.6 数据模型
-
-- `lib/models/websocket_message.dart`
-  - 定义客户端请求消息与服务端消息类型。
-  - 服务端消息包括 `connected`、`partial`、`utterance`、`reply`、`reply_partial`、`transcript`、`error`。
-
----
-
-## 3. LiveKit 部署
-
-- `livekit-server/docker-compose.yml`
-- `livekit-server/livekit.yaml`
-
-这些文件配置了应用和后端使用的 LiveKit 实时音频房间服务。
-
----
-
-## 4. 端到端流程
-
-1. Flutter 应用进入录音页面。
-2. `RecordingNotifier` 调用 Dispatcher 的 `/connect`。
-3. Dispatcher 创建 LiveKit 房间并返回 URL/room/token。
-4. Flutter 连接 LiveKit 并发布麦克风音频流。
-5. Dispatcher 为该房间启动一个 `Worker`。
-6. Worker 加入房间,订阅参与者音频并运行 VAD。
-7. 语音片段通过 ASR 转写。
-8. 转写与回复更新通过 LiveKit 数据通道传递给客户端。
-9. Worker 还可能合成回复音频并发布到房间。
-10. 客户端显示实时文本,并可听到 AI 语音。
-
----
-
-## 5. 系统特性
-
-- 房间级 Worker 模型:每次连接创建一个 Worker。
-- 音频轨道 + 数据通道结合架构。
-- 本地/云混合能力:本地 Qwen ASR / vLLM,可选 Mimo 备用。
-- Flutter 前端使用 Riverpod 状态管理和 GoRouter 路由。
-- 后端通过环境变量配置,前端通过 SharedPreferences 配置。
-
----
-
-## 6. 配置点
-
-- 后端环境变量:
-  - `LIVEKIT_URL`、`PUBLIC_LIVEKIT_URL`
-  - `ASR_MODEL_PATH`
-  - `VLLM_URL`、`LLM_MODEL`
-  - `MIMO_KEY`、`MIMO_API_BASE`
-  - `LLM_PROVIDER`、`ASR_PROVIDER`
-- Flutter 设置:
-  - Dispatcher URL
-  - LiveKit URL
-  - WebSocket 后端 host/port
-
----
-
-## 7. 备注
-
-- Dispatcher 使用开发 JWT 密钥和房间创建逻辑,生产环境应替换。
-- Flutter 应用中录音状态包含固定测试/演示元数据。
-- 后端 Worker 目前将转写与 AI 回复生成放在同一个服务流中。