Web Speech API的SpeechRecognition接口支持浏览器端语音转文本,需HTTPS环境和麦克风授权,仅Chrome/Edge稳定支持;通过start()/stop()控制识别,监听onresult等事件获取结果,中文识别受限于口音噪音且不支持离线优化。

JavaScript语音识别API主要指浏览器原生支持的 Web Speech API 中的 SpeechRecognition 接口(现多为 webkitSpeechRecognition),它能在用户授权后,实时将麦克风输入的语音流转换为文本。注意:该API目前仅在较新版本的 Chrome、Edge(基于Chromium)中稳定可用,Firefox、Safari暂不支持。
如何启用语音识别功能
需满足两个前提:页面通过 HTTPS(或 localhost)加载;用户已授予权限访问麦克风。
- 检测浏览器兼容性:检查
window.SpeechRecognition或window.webkitSpeechRecognition是否存在 - 创建识别实例:
const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)(); - 设置基本参数:如
recognition.continuous = false(单次识别)、recognition.lang = 'zh-CN'(中文识别)
监听关键事件并获取识别结果
语音识别是异步过程,需通过事件回调处理结果:
-
onresult:识别成功时触发,event.results[0][0].transcript即为识别出的文本 -
onstart:麦克风开始收音 -
onend:识别结束(可能因超时、静音或用户停止而触发) -
onerror:发生错误时(如无权限、网络问题),可提示用户重试
启动与停止识别的常用操作
不能自动持续监听,需由用户显式触发:
立即学习“Java免费学习笔记(深入)”;
- 调用
recognition.start()开始监听(会弹出麦克风权限请求) - 调用
recognition.stop()强制终止,立即触发onend和onresult(如有结果) - 建议加按钮控制,例如:“点击说话” → start(),“停止” → stop(),避免误触发
注意事项和常见限制
该API不是“离线全能方案”,实际使用中需管理预期:
- 中文识别准确率受口音、语速、背景噪音影响较大,简单短句效果较好
- 不支持自定义词库或领域优化(如专业术语),也无服务端模型训练能力
- 移动端支持有限,部分安卓Chrome可能因省电策略中断识别
- 若需更高精度、多语言或后台持续识别,应考虑接入第三方服务(如讯飞听见、Azure Speech、Google Cloud Speech-to-Text),它们提供REST API + SDK,但需后端中转或API密钥
基本上就这些。用好 Web Speech API 的关键是理解它的交互节奏——用户主动发起、浏览器短暂接管麦克风、结果异步返回。不复杂但容易忽略权限和事件时机。











