上一篇
html5语音输入
- 行业动态
- 2025-05-13
- 1
HTML5支持语音输入,通过Web Speech API实现,需结合JavaScript调用,主流浏览器如Chrome兼容
HTML5语音输入详解
HTML5语音输入
HTML5通过Speech Recognition API
(部分浏览器称为Web Speech API
)提供了原生语音输入能力,允许用户通过麦克风直接将语音转换为文本,无需依赖第三方插件或服务,该功能适用于语音交互、无障碍设计、快速输入等场景。
浏览器兼容性
浏览器 | 支持情况 | 备注 |
---|---|---|
Google Chrome | 支持(需启用https 协议) | 推荐使用,API名称为SpeechRecognition |
Firefox | 部分版本支持(需手动开启实验功能) | 需在about:config 中启用speech-recognition |
Safari | macOS部分版本支持 | 需用户手动开启权限 |
Edge/Opera | 基于Chromium的版本支持 | 同Chrome机制 |
IE/旧版浏览器 | 不支持 | 需依赖第三方库 |
基础用法
检测浏览器支持
if (!('SpeechRecognition' in window) && !('webkitSpeechRecognition' in window)) { alert('浏览器不支持语音识别'); } const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
创建识别实例
const recognition = new SpeechRecognition(); recognition.lang = 'zh-CN'; // 设置语言(中文) recognition.continuous = true; // 是否连续识别
绑定事件回调
result
事件:返回识别结果recognition.onresult = (event) => { const transcript = event.results[0][0].transcript; // 获取文本 console.log('识别结果:', transcript); };
error
事件:处理错误recognition.onerror = (event) => { console.error('识别错误:', event.error); };
end
事件:监听识别结束recognition.onend = () => { console.log('识别结束'); };
启动与停止识别
recognition.start(); // 开始识别 // ... 用户说话后自动触发回调 recognition.stop(); // 停止识别
高级功能配置
配置项 | 说明 | 示例值 |
---|---|---|
lang | 识别语言(BCP 47格式) | 'en-US' (英语) |
continuous | 是否连续识别(非单次) | true /false |
interimResults | 是否返回临时结果(未最终确认的文本) | true /false |
maxAlternatives | 保留的备选结果数量 | 1 (仅返回最优结果) |
noiseSuppression | 是否抑制背景噪音 | true /false |
grammars | 自定义语法规则(需配合Grammar 对象) | 见下方示例 |
自定义语法示例
const grammar = '#BG COLOR BEGIN RED YELLOW BLUE END'; // 定义颜色关键词 recognition.grammars = [new SpeechGrammarList([new SpeechGrammar(grammar)])];
注意事项
权限要求
- 必须通过
HTTPS
协议访问(Chrome/Edge等浏览器强制要求)。 - 用户需授权麦克风权限,否则无法使用。
- 必须通过
隐私与性能
- 语音数据可能上传至浏览器厂商的服务器(如Google),敏感场景需谨慎。
- 持续识别会消耗较多设备资源,建议按需开启。
兼容性处理
- 低版本浏览器可引入第三方库(如
annyang
)实现部分功能。 - 移动端需测试设备麦克风兼容性。
- 低版本浏览器可引入第三方库(如
相关问题与解答
问题1:如何判断当前浏览器是否支持语音识别?
解答:通过检查window
对象是否包含SpeechRecognition
或webkitSpeechRecognition
属性:
if ('SpeechRecognition' in window || 'webkitSpeechRecognition' in window) { console.log('支持语音识别'); } else { console.log('不支持语音识别'); }
问题2:语音识别过程中出现NOT_ALLOWED_ERROR
错误怎么办?
解答:此错误通常由以下原因导致:
- 未通过
HTTPS
协议访问页面; - 未获取用户麦克风权限;
- 浏览器禁用了语音识别功能(如某些企业环境)。
解决方法:
- 确保页面使用
HTTPS
; - 检查浏览器权限设置;
- 提示