跳到正文

产品 04 · 开发中 · 里程碑 M0(基础设施)

Voxera

面向桌面与编码 Agent 的语音输入

按下一个全局热键,说话,文字落在你原本正在输入的那个地方 —— 编辑器、终端、写给编码 Agent 的提示框。识别交给本地引擎,或者交给你自己配置的云端引擎;投递交给当前获得焦点的输入框,或者交给一个只监听 127.0.0.1 的桥。

当前状态

这一页没有下载链接

项目处于早期阶段,里程碑 M0(基础设施)正在进行中:还没有发布版本,也还没有公开仓库 —— 仓库地址与可见性尚未确定。所以这一页不给版本号、不给安装命令,也不放一个点不动的按钮。它记录的是设计决定:边界为什么切在这里,什么数据在什么模式下离开这台机器,以及为什么它刻意不去做另外三件看起来很像的事。

已经能跑
工作区里的各个库、一个无界面 CLI(列出引擎、跑分阶段基准、单独跑文本后处理规则),以及仓库自身的检查脚本。
尚未公开
桌面端界面与打包链路的代码存在,但仓库尚未公开,也没有产生过任何可安装的发布制品。
不写进这里
路线图上的东西不当成已有功能介绍。手机作为局域网瘦麦克风接入是已经设计好的形态,不是今天能用的功能。

工作方式

三步,一条直线

没有唤醒词,没有对话轮次,没有等你确认的中间态。一次听写从按键开始,到文字落地结束。

  1. 01

    采集

    一个全局热键,在桌面会话的任何位置都能按。采集与静音检测由 CPAL 拿设备、VAD 切出真正在说话的那一段。

  2. 02

    识别

    交给本地离线引擎(sherpa-onnx 跑磁盘上的模型),或者交给你自己配置的云端引擎。两条都是一等路径 —— 本地不是云端不可用时的降级方案。

  3. 03

    投递

    文本落进当前获得焦点的输入框,或者交给一个只监听 127.0.0.1 的 Agent 桥。替换规则与热词在落地之前就已生效。

边界

它刻意不做的三件事

看到"语音输入",多数人会先想到下面三样中的一样。Voxera 都不是。这不是功能没做完,是边界画在了别处 —— 而每一条都有随之而来的代价。

  1. 01

    不是语音助手

    不听唤醒词,不解析意图,不代你执行任何动作。它把你说的话变成文字,然后放手。判断该拿这段文字做什么的,是你,或者是你交给它的那个 Agent。

  2. 02

    不是会议记录工具

    不常驻录音,不做说话人分离,不生成摘要。它一次处理的是一段你主动按键说出来的话 —— 长度以句子计,不以小时计。

  3. 03

    不是系统输入法

    它不把自己注册成任何平台的输入法:Android 上没有 InputMethodService,iOS 上没有键盘扩展,也不出现在系统的键盘与输入源列表里。它走的是普通应用就能用的合成输入与剪贴板路径。

最后一条不是措辞问题,是有代价的:只接受真实输入法的地方拿不到它的文字,Windows 上完整性级别高于 Voxera 的窗口就是最典型的例子。换来的是它不需要系统级的输入信任,也不接管你原本的中文输入体验。代价写在这里,不藏在文档末尾。

隐私模型

哪种模式下,什么东西离开了这台机器

Voxera 只在其中一种模式下真的不外传数据。把这件事讲清楚比讲得好听重要。下面三行只按"传输"这一个维度排列;当前处于哪种模式取决于你自己选的设置,并且在听写进行时界面上会显示出来。

  • 本地识别

    传输

    不发音频,不发转写文本,不发元数据。识别在 Voxera 进程内针对磁盘上的模型文件完成,模型装好之后这条路完全不需要网络,断网照样工作。唯一的一次网络操作是听写之前的模型下载,下载内容按编译进二进制的哈希校验。

  • 云端识别

    传输

    音频 + 模型 id + 你的凭据

    发往你选定的那一家提供方 —— OpenAI、Groq、阿里云百炼、火山引擎,或者你自己填地址的 custom。若配了热词且该提供方支持偏置,热词列表会作为提示文本一起发出。这条路径上不存在任何由 Voxera 运营的服务器,也不存在把音频发给你未配置的提供方的模式。每家的数据留存政策以原文逐字引用的方式记在项目文档里,带来源 URL 与阅读日期。

  • LLM 润色(默认关闭)

    传输

    转写文本,不含音频

    规则链处理之后的文本,加上聊天模型 id 与凭据,发往你配置的那个 OpenAI 兼容 chat 端点。默认关闭 —— 默认值就是为此而设:它增加延迟,并且把文本送离本机。接收方是运营那个地址的人。

另外三条同属默认值的决定:历史记录默认关闭,开启后仅存本地,默认上限 500 条或 30 天先到者为准,被系统标记为安全的输入框里的内容根本不会落盘;Agent 桥只监听 127.0.0.1,不接受来自局域网的连接;凭据存在操作系统钥匙串里,配置文件里只留一个标签。

