当前位置:首页 > JavaScript

js实现语音

2026-03-14 01:29:53JavaScript

语音识别(Speech Recognition)

在JavaScript中实现语音识别可以通过Web Speech API完成。该API提供SpeechRecognition接口,允许浏览器捕获并转换语音为文本。

// 创建语音识别对象
const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.lang = 'zh-CN'; // 设置语言为中文

// 开始识别
recognition.start();

// 监听识别结果
recognition.onresult = (event) => {
  const transcript = event.results[0][0].transcript;
  console.log('识别结果:', transcript);
};

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

语音合成(Speech Synthesis)

通过SpeechSynthesis接口可将文本转换为语音播放。支持调整语速、音调和音量。

js实现语音

// 创建语音合成对象
const utterance = new SpeechSynthesisUtterance('你好,这是语音合成示例');
utterance.lang = 'zh-CN'; // 设置语言
utterance.rate = 1.0; // 语速(0.1-10)
utterance.pitch = 1.0; // 音调(0-2)

// 播放语音
window.speechSynthesis.speak(utterance);

兼容性处理

不同浏览器可能需要前缀:

  • Chrome/Safari:webkitSpeechRecognition
  • Firefox/Edge:直接使用SpeechRecognition

建议初始化时做兼容性判断:

js实现语音

const recognition = window.SpeechRecognition || window.webkitSpeechRecognition;
if (!recognition) {
  alert('该浏览器不支持语音识别');
}

实时连续识别

通过设置continuousinterimResults可实现实时监听:

recognition.continuous = true; // 持续识别
recognition.interimResults = true; // 返回中间结果

recognition.onresult = (event) => {
  let interimTranscript = '';
  let finalTranscript = '';

  for (let i = 0; i < event.results.length; i++) {
    const transcript = event.results[i][0].transcript;
    if (event.results[i].isFinal) {
      finalTranscript += transcript;
    } else {
      interimTranscript += transcript;
    }
  }
  console.log('实时结果:', interimTranscript);
  console.log('最终结果:', finalTranscript);
};

语音控制命令

结合语音识别可实现语音控制功能:

recognition.onresult = (event) => {
  const command = event.results[0][0].transcript.toLowerCase();
  if (command.includes('打开')) {
    document.getElementById('light').style.backgroundColor = 'yellow';
  } else if (command.includes('关闭')) {
    document.getElementById('light').style.backgroundColor = 'gray';
  }
};

注意事项

  1. 浏览器可能需要用户授权麦克风权限
  2. HTTPS环境下功能更可靠,部分浏览器在HTTP下限制API使用
  3. 中文识别需设置langzh-CNzh-TW

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

相关文章

vue实现语音播报

vue实现语音播报

实现语音播报的基本方法 在Vue中实现语音播报功能,可以通过Web Speech API中的SpeechSynthesis接口来完成。该接口允许开发者将文本转换为语音并播放。 使用SpeechSyn…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

jquery js

jquery js

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

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…