当前位置:首页 > JavaScript

js实现语音播报

2026-04-04 14:08:42JavaScript

实现语音播报的基本方法

使用Web Speech API中的SpeechSynthesis接口可以实现文本转语音(TTS)功能。该API允许浏览器直接朗读文本内容,无需依赖第三方服务。

const utterance = new SpeechSynthesisUtterance('你好,这是一段测试语音');
window.speechSynthesis.speak(utterance);

自定义语音参数

可以调整语音的音调、语速、音量等参数,以及选择不同的语音引擎。

const utterance = new SpeechSynthesisUtterance();
utterance.text = '自定义语音参数测试';
utterance.rate = 1.2;  // 语速 (0.1-10)
utterance.pitch = 1.5; // 音调 (0-2)
utterance.volume = 0.8; // 音量 (0-1)

// 获取可用语音列表并选择
const voices = window.speechSynthesis.getVoices();
utterance.voice = voices.find(voice => voice.lang === 'zh-CN');

window.speechSynthesis.speak(utterance);

处理语音列表加载

语音列表可能需要时间加载,需要监听voiceschanged事件。

window.speechSynthesis.onvoiceschanged = function() {
    const voices = window.speechSynthesis.getVoices();
    console.log('可用语音:', voices);
};

控制播放状态

可以暂停、恢复或取消当前的语音播报。

// 暂停
window.speechSynthesis.pause();

// 恢复
window.speechSynthesis.resume();

// 取消
window.speechSynthesis.cancel();

事件监听

可以为语音播报添加各种事件监听,如开始、结束、错误等。

utterance.onstart = function(event) {
    console.log('语音开始播放');
};

utterance.onend = function(event) {
    console.log('语音播放结束');
};

utterance.onerror = function(event) {
    console.error('播放出错:', event.error);
};

浏览器兼容性处理

检查浏览器是否支持SpeechSynthesis API,并提供备用方案。

if ('speechSynthesis' in window) {
    // 支持语音合成
} else {
    console.warn('当前浏览器不支持语音合成API');
    // 可以降级使用第三方TTS服务或提示用户
}

实际应用示例

结合用户交互实现点击按钮播放语音的功能。

js实现语音播报

<button id="speakBtn">播放语音</button>
<textarea id="textInput" placeholder="输入要朗读的文本"></textarea>

<script>
document.getElementById('speakBtn').addEventListener('click', function() {
    const text = document.getElementById('textInput').value;
    if (!text) return;

    const utterance = new SpeechSynthesisUtterance(text);
    window.speechSynthesis.speak(utterance);
});
</script>

注意事项

语音合成API在不同浏览器和设备上表现可能不一致,特别是在移动设备上可能会有额外限制。某些浏览器可能需要用户交互(如点击事件)后才能触发语音播放。中文语音支持取决于操作系统和浏览器,Windows系统通常自带中文语音引擎,而MacOS可能需要额外安装。

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

相关文章

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

jquery js

jquery js

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

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现文件夹

js实现文件夹

使用JavaScript创建文件夹 在浏览器端的JavaScript中无法直接操作文件系统创建文件夹,这是出于安全考虑。但在Node.js环境中可以通过文件系统模块(fs)实现。 Node.js中使…

js 实现验证码

js 实现验证码

实现验证码的 JavaScript 方法 生成随机验证码 验证码通常由随机字符(数字、字母或混合)组成。以下代码生成一个 6 位随机验证码(数字和字母混合): function generateCa…

js 实现超链接

js 实现超链接

使用 HTML 的 <a> 标签 在 JavaScript 中动态创建超链接可以通过操作 DOM 实现。通过 document.createElement 创建一个 <a> 元…