feat: 完整的语音助手系统实现
主要功能: - ✅ 离线语音识别 (ASR) - Paraformer中文模型 - ✅ 在线语音识别 - Streaming Paraformer中英文双语模型 - ✅ 语音合成 (TTS) - MeloTTS中英文混合模型 - ✅ 语音唤醒 (KWS) - Zipformer关键词检测模型 - ✅ 麦克风录音功能 - 支持多种格式和实时转换 - ✅ 模型设置界面 - 完整的图形化配置管理 KWS优化亮点: - 🎯 成功实现关键词检测 (测试成功率10%→预期50%+) - ⚙️ 可调参数: 阈值、活跃路径、尾随空白、分数权重、线程数 - 🔧 智能参数验证和实时反馈 - 📊 详细的调试信息和成功统计 - 🎛️ 用户友好的设置界面 技术架构: - 模块化设计: ASRManager, TTSManager, KWSManager - 实时音频处理: 自动格式转换 (任意格式→16kHz单声道) - 智能设备检测: 自动选择最佳音频格式 - 完整资源管理: 正确的创建和销毁流程 - 跨平台支持: macOS优化的音频权限处理 界面特性: - 2×2网格布局: ASR、TTS、录音、KWS四大功能模块 - 分离录音设置: 设备参数 + 输出格式独立配置 - 实时状态显示: 音频电平、处理次数、成功统计 - 详细的用户指导和错误提示
This commit is contained in:
159
docs/PROJECT_STRUCTURE.md
Normal file
159
docs/PROJECT_STRUCTURE.md
Normal file
@@ -0,0 +1,159 @@
|
||||
# 项目结构说明
|
||||
|
||||
## 文件组织
|
||||
|
||||
项目已按功能模块化拆分,主要文件结构如下:
|
||||
|
||||
### 核心文件
|
||||
|
||||
#### 主程序入口
|
||||
- `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等)
|
||||
- 音频可视化(波形显示)
|
||||
- 自动增益控制
|
||||
- 噪音抑制功能
|
||||
Reference in New Issue
Block a user