Mac 免手打字:我每天都在用的设置

在 Mac 上免手打字,靠两个免费工具:macOS 的语音控制负责点按和在屏幕上移动,YapToText 负责你写的每一个字。所以是的,你可以不用手在 Mac 上打字,也不需要 Windows。我的手不够灵活,没法打字,我整天用 Mac,用的就是这套设置。

语音控制是 macOS 的一部分。YapToText 是我做的听写 App:免费,不需要账号,你的声音不会离开你的 Mac。下面讲这两个工具怎么分工,大约二十分钟能完成的设置,以及还有哪些地方会出问题。

在 Mac App Store 下载 YapToText免费下载。无需账号,没有锁定的功能。需要搭载 Apple 芯片的 Mac 和 macOS 14 或更高版本。 源代码在 GitHub 上。

App Store 海报,标题为 I created this because my hands don't work,配有无障碍图标和 YapToText 的水豚。
图1. YapToText 为什么存在,来自它的一张 App Store 海报:它首先是一个无障碍工具,由一个依赖它的人做出来。

步骤

  1. 在搭载 Apple 芯片、macOS 14 或更高版本的 Mac 上,从 Mac App Store 免费安装 YapToText。
  2. 允许使用麦克风,然后在“系统设置”,“隐私与安全”,“辅助功能”里打开 YapToText。如果你的手做不到,语音控制可以点按这个开关。
  3. 在 <span lang="en">Dictation</span> 页面选择听写键,并选 <span lang="en">Tap to start / stop</span> 或 <span lang="en">Hold to talk</span>。
  4. 在“系统设置”,“辅助功能”里打开“语音控制”,并说 Command mode,让它负责点按和滚动,但不把你的句子也打出来。
  5. 把光标放在文字要去的位置,用你的键或菜单栏面板里的 <span lang="en">Start Dictation</span> 按钮开始听写,说话,再用同样的方式停止。
  6. 在 <span lang="en">Settings, Advanced, Text output</span> 里,把需要听写后自动发送消息的聊天 App 添加到 <span lang="en">After a dictation lands</span> 下。

分开任务:移动和写作

我早期犯的错误,是想让一个工具做两件事。语音控制擅长命令。说 Click 加按钮的名称,按钮就被点按。说 Show numbers,所有它能点按的东西都会得到一个可以念出来的数字。像 Open Mail 和 Scroll down 这样的短语,说什么就做什么。这是在屏幕上移动,也是语音控制的用处。

长文字是另一项工作。文字转写出来之后我想要的,和转写本身无关:去掉口头填充词,把邮件排成邮件的样子,把识别器总是听错的名字拼对,还要留下一份可以回头查看的记录。这就是我用 YapToText 写作的原因。Modes 决定你的话会怎样处理,Auto mode 替你选模式,Dictionaries 修正识别器听错的地方,Quick Edit 修改已经存在的文字,History 保存你最近的听写,包括听到的内容和送出的内容。

语音控制负责移动和点按,YapToText 负责写作。我用它的一天很平常:邮件、消息,还有这个 App 自己代码里的注释,都是听写的。

大约二十分钟完成设置

本页靠上的编号步骤就是完整的流程。其中有三步可能出问题,下面是每一步要检查的地方。

第 1 步:从 Mac App Store 安装

  • 操作: 从 Mac App Store 安装 YapToText。它需要搭载 Apple 芯片的 Mac 和 macOS 14 或更高版本。
  • YapToText: 安装包里自带两个模型,语音模型和整理模型,所以第一次启动就可以断网听写。
  • 确认: 它打开后显示欢迎界面。Homebrew 版本是例外:第一次听写之前需要先下载语音模型,安装指南讲了怎么做。

