Files
QSmartAssistant/docs/PROJECT_STRUCTURE.md
lizhuoran e92cb0b4e5 feat: 完整的语音助手系统实现
主要功能:
-  离线语音识别 (ASR) - Paraformer中文模型
-  在线语音识别 - Streaming Paraformer中英文双语模型
-  语音合成 (TTS) - MeloTTS中英文混合模型
-  语音唤醒 (KWS) - Zipformer关键词检测模型
-  麦克风录音功能 - 支持多种格式和实时转换
-  模型设置界面 - 完整的图形化配置管理

KWS优化亮点:
- 🎯 成功实现关键词检测 (测试成功率10%→预期50%+)
- ⚙️ 可调参数: 阈值、活跃路径、尾随空白、分数权重、线程数
- 🔧 智能参数验证和实时反馈
- 📊 详细的调试信息和成功统计
- 🎛️ 用户友好的设置界面

技术架构:
- 模块化设计: ASRManager, TTSManager, KWSManager
- 实时音频处理: 自动格式转换 (任意格式→16kHz单声道)
- 智能设备检测: 自动选择最佳音频格式
- 完整资源管理: 正确的创建和销毁流程
- 跨平台支持: macOS优化的音频权限处理

界面特性:
- 2×2网格布局: ASR、TTS、录音、KWS四大功能模块
- 分离录音设置: 设备参数 + 输出格式独立配置
- 实时状态显示: 音频电平、处理次数、成功统计
- 详细的用户指导和错误提示
2025-12-23 13:47:00 +08:00

159 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目结构说明
## 文件组织
项目已按功能模块化拆分,主要文件结构如下:
### 核心文件
#### 主程序入口
- `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等
- 音频可视化(波形显示)
- 自动增益控制
- 噪音抑制功能