如果你曾经释放了语音输入的快捷键,然后去寻找五分钟后复制的内容,却发现刚刚语音输入的句子出现在剪贴板上,这就是发生了什么,为什么它本应是临时的,以及如果它不是临时的该怎么办。
剪贴板真正发挥作用的地方
Coii VoiceInput 有两种方式将文本输入到你正在使用的文本框中。第一种是 macOS 的辅助功能 API,它会直接将你的转写文本传递给应用,不需要剪贴板,不会覆盖任何内容,也不需要恢复。大多数原生的 Mac 应用都支持这种方式,而且在可用时都会使用这种方式。
第二种是合成粘贴:应用会将你的转写文本暂时放到剪贴板上,然后发送一个 Cmd+V,接着将你开始语音输入前的剪贴板内容恢复回来。这种方式只会在那些文本框没有暴露给辅助功能的应用中发生——这比大多数人预期的要少,但并非没有。
两种方式都会将你的文字放入你离开的文本框中。在正常情况下,两者的区别是不可见的,这正是问题所在:当恢复步骤被延迟、中断或未被注意到时,看起来就像你的剪贴板被应用覆盖了,而不是被借用。
为什么看起来像是一个问题,而实际上通常不是
这个过程——复制内容、语音输入、发现你复制的内容变成了你语音输入的句子——有一个非常普通的解释:你在粘贴和恢复之间的那一小段时间查看了剪贴板。在一台快速的 Mac 上,这个窗口非常短,你需要几乎在释放快捷键的同一瞬间查看剪贴板才能看到。在一台较旧的机器上,或者系统中有其他任务在运行时,这个窗口会稍长一些,也更有可能被看到。
另一个解释是,你将语音输入的内容输入到一个使用剪贴板路径的应用中,然后立即复制了其他内容——比如一个网址、终端中的一行、另一个句子——在检查你原来的内容是否还在之前。此时恢复步骤没有内容可恢复,因为你是在之后用与 Coii VoiceInput 无关的内容覆盖了它。
步骤 1 —— 确定你的应用使用的是哪条路径
打开你最常使用语音输入的应用,然后在一个空白字段中输入一个简短的测试句子。在释放快捷键后,不要做任何其他操作,立即打开另一个应用并检查剪贴板(将内容粘贴到一个空白的 Notes 文档中可以很好地完成这个任务)。如果你复制的内容仍然完好无损,说明你一直在使用辅助功能路径,因此这些内容不适用于该应用。如果你看到的是语音输入的句子,说明该应用使用了剪贴板回退方式,因此下面的通用规则适用于它。
git log --oneline -20
第二步 —— 知道你真正需要担心哪些应用程序
终端和大多数终端模拟器是最明显的例子:没有用于接收文本的可访问性界面,因此所有语音输入都会通过剪贴板进行。在终端中语音输入 覆盖了该环境的其他不同之处。
第二类是基于网络技术构建的应用程序,但它们没有将文本框连接到系统的可访问性层——一些基于 Electron 的编辑器和少数嵌入浏览器的工具属于此类,而且具体哪些应用程序属于此类会随着这些应用程序的更新而变化,因此测试你自己的应用程序比依赖列表更可靠。
密码字段是相关但独立的情况,因为 macOS 本身会拒绝通过任何路径粘贴内容到某些密码字段中。语音输入在密码字段中是否有效 是一个独立的问题,也有独立的答案,这与剪贴板几乎无关。
普通原生应用程序——如邮件、备忘录、Slack、大多数代码编辑器和大多数文字处理器——使用可访问性路径。如果你主要在这些应用程序中使用语音输入,那么剪贴板回退是你可以查阅的内容,而无需实际影响你的工作流程。
第三步 —— 关注半秒,而不是整个会话
唯一可能发生问题的时间窗口是在释放和恢复之间的瞬间,而唯一能干扰它的方式是在这段时间内复制其他内容。实际上这意味着:在释放快捷键后的一瞬间,不要选择并复制其他内容。等待粘贴内容明显地出现,对于简短的句子来说,这几乎是瞬间完成的,而在此时你的剪贴板已经恢复正常,你合理地去复制其他内容时,剪贴板已经恢复了正常。
大多数人不需要刻意养成这个习惯——只有在你进行语音输入和复制的循环操作时才会遇到这种情况,这种情况并不常见。如果你正在语音输入提交信息,并且快速从多个来源提取文本,了解这一点是有价值的。
第四步 —— 知道 Universal Clipboard 为这个过程增添了什么
如果你启用了 Handoff 并且在多个附近的设备上使用了相同的 Apple ID,macOS 会自动在这些设备之间同步剪贴板——这是系统功能,而不是任何应用程序控制的。由于剪贴板回退会短暂地将你的转写文本放入剪贴板中,因此有可能在恢复发生之前,Universal Clipboard 会捕获到这个短暂的值,并将其提供到你的其他设备上。
这是 macOS 自己的同步行为,完全按照设计工作,无论剪贴板中当时包含什么内容——Coii VoiceInput 本身不会发送任何内容到其他地方;其网络使用仅限于一次获取模型、激活你的许可证以及启动时的时钟检查,即使在完全关闭 Wi-Fi 的情况下,语音输入也正常工作。如果你更希望你的语音输入句子不会出现在 iPhone 的 Universal Clipboard 建议中,那么关闭你不希望同步的设备上的 Handoff 是 macOS 的设置,而不是这个应用程序内部的设置。
第五步 —— 将历史记录视为记录,而非剪贴板
剪贴板从不是你语音输入文本的归宿——它只是一个中转站,正在前往你输入的文本框。真正的记录是你的历史记录:每一条语音输入都会被记录在这里,包括原始的转写文本和经过任何过滤器处理后的版本,无论粘贴是使用了可访问性还是剪贴板,无论是否成功粘贴。
如果你不确定粘贴是否成功,或者不确定剪贴板是否仍然包含你期望的内容,检查你的语音输入历史记录 而不是剪贴板。它能直接回答你的问题,而不是让你从一个被许多其他内容也使用的系统级插槽中推断出来。
第6步 —— 请记住剪贴板管理器会监视一切
如果你使用的是第三方剪贴板管理器 —— 那种会保存你曾经复制过的一切内容的可滚动历史记录,而不是仅仅记住最近一次复制内容的 macOS 自带功能 —— 它会在比任何单个应用程序更低的层级监视系统剪贴板,并会记录 Coii VoiceInput 的备用功能将内容写入剪贴板的那一刻,就像它记录任何其他写入剪贴板的内容一样。
这意味着你之后可以打开剪贴板管理器的历史记录,发现你的语音输入句子作为独立条目出现在其中,即使剪贴板本身在几秒钟后被恢复,而从你的角度来看,这句话从未取代过任何内容。这没有问题,也不需要在 Coii VoiceInput 的一侧进行任何配置来改变它 —— 剪贴板管理器的职责是注意到每一次写入,而合成粘贴在它运作的层级上,与你按下 Cmd+C 自己输入的内容是无法区分的。这个条目是无害的,大多数剪贴板管理器也允许你删除单个条目,如果你觉得转写文本出现在你复制的片段中会困扰你。
这也是另一个独立的原因,使得剪贴板备用功能绝不是你寻找语音输入内容的正确位置。剪贴板管理器的历史记录不会按你输入语音的哪个应用程序或相对于你的工作流程的时间进行索引 —— Coii VoiceInput 自己的历史记录会,而且它是你回到特定句子的更直接途径,无论什么其他内容正在监视你的剪贴板。
如果恢复真的失败了该怎么办
这种情况很少见,但如果在粘贴和恢复之间你输入的程序崩溃,或者系统上的其他内容在同一时间写入了剪贴板,就会发生这种情况。如果发生这种情况,有两件事是正确的。首先,剪贴板只保存一个内容,因此你之前复制的内容已经消失,无法从剪贴板本身恢复 —— 它没有撤销历史记录。其次,你的语音输入内容没有风险,因为它是在尝试粘贴之前就已经写入 Coii VoiceInput 的历史记录中,因此你没有因为失去恢复而丢失任何内容。
如果你注意到这种情况在一个特定的应用程序中重复出现,而不是作为一次性的事件,那么这个应用程序就是 报告以查看其焦点处理是否是实际原因 的候选者 —— 一个粘贴未能落地和一个粘贴落在了意外位置的粘贴,通常有相同的潜在触发因素。
常见问题解答
这是个错误,还是它本来就应该这样工作?
它本来就应该这样工作。剪贴板备用功能存在,是因为有些应用程序没有其他接收文本的方式,而恢复之前的内容是设计的一部分,使得在关键情况下(即绝大多数语音输入情况)它不会被注意到。
我每次语音输入都会发生这种情况吗?
不会。它只会在不支持可访问性路径的应用程序中发生,而这是大多数人日常语音输入所用应用程序中的少数情况。原生的 Mac 应用程序几乎总是完全跳过剪贴板步骤。
我可以检查某个应用程序是否在事后使用了剪贴板吗?
不能直接在事后检查,但你可以在 Step 1 中的描述中进行测试 —— 语音输入一条简短的句子,然后立即检查剪贴板。
粘贴速度慢是否意味着我的剪贴板风险更长?
恢复与粘贴完成绑定,因此较慢的应用程序确实意味着一个稍长的时间窗口。是的,但即使对于实际接收了按键的任何应用程序,这个时间仍然以千分之一秒为单位,你不需要为此做任何计划。
避免所有麻烦的习惯
如果你在意某个特定内容保留在剪贴板上 —— 比如你要粘贴到多个地方的链接,或者你要重复使用的代码片段 —— 最简单的规则是:在开始一段语音输入之前,先完成这一轮的粘贴操作。这样做不会耗费任何资源,因为在事后查看你的历史记录已经是你确认不确定的语音输入内容的方式,这意味着你同时处理的两个任务永远不会在同一个时间争夺同一个剪贴板位置。
对于大多数语音输入来说,进入大多数应用程序时,你根本不需要考虑这些 —— 可访问性路径是常见情况,而剪贴板备用方案会在你察觉之前就恢复它所借用的内容。一旦你知道自己的常用应用程序属于哪一类,就无需每次语音输入时都反复思考。Mac上的语音识别涵盖了文本如何从你的声音进入你正在工作的文本框的其余过程,而试用版的时长足够你看到自己的应用程序使用的是哪条路径。