← back

Linux 语音输入法:基于豆包大模型的高效方案

写在前面

最近在 Linux 环境下开发时遇到一个痛点:没有好用的语音输入法

习惯了语音输入的高效率后,回到纯键盘打字反而成了效率瓶颈。市面上确实有一些「魔改」方案,但识别准确率实在难以恭维。恰好豆包的语音识别模型效果不错,还提供了充足的免费额度,于是动手做了这个工具。

项目地址:WindVox


为什么需要语音输入

语音输入正在成为内容创作的主流方式之一。相比传统打字:

但 Linux 生态在这方面一直是短板。Windows 和 macOS 都有成熟的语音输入方案,Linux 用户却只能依赖各种不稳定的第三方工具。


技术方案

核心能力

架构设计

整体采用「全局监听 + 流式识别 + 自动输入」的架构:

  1. 快捷键监听:通过 X11 监听 F2 按键事件
  2. 音频采集:PyAudio 实时录制麦克风音频
  3. 流式识别:WebSocket 连接豆包 API,实时返回识别结果
  4. 文本输入:xdotool 模拟键盘输入到当前窗口

快速部署

系统要求

1. 获取 API 凭证

前往火山引擎开放平台获取豆包语音识别 API 凭证:

  1. 访问 火山引擎控制台
  2. 进入「语音技术」-「语音识别」
  3. 创建应用并复制 App IDAccess Token

免费额度对个人使用完全够用。新用户有 30 小时的流式识别额度,足够长期使用。

2. 安装系统依赖

sudo apt update
sudo apt install -y \
    portaudio19-dev \
    python3-dev \
    python3-venv \
    python3-tk \
    xdotool \
    xclip

这些依赖分别用于:

3. 一键安装

git clone 
https://github.com/windzu/WindVox.git

cd WindVox
chmod +x 
install.sh

./
install.sh

安装脚本会自动完成:

4. 配置凭证

编辑配置文件:

nano ~/.config/windvox/config.yaml

填入你的 API 凭证:

volcengine:
  app_key: "你的 App ID"
  access_key: "你的 Access Token"

5. 测试连接

启动服务前先测试 API 连接是否正常:

~/.local/share/windvox/venv/bin/windvox --test-connection

看到「连接成功」提示后,启动服务:

systemctl --user start windvox
systemctl --user status windvox

使用说明

两种交互模式

模式操作方式适用场景
对讲机模式(默认)按住 F2 说话,松开自动输入短句输入,快速记录
切换模式按 F2 开始录音,再按 F2 结束长文输入,需要边说边思考

可以在配置文件中切换:

interaction:
  mode: "push_to_talk"  # 或 "toggle"

实时反馈

实际体验

实测下来,中文识别准确率在 95% 以上,标点符号会自动添加。对于技术文档、代码注释、长文写作都很友好。

唯一需要注意的是,在某些 IDE(如 JetBrains 系列)中,可能需要适当增加 typing_delay_ms 参数,避免输入过快导致字符丢失。


进阶配置

配置文件位置:~/.config/windvox/config.yaml

自定义触发键

interaction:
  trigger_key: "f2"  # 可改为其他按键

音频设备选择

如果有多个麦克风设备,可以指定使用哪一个:

# 先列出所有设备
windvox --list-devices

# 然后在配置中指定
audio:
  device_index: 1  # 使用第二个设备

输入延迟调整

某些应用需要更慢的输入速度才能正确接收:

input:
  typing_delay_ms: 20  # 默认 10ms,可适当增加

服务管理

# 查看日志
journalctl --user -u windvox -f

# 重启服务(修改配置后)
systemctl --user restart windvox

# 禁用开机自启
systemctl --user disable windvox

已知限制

Wayland 兼容性

目前全局热键监听和键盘模拟依赖 X11 的工具链(xdotool)。在 Wayland 下:

建议使用 X11 会话,或等待后续版本对 Wayland 的完整支持。

IDE 输入问题

部分 IDE(如 PyCharm、WebStorm)对快速键盘输入的处理有延迟。如果遇到字符丢失,增大 typing_delay_ms 即可解决。


写在最后

这个工具已经成为我日常开发的标配。从写代码注释、回复消息到长文创作,语音输入的效率提升是实实在在的。

如果你也在 Linux 下做内容创作或开发,不妨试试看。遇到问题欢迎提 Issue,也欢迎贡献代码。