语音输入 × TWS 耳机 · 自用版本 · 持续迭代

声墨 · VoxInk

以声为墨,声音直接落笔成字

按住一个键说话。松开后落进光标的不是识别原文,而是可以直接发出去的书面文字。

移动端会陆续推出;Windows 版为当前自用版本,尚未对外发布。

声墨 · VoxInk 产品概念展示:笔记本上正在写入邮件正文,右侧是 TWS 耳机与充电仓,下方四个能力标签 声墨 · VoxInk:说出想法,落笔成文;邮件正文已由语音写入 TWS 耳机与充电仓,标注 VPU 骨声纹硬件功能

按下 · 说完 · 松开

一次输入

它替你把话写完整

不用先想好怎么说,也不用挑词。松开按键之后,落进光标位置的是可以直接发出去的书面文字——下面这段是真实流程的动画演示。

新邮件 · 工作邮件场景
收件人项目组
主题评审时间调整

因还有两个物料未到,周四的评审可能需要推迟到下周一。麻烦您同步一下其他同事,谢谢。

🎙 正在听… 再按一下结束,Esc 取消 ✍ 识别中… ✅ 已输入 44 字 · 1.6 秒 · 工作邮件  不满意按 F8 换个说法
托盘图标随状态变色:加载中 → 待机 → 正在听 → 整理中(图标由程序现画,不依赖图片素材)

动画由页面本身播放(CSS 逐帧),不是录屏:文字逐字写入 → 提示条走完「正在听 → 识别中 → 已输入」→ 托盘图标同步变色。

识别能力

语言与方言

普通话、粤语、英语,混着说也行

识别引擎按多语种与方言设计,开口前不需要先选模式,一句话里中英夹杂也能识别。

  • 普通话
  • 粤语
  • 英语
  • 日语
  • 吴语
  • 闽语
  • 客家话
  • 赣语
  • 湘语
  • 晋语
中文方言
7 种:吴语、粤语、闽语、客家话、赣语、湘语、晋语
地域口音
26 种:河南、陕西、湖北、四川、重庆、云南、贵州、广东、广西、河北、天津、山东、安徽、南京、江苏、杭州、甘肃、宁夏等
外语
英语、日语;识别引擎支持语种自由切换与混合识别
中英混说
「这个 assert 要加 timeout」这类中英夹杂不用切换模式
输出语言
说中文可直接输出 English / 日本語 译文,专有名词保持原样
专有名词
热词表纠正同音错字:人名、公司名、产品型号以你的写法为准

能力来自识别引擎:本地为 Fun-ASR-Nano(中文含 7 方言与 26 口音、英文、日文),云端为实时识别引擎,两者可在托盘里切换。

第一段

听清

边说边出字,专有名词不会认错

按下按键就建立连接,不用等你说完;云端不可用时自动切到本地模型,离线也能用。人名、公司名、产品型号写进一个纯文本文件——识别时作为偏置提示,整理时作为基准,改完保存立即生效。

语音输入的三段链路:听清、整理、落到光标

第二段

整理

同一句口语,按场景写成四种文字

程序看当前窗口判断你在写什么——聊天、邮件、文档还是给 AI 的提示词。五条护栏写死在提示词里:不添加原文没有的事实与承诺,不把「可能」写成「确定」,说错改口只留最终说法。

同一句口语在聊天、邮件、文档、AI 提示词四种场景下的不同写法

第三段

落到光标

每一步有反馈,每一步能反悔

提示条显示、置顶,但绝不抢走你正在打字的窗口的焦点;粘贴前等你松开按键,用完把剪贴板还回去。整理得不合心意,按一下 F8 换一种说法,可以连续换。

屏幕提示条的四种状态:正在听、识别中、已完成、出错

托盘

控制台

整个控制台,都在托盘里

输出模式、识别与整理引擎、输出语言、润色强度、场景自动切换、历史记录开关、编辑热词、设置密钥——不用打开任何窗口。图标按状态变色,余光扫一眼就知道它在听还是在整理。

托盘菜单:状态行、今日统计、两级子菜单、勾选项,以及四种颜色的托盘图标

数据

实测

松开手到文字出现,中位 1.6 秒

这是本机运行日志里 19 次口述记录的聚合结果,不是理论值。识别与整理的时间是相加的,所以两段都压在一秒以内,才敢说「松开就出字」。

  • 1.6 秒松开手到文字出现(中位)
  • 19 次本机实测口述记录
  • 0 次记录内的失败
  • 5 类自动识别的写作场景
一次使用的耗时分解:识别中位 0.8 秒,整理中位 0.7 秒,合计中位 1.6 秒

实现

Rust 重写

一个 2.14 MB 的单文件

核心已经用 Rust 重写:不需要 Python 运行时,双击就能跑。最容易出错的那些系统边缘——全局按键、音频采集、托盘、粘贴时序、剪贴板、凭据存储——全部换成 Rust;另外加了开机自启。

  • 2.14 MBrelease 单文件(LTO + strip)
  • 12个模块
  • 1234行 Rust
  • 0需要安装的运行时

模块划分:音频采集、实时识别、文本整理、提示词、状态机、界面、窗口与按键、密钥、配置、开机自启。已知差异:本地识别引擎尚未移植,Rust 版目前走云端实时识别。

接下来

配套硬件

采集这一段,交给耳机形态

软件补不回在采集那一刻就丢掉的信息。耳机形态刚好落在这一段上:离嘴最近、腾得开双手、身上有地方放按键。但「整理」仍然需要主机的窗口上下文——设备负责听清,主机负责成文。

耳机形态作为采集端的示意图:麦克风靠近嘴、物理按键、无线链路,以及主机负责成文

硬件方向

声纹闸门

只有你的声音,才会被写下来

在采集之后、识别之前加一道闸门:设备上的语音处理单元(VPU)先比对声纹,判定为本人这一段才继续往下走;不是本人说的话,整段丢弃,不产生任何输入。判定在设备侧完成,音频不出设备。

判定位置
设备侧 VPU 本地比对,不需要上云,音频不离开设备
录入声纹
说 3 句话建立模板,约十秒;模板只存设备本地,可一键删除
闸门行为
本人 → 进入识别与整理,落进光标;非本人 → 整段丢弃,不产生任何文字
拒识反馈
屏幕提示「未识别为本人,已忽略」,可以立刻重说——不会出现「说了没反应」
判定粒度
按语音段判定而不是整段录音一刀切:会议里只写我说的话,别人的发言自然被挡在外面
已知限制
声纹有误拒与误受:感冒、疲劳、离麦克风的距离变化都会影响;录音回放本身不防(需要活体线索)。因此必须提供重试与临时关闭开关
隐私
声纹是生物特征:模板留在设备本地、加密存储、可删除,不参与任何云端处理

这一段是硬件方向的能力规划:当前软件版本还没有声纹链路,采集侧的硬件(麦克风 + VPU + 物理按键)先落地,才能把它接上。

声纹闸门示意:麦克风采集 → VPU 本地声纹校验 → 本人进入识别与整理,非本人整段丢弃
01/

Briefings

每天,把 AI 看清一点。

02/

Notes

技术、工具与随想。
写下来,才算想清楚。

03/

About

关于技术,也关于生活。欢迎交流想法、问题,或者只是打个招呼。

→ 写信给我