quanru/doubao-say · 上手攻略

  • 仓库:quanru/doubao-say
  • 链接:https://github.com/quanru/doubao-say
  • 分类:Linux 效率工具 · 语音输入
  • 作者:Tom
  • 更新:2026-09-18

这是什么

doubao-say 是一款面向 Linux(Hyprland/Wayland 和原生 X11) 的独立语音输入应用,基于 GTK4 构建,默认使用豆包网页账号识别(免费),也可切换到火山引擎官方 Seed ASR 2.0 API(按量付费)。核心功能是让你在任意 Linux 应用里用快捷键触发语音输入,识别结果自动粘贴或直接打字进目标窗口。

它不是一个 AI 对话工具,而是一个本地化的语音→文字管道:录音 → ASR 识别 → 文本输入,附加可选的 LLM 润色(Voice polishing)功能,可调用 OpenAI 兼容端点(推荐 DeepSeek Flash)对原始识别结果做轻度润色(去填充词、补标点、调整语序)。


解决什么问题

Linux 桌面环境下语音输入长期缺乏成熟方案: - Wayland 独占Compositor(典型如 Hyprland)下,大多数跨平台语音输入工具无法正常工作 - 剪贴板安全:许多工具要求剪贴板权限或云端处理,用户不信任 - 豆包账号能力未在 Linux 桌面端释放:豆包在移动端有语音输入,但桌面 Linux 没有官方客户端 - 触发延迟:部分方案录音后才开始处理,导致第一个字丢失

doubao-say 的设计解决了这些问题:触发键按下即开始本地预录(preroll),确保第一个字不丢失;豆包网页识别免费使用;本地离线存档,API key 不上传日志;支持 Hyprland layer-shell 浮层,不抢占窗口焦点。


快速安装

⚠️ 最低支持版本:Arch Linux / Omarchy(其他发行版按依赖手动适配)。

方式一:离线归档安装(推荐)

  1. dist/ 目录 下载对应平台的归档文件(含离线安装脚本和 Python wheels)
  2. 校验 SHA256:sha256sum -c SHA256SUMS
  3. 解压并运行安装脚本:
# 以 Hyprland 为例(解压后进入目录)
./install.sh --check    # 只检查依赖,不安装
# 确认依赖列表后
./install.sh --yes      # 自动安装依赖并配置

⚠️ --check 是只读检查,不写入任何文件,确认依赖列表后再执行完整安装。

方式二:Omarchy 插件安装

omarchy plugin add https://github.com/quanru/doubao-say.git
cd ~/.config/omarchy/plugins/md.lifeos.doubao-say
./install.sh
# ⚠️ 添加时不启用(decline enablement),等依赖装完再启用

方式三:Arch Linux 手动安装依赖

Hyprland/Wayland:

sudo pacman -S --needed \
  python python-gobject python-cairo \
  gtk4 gtk4-layer-shell webkitgtk-6.0 \
  pipewire wl-clipboard portaudio

原生 X11:

sudo pacman -S --needed \
  python python-gobject python-cairo \
  gtk4 webkitgtk-6.0 pipewire portaudio \
  xdotool xclip   # 可选:支持自动粘贴

前置权限配置(Hyprland/Omarchy)

键盘事件需要读取权限,/dev/uinput 需要写入权限:

sudo usermod -aG input "$USER"
# 然后注销并重新登录
# ⚠️ 切勿以 root 运行本应用

核心用法

首次配置(四步 onboarding)

  1. 选择识别服务:Settings → Recognition service - 默认:豆包网页账号(免费,需扫码登录) - 可选:火山引擎 Seed ASR 2.0 API(需自行申请 key)
  2. 选择麦克风:选择 PipeWire 输入设备,运行 3 秒设备检测
  3. 设置触发键:选择 Fn / Ctrl / Alt / 功能键预设,或选"录制快捷键…"手动录制组合键
  4. 语音测试:在应用内测试,确认识别正常后 Finish setup

使用方式

