当前位置:首页 > JavaScript

js实现语音播报

2026-01-30 22:20:13JavaScript

使用Web Speech API实现语音播报

Web Speech API是浏览器原生支持的语音合成接口,无需额外依赖库。以下为基本实现方法:

// 创建语音合成对象
const utterance = new SpeechSynthesisUtterance('需要播报的文本内容');

// 设置语音参数(可选)
utterance.voice = speechSynthesis.getVoices()[0]; // 选择发音人
utterance.rate = 1.0; // 语速 (0.1-10)
utterance.pitch = 1.0; // 音高 (0-2)
utterance.volume = 1.0; // 音量 (0-1)

// 触发语音播报
speechSynthesis.speak(utterance);

获取可用语音列表

不同浏览器/操作系统支持的语音类型不同,可通过以下方式获取:

js实现语音播报

speechSynthesis.getVoices().forEach(voice => {
  console.log(voice.name, voice.lang);
});

注意:部分浏览器需要等待voiceschanged事件触发后才能获取列表:

js实现语音播报

speechSynthesis.onvoiceschanged = () => {
  const voices = speechSynthesis.getVoices();
};

语音播报控制方法

// 暂停当前播报
speechSynthesis.pause();

// 恢复暂停的播报
speechSynthesis.resume();

// 取消所有待播报内容
speechSynthesis.cancel();

// 检查是否正在播报
speechSynthesis.speaking; // 返回布尔值

事件监听示例

utterance.onstart = (event) => {
  console.log('播报开始');
};

utterance.onend = (event) => {
  console.log('播报结束');
};

utterance.onerror = (event) => {
  console.error('播报出错', event.error);
};

兼容性注意事项

  1. 该API在Chrome、Edge、Firefox、Safari等现代浏览器中支持良好
  2. 部分移动端浏览器可能有特殊限制
  3. 企业微信等内置浏览器可能需要特殊配置
  4. 建议添加特性检测:
if ('speechSynthesis' in window) {
  // 支持语音合成
} else {
  console.warn('当前浏览器不支持Web Speech API');
}

高级用法示例

队列播报多个文本:

const texts = ['第一段', '第二段', '第三段'];
texts.forEach(text => {
  const msg = new SpeechSynthesisUtterance(text);
  speechSynthesis.speak(msg);
});

动态修改语音参数:

function speakWithSettings(text, options = {}) {
  const utterance = new SpeechSynthesisUtterance(text);
  Object.assign(utterance, options);
  speechSynthesis.speak(utterance);
}

// 使用示例
speakWithSettings('重要通知', {
  voice: speechSynthesis.getVoices().find(v => v.lang === 'zh-CN'),
  rate: 0.8,
  volume: 0.7
});

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

相关文章

vue实现语音

vue实现语音

Vue 实现语音功能 在 Vue 中实现语音功能通常涉及语音识别(Speech-to-Text)和语音合成(Text-to-Speech)。以下是具体实现方法: 语音识别(Speech-to-Tex…

js实现vr

js实现vr

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

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选框 co…