工程

语音遇见视觉:全模态模型如何打开多模态语音输入

从纯音频 ASR 到音频 + 视觉 + 文本:这个范式变化让语音输入从“把我说的话转成文字”,走向“在正确的位置写出我真正想表达的东西”。

TL;DR

多模态语音输入的意思是:系统不只听见你说了什么,还会结合本地上下文判断这些话应该变成什么文本。Loqua 是一款面向 Mac 的上下文感知语音输入工具:它听你的声音,读取本地目标位置的上下文,然后写出适合当前 App 的文本。这篇入门文章解释为什么屏幕感知语音输入重要,但不会展开完整架构。

Loqua 是一款面向 Mac 的上下文感知语音输入工具。真正关键的变化,是从 transcript 转向 destination-aware writing:同一句话,在 Slack、Cursor、GitHub、Apple Notes 和代码编辑器里,应该落成不同的文本。

这是我们“语音 + 视觉 AI”思路的入门版本。音频、语言和多模态系统的公开研究,为这个领域提供了有用的词汇和方向;但 Loqua 的生产级栈是我们为 Mac 听写场景内部训练、内部优化的原创工作。

从转写到上下文

纯音频 ASR 回答一个问题:用户说了哪些词?听写还要回答第二个问题:这些词在当前光标位置应该变成什么?正是这个第二问题,让多模态语音输入变得必要。一段转写可以完全准确,却仍然不适合它要落入的目标位置。

当你在代码编辑器里听写时,标点、标识符、注释和选中文本都会影响结果。当你在邮件里听写时,语气和段落形状更重要。当你在任务工具里听写时,负责人和截止时间才是关键。屏幕感知语音输入会把这些可见线索变成写作时的约束。

为什么屏幕上下文会改变听写

同一句话会因为所在 App 不同而有不同含义。“Add a guard before fetch profile” 在 IDE 里应该变成贴近代码的文本,在 Linear 里应该变成一条任务,在 Slack 里则更像一个普通请求。只靠音频,很难稳定判断该选哪一种形态。

Loqua 的上下文层读取的是本地信号,比如当前 App、选中文本、附近可见文本,以及目标输入框类型。它不需要完整的屏幕叙事,也不需要理解你屏幕上的一切。它需要的是足够的本地证据:保留标识符,判断你是在插入还是编辑,并选择正确的输出形状。

光标处会发生什么变化

你说
"add a check that the user is logged in before we fetch the profile if not just redirect to sign in"
Loqua 写入(在 VS Code 中)
if (!user.isLoggedIn) {
  return redirect('/signin');
}
你说(同一句话)
"add a check that the user is logged in before we fetch the profile if not just redirect to sign in"
Loqua 写入(在 Linear 中)
在获取 profile 前添加登录校验。若用户未登录,重定向到 sign-in,而不是继续拉取 profile。

输出会变,是因为目标位置变了。这就是全模态听写作为一个产品类别的实际价值:上下文可以做出转写本身无法做出的写作决策。

隐私边界

屏幕上下文足够强大,因此边界必须清楚。Loqua 的上下文路径默认 local-first。当前 App、选中文本和附近可见内容只用于塑造这一次发言的输出,而不是生成一份通用的屏幕日志。

完整边界可以看 以隐私为设计前提的混合架构。简短版是:音频和屏幕上下文都被当作敏感的本地信号处理;可选的云端能力不会接收周围屏幕的原始内容。

想继续深入?

延伸阅读

如果想了解文献背景,可以从用于稳健语音识别的 Whisper、用于视觉指令微调的 LLaVA,以及用于跨模态对齐的 ImageBind 开始。这些链接用于解释领域脉络,不代表 Loqua 的来源声明。

常见问题

对 Loqua 来说,什么算屏幕上下文?
屏幕上下文指当前听写目标周围的本地信号:当前 App、选中文本、附近可见文本、文件类型、光标位置和输入框形态。Loqua 会用这些线索判断你的发言应该变成普通文字、任务、提示词,还是贴近代码的文本。
Loqua 会把截图发到哪里吗?
上下文路径默认 local-first。Loqua 使用从屏幕得到的信号来塑造当前这次发言,不需要把周围屏幕的原始内容发送给可选云端能力。完整边界请看隐私文章。
上下文会怎样影响延迟?
上下文会和语音识别并行收集。也就是说,当最终文本需要渲染时,目标位置的证据通常已经准备好了。这个架构面向的是 200ms 级交互,而不是缓慢的后处理调用。
为什么写代码时需要语音加视觉?
代码里有大量标识符、大小写、语法和选中区域,仅凭声音无法可靠还原。如果模型能看到光标附近的可见标识符,就可以保留那个名字,而不是写出一段泛化的转写。
这是一个会操作我屏幕的 Agent 吗?
不是。本文讨论的是听写,不是自主屏幕控制。Loqua 使用本地上下文,是为了在光标处写出更好的文本。它不会在你的 App 里四处浏览或执行操作,除非你明确使用另一个工具来做这件事。
更深入的架构应该从哪里读起?
可以先读《Loqua 全模态语音栈内部》,了解多模态指令流水线;再读《打造一个能看见你所见内容的听者》,看歧义消解;最后读《有意义的声音》,了解还在原型阶段的非词语音频方向。

今天就试试 Loqua

免费开始。Mac 原生。由每天都在使用它的算法研究者打造。

下载

更多 Loqua 博客文章

工程
全模态语音输入:多模态理解、MoE 与流式文本输出
工程
多模态语音识别:打造一个能看见你所见的监听器
工程
音频事件检测听写:词语之外有意义的声音
效率
语音生产力栈:我们实际用来写作、交付和思考的 9 个工具
教程
如何在 Mac 上用语音写代码:Cursor、VS Code 和 Claude Code 完整指南