JavaScript可通过Web Speech API的SpeechRecognition接口实现前端语音转文本,主要支持Chrome和Edge,需HTTPS环境及用户授权麦克风权限;不支持时可降级为后端ASR服务。
JavaScript 本身不直接提供语音识别能力,但可以通过浏览器内置的 Web Speech API(特别是 SpeechRecognition 接口)实现语音转文本功能。目前该 API 主要在 Chrome 和 Edge(基于 Chromium)中稳定支持,Firefox、Safari 尚未全面支持或仅提供实验性支持。
这是当前最主流、无需后端即可在前端完成语音转文本的方式。需注意:必须在 HTTPS 环境下运行(本地 localhost 也允许),且用户需主动授权麦克风权限。
const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.continuous = false;(单次识别),recognition.lang = 'zh-CN';(中文识别)recognition.onresult = (event) => { const text = event.results[0][0].transcript; console.log(text); };
recognition.start();(会触发用户授权弹窗)由于 SpeechRecognition 并非所有浏览器都支持,实际项目中需做检测和提示:
if ('webkitSpeechRecognition' in window || 'SpeechRecognition' in window)
MediaRecorder 录制后上传至后端语音识别服务(如阿里云 ASR、腾讯云语音识别、Whisper API)实
际使用中容易遇到几个典型问题:
recognition.interimResults = true; 启用实时中间结果,并在 onresult 中区分 event.results[i].isFinal
recognition.lang = 'zh-CN';避免背景噪音;语速适中、吐字清晰效果更佳start()/stop())以下是一个最小可运行片段(保存为 HTML,在 Chrome 中打开即可测试):