第 2 步:打开“辅助功能”,需要的话用语音操作

  • 操作: macOS 询问时允许使用麦克风,然后在欢迎界面里点按 Accessibility 旁边的 Continue,或者在 YapToText 的 Home 页面点按 Grant。
  • macOS: 带你前往“系统设置”,“隐私与安全”,“辅助功能”。App 不能自己打开这个开关,所以要由你来做:语音控制可以按名称或用 Show numbers 点按这个开关,或者让帮你设置的人拨一下。
  • 确认: 欢迎界面里 Accessibility 显示为 Granted,Home 页面上的 Get set up 卡片也消失了。没有它,每次听写仍然会转写,但文字会落在剪贴板上,而不是光标处。

第 5 步:做第一次听写

  • 操作: 点按一条备忘录,用你的按键或 Start Dictation 按钮开始听写,说一句话,再用同样的方式停止。
  • YapToText: 把你的声音显示成波形,把你的话边说边显示出来,然后输入到光标处。启动后的第一次听写要等一会儿,让模型加载。
  • 确认: 这句话在备忘录里。如果没有,第一次听写指南会带你走一遍。

还有一个设置改变了我的一天:After a dictation lands,在 Settings, Advanced, Text output 里。添加一个 App,选择 Press Return 或 Press Command Return,你的话落下的那一刻就会按下那个键,所以听写的消息不用再说一条命令就能发出去。按键与快捷键页面讲了这个 App 监视的其他每个键。

不碰任何东西就开始听写

有三种方式,都不需要手放在键盘上:

  • 任何能按下一个键的东西。 触发键可以是任何单个键,不只是修饰键,所以能发送按键的开关或脚踏板都可以启动它:轻按一次开始,再轻按一次停止,或者按住说话。我没有测试过每一种开关接口,单键听写指南里有一个十秒钟的测试,可以测你的那种。
  • Start Dictation 按钮。 点按菜单栏里的水豚会打开一个小面板,顶部的按钮写着 Start Dictation,作用和按键一样。菜单栏页面介绍了这个面板的其余部分。
  • 静音。 打开 Auto-stop after silence(在 Dictation 页面的 Recording 卡片里)后,听写会在安静 0.5 到 5 秒后结束,所以你不必自己停止它。
YapToText 的菜单栏面板:Start Dictation、模式和麦克风选择器、Transcribe file、Regenerate 和 Insert last。
图2. 点按水豚,Start Dictation 就在面板顶部。它的作用和按键一样,可以用指针或语音控制来点按。

语音控制按名称点按控件,所以这个按钮给了它一个可以瞄准的目标:

说: 对语音控制说,水豚的面板已经打开。

Click Start Dictation

结果: 语音控制按名称点按这个按钮,听写就开始了,就像你按了那个键。如果它找不到这个名称,就说 Show numbers,再说按钮的编号,或者说 Show grid 来指定屏幕上的任何位置。同样的两条命令也能点到水豚并打开面板。这是各个部分配合的方式,我还没有对语音控制做完整的测试。

录音时,浮动面板有暂停、停止并插入、取消三个按钮,菜单栏面板的顶部显示 Cancel、Pause 和 Stop and insert,所以听写可以用控件结束,而不是靠按键。没有唤醒词:听写在你启动它的时候才开始。每次听写结束约一秒后,麦克风就会释放,除非你打开 Keep the microphone warm,所以中间没有任何东西在监听。

用语音改正你说的话

听写刚落下之后,30 秒内,让你的下一次听写正好是一句固定的话,App 就会编辑而不是输入:

说: 作为整个下一次听写,就在文字刚落下之后。

scratch that

结果: 你刚做的那次听写被撤回。replace X with Y 的方式相同,就地替换一个词或短语。只有完全一致的整句才算数。

更大的改动用 Quick Edit。选中文字(用语音控制,通过语音来选),然后轻按 Quick Edit 键,说出要改的内容:make this shorter、fix the grammar、translate it to Spanish、capitalize this。改写的结果会就地替换选中的内容。完全不用按键时,菜单栏面板里的 Regenerate 可以把选中的文字按任一模式改写,也可以用 Make Concise 或 Fix Grammar & Spelling 这样的一次性操作。一个错字永远不必让你回到键盘。Quick Edit 页面有可以说的内容清单。

