SpeechSynthesis 语音与可访问的浏览器播放
将浏览器语音合成作为可选且由用户控制的增强功能,同时保留可读文本、键盘操作和可靠回退。
浏览器语音合成可以直接朗读文本,无需为每句话准备音频文件。它适合阅读辅助、语言学习和简短通知,但只是可选增强,不能替代页面文本或辅助技术。
相关内容可参考可访问交互验证、浏览器语言偏好和媒体偏好控制。
SpeechSynthesis 的用途
Web Speech API 提供 SpeechSynthesis 控制器和 SpeechSynthesisUtterance 对象。页面提供文本,浏览器和操作系统负责输出。朗读按钮必须对应可见文本;即使语音失败,文本也要保留。
getVoices() 初次调用可能返回空列表,voiceschanged 事件表示语音可能已准备好或发生变化。操作系统、浏览器、语言包、网络和嵌入式 WebView 都会影响语音名称、发音和可用性。不要承诺固定清单,也不要利用这些选项推断设备或身份。
语音可用性可能在会话中变化。
已安装语音也不保证固定发音。
文档语言可帮助选择初始值。
用户应能修改该选择。
加载选项时要保留可见文本。
空列表不应阻塞正常阅读。
语音可用性的变化
变化事件可能触发多次。
只有选择仍有效时才保留它。
缺少语音时要用简单文字说明。
不要把选项变成设备目录。
远程语音可能依赖网络连接。
也要测试未安装目标语言语音的情况。
朗读不需要精确的时间进度条。
让控制项保持稳定位置。
文本变化时应停止朗读或明确提示。
可见文本仍是主要依据。
不要悄悄朗读已经消失的内容。
简短提醒也应能通过文字回看。
朗读队列必须可以停止。
停止按钮应始终可用。
状态提示不应推动控制项。
为动态内容写明处理规则。
语音不应阻碍提交表单。
可访问的播放控制
用户控制与回退
语音应在明确操作后开始。长文本应提供暂停、继续、停止和重播;使用原生按钮、可见焦点和清晰的可访问名称。可以用简短状态播报“正在朗读本节”,但不要重复整段内容。键盘和辅助技术应能完成相同操作。
当语音缺失、延迟、消失或报错时,保留文本并给出下一步提示。开始新的朗读前取消旧请求,在结束、打断或组件卸载时清理状态。页面导航不应静默重新开始朗读。
隐私与选择
语音输出不需要枚举或上传全部语音。不要把完整数组、voiceURI 或加载时间写入分析日志。如果使用外部服务,应说明哪些文本会离开浏览器,并单独征得选择。关闭朗读的开关应可见、可恢复,且不隐藏文本。
实用检查
使用键盘、指针和屏幕阅读器测试空列表、延迟列表、语音替换及缺少目标语言的情况。确认暂停、取消、导航和重播后文本、焦点和状态提示仍然可用,并检查中文标签和图像替代文本是否自然。
人工检查可以对照朗读句子与可见文本。回到文本的路径应立即可理解。
只记录可观察的结果。
切换语言后再次运行测试。
确认内容仍可通过键盘访问。