impressionyang
|
27bd78bf17
|
feat: 嵌入应用图标(窗口图标 + Windows exe 图标)
- 使用用户提供的 icon 图片作为应用图标
- Windows: .rc + windres 嵌入 exe 图标(256px 多尺寸 ICO)
- Qt: 窗口图标从 Qt 资源加载 PNG
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 19:20:16 +08:00 |
|
impressionyang
|
6824ce1f4a
|
feat: Windows隐藏启动控制台,关闭按钮改为隐藏到托盘
- CMakeLists.txt: Windows 使用 add_executable WIN32 构建 GUI 程序(无控制台)
- closeEvent: 点击关闭按钮隐藏到托盘而非退出程序
- 托盘菜单已有"显示主窗口"和双击恢复功能
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 19:15:02 +08:00 |
|
impressionyang
|
ae35404d26
|
feat: 主题切换(light/dark QSS)、QSS资源编译修复、托盘图标主题色
- 新增 main_dark.qss 暗色主题样式表
- 使用 .qrc + add_executable 方式确保 QSS 资源正确编译
- Application::applyTheme 动态切换主题和样式表
- 托盘图标 light 主题黑色、dark 主题白色
- Settings 保存后实时应用主题/字体
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 19:13:34 +08:00 |
|
|
|
8c2e787a25
|
feat: 添加 Windows 交叉编译支持与 ONNX Runtime MinGW 兼容方案
- 新增 C API shim (ort_api_shim.h) 解决 MinGW 与 ONNX Runtime 的 SAL 注解/_stdcall 兼容性问题
- 新增轻量级 C++ 包装器 (ort_minimal) 替代 onnxruntime_cxx_api.h
- cmake/dependencies.cmake 支持 Windows/ Linux 平台自动识别依赖路径
- 修复音频采集 paNonInterleaved bug(指针被误解析为 float 导致 RMS=inf)
- 修复 Windows 热键和 UI 相关代码
- 添加 MinGW 交叉编译工具链配置
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 11:50:16 +08:00 |
|
|
|
01a39ddc8c
|
feat: 实现基于 VAD 的流式 WAV 录制识别方案
- 新增 StreamingAudioWriter 组件:持续录制 WAV 文件,VAD 检测静音段自动切换
- 静音检测:检测到 ~1s 连续静音后关闭当前文件,触发 chunkCompleted 信号
- STTTestPage 重构:移除缓冲区推理模式,改为 WAV 文件流式识别
- 每个 WAV 文件完成后在后台线程读取并推理,不阻塞继续录制
- 设置页面新增「调试音频目录」配置项
- 音频存储路径:debug 模式使用配置目录,非 debug 模式使用系统临时目录
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-13 15:33:03 +08:00 |
|
|
|
a2b216092f
|
fix: 修复配置保存死锁,添加快捷键录制组件
- 修复 ConfigManager::set() 在持有锁时发射信号导致的死锁
- 添加 setBatch() 方法批量更新配置,只发射一次 configChanged
- 新增 HotkeyRecorder 组件:点击按钮后按键录制任意快捷键
- SettingsPage 保存配置改为批量写入,避免多次触发服务重启
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-13 14:49:55 +08:00 |
|
|
|
85a0890478
|
feat: 完善跨平台支持(Windows + macOS + Linux)
CMakeLists.txt:
- Qt6::DBus 和 pthread 改为平台条件链接
- 新增 PLATFORM_WINDOWS/PLATFORM_MACOS/PLATFORM_LINUX 编译宏
- 平台特定的源文件通过条件块选择
Windows 实现(新增):
- win_hotkey.cpp/h: 使用 RegisterHotKey API + QAbstractNativeEventFilter
捕获 WM_HOTKEY 消息,通过 GetAsyncKeyState 轮询检测按键松开
- win_text_injector.cpp/h: 使用 SendInput API 的 KEYEVENTF_UNICODE
实现全 Unicode 字符注入
macOS 实现(占位):
- mac_hotkey.cpp/h: 预留 CGEventTap 接口,暂不实现
- mac_text_injector.cpp/h: 使用 CGEventCreateKeyboardEvent 实现
通用修复:
- 硬编码 /tmp 路径替换为 QDir::tempPath()(跨平台临时目录)
- voice_input_service.cpp 使用条件 include 选择平台实现
- 设置页面移除 /tmp 硬编码提示文本
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-13 11:28:57 +08:00 |
|
|
|
cda68e5376
|
feat: 添加 CapsLock 语音输入核心模块
新增三个核心组件:
- CapsLockVoiceHotkey: 基于 freedesktop GlobalShortcuts D-Bus Portal
的全局快捷键注册,支持 Wayland 环境
- WaylandTextInjector: 通过 dlopen 动态加载 XTest 实现文本注入,
无需编译时依赖 libXtst-devel 头文件
- VoiceInputService: 状态机协调器,实现长按 1s 录音、松开转写、
短按恢复 CapsLock 的完整交互流程
CMakeLists.txt 新增 Qt6::DBus 依赖和新源文件。配置管理器新增
capslock_voice_enabled 开关。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-13 11:12:57 +08:00 |
|
|
|
9a6dfa3b88
|
feat: 集成 SenseVoice 完整推理管线
- 新增 SenseVoiceEngine: 专用 SenseVoice ONNX 模型推理引擎
- 新增 SenseVoiceFeatures: Fbank 特征提取 + LFR 拼接 + CMVN 归一化
- 80-dim Mel 滤波器组 + 对数压缩
- LFR (Low Frame Rate): window_size=7, window_shift=6 → 560-dim
- CMVN: neg_mean / inv_stddev 从模型元数据自动提取
- 新增 SenseVoiceTokenizer: 加载 tokens.txt 词表,BPE 解码
- 新增 CTC 贪婪解码: 去除重复 token 和空白符
- 配置页面新增词表路径选择
- STT 测试页面和文件转写页面切换至 SenseVoiceEngine
- 更新 CMakeLists.txt 包含所有新增源文件
- 模型: /home/alvin/Documents/SenseVoice-Small/sherpa-onnx-sense-voice-zh-en-ja-ko-yue-2024-07-17/model.onnx
- 语言支持: 中文/英语/日语/韩语/粤语 自动检测
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-12 19:26:11 +08:00 |
|
|
|
a3f1b1d9a6
|
feat: 添加 VAD 模块和单元测试框架
- 新增 VoiceActivityDetector 基于能量+过零率的语音活动检测
- 引入 Catch2 单元测试框架
- 添加 4 个测试模块: AudioProcessor/VAD/MelSpectrogram/WhisperTokenizer
- 从构建中移除废弃的 tokenizer/decoder 文件
- 39 个测试用例全部通过
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-12 16:57:46 +08:00 |
|
|
|
760899e81c
|
feat: 完善推理管线和后台任务管理
核心改进:
- STTEngine 接入 WhisperTokenizer 解码,输出可读文本而非 [T1234]
- 模型加载时自动查找同目录下的 tokenizer.vocab 词表
- language 参数生效,推理时记录语言配置
- 卸载模型时清理 tokenizer 状态
文件转写后台化:
- FileTranscribePage 使用 QtConcurrent 后台线程执行解码+推理
- 模型加载也在后台执行,不阻塞 UI
- processFileAsync() + onTaskComplete() 异步队列处理
- 支持中途停止 (onStopTranscribe)
构建:
- CMake 默认使用 RelWithDebInfo (Release 带调试信息)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-12 16:27:36 +08:00 |
|
|
|
bba124aee4
|
feat: 实现 Whisper ONNX 完整推理管线
新增组件:
- MelSpectrogram: Mel 频谱图提取 (Hann 窗 + FFT + Mel 滤波器组)
- WhisperTokenizer: BPE 分词器 (支持 token 编解码和特殊 token)
核心改进:
- STTEngine 动态检测 ONNX 模型输入/输出名称
- 支持两种模型格式: 直接输出 [1, vocab_size] 和自回归 [1, seq, vocab]
- argmax + softmax 解码 + 置信度计算
- infer() 接口改为 language 参数替代 isStreaming
UI 调整:
- STTTestPage 和 FileTranscribePage 适配新的 infer() 接口
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-12 16:17:10 +08:00 |
|
|
|
02e100b318
|
feat: 初始化 Impress Voice Input 项目
基于 ONNX 的实时语音转文本输入法,C++ 跨平台实现。
核心组件:
- Qt 6 跨平台 GUI(实时识别 / 文件转写 / 配置页面)
- ONNX Runtime 推理引擎(异步模型加载)
- PortAudio 音频采集
- dr_libs 音频文件解码
- JSON 配置管理(线程安全,自动持久化)
- 日志系统(控制台 + 文件输出)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-12 15:53:05 +08:00 |
|