File size: 2,957 Bytes
1858ba9
 
2f3888a
 
 
 
 
 
 
 
1858ba9
2f3888a
1858ba9
2f3888a
 
 
 
 
 
 
1858ba9
2f3888a
 
 
 
 
 
 
 
 
1858ba9
 
 
 
2f3888a
1858ba9
2f3888a
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 系统架构

## 核心架构理念

本项目采用**分层、解耦**的模块化架构,旨在实现高度的**可维护性****可扩展性**。其核心思想是**关注点分离 (Separation of Concerns)**- **底层能力子系统 (`asr/`, `tts/`, `llm/`, `audio/`)**: 每个模块都是一个独立的、高内聚的功能单元(如语音识别、音频I/O)。它们不包含业务逻辑,只提供纯粹的能力。
- **服务编排层 (`services/`)**: 负责编排和调度底层子系统的能力,以实现具体的业务流程(如语音对话、状态监控)。
- **接口层 (`api/`, `cli/`)**: 作为应用的入口,负责接收外部指令,并将其委派给服务层处理。

## 数据流程图 (CLI 模式)

```
用户语音输入 → Audio Subsystem (Capture) → ASR Subsystem (Recognize) → LLM Subsystem (Generate) → TTS Subsystem (Synthesize) → Audio Subsystem (Player)
↑                                                                                                                        ↓
└─────────────────────────────────────────── 实时语音交互循环 ───────────────────────────────────────────────────────────┘
``` 


## 核心组件与分层

| 层级 | 模块/组件 | 职责描述 |
|:--- |:--- |:--- |
| **接口层** | `api/`, `cli/` | 提供 HTTP/命令行接口,作为系统入口。 |
| **服务层** | `services/` | **业务流程编排**。例如,`PlayerService` 负责处理播放任务的业务逻辑(如中断、历史记录),并调用底层播放器。 |
| **能力子系统** | `asr/` | **语音识别 (ASR)**。包含多种识别策略(如 FunASR, Whisper)及其管理。 |
| | `tts/` | **文本转语音 (TTS)**。包含多种语音合成策略(如 Kokoro, Moyo)及其管理。 |
| | `llm/` | **大语言模型 (LLM)**。负责处理文本生成逻辑。 |
| | `audio/` | **音频I/O**。提供纯粹的音频输入(`capture`)和输出(`player`)能力,不含业务逻辑。 |
| **核心框架** | `core/` | **应用骨架**。包含线程基类、全局常量、状态管理器和系统启动器。 |


## 多线程架构

系统采用多线程设计,各组件通过队列进行高效解耦通信:

- **音频捕获线程**: (`audio.AecCapture`/`audio.PyAudioCapture`) 持续捕获音频数据。
- **语音监测线程**: (`services.SpeechMonitor`) 检测用户语音活动。
- **ASR工作线程**: (`asr.models.*`) 语音识别处理。
- **LLM工作线程**: (`llm.generator`) 文本生成处理。
- **TTS工作线程**: (`tts.models.*`) 语音合成处理。
- **播放服务线程**: (`services.PlayerService`) 处理播放任务的业务逻辑。
- **音频播放线程**: (`audio.AudioPlayer`) 播放解码后的纯音频数据。