当前位置:首页 > 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
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js手势实现

js手势实现

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

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

vue实现语音导航

vue实现语音导航

实现语音导航的基本思路 在Vue中实现语音导航功能,主要依赖浏览器的Web Speech API。该API包含语音识别(SpeechRecognition)和语音合成(SpeechSynthesis)…