浏览器中的语音识别:深入探索 Web Speech API ...

作者:API传播员 · 2025-11-07 · 阅读时间:5分钟

在人工智能(AI)技术的推动下,语音识别已经成为数字交互的重要组成部分。通过 Web Speech API 的强大功能,我们可以轻松地将语音识别功能集成到 Web 应用程序中。本文将为您详细介绍如何使用 JavaScript 在浏览器中实现语音识别功能。


Web Speech API 概述

Web Speech API 允许开发者将语音数据集成到 Web 应用程序中。该 API 提供了两个主要接口:

  • SpeechRecognition:用于将语音转换为文本。
  • SpeechSynthesis:用于将文本转换为语音。

本文将重点探讨 SpeechRecognition 接口的实现。


实现语音识别

在开始之前,我们需要检查用户的浏览器是否支持 Web Speech API,并创建一个新的 SpeechRecognition 实例:

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

如果浏览器支持 SpeechRecognition 接口,可以通过 window 对象访问。如果浏览器仍使用 webkit 前缀,则可以使用 window.webkitSpeechRecognition 作为回退方案。


配置语音识别实例

SpeechRecognition 对象提供了多种属性可供配置:

recognition.continuous = true;
recognition.interimResults = true;
recognition.lang = "en-US";
  • continuous:设置为 true 时,即使用户暂停说话,语音识别服务也会持续监听。
  • interimResults:设置为 true 时,服务会返回临时(非最终)的识别结果。
  • lang:指定语音识别的语言(使用语言代码,例如 "en-US")。

捕获语音识别结果

Web Speech API 是基于事件驱动的。当语音识别服务返回结果时,会触发 onresult 事件。以下是捕获结果的示例代码:

recognition.onresult = function(event) {
  const current = event.resultIndex;
  const transcript = event.results[current][0].transcript;
  console.log(transcript);
};

event.results 是一个数组,包含已识别的短语。transcript 属性存储了转录的文本。


处理错误和不匹配事件

为了提升用户体验,我们需要处理错误事件以及无法匹配语音输入的情况:

recognition.onerror = function(event) {
  console.error('识别错误:' + event.error);
};

recognition.onnomatch = function() {
  console.log('未能匹配语音输入');
};

启动和停止语音识别

通过调用 start()stop() 方法,可以控制语音识别服务的启动和停止:

recognition.start();
// 停止识别
recognition.stop();

建议为用户提供显式的停止识别选项,例如按钮或特定的语音命令。


使用 Web Speech API 实现文本到语音

除了语音识别,Web Speech API 还支持文本到语音转换功能。通过 SpeechSynthesis 接口,我们可以将文本转换为语音输出。

以下是一个简单的示例:

if ('speechSynthesis' in window) {
  let speech = new SpeechSynthesisUtterance();
  speech.text = '你好,这是一个语音合成的例子。';
  speech.lang = 'en-US';
  speech.volume = 1;
  speech.pitch = 1;
  speech.rate = 1;
  window.speechSynthesis.speak(speech);
} else {
  console.log('您的浏览器不支持语音合成');
}

在这段代码中,我们首先检查浏览器是否支持语音合成功能。如果支持,则创建一个 SpeechSynthesisUtterance 实例,并设置其属性。最后,通过调用 speechSynthesis.speak() 方法,浏览器会将文本转换为语音输出。


利用 AI 实现动态语音合成

将 AI 技术与 SpeechSynthesis 接口结合,可以实现更智能和动态的语音合成。例如,利用 GPT-3 等 AI 模型,可以根据输入或上下文生成类人文本,并将其转换为语音。

示例:动态生成语音内容

假设我们有一个 API 路由 /generate-text,可以接收带有 prompt 的 POST 请求,并返回生成的文本。以下是实现示例:

import axios from 'axios';

let prompt = "早上好";
axios.post('/generate-text', { prompt: prompt })
  .then(response => {
    let utterance = new SpeechSynthesisUtterance();
    utterance.text = response.data.generatedText;
    utterance.lang = 'en-US';
    utterance.volume = 1;
    utterance.pitch = 1;
    utterance.rate = 1;
    window.speechSynthesis.speak(utterance);
  })
  .catch(error => {
    console.error(error);
  });

在此代码中,我们向 /generate-text 路由发送 POST 请求,并将生成的文本用作 SpeechSynthesisUtterance 的内容。这样可以实现动态、上下文感知的语音合成。


总结

通过本文的介绍,您已经了解了如何使用 JavaScript 和 Web Speech API 在浏览器中实现语音识别和文本到语音功能。随着 AI 技术的不断发展,这些功能为 Web 应用程序的用户交互提供了更多可能性。从语音识别到动态语音合成,开发者可以构建更加智能和人性化的应用程序。

原文链接: https://justinriggio.com/blog/voice-recognition-browser-web-speech-api-ai/