Skip to content

Web Speech API

浏览器原生的语音交互接口——由 W3C WebAudio Community Group 起草,分为两大独立模块:**SpeechSynthesis(文字转语音 TTS)**让网页朗读文本,**SpeechRecognition(语音转文字 STT)**让网页听懂用户说话。无需安装任何 SDK 或插件,直接用 JavaScript 调用 window.speechSynthesisSpeechRecognition(Chrome/Edge 中需带 webkit 前缀)即可。

两个模块的成熟度差异显著:SpeechSynthesis 已是 Baseline「Widely available」(2018 年 9 月起全主流浏览器支持),而 SpeechRecognition 仍是「Limited availability」——Chromium 系(Chrome/Edge/Opera)和 Safari(14.1+,带 webkit 前缀)原生支持,Firefox 默认不启用,需在 about:config 手动打开 media.webspeech.recognition.enable / force_enable 两个实验开关。

关键注意点:Chrome 的识别是服务器端引擎(音频上传至 Google 云端处理,离线不可用),且必须运行在 HTTPS(或 localhost)安全上下文并取得麦克风权限;SpeechGrammar / SpeechGrammarList 已从规范移除,浏览器仅为向后兼容保留接口但实际不再生效。在跨浏览器/离线/高精度场景,通常改用第三方方案(OpenAI Whisper API、AssemblyAI、浏览器 WASM 版 whisper.cpp 等)。

评价

优点

  • 零依赖原生:浏览器内置,无需引入第三方 SDK 或付费 API key
  • TTS 覆盖全:SpeechSynthesis 全主流浏览器支持(Baseline),可直接调用系统自带语音
  • 低延迟 STT:SpeechRecognition 在 Chrome/Edge 上接近实时返回 interim 中间结果
  • API 简洁:几十行 JS 即可完成「说话→文字」「文字→朗读」闭环
  • 隐私可控:TTS 完全本地执行,不上传任何数据
  • 可组合:与 LLM、WebRTC、Canvas 等无缝组合,构建语音助手/无障碍/教育应用

缺点

  • STT 兼容性差:Firefox 默认不支持,Safari 需前缀且功能不完整
  • Chrome STT 依赖云:音频上传服务器,离线不可用、有隐私与合规顾虑
  • 已废弃 Grammar 陷阱SpeechGrammarList 仍存在于 API 但无效,容易误导开发者
  • TTS 音色受限:只能用系统预装语音,音质/自然度不如商业 TTS(Azure/ElevenLabs)
  • 长文本 Bug:Chrome 的 speechSynthesis 在长文本时存在约 15 秒自动暂停的历史缺陷,需手动分句 resume
  • 无进度回传:识别置信度、说话人分离等高级能力缺失

文档地址

GitHub地址

幻灯片地址

Web Speech API

测试题

Web Speech API 测试题