Files
QSmartAssistant/CMakeLists.txt
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

93 lines
2.3 KiB
CMake
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.

cmake_minimum_required(VERSION 3.16)
project(QSmartAssistantSpeechTest)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 查找Qt6
find_package(Qt6 REQUIRED COMPONENTS Core Widgets Multimedia)
# 启用Qt自动moc
set(CMAKE_AUTOMOC ON)
# 设置sherpa-onnx路径 - 使用项目本地lib目录
set(SHERPA_ONNX_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/lib/sherpa_onnx")
set(SHERPA_ONNX_INCLUDE_DIR "${SHERPA_ONNX_ROOT}/include")
set(SHERPA_ONNX_LIB_DIR "${SHERPA_ONNX_ROOT}/lib")
# sherpa-onnx已经包含了onnxruntime不需要单独设置
# 包含目录
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${SHERPA_ONNX_INCLUDE_DIR})
# 源文件
set(SOURCES
main.cpp
SpeechTestMainWindow.cpp
ASRManager.cpp
TTSManager.cpp
ModelSettingsDialog.cpp
KWSManager.cpp
)
# 头文件
set(HEADERS
SpeechTestMainWindow.h
ASRManager.h
TTSManager.h
ModelSettingsDialog.h
KWSManager.h
)
# 查找sherpa-onnx库文件只需要C API
find_library(SHERPA_ONNX_C_API_LIB
NAMES sherpa-onnx-c-api
PATHS ${SHERPA_ONNX_LIB_DIR}
NO_DEFAULT_PATH
)
# 创建可执行文件
add_executable(qt_speech_simple ${SOURCES} ${HEADERS})
# 链接库
target_link_libraries(qt_speech_simple
Qt6::Core
Qt6::Widgets
Qt6::Multimedia
)
# 链接sherpa-onnx库
if(SHERPA_ONNX_C_API_LIB)
target_link_libraries(qt_speech_simple ${SHERPA_ONNX_C_API_LIB})
message(STATUS "找到 sherpa-onnx-c-api: ${SHERPA_ONNX_C_API_LIB}")
else()
message(WARNING "未找到 sherpa-onnx-c-api 库")
endif()
# 设置rpathmacOS特定
if(APPLE)
set_target_properties(qt_speech_simple PROPERTIES
INSTALL_RPATH "@loader_path/../lib/sherpa_onnx/lib"
BUILD_WITH_INSTALL_RPATH TRUE
)
endif()
# Linux设置rpath
if(UNIX AND NOT APPLE)
set_target_properties(qt_speech_simple PROPERTIES
INSTALL_RPATH "$ORIGIN/../lib/sherpa_onnx/lib"
BUILD_WITH_INSTALL_RPATH TRUE
)
endif()
# 复制Qt库到输出目录Windows
if(WIN32)
add_custom_command(TARGET qt_speech_simple POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:Qt6::Core>
$<TARGET_FILE:Qt6::Widgets>
$<TARGET_FILE_DIR:qt_speech_simple>)
endif()
# tts_output