YapToText 的 Quick Edit 页面:设在 Right Option 上的 Quick Edit 键、Corrections by voice、弹出位置和颜色。
图3. 两种修改都在 Quick Edit 页面:Corrections by voice 用于 scratch that 和 replace X with Y,Quick Edit 键(Right Option)用于更大的改动。

Auto mode 在你说出第一个字之前就开始帮忙。选中你要回复的消息,开始听写,你的回复就会写得与它相配。Auto mode 页面解释了它读取什么,又不碰什么。

别让语音控制跟着一起打字

YapToText 录音时,语音控制还在监听。在它默认开启的 Dictation mode 下,不是命令的字词会被当成文字输入,所以你的句子可能被输入两次。Apple 的语音控制指南介绍了让它不碍事的两个控制:

说: 对语音控制说,在你用 YapToText 听写之前。

Command mode

结果: 语音控制只响应命令,忽略其他所有字词。听起来像命令的句子仍然可能被当成命令。

更严的一道围栏是:长时间听写之前说 Stop listening,之后说 Start listening。这适合用按键或开关启动的听写。如果你用语音启动,Command mode 就是那道围栏。在 Command mode 下,语音控制负责点按,YapToText 负责输入。我没有试过每一种组合,所以如果你的情况不同,请告诉我。

文字没落下,或者 Mac 发出提示音

  1. 看哪个窗口在最前面。 YapToText 从不输入到自己的窗口,所以在 YapToText 位于最前时开始的听写会进入剪贴板。点按你想用的 App,然后菜单栏面板里的 Insert last 会把上一次听写输入到那里。
  2. 打开“辅助功能”。 没有它,每次听写都会进入剪贴板。Get set up 卡片会一直留在 Home 页面,直到它被打开。
  3. 让提示音静下来。 Intelligent Insert 用看不见的按键读取光标周围的几个字,让句子中间的听写得到正确的大小写和间距,有些 App 会拒绝其中一个按键,于是 macOS 播放它的警告提示音。在“系统设置”,“声音”里把 Alert volume 一直调到最低,它只会让警告提示音静音,或者在 Dictation 页面开关下方的列表里,针对那个 App 关闭 Intelligent Insert。
  4. 看交付结果。 History 保存每次听写去了哪里、是怎么交付的,所以你能看到发生了什么而不是猜,也可以再次拷贝或插入。
  5. 为那个 App 固定一种方式。 在 Settings, Advanced 里,把这个 App 添加到 Per-app method 下,选择 Type character-by-character。
YapToText 的一条 History 记录,展开了流程详情:原始转写、整理后的转写、模式、交付、目标 App 和耗时。
图4. History 里一次听写的流程详情。Delivery 和 Target app 两行说明文字是怎么送出的、送到了哪里,所以你能看到发生了什么,而不是猜。

还有三件小事。从 1.5.1 起,在 Terminal、iTerm2 和其他终端里不再读取光标周围的文字,因为那里这些按键是快捷键。启动后的第一次听写要等模型加载。Quick Edit 无法读取密码栏里选中的内容。故障排除指南和 Intelligent Insert 页面有其余的内容。

你不必换到 Windows

每个论坛帖子都这么说,而且这么说有真实的来由。Dragon 曾经是用语音操作电脑的标准,据其停止支持通知,Nuance 自 2018年10月22日起停产 Mac 版 Dragon Professional Individual,此后不再有更新。通常的建议是在虚拟机里运行 Windows 并为它购买 Dragon,但 Nuance 自己的支持页面写明,Parallels for Mac 不支持 Dragon Professional。

即使能运行,虚拟机也意味着要在第一个操作系统里,再用语音操作第二个操作系统,有两套命令,也有两个地方放焦点。我不想这样。YapToText 免费,没有付费方案,没有锁定的功能,语音控制是 macOS 的一部分。如果你本来就整天用语音操作某个 Windows 程序,为这一件事留一台 Windows 电脑是合理的选择。写作和在 Mac 上移动,你可以留在 Mac 上。Dragon 替代方案页面把 Dragon 的每个习惯对应到了这里的等价做法。

