# 项目结构说明

## 文件组织

项目已按功能模块化拆分，主要文件结构如下：

### 核心文件

#### 主程序入口
- `main_new.cpp` - 新的简化主程序入口
- `main.cpp` - 原始的单文件实现（保留作为参考）

#### 主窗口模块
- `SpeechTestMainWindow.h` - 主窗口类声明
- `SpeechTestMainWindow.cpp` - 主窗口类实现
  - 负责UI界面的创建和管理
  - 处理用户交互事件
  - 协调ASR和TTS管理器
  - 实现麦克风录音功能
  - 管理音频格式转换和WAV文件保存

#### ASR（语音识别）模块
- `ASRManager.h` - ASR管理器类声明
- `ASRManager.cpp` - ASR管理器类实现
  - 管理离线语音识别功能
  - 处理WAV文件识别
  - 预留在线识别接口（当前禁用）

#### TTS（语音合成）模块
- `TTSManager.h` - TTS管理器类声明
- `TTSManager.cpp` - TTS管理器类实现
  - 管理语音合成功能
  - 支持中英文混合合成
  - 自动检测和选择最佳模型

#### 模型设置模块
- `ModelSettingsDialog.h` - 模型设置对话框类声明
- `ModelSettingsDialog.cpp` - 模型设置对话框类实现
  - 提供图形化模型配置界面
  - 支持ASR和TTS模型管理
  - 配置文件自动保存和加载

### 配置文件
- `CMakeLists.txt` - 构建配置文件
- `.gitignore` - Git忽略文件配置

### 文档文件
- `PROJECT_STRUCTURE.md` - 项目结构说明
- `MODEL_SETTINGS_GUIDE.md` - 模型设置界面使用指南

### 测试文件
- `test_tts.cpp` - TTS功能测试程序

### 库文件
- `lib/sherpa_onnx/` - sherpa-onnx库文件

## 模块职责

### SpeechTestMainWindow
- **职责**: 用户界面管理和事件处理
- **功能**:
  - 创建和布局UI组件
  - 处理按钮点击事件
  - 显示识别和合成结果
  - 管理输出目录
  - 实现高质量麦克风录音
  - WAV文件格式处理和保存
  - 音频数据实时处理
  - 自动语音播放功能

### ASRManager
- **职责**: 语音识别功能管理
- **功能**:
  - 初始化sherpa-onnx离线识别器
  - 处理WAV文件识别
  - 管理识别器生命周期
  - 预留在线识别接口

### TTSManager
- **职责**: 语音合成功能管理
- **功能**:
  - 初始化sherpa-onnx TTS合成器
  - 自动选择最佳TTS模型
  - 执行文本到语音转换
  - 管理合成器生命周期

### ModelSettingsDialog
- **职责**: 模型配置界面管理
- **功能**:
  - 提供用户友好的模型配置界面
  - 支持ASR和TTS模型路径设置
  - 预设模型快速配置
  - 配置验证和测试
  - 设置的持久化存储

## 优势

### 模块化设计
1. **职责分离**: 每个类专注于特定功能
2. **易于维护**: 修改某个功能不影响其他模块
3. **代码复用**: 管理器类可以在其他项目中复用
4. **测试友好**: 可以独立测试每个模块

### 扩展性
1. **新功能添加**: 可以轻松添加新的管理器类
2. **模型切换**: 在管理器中可以轻松切换不同模型
3. **UI改进**: 可以独立改进用户界面

### 可读性
1. **清晰结构**: 文件组织清晰，功能明确
2. **代码分离**: 避免了单文件过长的问题
3. **接口明确**: 类之间的接口清晰定义

## 编译和运行

```bash
# 进入构建目录
cd build

# 编译项目
make -j4

# 运行程序
./qt_speech_simple
```

## 当前功能状态

### ✅ 已实现功能
- 离线WAV文件语音识别
- **实时麦克风语音识别**（中英文双语）
- **高质量麦克风录音**（44.1kHz立体声WAV格式）
- **自动语音播放**（识别结果自动合成并播放）
- 中英文混合语音合成
- MeloTTS模型支持
- 模块化架构
- 输出文件管理（TTS输出、录音文件）
- 图形化模型设置界面
- 配置文件自动保存/加载
- 菜单栏和快捷键支持
- 端点检测和流式处理
- 音频格式自适应转换
- WAV文件标准格式支持

### ⚠️ 部分功能
- ~~麦克风实时识别~~（已完成实现）

### 📋 待扩展功能
- 更多TTS模型支持
- 批量文件处理
- 模型自动扫描功能
- 模型性能测试功能
- 配置导入/导出功能
- 语音命令识别
- 实时语音翻译
- 录音格式选择（MP3、FLAC等）
- 音频可视化（波形显示）
- 自动增益控制
- 噪音抑制功能