JavaScript可通过Web Speech API实现语音识别,仅支持Chrome、Edge等Chromium内核浏览器;需检测兼容性、创建SpeechRecognition实例、设置属性、监听onresult等事件,并由用户手势触发start()获取识别文本。
JavaScript 可以通过浏览器原生的 Web Speech API 实现语音识别功能,无需后端或第三方 SDK,但仅支持较新版本的 Chrome、Edge 和部分基于 Chromium 的浏览器(Safari 和 Firefox 目前不支持 SpeechRecognition)。
SpeechRecognition 是 Web Speech API 的核心接口,用于将用户语音实时转为文本。需先检测浏览器兼容性,再创建实例:
window.SpeechRecognition 或 window.webkitSpeechRecognition 是否存在const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.continuous = false(单次识别)、recognition.lang = 'zh-CN'(中文识别)语音识别是异步过程,需绑定多个事件处理结果:
onstart:用户开始说话时触发onresult:识别成功后返回 SpeechRecognitionEvent,其中 event.results[0][0].transcript 是最可能的识别文本onend:识别结束(无论成功失败),可在此触发重新启动(若需持续监听)onerror:捕获错误(如网络中断、权限拒绝),建议检查 event.error 类型调用 recognition.start() 前,浏览器会自动弹出麦克风授权提示。注意以下细节:
start(),否则会被浏览器阻止recognition.interimResults = true 才能获得实时中间结果(边说边显示)以下是最小可运行片段(含基础容错):
if ('webkitSpeechRecognition' in window) {
const recognition = new webkitSpeechRecognition();
recognition.lang = 'zh-CN';
recogniti
on.interimResults = true;
recognition.onresult = (event) => {
const transcript = event.results[0][0].transcript;
console.log('识别结果:', transcript);
};
recognition.onerror = (event) => {
console.error('识别出错:', event.error);
};
document.getElementById('start-btn').onclick = () => {
recognition.start();
};
} else {
alert('当前浏览器不支持语音识别');
}