J3n5en / voicekey
git clone https://github.com/J3n5en/voicekey.git
v1.6.1 · 4d ago
macOS hold-to-talk / tap-to-talk dictation with Doubao & WeType ASR
+0
stars, 24h · #38,739
+~5
stars, 7 days · #18,775
+93
stars, 30 days · #7,448
93
★ total · +5% this week
21
forks · 4 open issues
Star history (as recorded here)
LanguageSwift
License—
Created2026-10-01 (22d ago)
Last push4d ago
Watchers0
OwnerUser
Links
- GitHub: github.com/J3n5en/voicekey
- Releases · Issues · Hacker News mentions
README excerpt
VoiceKey macOS、Windows、iOS、Android 语音输入。桌面端按住或点按快捷键说话;iOS 是带语音的中文键盘;Android 不替换输入法,识别结果写进当前输入框。 多渠道候选框:说话时各渠道实时出字(左),松开后逐条定稿并显示耗时,数字键或回车选一条上屏(右) ## 功能 以下为 macOS / Windows。 - **多个识别渠道**:豆包、微信、千问、百度、搜狗、讯飞输入法云端识别,以及完全本地运行的离线识别:微信离线(macOS / Windows)、豆包离线(仅 Apple 芯片 Mac) - **多渠道候选**:勾选 2 个以上渠道同时识别,光标旁弹出候选框实时显示各渠道结果,按数字键或 ↑↓ + 回车选一条上屏;默认选中上次用的渠道 - **渠道对比**:在设置里录一段话,并排比较各渠道的结果和速度 - **长按说话**:按住快捷键开始,松开结束 - **点按说话**:自定义快捷键,点一下开始,停顿 1–5 秒自动结束,再点一下可提前结束 - **边说边上屏**:识别中的文字实时打到光标处,结束后按定稿修正;关闭后改为结束时一次性粘贴 - **麦克风选择**、开机启动、浅色 / 深色主题、应用内自动更新 ## 截图 | 识别渠道 | 渠道对比 | |---|---| | | | 单渠道模式下,屏幕底部显示声波浮层和实时文字: ## iOS iOS 17+ 的中文键盘(仅 iPhone)。默认 26 键全拼,可切九宫格;功能键和顶栏可以拖动调整。左上角麦克风说话。键盘本身不能录音,由主 App 在后台收音,再把文字送回键盘。 - 云端渠道与桌面端相同,没有离线引擎 - 勾选多个渠道时,在键盘里对比结果再选一条上屏 - 默认画中画待机:不占麦克风,点麦克风才录音;画中画不可用时改为常开麦 - 操作按钮或快捷指令「VoiceKey 说话」:正在使用本键盘时开始,再按一次结束 - 点按说话的静音自动结束可在 1–5 秒间设置 - 拼音词库来自雾凇拼音(GPL-3.0),并补了搜狗流行词和部分 AI 词 语音和与主 App 通信需要「允许完全访问」;不开也能本地打字。安装或更新后,已在跑的键盘进程不会换成新版本,需到「设置 › 通用 › 键盘 › 键盘 › VoiceKey」删除后再添加。 ## Android Android 8+(arm64)。不替换当前输入法:开启无障碍服务「VoiceKey 语音输入」后,在任意输入框长按音量下键,或点悬浮球说话,结果写入光标处。部分应用会隐藏控件树,Android 13 及以上改为经输入连接提交文字。 - 渠道:豆包、微信、千问、百度、搜狗、讯飞,以及微信离线(约 100MB,本机推理) - 多渠道候选、边说边上屏、点按静音 1–5 秒自动结束 - 长按音量下键只在输入框聚焦时生效,短按仍调音量 国内系统清理后台会关掉无障碍。应用内有忽略电池优化、自启动和锁定最近任务的引导。 ## 安装 从 Releases 下载桌面端安装包。iOS 与 Android 不在 Release 里,从源码构建。 | 系统 | 文件 | |---|---| | macOS 13+(Apple 芯片与 Intel 通用) | `VoiceKey-x.y.z.dmg`,打开后拖到「应用程序」 | | Windows 10/11 x64 | `VoiceKey-x.y.z-x64-setup.exe` 或 `.msi` | macOS 发布包为自签名、未经 Apple 公证,首次运行前需解除隔离: [code] 之后的版本可在应用内更新(设置 → 通用,或菜单栏),无需重复上述步骤,已授予的权限也会保留。 旧版原生 Swift 实现(仅 macOS 15+)保留在 `legacy` 分支。 ## 使用 1. 首次启动会打开引导:授予 **辅助功能**(仅 macOS,用于监听快捷键和上屏)和 **麦克风** 权限,并试说一句 2. 之后常驻菜单栏 / 系统托盘,可在托盘菜单切换渠道、暂停监听、打开设置 3. 在任意输入框中说话 | 设置项 | macOS 默认 | Windows 默认 | |---|---|---| | 识别渠道 | 豆包输入法 | 豆包输入法 | | 长按快捷键 | 右 ⌥ | 右 Alt | | 点按快捷键 | 右 ⌘ | 右 Ctrl | | 静音自动结束 | 1.5 秒 | 1.5 秒 | | 边说边上屏 | 开 | 开 | 单个修饰键可同时作为长按键和点按键:快速点一下为点按,按住超过 0.3 秒为长按。设为组合键的点按快捷键会被拦截,不再传给前台应用。 **离线识别**:首次选择离线渠道时下载模型,之后断网也能用。 - **微信离线**:下载微信输入法官方离线语音包(约 100MB,来自腾讯 CDN),解出模型保存在数据目录的 `wtoffline/` 下;由本项目自己实现的 int8 推理运行,不依赖官方程序,macOS 和 Windows 都可用。 - **豆包离线**(仅 Apple 芯片 Mac):下载引擎库(约 8MB,来自本仓库 offline-libs Release)和模型(约 177MB,来自字节 CDN),保存在 `~/Library/Application Support/VoiceKey/offline/`;只在用到时启动后台进程,空闲 5 分钟后自动释放。 ## 从源码构建 需要 Rust(stable)、Node 22+ 和 CMake;Windows 另需 MSVC 生成工具。 [code] - iOS(需要 Xcode 与 XcodeGen):`ios/build.sh`,产物 `ios/build/VoiceKey.ipa`;`ios/build.sh --unsigned` 出未签名包 - Android(需要 Android NDK 与 cargo-ndk):先 `android/build-rust.sh`,再在 `android/` 执行 `./gradlew :app:assembleRelease` - Opus 由 `audiopus_sys` 从源码静态编译,相关环境变量见 `.cargo/config.toml` - 打包 DMG:`Scripts/dmg.sh out.dmg path/to/VoiceKey.app app/src-tauri/icons/icon.icns` - 命令行测试识别:`cargo run -p voicekey-core --bin vk-test -- doubao|wetype|qwen|baidu|sogou|iflytek file.wav`(WAV 需 16kHz 单声道) ## 发布 推送 `v*` 标签后,GitHub Actions 构建 macOS 通用 DMG 与 Windows 安装包,连同应用内更新所需的更新包与 `latest.json` 一起创建 Release: [code] 需要的 Secrets:`TAURI_SIGNING_PRIVATE_KEY` / `TAURI_S