# OmniScribe **Repository Path**: mengdj/omni-scribe ## Basic Information - **Project Name**: OmniScribe - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-17 - **Last Updated**: 2026-10-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OmniScribe 跨平台语音输入工具:按住热键说话,松手后文字自动插入当前光标处。全程离线识别,数据不出本机。 > 当前状态:**Windows 可用**(Qt 6 壳 + Win32 端口层);macOS / Linux 端口为占位,见 [docs/cross-platform-plan.md](docs/cross-platform-plan.md)。 ## 功能特性 - **PTT 按住说话**:热键(默认 `Ctrl+Alt+Space`,可配置)按住开始、松开结束、录音中 `Esc` 取消;超时(默认 300s)强制收尾 - **离线识别**:sherpa-onnx SenseVoice small int8 + silero VAD,按 VAD 分段转写 - **光标处注入**:短文本 SendInput Unicode、长文本(阈值可配,默认 120 字符)走剪贴板(全格式深拷贝快照,用后恢复);注入前复核目标窗口,管理员进程按完整性级别拦截 - **浮动状态条**:逐像素透明、点击穿透、不抢焦点,底部居中,实时电平波形 - **失败兜底**:结果窗保留全文 + 托盘气泡;识别历史落盘,可在历史窗口查看/编辑 - **设置窗**:热键、注入策略、自启、历史、替换规则;开机自启写当前用户启动项 - **在线更新**:关于页或托盘菜单手动检查新版本,提示更新说明并下载安装包(QSimpleUpdater) ## 软件架构 ``` src/ core/ # 平台无关核心(无 Qt、无 Win32) asr/ # sherpa-onnx 封装(AsrEngine / AsrWorker / ModelManager) audio/ # miniaudio 采集(MicCapture:启动预初始化备用设备,按键秒开) session/ # DictationSession —— PTT 会话状态机 config/ history/ text/ util/ ports/ ports/ # ports.h:IHotkey / ITargetProbe / IInjector / IAutostart / PlatformCaps platform/ win/ # Windows 端口实现(LL 热键 / 目标探测 / 注入封装) mac/ linux_x11/# 占位(M3 / M4) win/inject/ # 已验证的 Win32 注入实现(SendInput + 剪贴板快照,被端口层调用) ui/qt/ # Qt 6 Widgets 壳:main / AppController / OverlayWindow / # WaveformWidget / SettingsDialog / HistoryDialog / ResultWindow / TrayController ``` UI 回调经 `QMetaObject::invokeMethod(QueuedConnection)` 封送到 Qt 主线程;core 层不依赖 Qt。 ## 构建教程 前置:**Qt 6.5+**(Widgets + Network 模块)、**CMake ≥ 3.24**、MSVC v143(Windows)。 依赖随仓库携带:`third_party/sherpa-onnx`(预编译 C API)、`third_party/miniaudio`(单头文件)、`third_party/QSimpleUpdater`(在线更新,MIT)。 更新清单默认取 `updates/omni-scribe.json`(Gitee raw),发布流程见 [updates/README.md](updates/README.md),可用 `OMNI_UPDATE_URL` 环境变量覆盖。 ```powershell # Windows cmake --preset windows-msvc -DCMAKE_PREFIX_PATH=C:/Qt/6.5.3/msvc2022_64 cmake --build --preset windows-msvc # macOS / Linux 分别用 macos-universal / linux-x64 preset ``` 模型:把 `model.int8.onnx` + `tokens.txt` 放到仓库 `model/` 目录(或配置 `OMNISCRIBE_MODEL_SOURCE_DIR`),构建后自动复制到 exe 旁的 `model/`。 Windows 下构建脚本自动调用 `windeployqt` 拷贝 Qt 运行时(LGPLv3 动态链接)。 ## 使用说明 1. 启动后驻留托盘(可设开机自启) 2. 在任意输入框按住 `Ctrl+Alt+Space` 说话,松开即插入文字;中途 `Esc` 取消 3. 配置文件:`%LOCALAPPDATA%\OmniScribe\config.ini`(热键/注入策略/浮层等,也可在设置窗修改) ## 设计文档 - [docs/qt-migration.md](docs/qt-migration.md) — SOUI → Qt 6 迁移记录与剩余缺口 - [docs/cross-platform-plan.md](docs/cross-platform-plan.md) — 跨平台落地方案(现行) - [docs/implementation-plan.md](docs/implementation-plan.md) — Windows v1(SOUI)历史方案,已由上者取代 - [docs/design-mockups.html](docs/design-mockups.html) — 浮层设计稿 ## 许可说明 Qt 6 以 LGPLv3 动态链接使用;sherpa-onnx(Apache-2.0)、miniaudio(MIT-0)、silero VAD(MIT)、QSimpleUpdater(MIT)随其上游许可分发。随程序附带的 [assets/THIRD_PARTY_NOTICES.txt](assets/THIRD_PARTY_NOTICES.txt) 汇总了各组件与许可全文。