当前位置:首页 > 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');
}

初始化语音识别

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

js实现语音识别

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('识别结束');
};

控制识别流程

启动和停止识别的方法:

js实现语音识别

// 开始识别
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');

实时结果显示

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

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实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js手势实现

js手势实现

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

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…