使用Html5自带API实现,SpeechSynthesisUtterance对象和speechSynthesis对象。
/**
* 播报
* @param {Object} text 播放内容
*/
startSpeech = (text)=>{
const speech = new SpeechSynthesisUtterance()
// 设置播放内容
speech.text = text
// 设置话语的音调(0-2 默认1,值越大越尖锐,越低越低沉)
speech.pitch = 0.8
// 设置说话的速度(0.1-10 默认1,值越大语速越快,越小语速越慢)
speech.rate = 1
// 设置说话的音量
speech.volume = 10
// 设置播放语言
speech.lang = 'zh-CN'
// 播放结束后调用
speech.onend = (event)=>{
}
// 加入播放队列
window.speechSynthesis.speak(speech)
}
/**
* 停止播报,停止所有播报队列里面的语音
*/
stopSpeech = () => {
window.speechSynthesis.cancel()
}
可能存在问题:
使用SpeechSynthesisUtterance进行语音播报文字的时候,发现刷新浏览器不能播放声音的问题
原因:浏览器对于语音,视频等会有限制,不能允许直接播放,必须进行至少一次点击事件
解决方案:随意点击页面上的内容,重新触发