Handy:把语音输入带回本地的开源工具

这两天试了一下 Handy,在 Windows 上的效果比预期好。它给人的第一感觉像一个“AI 语音输入法”,但从实现上看,它更准确的定位是一个系统级语音转文字工具:按下快捷键开始录音,松开后在本地模型里完成识别,再把识别结果粘贴到当前光标所在的位置。

这个设计很务实。它没有重新发明一套输入法框架,也不要求每个应用单独适配。只要目标应用能接收键盘输入或剪贴板粘贴,Handy 就可以把语音输入接进去。

它解决的是什么问题

现在的语音输入主要有几种路子。

系统自带语音输入使用门槛低,但模型、语言、网络和隐私边界往往由系统厂商决定。云端 ASR 准确率可以很高,但语音要上传,长期使用也会牵涉费用和服务稳定性。本地 Whisper 类工具隐私更好,不过很多停留在命令行、转录文件或独立窗口,离“随手在任何输入框里说话”还有距离。

Handy 的价值在这里:它把本地 ASR 做成了一个常驻桌面工具。用户不需要关心音频文件,也不需要复制转写结果。它把语音输入拆成一条很短的链路:

按快捷键,录音,本地识别,写入剪贴板,粘贴到当前应用。

在 Windows 上,默认转写快捷键是 Ctrl+Space,带后处理的快捷键是 Ctrl+Shift+SpaceEsc 用于取消。默认交互是 push-to-talk,也就是按住说,松开处理。这种模式比一直监听更可控,也更符合输入法场景。

它不是传统意义上的输入法

传统输入法通常会注册到系统输入法框架里,参与候选词、组合输入、光标上屏等流程。Handy 没有走这条路。

它的做法更像“快捷键触发的听写器”。录音结束后,它用剪贴板或模拟键盘把文字送到当前窗口。代码里能看到它支持多种输出方式,包括直接输入、Ctrl+VCtrl+Shift+VShift+Insert、外部脚本,也支持自动回车提交。Windows 下常用的是把识别结果写入剪贴板,再模拟粘贴快捷键,之后恢复原剪贴板内容。

这个选择有利有弊。

好处是兼容面很广,浏览器、聊天软件、编辑器、表单、笔记工具都能用。坏处是它不具备传统输入法那种深度编辑能力。比如候选词、局部改写、拼音混输、输入法级别的上下文管理,不是它的核心目标。

把 Handy 当成“随处可用的语音粘贴器”,比把它当成完整输入法更准确。

本地识别是核心

Handy 最大的卖点是离线。项目 README 明确强调语音留在本机,识别不需要把音频发到云端。

它的桌面壳是 Tauri 2,前端是 React、TypeScript 和 Tailwind CSS,主要用于设置界面。真正的系统集成、录音、模型加载、推理和粘贴都在 Rust 后端里完成。

核心依赖大致分成几类:

音频采集使用 cpal,重采样使用 rubato,语音活动检测使用 vad-rs。本地模型推理主要通过 transcribe-cpptranscribe-rs,前者负责 Whisper、SenseVoice、Breeze ASR 等 GGML 或 GGUF 模型,后者负责 Parakeet 等 ONNX 模型。键盘和鼠标模拟使用 enigo,全局快捷键由项目自己的 handy-keys 处理。

这说明 Handy 不是简单套一个网页壳。它真正难的部分在本地桌面集成:录音设备、全局快捷键、系统托盘、剪贴板、模型下载、推理后端、历史记录、崩溃恢复,都需要在不同操作系统上分别处理。

模型选择比界面更重要

Handy 支持的模型已经不只是 Whisper。经过这几天对比,我现在更倾向把千问的 Qwen3-ASR-1.7B 放在中文输入的首选位置。就实际识别效果看,它比我之前试过的 SenseVoice、Whisper 和 Breeze ASR 更稳,尤其是中文长句、口语化表达和中英夹杂内容,错字和漏字都更少。

