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

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现跳转

js实现跳转

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

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…