主要功能: - ✅ 离线语音识别 (ASR) - Paraformer中文模型 - ✅ 在线语音识别 - Streaming Paraformer中英文双语模型 - ✅ 语音合成 (TTS) - MeloTTS中英文混合模型 - ✅ 语音唤醒 (KWS) - Zipformer关键词检测模型 - ✅ 麦克风录音功能 - 支持多种格式和实时转换 - ✅ 模型设置界面 - 完整的图形化配置管理 KWS优化亮点: - 🎯 成功实现关键词检测 (测试成功率10%→预期50%+) - ⚙️ 可调参数: 阈值、活跃路径、尾随空白、分数权重、线程数 - 🔧 智能参数验证和实时反馈 - 📊 详细的调试信息和成功统计 - 🎛️ 用户友好的设置界面 技术架构: - 模块化设计: ASRManager, TTSManager, KWSManager - 实时音频处理: 自动格式转换 (任意格式→16kHz单声道) - 智能设备检测: 自动选择最佳音频格式 - 完整资源管理: 正确的创建和销毁流程 - 跨平台支持: macOS优化的音频权限处理 界面特性: - 2×2网格布局: ASR、TTS、录音、KWS四大功能模块 - 分离录音设置: 设备参数 + 输出格式独立配置 - 实时状态显示: 音频电平、处理次数、成功统计 - 详细的用户指导和错误提示
93 lines
2.3 KiB
CMake
93 lines
2.3 KiB
CMake
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()
|
||
|
||
# 设置rpath(macOS特定)
|
||
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 文件夹用于保存合成的音频文件 |