内置下载列表里有 Whisper Small、Medium、Turbo、Large,也有 SenseVoice、Breeze ASR、Parakeet V2、Parakeet V3、Canary、Cohere 和 GigaAM 等模型。它还会扫描模型目录里的自定义 .bin.gguf 文件,并能发现部分本地缓存中的兼容模型。

对中文用户来说,模型选择会直接决定体验。

Whisper 系列是最稳妥的通用方案。Small 体积约 465MB,速度快,准确率够日常使用。Medium 约 469MB,准确率更好。Turbo 和 Large 更大,Turbo 约 1.5GB,Large 量化版约 1GB,适合希望进一步提升准确率并且硬件能跟上的场景。

Qwen3-ASR-1.7B 是我这次对比后最推荐的中文模型。千问官方说明里,它支持 30 种语言和 22 种中文方言,并且覆盖流式和离线推理。对 Handy 这类“说完立刻上屏”的工具来说,真正重要的不是模型榜单,而是日常口述能不能少改字。从这个标准看,Qwen3-ASR-1.7B 目前给我的结果最好。

SenseVoice 值得特别关注。Handy 内置的 SenseVoice 模型约 152MB,定位是很快,支持中文、英文、日文、韩文和粤语。对中文、英语夹杂的日常输入来说,它可能比只面向欧洲语言的模型更合适。

Parakeet V3 是 Handy 当前推荐的模型之一,特点是 CPU 上速度快,支持自动语言检测,但项目里标注的是支持 25 种欧洲语言。它适合英语或欧洲语言听写。如果主要输入中文,不应只因为它是推荐模型就默认选择它。

Breeze ASR 更偏向台湾普通话和中英混杂。Cohere 模型体积更大,支持多语言,准确率方向更强,但速度会慢一些。Canary 主要覆盖英语、德语、西班牙语、法语等场景。

所以在 Windows 上试 Handy,我现在会按这个顺序判断:中文日常输入优先试 Qwen3-ASR-1.7B;如果机器跑不动,或者当前 Handy 环境接入不顺,再退到 SenseVoice 或 Whisper Small;中英混输可以把 Qwen3-ASR-1.7B、SenseVoice、Whisper Medium 和 Breeze ASR 放在一起比较;英文输入可以试 Parakeet V3;追求 Whisper 体系内的更高准确率再上 Turbo 或 Large。

Windows 上的性能取决于后端

Handy 的 Windows 支持不是一句“跨平台”就结束了。

Cargo.toml 里能看到,x64 Windows 的 transcribe-cpp 启用了 dynamic backends 和 Vulkan。这意味着 Whisper 类模型可以尽量利用可用 GPU 后端。Windows ARM 则是 CPU 静态后端。

ONNX Runtime 在 Windows 上选择了 CPU 方案。项目注释里说明,DirectML 被移除过,因为相关预编译包在部分旧 CPU 上存在 AVX2、BMI2 指令兼容风险。这是一个很典型的桌面软件取舍:理论上 GPU 后端更快,但稳定覆盖更多 Windows 机器,有时反而要保守。

官方 README 也提醒,Whisper 模型在某些 Windows 和 Linux 配置上可能崩溃。这不是 Handy 独有的问题,而是本地推理栈、显卡驱动、运行库和模型格式叠在一起后常见的不确定性。好在代码里对模型 panic 做了保护,避免一次模型崩溃把整个转写状态锁死。

从按键到上屏发生了什么

Handy 的工作流可以按生命周期理解。

快捷键触发后,后台协调器会从空闲状态进入录音状态。它并行准备 ASR 模型和 VAD,切换托盘图标,检查当前设置和模型能力,必要时打开浮层,然后通过音频管理器开始采样。

