先说说为什么会有这个项目。
我一直想搞 Linux 下的语音输入,最开始找到的是 fcitx5-vinput。这项目想法很好,走本地模型,完全离线,隐私安全。但理想很丰满,现实很骨感——我那个轻薄本一共 16G 内存,开个 VS Code 再加几个浏览器标签页就快见底了,再跑个语音模型,风扇呼呼的,笔记本都快能煎鸡蛋了。
不是说 fcitx5-vinput 不好,它适合有 GPU 或者内存充裕的台式机。但对我这种轻薄本用户来说,本地模型这条路暂时走不通。
那怎么办?上云端呗。我发现fcitx5-vinput 也有这个云端的服务。但是这个配置我感觉不太轻量,有一个额外很重的GUI需要配置。试了一圈发现还是不太喜欢
然后我就发现 市面上现有的 Fcitx5 语音方案基本都离不开手动按键操作——按快捷键开始录音,再按一次结束。用起来总觉得有点割裂,不够"原生"。 算求,自己写一个吧。
语音输入的流程其实很简单:采音 → 检测说话 → 识别 → 提交。但要做得顺滑,每一步都有坑。不过,终于熬了两个大夜之后。成功搞出来了。
VAD我用 Silero ONNX 的预训练模型,效果比 WebRTC VAD 好多了。它区分人声和环境噪声,敲键盘或者空调声不会误触发。阈值 15就很稳,太敏感可以自己调高。
三个后台线程走无锁队列:采集只管放数据,VAD 拿去做检测,ASR 拿到完整语音段后调 API 识别。主线程只负责最后把结果提交到输入框,全程不卡界面。 而且因为识别在云端跑,本地 CPU 和内存几乎零开销,16G 轻薄本用起来毫无压力。
目前支持的云端服务 OpenAI 格式的 API:
- OpenAI Whisper:最稳,但得花钱,适合氪金用户
- Groq:目前免费,whisper-large-v3 效果很好,延迟也低,我日常用这个
- SiliconFlow:国内友好,不用科学
我使用体验下来。 只需要,张嘴说话,停顿一下,识别结果自动上屏。没有多余的按键操作,想干啥干啥。爽的一批
下一步计划补上本地离线方案,给有条件跑本地的用户多一个选择。但目前云端方案已经能满足日常使用了。
最后希望大家能给我点一个star。hhhhhh

演示demo在此。