可控性

不是设置页里堆开关

会被反复用到的四样东西,都做成了你能自己写、自己读、自己关掉的形式。

替换规则
自定义的文本替换链,在文字落地之前跑完。念出来是一串口语,落下去是你规定的那个写法 —— 项目名、函数名、内部缩写,不必每次手改。
热词
一份你自己维护的词表。本地引擎用它做偏置;云端提供方若支持偏置,同一份词表作为提示文本一起发出。
历史
默认关闭。开启后只写本地,有条数与天数双重上限,并且被系统标记为安全的输入框(密码框一类)里的内容根本不进这条路。
命令行
一个无界面 CLI:列出已配置且可解析的引擎、跑分阶段耗时、只跑文本后处理规则而不碰音频。结果走 stdout、诊断走 stderr、退出码可直接做分支 —— 其中 3 专指"前置条件缺失",与 1(运行时失败)分开。

架构

一个 Rust 工作区,边界由脚本守着

切分的依据不是"看起来整齐",而是哪条依赖边一旦被越过,就会让某一端变重、变慢,或者知道了它不该知道的东西。

voxera-audio
采集与静音检测。CPAL 拿设备,VAD 切出真正在说话的那一段。
voxera-asr
识别引擎。本地路径用 sherpa-onnx 跑磁盘上的模型;云端路径是几家提供方各自的适配。
voxera-pipeline
从一次按键到一段文字之间的编排:采集、识别、替换规则、热词、投递决策。
voxera-bridge
本机桥。Axum 加 WebSocket,只监听 127.0.0.1;局域网侧另有 QUIC 与 mDNS,为已设计的手机伴侣形态准备。
voxera-cli
无界面入口。在没有桌面环境的机器上验证整条流水线,也是 Agent 自动化的那一头。
apps/
桌面端与移动端。平台集成分别落在 Windows API、macOS AppKit 与 X11 上。

手机侧不允许出现的依赖边写在架构文档里,并且由一个检查脚本守着 —— 越界是 CI 失败,不是 review 时的一句口头提醒。同理,本地识别引擎依赖的 sherpa-onnx 预编译库从一份提交在仓库里的 SHA-256 清单取得,构建时不会临时去网上抓。

技术栈

应用
Rust · Tauri 2 · React 19 · Vite · Tailwind 4
音频与识别
CPAL · VAD · sherpa-onnx
服务
Axum · WebSocket · QUIC · mDNS · SQLite
平台集成
Windows API · macOS AppKit · X11

平台差异

不一致的地方写在明面上

跨平台不等于处处一致。下面三条是已知的、不打算用措辞抹平的差异。

Wayland:只有切换模式
Wayland 没有能同时给出按下与松开两个边沿的、跨合成器的全局快捷键协议,所以 Wayland 上没有"按住说话",只有按一下开始、再按一下结束。这不是设置项,也不是本地能修的缺陷。
Windows:提权窗口会被按名拒绝
UIPI 不允许中等完整性进程向高完整性窗口投送输入,Voxera 也不会为绕过它去申请提权。它给出一条点名 UIPI 的提示,并把文字留在历史与暂存区里,而不是静默失败。
延迟数字:暂时不给
基准的分阶段模式给的是诊断数据。端到端延迟要等交付层完成之后才有意义,在此之前它会明确拒绝给出数字,而不是返回一个看起来像结论的值。

许可

应用本体与适配层分开

这两层被人使用的方式不一样:一个是你装在机器上的程序,一个是你抄进自己 Agent 配置里的几十行胶水。所以许可也分开。

应用本体 · AGPL-3.0-only
GNU Affero 通用公共许可证第 3 版,仅第 3 版,原文完整且未经修改地随仓库分发。
三个 Agent 适配层 · Apache-2.0 OR MIT
MCP stdio 桥的适配脚本、OpenCode 插件、Claude Code hook 脚本。双许可的目的很具体:让它们能直接嵌进你自己的 Agent 配置,而不把 AGPL 传染给你的东西。
AGPL 第 13 条
因为 Voxera 通过网络与用户交互,第 13 条适用:运行中的桥在 GET /source 上给出对应源码的获取方式,手机端在"关于"页展示同一个入口。
模型权重
各自适用自己的许可证,不因为随 Voxera 一起使用就变成 AGPL。

接下来

等仓库确定,这一页会长出安装一节

在那之前,它就是一份设计记录。上面每一条都能在项目自己的 README 与架构文档里找到对应出处,没有一条是为了这一页临时写出来的 —— 包括那些不好听的:Wayland 上没有按住说话,Windows 上进不了提权窗口,端到端延迟现在给不出数字。

回到 FirLab 首页

同一批工具

  • CodeGraph

    确定性代码知识图谱

    已发布,持续更新 —— 二进制里没有任何模型,同一个问题在任何机器上返回同样的字节。

  • AgentLens

    编码 Agent 用量归档

    已发布,早期 —— 把本机与 SSH 远端的用量记录汇总进同一份持久归档。