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

4.2 KiB
Raw Permalink Blame History

项目结构说明

文件组织

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

核心文件

主程序入口

  • 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. 接口明确: 类之间的接口清晰定义

编译和运行

# 进入构建目录
cd build

# 编译项目
make -j4

# 运行程序
./qt_speech_simple

当前功能状态

已实现功能

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

⚠️ 部分功能

  • 麦克风实时识别(已完成实现)

📋 待扩展功能

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