Open Voice Input Linux v0.1.0-alpha.5
Pre-releaseOpen Voice Input Linux v0.1.0-alpha.5
面向 Ubuntu / IBus 用户的公开技术预览:按下自选快捷键说话,识别文字通过 IBus 直接出现在当前光标;主路径不读取剪贴板、不发送
Ctrl+V,也不模拟逐字输入。
alpha.5 把设置界面、自适应纠错、可选数据留存和云端识别后端整理成一套更完整、但边界仍然明确的产品流程。它仍是 alpha,不是稳定版、生产就绪声明或“支持所有 Linux”的承诺。
这次更新
- 中文优先的原生 GTK4 控制台:新增首页,以及云端识别、快捷键与按住说话、个人词表、纠错学习、麦克风、数据留存等任务式页面;状态和隐私说明始终可见。
- 今日与累计统计:首页显示字数、录音时长和听写次数,只在后台读取不含转写正文的
usage/<utterance_id>.json摘要,不打开音频或record.json。 - 点按与按住说话:保留
toggle,新增press/release状态机;重复 key-down、过短误触、乱序事件、取消/错误和丢失 release 都有有界处理。 - 自适应纠错 v2:单一高置信术语/拼写修正可以自动启用;多处独立修改拆成待确认候选,冲突项隔离;设置页可查看原因、确认候选,也可显式提交“识别原文 / 修改后整句”。v1 账本会安全迁移为 v2 五状态结构。
- 可审计的反馈记录:明确开启数据留存后,可把有界纠错决定追加到
feedback/<utterance_id>/<event_id>.json;不可变的utterances/<id>/audio.wav + record.json两文件契约不会被改写。 - 后端中立的 ASR 层:火山引擎仍是默认;Qwen 实时 ASR 与 OpenAI 停录后批量转写已接入固定官方端点;MiniMax 保留为不可选择的计划项,不伪造未验证接口。
- 轻量约束继续生效:
.deb不捆绑 Electron 或本地 ASR 权重;exact-commit CI 会拒绝大于 5 MiB 的包或大于 10 MiB 的Installed-Size。
安装与升级
目标环境是 Ubuntu 24.04 x86_64 + IBus。下载本 Release 的 .deb 后运行:
sudo apt install ./open-voice-input-linux_*_amd64.deb然后从应用菜单打开 Open Voice Input Linux,或运行:
open-voice-input-settings从 alpha.4 .deb 可用同一条 apt install 升级。若仍安装着旧 source/offline preview,Debian pre-install 会拒绝被旧高优先级代码遮蔽;请先从对应的可信 preview 目录运行 ./scripts/uninstall-user.sh。卸载/迁移保留用户私有 Key、词表、纠错、麦克风策略、采集选择与外部 dataset。
在线 ASR、费用与隐私
- 火山引擎 BigModel ASR 2.0 是默认且目前唯一在维护者机器上用真实 Key 实机验收的后端。
- Qwen 实时 ASR 与 OpenAI Transcribe 具有完整 fake-transport 协议测试,但本版本没有真实用户 Key 验收;OpenAI 是停录后批量 final,不提供伪造的实时 partial。
- MiniMax 不是可运行选项;本地 / 完全离线 ASR 和模型训练尚未实现。
- 所有可运行后端都使用用户自己的账户与 Key。音频只在用户主动听写后发送给当前选择的在线服务;配额、计费、地域处理、服务端留存与账户政策遵循所选服务及用户配置。
- 取消会停止本地捕获并阻止本地提交,但无法撤回已经上传给供应商的音频。项目不提供共享 Key,也不会在“保存设置”时联系供应商。
按住说话的真实边界
普通 GNOME/KDE activation 快捷键适合 murmur-voice-daemon toggle。真正的按住说话必须由桌面、键盘或辅助工具分别发送:
murmur-voice-daemon press
murmur-voice-daemon release本版本没有宣称解决通用 Wayland 全局 key-up,也不会扫描全部 /dev/input;如果现有集成只能产生一次 activation,请继续使用 toggle。本项目不硬编码 Right Alt 或任何创作者个人按键偏好。
自适应学习的真实边界
自动学习依赖同一焦点应用在 final 后最多 5 秒内提供可信的 IBus post-commit surrounding text。失焦、超时、private/不支持的输入框、歧义编辑和整句润色不会被静默提升为全局规则;应用无法提供可信证据时,请使用设置页的显式“provider text / preferred text”入口。
该流程不读取剪贴板、AT-SPI、全局键盘、Rime 历史或其他窗口,也不保存 surrounding 全文。纠错账本与 feedback 事件不是人工金标,更不是在线训练或“自回归模型”;模型训练、听音审核和评测仍是后续独立流程。
可选数据留存与远程存储边界
数据采集默认关闭。用户明确开启并选择一个已经存在的本地目录或操作系统已挂载的兼容目录后,成功且被当前 IBus 上下文接受的听写才可能发布:
utterances/<id>/audio.wav:16 kHz 单声道 WAV;utterances/<id>/record.json:不可变元数据与标签角色;usage/<id>.json:不含转写正文的统计摘要;feedback/<id>/<event_id>.json:捕获成功时的 append-only 有界纠错决定。
provider_final 始终是 teacher-unreviewed 伪标签;spoken_verbatim 与 preferred_output 仍为 null / unreviewed。远程存储、备份或原子发布不会把它变成 gold label。
本版本没有应用自带的 Orange 登录/挂载、resumable transfer、Google Drive 上传器、应用层静态加密、审核/删除 UI、模型训练/微调/蒸馏,也没有断线后的本地 fallback spool。用户自行挂载的 SSHFS/Orange/POSIX 文件系统是独立的存储信任边界;权限、共享、备份与静态保护由该文件系统决定。Google Drive 推荐只通过用户另行授权的 rclone copy 异步备份已经完整发布的记录。
远程挂载停滞或断开时,普通听写继续,但尚未发布的记录可能丢失;正常关机只给 writer 最多 10 秒有界 drain。已发布记录不会自动删除,卸载也会保留它们。
统计与麦克风边界
- 首页统计只覆盖 alpha.5 起新发布的
usage/*.json;不会为了回填旧统计而读取历史 transcript。采集关闭时不扫描旧目录,挂载离线时显示“不可用/未知”,不会误报为 0。 - 麦克风顺序完全由用户保存;每次新听写重新枚举并按顺序回退。选择只作用于本应用新开的 capture stream,不主动更改播放设备、系统默认输入、音量或静音。
- DJI 链路状态与设备变化在下一次听写时重新判断;已经开始的一句话不会 mid-utterance handoff。
当前支持范围与已知缺口
- 明确目标:Ubuntu 24.04 x86_64、IBus、CPython 3.12、支持标准 IBus preedit 的应用。
- Qwen/OpenAI 尚未真实 Key 验收;MiniMax、本地 ASR、训练/微调均未实现。
- 新鲜的全物理矩阵仍未完成:真实供应商账户、DJI/耳麦/内置组合及物理断连重连、真实挂载采集目录、GNOME X11/Wayland 和代表性应用仍需社区继续验证。
- CI 的 fake-device、fake-transport、Xvfb/D-Bus/IBus smoke 与无 Key package lifecycle 不等同于上述物理验收。
- 当前 transition engine 在听写和最多 5 秒纠错观察期间临时使用 voice-only IBus engine;永久 librime / Rime Ice 合并仍在路线图。
- 本包不自动注册系统级快捷键,也不包含通用悬浮指示器。
因此本版本适合作为明确标注的社区 alpha 测试,不应据此宣称广泛 Linux 支持、完全离线或生产就绪。
验证与供应链信息
- Release URL: v0.1.0-alpha.5
- Source commit:
317e1950582d85b759eada59d6174b9cb344c1ce - Pull request: #21
- Signed annotated tag:
v0.1.0-alpha.5— GitHub verification:valid - Exact-main CI: run 33342652443
- Required checks:
security✅ ·engine✅ ·voice✅ ·preview-bundle✅ - CI artifact ID:
9741025092 - CI artifact ZIP SHA256:
c6b315db8152f9e1666b1173e0af2dedb4c4a91cde984d7c2de8430c997d5c01 - Preview archive:
openVoiceInput_linux-preview-317e1950582d-ubuntu-24.04-x86_64-py3.12.tar.gz - Preview archive SHA256:
d90da87678722ac6a271d5b603c997a0bc0877339fb15b56f450049da562fbc0 - Debian package:
open-voice-input-linux_0.1.0-alpha5-1_amd64.deb - Debian package SHA256:
831c52f6c60c0c8968fd44cf212a968c90432aa27c824fca7d78005f68f90dde - Debian package size / Installed-Size:
440716 bytes / 2948 KiB - Preview SBOM serial:
urn:uuid:0c4aee89-2e61-5ac6-b479-b9b3fb427df5- Scope: project wheel + hash-locked runtime wheelhouse
- Package SBOM serial:
urn:uuid:6aaf20a1-5881-5187-b30f-d4fbb69477f9- Scope: packaged application/source commit + four bundled Python runtime wheels
- Immutable release:
enabled; GitHub locks this release on publication after draft-asset verification
English summary
Open Voice Input Linux v0.1.0-alpha.5 adds a Chinese-first native GTK4 dashboard, daily and cumulative transcript-free usage counters, configurable toggle/push-to-talk interaction, adaptive-correction v2 with review candidates and explicit feedback, append-only dataset feedback events, and provider-neutral ASR adapters.
Volcengine remains the default and the only path accepted with a real key on the maintainer workstation. Qwen streaming and OpenAI batch transcription are fake-transport-tested but have no real-key acceptance claim in this release; MiniMax is planned and not selectable. Every working cloud backend is BYOK and may incur provider charges. Audio, regional processing, server-side retention, and account policy follow the provider selected by the user. There is no local/offline ASR or model training yet.
Collection remains off by default. Provider finals are teacher-unreviewed; spoken_verbatim and preferred_output remain unset. This release has no application-owned Orange mount/authentication, resumable upload, integrated Google Drive uploader, at-rest encryption, review/delete UI, training pipeline, or fallback spool. User-mounted storage is a separate trust boundary, and an unavailable mount can lose an unpublished optional record without stopping normal dictation.
Normal desktop activation supports toggle. Push-to-talk requires an external integration that emits separate press and release edges; this release does not claim a universal Wayland global-release hook. Adaptive learning requires trustworthy same-focus post-commit evidence and otherwise uses an explicit provider-text/preferred-text fallback; it does not read the clipboard or globally log keys. Dashboard statistics cover newly indexed records only. The supported package target remains Ubuntu 24.04 x86_64 + IBus, with broad physical microphone/provider/application validation still incomplete.