使用 Web Speech API 构建基于浏览器的语音转文字应用

发布: (2025年12月13日 GMT+8 01:49)
4 min read
原文: Dev.to

Source: Dev.to

Cover image for Building a Browser-Based Voice-to-Text App with the Web Speech API

为什么选择基于浏览器?

隐私是主要卖点。音频永远不会离开用户的设备。没有上传、没有存储、没有 GDPR 的麻烦。对于一个简单的转录工具来说,这是一大优势。

Web Speech API 基础

API 出奇地简单:

const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();

recognition.continuous = true;
recognition.interimResults = true;
recognition.lang = 'en-US';

recognition.onresult = (event) => {
  const transcript = Array.from(event.results)
    .map(result => result[0].transcript)
    .join('');
  console.log(transcript);
};

recognition.start();

就这么简单。现在你已经拥有实时语音转文字功能。

没有人提醒你的坑

1. 浏览器支持不一致

Chrome 使用 Google 的服务器(讽刺的是,并非完全本地)。Safari 使用设备本地处理。Firefox 的支持有限。务必检查:

if (!('SpeechRecognition' in window || 'webkitSpeechRecognition' in window)) {
  // Show fallback UI
}

2. 会随机停止监听

API 有在沉默后自动停止的习惯。你需要重新启动它:

recognition.onend = () => {
  if (shouldKeepListening) {
    recognition.start();
  }
};

3. 没有标点符号

API 返回的只是原始单词,没有句号、逗号或大小写。你需要自行处理:

function addAutoPunctuation(text) {
  // Add period after pause patterns
  // Capitalize after periods
  // Handle common patterns like "question mark" → "?"
}

4. 语言切换需手动

你需要自行构建语言选择器,并相应地设置 recognition.lang。API 支持 100 多种语言,但不会自动检测。

何时不该使用 Web Speech API

对于超出基本口述的需求,你会遇到瓶颈:

  • 音频文件转录 — API 只处理实时麦克风输入
  • 说话人识别 — 不支持
  • 时间戳 — 不提供
  • 准确性要求 — 企业级场景需要 Whisper、AssemblyAI 或 Deepgram

我最终构建了一个混合方案:免费层使用 Web Speech API 进行实时口述,专业层使用 Whisper 处理文件上传并提供更高准确度。

本地语言 SEO 加分

一个意外的收获:我为不同语言构建了本地脚本 UI 的页面。印地语页面实际上是用印地语编写的(हिंदी में वॉइस टू टेक्स्ट),而不仅仅是英文的 “Hindi Voice to Text”。

结果:在本地语言搜索中排名上升,竞争远低于英文关键词。

试一试

我已将其实现于 voicetotextonline.com — 免费使用,基础转录无需注册。

如果你正在构建类似的东西,欢迎在评论中提问,我会尽力回答。

Back to Blog

相关文章

阅读更多 »

React 入门

什么是 React?React 是一个用于构建用户界面的 JavaScript 库。它由 Facebook(Meta)开发,现在是开源的,广泛用于网页开发。