松开快捷键后,它停止录音,拿到音频采样。一边可以把 WAV 保存到历史记录,一边进入转写流程。如果模型支持流式识别,它会走流式管线并更新浮层;否则就走批量转写。识别完成后,文本还会经过语言和格式处理。中文场景里,代码里接入了 OpenCC,可以做中文变体转换。

如果用户启用了后处理,Handy 会把转写文本送到配置的 LLM 提供商,根据提示词做润色、纠错、格式化或结构化输出。后处理完成后,它会保存历史记录,再把最终文本粘贴到当前应用。

这条链路解释了为什么 Handy 用起来像输入法,但又比输入法多了一层“AI 工作流”:它可以只做 ASR,也可以在 ASR 后接 LLM。

隐私边界要分清楚

Handy 的本地离线识别是它最重要的优势,但“离线”并不等于所有功能都永远不联网。

ASR 推理可以在本地完成,音频不需要上传。模型下载、版本检查这类操作本身会访问网络。更关键的是,如果启用 LLM 后处理,转写文本会发送给你配置的模型服务提供商。也就是说,隐私边界取决于你启用了哪些功能。

如果只是想要本地语音输入,关闭后处理,使用本地模型,就能把主要语音数据留在电脑上。如果希望让模型自动修正口语病句、补标点、改成正式邮件,那就要接受文本进入所选 LLM 服务的事实。

它还带有历史记录能力。默认情况下,转写历史写入应用数据目录里的 SQLite 数据库,录音文件会放在 recordings 目录,并受保留策略控制。Windows 上应用数据目录通常在 C:\Users\用户名\AppData\Roaming\com.pais.handy\。如果对敏感内容很在意,应检查历史和录音保留设置。

安装和使用上的提醒

Windows 用户可以从 GitHub Release 下载 exe 安装包或 MSI。项目也提供 winget install cjpais.Handy 的安装方式,不过 README 里注明 winget 包不是 Handy 开发者维护。为了减少变量,我更倾向从 GitHub Release 页面下载官方发布资产。

安装后真正需要调的不是界面,而是模型。第一次使用时可以选一个较小模型验证链路是否顺畅。确认快捷键、录音设备和粘贴方式都正常后,再换 Qwen3-ASR-1.7B 这类识别效果更好的模型比较准确率。

如果遇到识别慢,先看模型大小和硬件后端。大模型在 CPU 上慢是正常现象。如果遇到没有上屏,优先检查当前应用是否拦截粘贴、剪贴板权限、快捷键冲突和粘贴方式。若遇到模型崩溃,可以换小模型、换 ONNX 模型,或禁用可能不稳定的 GPU 后端。

我对它的判断

Handy 这个项目真正做对的地方,是没有把目标设成“再做一个完整输入法”。它抓住的是语音输入最短路径:人说话,本地模型转成文字,直接进入当前应用。

它的工程完成度也不错。跨平台安装包、系统托盘、快捷键、模型管理、VAD、历史记录、剪贴板恢复、后处理、流式识别,已经覆盖了日常使用需要的多数环节。项目更新也很活跃。我查看时,仓库最新提交是 2026 年 7 月 4 日,最新 Release 是 v0.9.0,发布时间为 2026 年 7 月 1 日。

不足也很明确。它依赖本地模型和桌面系统能力,稳定性会受硬件、驱动、模型后端影响。它不是系统输入法,所以不适合期待复杂候选词和输入法级编辑的人。后处理功能一旦开启,就要重新审视隐私边界。模型多是优势,但也意味着新用户需要花一点时间选对模型。

对我来说,Handy 最适合的场景是长句输入、笔记草稿、聊天回复、代码注释、邮件初稿和表单填充。它不是为了替代键盘,而是把“能说出来但懒得打”的内容快速放进文本框里。

如果未来它继续把 Qwen3-ASR-1.7B 这类中文效果更好的模型、Windows 稳定性、模型选择引导和后处理模板做好,它会成为 Windows 上很值得常驻的本地 AI 语音输入工具。

参考资料: