SpeechSynthesisUtterance文字转语音播报

本文详细介绍了HTML5的SpeechSynthesisUtterance API,用于将文本转换为语音。内容包括其基本属性如语言、音调、速度和音量的设置,以及播放控制和事件监听。还提供了示例代码,演示了如何配置和使用这个API,并解决了浏览器声音播放的权限问题。此外,文章还展示了如何实现语音的循环播放。
摘要由CSDN通过智能技术生成

一、介绍

SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音.也包含一些配置项,指定如何去阅读(语言,音量,音调)等

二、基本属性

var speech = new SpeechSynthesisUtterance()

  • speech.lang 获取并设置话语的语言(en-US、zh-CN)
  • speech.pitch 获取并设置话语的音调 (值越大越尖锐,range:0-2, default:1, float)
  • speech.rate 获取并设置说话的速度 (值越大语速越快, range:0.1-10, default:1, float)
  • speech.text 获取并设置说话时的文本
  • speech.voice 获取并设置说话的声音
  • speech.volume 获取并设置说话的音量 (range: 0-1, default:1, float)
  • speech.onboundary
  • speech.onend 播放结束的回调
  • speech.onerror 播放出现错误的回调
  • speech.onmark 当读到标记文本时的回调
  • speech.onpause 播放暂停
  • speech.onresume 播放重启
  • speech.onstart 播放开始的回调

三、兼容性

在这里插入图片描述

四、案例

function speak (msg) {
	var speech = new SpeechSynthesisUtterance()
	speech.text = msg
	speech.pitch = 1 // 获取并设置话语的音调(0-2 默认1,值越大越尖锐,越低越低沉)
	speech.rate = 0.9 // 获取并设置说话的速度(0.1-10 默认1,值越大语速越快,越小语速越慢)
	speech.volume = 100 // 获取并设置说话的音量
	speech.lang = 'zh-CN' // 设置播放语言
	// 语音播报结束时的回调
    speech.onend = (event) => {
       // 语音播报完需要清空展示内容
    }
}
speak('你好呀,我叫...')

增加语音循环播放

speak (msg) {
	  const repeatNum = 3
      var speech = this.speech = new SpeechSynthesisUtterance()
      speech.text = msg
      speech.pitch = 1 // 获取并设置话语的音调(0-2 默认1,值越大越尖锐,越低越低沉)
      speech.rate = 0.9 // 获取并设置说话的速度(0.1-10 默认1,值越大语速越快,越小语速越慢)
      speech.volume = 100 // 获取并设置说话的音量
      speech.lang = 'zh-CN' // 设置播放语言
      // 增加控制播放次数
      let count = 1
      speechSynthesis.speak(speech)
      while (count < repeatNum) {
        speechSynthesis.speak(speech)
        count++
      }
  },
  this.speak('我爱中国')

五、bug解析

在这里插入图片描述
出现改警告的原因是浏览器禁止不经过用户允许直接播放声音,导致声音无法播放,解决办法:

  1. chrome://settings/content/sound添加允许播放声音的网站 (可自动语音播报)
    在这里插入图片描述
    2.增加按钮,手动点击播放声音
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值