本地识别 无需联网

说出口,
就落成文字。

为 Hyprland 打造的独立语音输入工具。
按住 F8 说话,松开上屏,文字进入你正在用的输入框。

Linux · Hyprland · Wayland GPL-3.0

悬浮条 · 待确认状态 · 原尺寸截图点击放大 ↗

按住说话,
松开就好。

不打断你正在做的事。悬浮条不抢键盘焦点,
文字最终一次进入原来的输入框。

一个键,两种用法

轻按开始、再轻按结束;或者按住说完松开。停止、取消和提交原文各有独立快捷键,临时改主意不用手忙脚乱。

F8 录音 / Super+Alt 提交与取消

本地听写,不联网

固定 X-ASR 中英流式模型负责实时出字,结束后在本地做一次离线精修。热词、Silero VAD 无语音拒绝和长录音保护都在本机完成。

流式识别 / 离线精修 / 音频不上传

说出来改,选区不动

选中一段文字,按住说修改指令,先看预览结果。确认时会重新核对选区再替换;指令模式始终需要你确认,不会把口述的指令当成替换文字。

选区修改 / 预览确认 / 原文兜底
LOCAL FIRST, BOUNDARIES CLEAR.

默认不调用
任何大模型。
没有隐藏动作。

默认场景是原文听写,前文辅助关闭。录音不上传,转录和前文不写进持久日志;本地 status 只返回本次转录和实际使用的前文,回到待机就清掉。

启用纠错、整理、翻译或指令模式,才会把本次转录与选中文字发给你配置的 OpenAI 兼容接口;启用前文辅助,还会发送光标前最多 1024 个字符(可设置 1 到 2048)。密钥只从环境变量读取。

剪贴板只处理 UTF-8 文本;选区读取会临时占用剪贴板,恢复完整富文本或图片并不可靠。终端只用于普通听写——终端选区通常不代表可替换的编辑区域。文本处理失败时保留识别原文并等待确认,不会自动插入失败后的替代结果。

BUILD & RUN

从源码开始。

本机需要 C++20、CMake、GTK4、gtk4-layer-shell、PipeWire、AT-SPI、libcurl、sherpa-onnx C API、wl-clipboard 和 hyprctl。
Arch 对应软件包:gtk4 gtk4-layer-shell pipewire at-spi2-core curl sherpa-onnx wl-clipboard cmake。

Terminal
git clone https://github.com/mainliufeng/hyprvoice.git
cd hyprvoice
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j2
ctest --test-dir build --output-on-failure

源码在 GitHub 公开,GPL-3.0;上面是克隆后从仓库根目录执行的命令。构建与运行不依赖 Fcitx 开发库、旧语音插件或 vinput-registry,本地模型文件可以复用已经下载好的权重。

配置真实模型

只支持以下两套 transducer 文件名。先用 scripts/configure.py 写入实际路径,再运行 doctor 核对依赖和模型,然后启动 serve。配置存在时脚本拒绝覆盖。

python3 scripts/configure.py \
  --streaming ~/.local/share/hyprvoice/models/x-asr-960ms-streaming-zipformer-transducer-zh-en-punct-int8 \
  --offline ~/.local/share/hyprvoice/models/x-asr-zipformer-transducer-zh-en-punct-int8 \
  --vad ~/.local/share/hyprvoice/silero_vad.onnx \
  --hotwords ~/.config/hyprvoice/hotwords.txt
build/hyprvoice doctor
build/hyprvoice serve
可选的文本处理

在配置里填写 llm.base_url 和 llm.model,密钥只从 llm.api_key_env 指定的环境变量读取,默认 HYPRVOICE_API_KEY。HTTPS 默认开启验证;可信的本地 HTTP 服务需要显式设置 llm.allow_http=true。场景提示词放在 prompts,改完重启服务生效。

默认快捷键

F8
轻按开始/结束,按住说话后松开结束
F9
选中文字后按住说修改指令,松开处理
Super+Alt+Enter
提交处理结果
Super+Alt+O
提交识别原文
Super+Alt+Escape
取消当前会话
Super+Alt+1 / 2 / 3 / 4
原文/纠错/整理/英文翻译
127

条识别回归

用本应用自己的样本清单和独立评分器逐条核对;中文 holdout 在干净音频上的 CER 为 9.23%,20 dB 白噪声 9.49%。这是固定集的回归诊断,不代表自由口述的普遍效果。

20

项真实桌面检查

PipeWire 录音、Wayland/XWayland/Kitty 上屏、噪声拒绝、轻按与长按、切换窗口保护和未配置模型时的选区保护,全部在隔离 Hyprland 中执行。

38

项悬浮条检查

连续录音、识别中保留流式文字、检测未确认、真实前文与文本处理,以及 73 秒长录音的实际滚动与上屏。

以上数字来自 2026-10-03 至 2026-10-04 的验收记录,不是持续跑分的看板。尚未覆盖:没有真人对物理麦克风讲话的完整质量评估,也没有和微信、豆包输入法的同录音对比,因此不声称质量已经对标。选区修改目前只有一条真实链路样例,不代表所有指令都可靠。

让键盘休息一会儿。

hyprvoice 在 GitHub