给 Fcitx5 写了个语音输入插件, VAD 自动分割,不用按键

23 小时 13 分钟前
 devcxlcn

先说背景。我一直想在 Linux 上用语音输入,最开始瞄上的是 fcitx5-vinput ,这个项目用的是本地语音识别,想法很好。但我试了一下发现一个问题——它要在本地跑模型,我的轻薄本 16G 内存本来写个 IDE 再开几个浏览器标签就差不多了,再跑个语音模型,风扇直接起飞。也有这个请求 API 的模式,但是,它使用的是一个单独的进程在做。我有点架构洁癖,代码洁癖。

所以退而求其次,走云端方案。但现有方案基本都要你手动按快捷键开始/停止,或者用系统级方案加外部脚本,体验很割裂。

后来想了想,不如自己写一个 Fcitx5 的插件:fcitx5-voice-input

核心思路就三个:

  1. Silero VAD 自动检测语音 — 不用 push-to-talk ,张嘴说话就行,停 800ms 自动结束
  2. 后台队列流水线 — 采集 → VAD → ASR 三个独立线程走队列,不阻塞输入法
  3. 兼容 OpenAI 协议 — 可以用自己的 OpenAI 账号,也可以用 Groq (免费额度够用而且很快唯一不足的就是 Whisper ,它的识别率不是很好。)、SiliconFlow 啥的

云端识别的好处就是本地几乎零开销,16G 轻薄本完全无感。

写完了装到 Arch 上用了几天,几个实际感受:

README 写了详细配置和构建步骤: https://github.com/devcxl/fcitx5-voice-input

有啥建议或者 bug 直接提 issue ,目前 MVP ,后续计划加本地 ASR 。

627 次点击
所在节点    分享创造
8 条回复
devcxlcn
19 小时 46 分钟前
我丢。怎么没人评论 有没有使用 Linux 桌面发行版 的?帮我测试测试呗。我估计还有很多 bug 。
selca
19 小时 39 分钟前
给录个使用样例看看呗
Tink
18 小时 44 分钟前
想在 steamdeck 上试试,那上面是 arch+fcitx
devcxlcn
18 小时 36 分钟前
yplam
18 小时 18 分钟前
我试过本地 ASR 资源占用应该还可以,sherpa-onnx 跑 1G 的模型支持多语言,效果还行。
devcxlcn
18 小时 9 分钟前
@yplam 对于我这个 3 年前的板载 16G 内存笔记本来说有点捉襟见肘,特别是开了 IDEA 跟很多浏览器标签页之后。内存得有 80% 我再开个 asr 我笔记本直接就卡飞了。
devcxlcn
18 小时 7 分钟前
@Tink 我不确定 steamdeck 这上面能不能用。因为它后端去采集音频是用的,什么我还不太清楚。不过有问题的话,随时提 issue
shoaly
14 小时 37 分钟前
后续接一个 流式反馈的语音模型吧, 比如豆包, 体验一下就上去了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1223515

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX