当前位置:首页 > JavaScript

js实现听书

2026-01-31 16:46:19JavaScript

实现思路

通过Web Speech API中的SpeechSynthesis接口可以实现文本转语音功能。该API允许浏览器将文本内容转换为语音播放,适合实现听书功能。

js实现听书

基础代码实现

// 获取语音合成对象
const synth = window.speechSynthesis;

// 创建语音实例
function speak(text) {
    if (synth.speaking) {
        synth.cancel();
    }

    const utterance = new SpeechSynthesisUtterance(text);
    utterance.rate = 1; // 语速 (0.1-10)
    utterance.pitch = 1; // 音高 (0-2)
    utterance.lang = 'zh-CN'; // 中文普通话

    synth.speak(utterance);
}

// 调用示例
speak("这是一段测试文本");

功能扩展

添加暂停/继续控制功能

js实现听书

let isPaused = false;

function togglePlayback() {
    if (isPaused) {
        synth.resume();
        isPaused = false;
    } else {
        synth.pause();
        isPaused = true;
    }
}

语音选择

获取并切换可用语音

function populateVoices() {
    const voices = synth.getVoices();
    const voiceSelect = document.getElementById('voice-select');

    voices.forEach(voice => {
        const option = document.createElement('option');
        option.textContent = `${voice.name} (${voice.lang})`;
        option.setAttribute('data-name', voice.name);
        voiceSelect.appendChild(option);
    });
}

// 需要等待语音列表加载
synth.onvoiceschanged = populateVoices;

注意事项

  1. 部分浏览器需要用户交互(如点击事件)后才能触发语音播放
  2. 移动端可能存在自动暂停限制,需要保持屏幕常亮
  3. 不同浏览器支持的语音质量和语言可能有差异

完整示例

<!DOCTYPE html>
<html>
<body>
    <textarea id="text-input" rows="10"></textarea>
    <button id="play-btn">播放</button>
    <button id="pause-btn">暂停/继续</button>
    <select id="voice-select"></select>

    <script>
        document.getElementById('play-btn').addEventListener('click', () => {
            const text = document.getElementById('text-input').value;
            speak(text);
        });

        // 其他功能实现代码...
    </script>
</body>
</html>

该实现方案主要依赖浏览器原生API,无需额外库,兼容现代浏览器。对于更复杂的需求,可以考虑结合Web Audio API进行音频处理,或使用第三方TTS服务获得更高质量的语音合成效果。

标签: js
分享给朋友:

相关文章

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…