当前位置:首页 > JavaScript

js实现文字转语音

2026-04-04 11:17:10JavaScript

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

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

js实现文字转语音

// 创建语音合成实例
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);

语音参数详细配置

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

js实现文字转语音

  • 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的浏览器,可考虑以下方案:

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

注意事项

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

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

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

相关文章

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

vue实现语音通知

vue实现语音通知

Vue 实现语音通知的方法 使用 Web Speech API Web Speech API 提供了语音合成功能,可以直接在浏览器中实现语音通知。Vue 中可以封装该 API 为可复用的组件或工具函数…

vue实现文字轮播

vue实现文字轮播

实现文字轮播的几种方法 使用CSS动画实现 通过CSS的animation和@keyframes实现无缝轮播效果,适合简单的文字滚动需求。 <template> <div cl…

vue如何实现语音叫号

vue如何实现语音叫号

Vue 实现语音叫号功能 准备工作 确保项目中已安装必要的依赖,如 Web Speech API 或第三方语音合成库(如 speak-tts)。浏览器需支持 SpeechSynthesis API(现…

vue实现文字自动滚动

vue实现文字自动滚动

实现文字自动滚动的Vue方法 使用CSS动画和Vue结合实现文字自动滚动效果,适用于公告栏、跑马灯等场景。 基础CSS动画实现 <template> <div class="…

vue实现语音实时通信

vue实现语音实时通信

实现语音实时通信的技术方案 在Vue中实现语音实时通信,可以结合WebRTC技术实现点对点(P2P)音频传输。以下是具体实现方法: 获取用户麦克风权限 使用浏览器提供的getUserMedia AP…