一、介绍
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 = msgspeech.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 = 3var speech = this.speech = new SpeechSynthesisUtterance()speech.text = msgspeech.pitch = 1 // 获取并设置话语的音调(0-2 默认1,值越大越尖锐,越低越低沉)speech.rate = 0.9 // 获取并设置说话的速度(0.1-10 默认1,值越大语速越快,越小语速越慢)speech.volume = 100 // 获取并设置说话的音量speech.lang = 'zh-CN' // 设置播放语言// 增加控制播放次数let count = 1speechSynthesis.speak(speech)while (count < repeatNum) {speechSynthesis.speak(speech)count++}},this.speak('我爱中国')
五、bug解析
出现改警告的原因是浏览器禁止不经过用户允许直接播放声音,导致声音无法播放,解决办法:
- chrome://settings/content/sound添加允许播放声音的网站 (可自动语音播报)
2.增加按钮,手动点击播放声音