操作 效果
按下触发键(短按) 开始录音,松开结束,粘贴识别结果
按住触发键 按住期间持续录音,松开后粘贴
录音中双击 / Esc / 取消手势 丢弃当前录音缓冲
触发键在最终润色期间再次按下 丢弃润色结果,使用原始识别文本

桌面兼容矩阵

桌面环境 自动粘贴 直接打字
Hyprland / Wayland wl-copy(需要已知窗口) 可选 wtype
原生 X11 可选 xclip+xdotool(需要已知窗口) 不可用,选剪贴板粘贴
其他 Wayland Compositor 保留结果供手动复制 不可用

Voice Polishing(可选 LLM 润色)

Settings → Trigger key → 开启 Voice polishing · Experimental,配置: - Base URL(OpenAI 兼容端点) - API Key - Model(推荐 deepseek-v4-flash,⚠️ 关闭深度思考/推理模式) - 中文/英文提示词模板(可编辑,可恢复默认)

润色在识别后 1.2 秒静默自动开始(检测到 1.2 秒安静且文本稳定),最终粘贴润色结果;超时 5 秒自动降级为原始识别文本。

⚠️ 深度思考必须关闭:DeepSeek Flash 等推理模型在thinking模式下延迟过高,会导致润色超时或粘贴延迟。


典型适用场景

  • Linux Hyprland 用户:在没有官方桌面语音输入的情况下,用豆包账号实现免费语音输入
  • 长文本录入:在终端或任意窗口中说一段话,自动转文字并粘贴,省去打字
  • 键盘重度用户:保持手指在键盘上的同时,用语音输入大段内容
  • API 开发者:切换到火山引擎官方 ASR,用自己的 API key 做生产级语音输入

坑与注意

⚠️ 以下为已知限制

  1. 仅支持 Linux:不支持 Windows / macOS;README 明确说明项目范围仅 Linux(含 Wayland 和 X11)
  2. 豆包账号识别为非官方用途:豆包网页账号识别是绕过官方桌面客户端缺失的变通方案,非豆包官方功能,存在账号风险(建议使用独立的火山引擎 API key 更稳定)
  3. 直接打字速度有限:实测约 1760 字符需 8 秒逐步打字,新行和 Tab 会被映射为回车和 Tab 键,可提交消息或执行命令——但焦点丢失会停止输入,无法撤回已输入内容
  4. X11 自动粘贴依赖窗口焦点:需要提前知道目标窗口 PID/focus,窗口切换会导致粘贴到错误位置
  5. wtype 需要 Wayland 虚拟键盘实现:仅在 Hyprland 上测试过,其他 Wayland compositor 兼容未知
  6. Omarchy 插件禁止虚拟环境omarchy plugin 树下禁止创建 venv,否则被拒绝;使用系统 Python
  7. 安装时禁止 root:README 明确说切勿以 root 运行;键盘监控功能在 input 组权限下工作
  8. 与归档安装勿混用:Git 安装和归档安装插件 ID 相同,混用会导致冲突

与同类对比

工具 平台 ASR 来源 润色 备注
doubao-say Linux (Wayland/X11) 豆包网页/火山引擎 可选 LLM 润色 Hyprland 原生支持
Speech Note Linux 私有 ASR 仅支持部分地区
Coqui STT + say Linux 本地 Coqui 需要本地模型
Dragonbox Linux 豆包 非官方项目
** Voscribe** 跨平台 各大 ASR 商业闭源

核心差异:doubao-say 是当前 Linux Hyprland 生态下唯一基于豆包免费识别的 GTK4 语音输入,且提供可选 LLM 润色链路;竞品多为本地模型(质量低)或商业闭源(需付费)。


一句话结论

Linux Hyprland/Wayland 用户需要一款免费、免配置、基于豆包账号的语音输入工具,doubao-say 是目前最原生的选择——但它是 Linux 独占,依赖键盘权限且直接打字速度有限;生产级使用建议切换到火山引擎 Seed ASR API 获得更稳定的识别质量。