导读:本期聚焦于小伙伴创作的《如何使用JavaScript实现语音识别?Web Speech API完整教程》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用JavaScript实现语音识别?Web Speech API完整教程》有用,将其分享出去将是对创作者最好的鼓励。

如何在JavaScript中实现语音识别

语音识别是前端交互中非常实用的功能,它可以让网页直接接收用户的语音指令,实现免手动输入、语音控制等场景。在JavaScript中,我们可以借助浏览器原生的SpeechRecognition接口来实现语音识别能力,不需要额外引入第三方库,只要浏览器支持该接口即可使用。

浏览器兼容性说明

目前SpeechRecognition接口主要在Chrome、Edge等基于Chromium内核的浏览器中得到较好支持,Firefox和Safari的支持程度有限,使用前建议先判断接口是否存在,避免在不支持的浏览器中报错。

核心API介绍

实现语音识别的核心对象是SpeechRecognition,不同浏览器可能有前缀差异,比如Chrome中是webkitSpeechRecognition,我们可以通过兼容写法获取统一的接口:

  • SpeechRecognition:语音识别的主构造函数,实例化后可以得到识别对象
  • start():启动语音识别
  • stop():停止语音识别
  • onresult:识别到结果时触发的回调,结果会包含在事件对象的results属性中
  • onerror:识别过程中出现错误时触发的回调
  • continuous:设置是否连续识别,默认是false,识别到一次结果就停止;设为true会持续监听语音
  • lang:设置识别的语言,比如'zh-CN'表示中文

完整实现示例

下面是一个完整的语音识别示例,包含启动识别、停止识别、结果展示和错误处理逻辑:

// 兼容不同浏览器的SpeechRecognition接口
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
// 如果浏览器不支持,给出提示
if (!SpeechRecognition) {
  alert('当前浏览器不支持语音识别功能,请使用Chrome或Edge浏览器');
} else {
  // 实例化语音识别对象
  const recognition = new SpeechRecognition();
  // 设置识别语言为中文
  recognition.lang = 'zh-CN';
  // 设置为连续识别,持续监听语音
  recognition.continuous = true;
  // 是否返回临时结果,设为true可以实时获取识别中的内容
  recognition.interimResults = true;

  // 获取页面上的DOM元素
  const startBtn = document.getElementById('startBtn');
  const stopBtn = document.getElementById('stopBtn');
  const resultBox = document.getElementById('resultBox');
  const errorBox = document.getElementById('errorBox');

  // 启动语音识别
  startBtn.addEventListener('click', () => {
    resultBox.textContent = '正在监听语音...';
    errorBox.textContent = '';
    recognition.start();
  });

  // 停止语音识别
  stopBtn.addEventListener('click', () => {
    recognition.stop();
    resultBox.textContent += '\n已停止语音识别';
  });

  // 识别到结果时的回调
  recognition.onresult = (event) => {
    let finalTranscript = '';
    let interimTranscript = '';
    // 遍历所有识别结果
    for (let i = event.resultIndex; i < event.results.length; i++) {
      const transcript = event.results[i][0].transcript;
      // 判断是否是最终结果
      if (event.results[i].isFinal) {
        finalTranscript += transcript;
      } else {
        interimTranscript += transcript;
      }
    }
    // 展示结果,临时结果和最终结果分开显示
    resultBox.textContent = finalTranscript + interimTranscript;
  };

  // 识别错误时的回调
  recognition.onerror = (event) => {
    errorBox.textContent = `识别出错:${event.error}`;
    // 如果是没有语音输入的错误,提示用户
    if (event.error === 'no-speech') {
      errorBox.textContent += ',未检测到语音输入,请重试';
    }
  };

  // 识别结束时的回调
  recognition.onend = () => {
    console.log('语音识别已结束');
  };
}

配套HTML结构

上面的JavaScript代码需要配合以下HTML结构使用,添加控制按钮和结果展示区域:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>JavaScript语音识别示例</title>
  <style>
    .container {
      max-width: 800px;
      margin: 20px auto;
      padding: 0 20px;
    }
    .btn-group {
      margin: 20px 0;
    }
    button {
      padding: 10px 20px;
      margin-right: 10px;
      cursor: pointer;
    }
    #resultBox {
      width: 100%;
      height: 200px;
      border: 1px solid #ccc;
      padding: 10px;
      margin: 10px 0;
      white-space: pre-wrap;
      overflow-y: auto;
    }
    #errorBox {
      color: red;
      margin: 10px 0;
    }
  </style>
</head>
<body>
  <div class="container">
    <h3>语音识别演示</h3>
    <div class="btn-group">
      <button id="startBtn">启动语音识别</button>
      <button id="stopBtn">停止语音识别</button>
    </div>
    <div id="errorBox"></div>
    <div>识别结果:</div>
    <div id="resultBox"></div>
  </div>
  <script src="speech.js"></script>
</body>
</html>

使用注意事项

在实际使用语音识别功能时,需要注意以下几点:

  • 语音识别需要用户授权麦克风权限,浏览器会自动弹出权限请求弹窗,用户允许后才能正常使用
  • 识别准确率受环境噪音、语速、口音等因素影响,建议在相对安静的环境中使用
  • 连续识别模式下,识别对象可能会因为网络或权限问题自动停止,可以在onend回调中添加重新启动的逻辑
  • 如果需要在生产环境使用,建议添加更完善的兼容性处理和错误提示,提升用户体验

JavaScript语音识别SpeechRecognitionWeb_Speech_API前端交互浏览器兼容性 本作品最后修改时间:2026-05-23 23:35:20

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。