技术

语音控制

另见: Dragon NaturallySpeaking, Voice Control, Windows Speech Recognition, VoiceAccess

一类辅助技术,允许用户通过语音指令操作计算机。Dragon NaturallySpeaking(Windows)、macOS/iOS Voice Control、Windows Speech Recognition 均依赖无障碍名称与语音指令相匹配。

语音控制是一类辅助技术,允许用户通过语音指令操作计算机。主要系统包括:Dragon NaturallySpeaking(Windows,长期市场领导者)、macOS Voice ControliOS Voice Control(Apple 内置,随系统免费提供)、Windows Speech Recognition(Microsoft 内置)以及 Google Voice Access(Android)。

语音控制面向因运动障碍而难以或无法使用键盘、鼠标或触摸屏的用户——如重复性劳损、关节炎、震颤、各程度的瘫痪。该技术同样广泛用于提升工作效率(如律师和临床医生口述笔记),此类用户并无记录在册的残疾,但受益于免手操作方式。

语音控制如何解析指令

语音控制系统监听两类指令:

  1. 口述 — 用户将语音内容输入至当前焦点字段,系统对语音进行转录。
  2. 命令 — 用户说出操作或控件名称,系统将语音短语与可用命令注册表及屏幕上控件的无障碍名称进行匹配。

第二类指令与网页无障碍直接相关:当用户说出”点击提交”时,语音控制软件会查找无障碍名称为”提交”(或近似匹配)的元素,并向其派发点击事件。若”提交”按钮没有无障碍名称——例如它是未添加标签的 <button>、自定义 <div>,或仅有图标标签的按钮——语音控制用户便无法操作它。

对网页开发者的意义

语音控制无障碍的最重要原则:

每个交互元素都必须具有基于文本的无障碍名称,且与其可见标签相匹配。

具体实践:

  • 按钮需要可见文本。 <button>提交</button> 有效。仅有图标的按钮需添加 aria-label,其内容应与用户可能说出的词语一致——使用 aria-label="搜索" 而非 aria-label="放大镜图标"
  • 可见标签与无障碍名称必须匹配。 若按钮的可见文本为”提交”,但其 aria-label 为”发送表单”,则语音控制在用户说”点击提交”时可能无法找到该元素。WCAG 2.5.3(名称中的标签,A 级)要求无障碍名称必须包含可见标签文本。
  • 自定义控件需暴露其角色与名称。 <div role="button" aria-label="提交"> 有效;没有角色或名称的 <div onclick> 无效。
  • 避免幽灵控件。 语音控制叠加层(以数字标注每个可聚焦元素,供用户呼出)在可聚焦元素数量可控时效果更佳。隐藏但仍可聚焦的元素会使叠加层变得混乱。

语音控制与屏幕阅读器无障碍的交集

使网站对屏幕阅读器无障碍所需的无障碍名称和语义化 HTML 规范,同样使其对语音控制无障碍。两类技术都通过无障碍树运作,均依赖无障碍名称的存在与准确性。

主要区别在于:语音控制不需要 ARIA 实时区域(它不是屏幕阅读器),但它需要数字叠加层来暴露没有文本标签的控件——这正是文本标签对语音用户格外重要的原因。

语音控制的特有问题

  • 仅有图标的可见标签。 收藏按钮(心形图标)没有可见文本。用户说”点击收藏”,但无障碍名称为”保存”或根本不存在——产生不匹配。
  • 两个控件拥有相同的无障碍名称。 页面上有两个”阅读更多”链接,用户说”点击阅读更多”时,语音控制系统会显示数字消歧叠加层。这不是严重问题,只是效率较低。
  • 本地化标签不匹配。 用英语说出指令,但页面为法语,语音控制需要识别元素名称所用的正确语言。在 HTML 上正确设置 lang 属性有助于解决此问题。

最快捷的手动审计方法:开启 macOS Voice Control 或 Windows Speech Recognition,尝试完全通过语音使用网站——无法激活的控件在五分钟内便会显现。