当前位置:首页 > JavaScript

js实现语音识别

2026-01-30 18:21:23JavaScript

语音识别的基本实现

在JavaScript中实现语音识别主要依赖于Web Speech API中的SpeechRecognition接口。现代浏览器(如Chrome、Edge)原生支持该API,无需额外库。

浏览器兼容性检查

使用前需检测浏览器是否支持:

if ('webkitSpeechRecognition' in window || 'SpeechRecognition' in window) {
  // 支持语音识别
} else {
  console.error('当前浏览器不支持语音识别API');
}

初始化语音识别

创建识别实例并配置参数:

const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.continuous = false; // 是否连续识别
recognition.interimResults = true; // 是否返回临时结果
recognition.lang = 'zh-CN'; // 设置语言代码

事件监听处理

绑定关键事件处理器:

recognition.onstart = () => {
  console.log('语音识别启动');
};

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

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

recognition.onend = () => {
  console.log('识别结束');
};

控制识别流程

启动和停止识别的方法:

// 开始识别
document.getElementById('startBtn').addEventListener('click', () => {
  recognition.start();
});

// 停止识别
document.getElementById('stopBtn').addEventListener('click', () => {
  recognition.stop();
});

多语言支持示例

切换识别语言的实现:

function setLanguage(langCode) {
  recognition.lang = langCode;
}

// 中文识别
setLanguage('zh-CN');

// 英文识别
setLanguage('en-US');

实时结果显示

在页面上动态显示识别结果:

js实现语音识别

recognition.onresult = (event) => {
  const resultElement = document.getElementById('result');
  let interim = '';
  let final = '';

  Array.from(event.results).forEach((result, index) => {
    if (result.isFinal) {
      final += result[0].transcript;
    } else {
      interim += result[0].transcript;
    }
  });

  resultElement.innerHTML = `<p>${final}</p><em>${interim}</em>`;
};

注意事项

  • 需要用户授权麦克风权限
  • HTTPS环境下更可靠(本地开发localhost除外)
  • 不同浏览器可能有前缀差异(webkit前缀)
  • 移动设备上可能存在额外限制

完整示例代码

<!DOCTYPE html>
<html>
<body>
  <button id="startBtn">开始说话</button>
  <button id="stopBtn">停止</button>
  <div id="result"></div>

  <script>
    const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
    recognition.lang = 'zh-CN';
    recognition.interimResults = true;

    recognition.onresult = (event) => {
      const resultElement = document.getElementById('result');
      let transcript = '';

      for (let i = event.resultIndex; i < event.results.length; i++) {
        transcript += event.results[i][0].transcript;
      }

      resultElement.innerHTML = transcript;
    };

    document.getElementById('startBtn').addEventListener('click', () => {
      recognition.start();
    });

    document.getElementById('stopBtn').addEventListener('click', () => {
      recognition.stop();
    });
  </script>
</body>
</html>

标签: 语音识别js
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…