当前位置:首页 > JavaScript

js实现文字转语音

2026-04-04 11:17:10JavaScript

使用Web Speech API实现文字转语音

Web Speech API是浏览器原生支持的语音合成接口,无需额外库即可实现文字转语音功能。

// 创建语音合成实例
const synth = window.speechSynthesis;

// 创建语音文本对象
const utterance = new SpeechSynthesisUtterance('需要朗读的文本内容');

// 设置语音参数
utterance.voice = synth.getVoices()[0]; // 选择语音库
utterance.rate = 1; // 语速 (0.1-10)
utterance.pitch = 1; // 音高 (0-2)
utterance.lang = 'zh-CN'; // 语言代码

// 执行语音合成
synth.speak(utterance);

语音参数详细配置

可通过以下属性定制语音效果:

  • volume: 音量 (0-1)
  • rate: 语速,正常为1
  • pitch: 音调,正常为1
  • voice: 通过speechSynthesis.getVoices()获取的语音对象
  • onstart/onend: 开始/结束回调函数
utterance.onend = function() {
    console.log('朗读完成');
};

获取可用语音列表

浏览器支持的语音列表可通过异步获取:

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

// Chrome需要等待voiceschanged事件
speechSynthesis.onvoiceschanged = loadVoices;
loadVoices(); // 首次调用

兼容性处理

对于不支持Web Speech API的浏览器,可考虑以下方案:

js实现文字转语音

  • 使用第三方TTS服务API(如Google Cloud TTS)
  • 引入polyfill库
  • 降级为音频文件播放

注意事项

  • 某些浏览器要求语音合成必须在用户交互事件中触发(如点击事件)
  • iOS设备有自动暂停背景音频的限制
  • 不同浏览器支持的语音质量和语言可能有差异

以上实现方案在现代浏览器中包括Chrome、Firefox、Edge等均可使用,Safari部分版本可能需要前缀。

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

相关文章

vue实现文字复制

vue实现文字复制

Vue 中实现文字复制的几种方法 使用 document.execCommand 通过调用浏览器的 execCommand 方法实现复制功能。该方法在现代浏览器中仍可用,但逐渐被新的 Clipboar…

vue实现语音唤醒

vue实现语音唤醒

实现语音唤醒的基本原理 语音唤醒通常通过监听麦克风输入,检测特定关键词或短语触发操作。Vue中可结合Web Speech API或第三方库实现。 使用Web Speech API实现 Web Spe…

vue实现语音对话

vue实现语音对话

Vue 实现语音对话的方法 使用 Web Speech API Web Speech API 提供了浏览器原生支持的语音识别和语音合成功能。在 Vue 项目中可以直接调用该 API 实现语音对话。…

vue实现文字滚动

vue实现文字滚动

Vue 实现文字滚动的方法 使用 CSS 动画实现文字滚动 通过 CSS 的 animation 和 @keyframes 实现文字滚动效果,适用于简单的横向或纵向滚动需求。 <templat…

vue实现文字抖动

vue实现文字抖动

实现文字抖动的几种方法 在Vue中实现文字抖动效果可以通过CSS动画或JavaScript库实现。以下是几种常见方法: 使用CSS关键帧动画 在Vue组件的<style>部分添加关键帧动…

vue实现文字扩展

vue实现文字扩展

Vue 实现文字扩展的方法 在 Vue 中实现文字扩展(如展开/收起功能)可以通过动态绑定样式或内容来实现。以下是几种常见的实现方式: 动态绑定 class 或 style 通过 v-bin…