系统架构
核心架构理念
本项目采用分层、解耦的模块化架构,旨在实现高度的可维护性和可扩展性。其核心思想是**关注点分离 (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
) 播放解码后的纯音频数据。