当前位置:首页 > JavaScript

js实现文字转语音

2026-01-30 19:32:49JavaScript

实现文字转语音的方法

在JavaScript中,可以通过Web Speech API实现文字转语音(TTS)功能。以下是一个简单的实现方法:

// 创建SpeechSynthesisUtterance对象
const utterance = new SpeechSynthesisUtterance();
utterance.text = "这是要转换为语音的文字内容";

// 设置语音参数(可选)
utterance.rate = 1; // 语速 (0.1-10)
utterance.pitch = 1; // 音高 (0-2)
utterance.volume = 1; // 音量 (0-1)

// 获取可用的语音列表并选择(可选)
const voices = window.speechSynthesis.getVoices();
utterance.voice = voices[0]; // 选择第一个可用语音

// 播放语音
window.speechSynthesis.speak(utterance);

完整示例代码

<!DOCTYPE html>
<html>
<head>
    <title>文字转语音示例</title>
</head>
<body>
    <textarea id="textToSpeak" rows="4" cols="50">输入要转换为语音的文字</textarea>
    <br>
    <button onclick="speak()">朗读</button>
    <button onclick="stop()">停止</button>

    <script>
        function speak() {
            const text = document.getElementById('textToSpeak').value;
            const utterance = new SpeechSynthesisUtterance(text);

            // 可选:设置语音参数
            utterance.rate = 1;
            utterance.pitch = 1;

            window.speechSynthesis.speak(utterance);
        }

        function stop() {
            window.speechSynthesis.cancel();
        }
    </script>
</body>
</html>

注意事项

浏览器兼容性:Web Speech API在现代浏览器中得到良好支持,包括Chrome、Firefox、Edge和Safari,但在旧版浏览器中可能不可用。

js实现文字转语音

语音加载:某些浏览器可能需要等待语音引擎加载完成。可以监听voiceschanged事件:

js实现文字转语音

window.speechSynthesis.onvoiceschanged = function() {
    const voices = window.speechSynthesis.getVoices();
    // 现在可以安全地选择语音
};

高级用法

可以创建更复杂的TTS应用,包括:

  • 语音选择下拉菜单
  • 语速、音高和音量控制滑块
  • 多语言支持
  • 语音队列管理
// 语音选择示例
function populateVoiceList() {
    const voices = window.speechSynthesis.getVoices();
    const voiceSelect = document.getElementById('voiceSelect');

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

// 在voiceschanged事件中调用
window.speechSynthesis.onvoiceschanged = populateVoiceList;

替代方案

如果Web Speech API不满足需求,可以考虑:

  • 使用第三方TTS API服务
  • 后端TTS解决方案
  • 专门的TTS JavaScript库

这些方法通常需要网络连接或服务器支持,但可能提供更高质量的语音输出。

标签: 语音文字
分享给朋友:

相关文章

vue实现文字按钮

vue实现文字按钮

Vue 实现文字按钮的方法 在 Vue 中实现文字按钮可以通过多种方式完成,以下是几种常见的方法: 使用原生 HTML 按钮元素 可以通过 <button> 标签结合 CSS 样式实现文…

vue实现文字播放栏

vue实现文字播放栏

实现文字播放栏的基本思路 在Vue中实现文字播放栏(如跑马灯效果或滚动公告)通常涉及动态更新文本位置或内容,结合CSS动画或JavaScript定时器控制滚动效果。以下是两种常见实现方式: 使用…

vue实现语音

vue实现语音

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

vue实现语音播报

vue实现语音播报

使用 Web Speech API 实现语音播报 Vue 中可以通过 Web Speech API 的 SpeechSynthesis 接口实现语音播报功能。该 API 是现代浏览器原生支持的语音合成…

如何实现语音react

如何实现语音react

语音识别基础设置 在React中实现语音识别功能通常需要借助浏览器的Web Speech API或第三方库。Web Speech API提供了SpeechRecognition接口,允许应用程序直接访…

vue实现文字按钮

vue实现文字按钮

实现文字按钮的基本方法 在Vue中创建文字按钮可以通过多种方式实现,核心思路是利用按钮或可点击元素,通过CSS去除默认样式,使其呈现为纯文字形式。 模板部分 <template>…