如果你也看不清屏幕

浮动面板是视觉的,所以这个 App 也会向 VoiceOver 播报:Listening、Transcribing、Cleaning up、任何错误,以及文字落下或听写被取消的那一刻,即使没有 App 窗口在最前面。面板的控制在各处都是同样三个:暂停和继续、停止并插入、取消。

如果面板超出了你的需要,就在 Dictation 页面的 Pop-up 卡片里关闭 Show the floating recording panel。听写的运作不变,菜单栏里的水豚仍然会显示正在录音和转写。Settings, General 里的 Play start and stop sounds 会在两端各加一个声音。为配合 VoiceOver 而设计,说的是代码层面。完整的测试还没有进行。无障碍总览有其余的内容,如果你的设置里有什么和我写的不一样,我宁愿听到这个,也不愿听到别的。

紧凑布局的 YapToText 面板:一个实时波形,旁边是取消、暂停和停止按钮,一个布局按钮,以及一个打开 App 的按钮。
图5. Compact 布局里的取消、暂停和停止。开启 VoiceOver 后,每一步也会被播报,面板还可以整个关闭。

小结

  • 语音控制负责移动。 它在 Command mode 下负责点按、滚动和打开 App。
  • YapToText 负责文字。 一个键,一个会按下它的开关,或者 Click Start Dictation,文字就落在光标处。
  • 用语音修改。 你有 scratch that、replace X with Y、Quick Edit,以及菜单栏面板里的 Regenerate。

如果某种状况影响你的手能做什么,震颤、帕金森病、多发性硬化症和渐冻症的听写讲了先设置什么,为年长的父母设置听写则讲了怎么为别人完成这些。

两个工具都免费,都不需要 Windows。如果这里有什么和你看到的不一样,请在 GitHub 上告诉我。每一条 issue 我都会看。

在 Mac App Store 下载 YapToText免费下载。无需账号,没有锁定的功能。需要搭载 Apple 芯片的 Mac 和 macOS 14 或更高版本。 源代码在 GitHub 上。

关于作者。 Ryleigh Newman 从事软件开发,用手打字有困难,每天都用本站介绍的 YapToText 听写。本页译自英文。App 的界面和网站的其他页面是英文的。 进一步了解这个项目(英文)。

指南

更多指南(英文)

资料来源

常见问题

可以完全不用手使用 Mac 吗?

可以,写作和大部分移动操作都行。macOS 自带的语音控制负责点按、滚动和打开 App,YapToText 负责输入文字。“系统设置”里那个只需设置一次的“辅助功能”开关,可以用语音点按,也可以让帮手拨一下。

Mac 上有免手打字的软件吗?

有。语音控制是 macOS 自带的,YapToText 是一款免费的听写 App,可以输入到任何 App,用一个键启动,或者用语音控制点按它的 Start Dictation 按钮。两者都在 Mac 上运行。

可以同时用 YapToText 和语音控制吗?

可以。语音控制负责点按,YapToText 负责文字。先对语音控制说 Command mode,让它忽略不是命令的字词,而不是把你的句子也打出来。

语音控制和听写是一回事吗?

不是。听写把语音变成文字。语音控制让你用命令在 Mac 上移动、使用屏幕上的内容,以及听写和编辑文字。它们是“系统设置”里两个独立的功能,YapToText 的设计是与两者配合使用。

要用 Dragon 就必须换到 Windows 吗?

不用。Nuance 在 2018年10月停产了 Mac 版 Dragon,其支持页面写明 Parallels for Mac 不支持 Dragon Professional。语音控制加 YapToText 可以免费完成在 Mac 上的移动和写作。

Mac 上的免手听写需要联网吗?

不需要,从 Mac App Store 安装的 YapToText 不需要,因为两个模型都在 App 里。唯一用到网络的是你自己发起的模型下载。Apple 听写也可以在设备上运行,“键盘”设置会显示你的是否如此。