前言
平时在做项目的过程中,有遇到场景是客户要求播放语音的场景,比如:无障碍朗读,整篇文章实现朗读,文字转语音,文字转语音播放等等。
在不使用第三方API
接口的情况下,这里需要js
来实现文字转语音播放的功能。能想到的也就是利用html5
的个API
:SpeechSynthesis
。
SpeechSynthesis
用于将指定文字合成为对应的语音.也包含一些配置项,指定如何去阅读(语言,音量,音调)等等
SpeechSynthesis实例对象属性
lang
获取并设置话语的语言pitch
获取并设置话语的音调(值越大越尖锐,越低越低沉)rate
获取并设置说话的速度(值越大语速越快,越小语速越慢)text
获取并设置说话时的文本voice
获取并设置说话的声音volume
获取并设置说话的音量
SpeechSynthesis方法
speak()
将对应的实例添加到语音队列中cancel()
删除队列中所有的语音.如果正在播放,则直接停止pause()
暂停语音resume()
恢复暂停的语音getVoices
获取支持的语言数组. 注意:必须添加在voiceschanged
事件中才能生效
实例对象中的方法
onstart
– 语音合成开始时候的回调。onpause
– 语音合成暂停时候的回调。onresume
– 语音合成重新开始时候的回调。onend
– 语音合成结束时候的回调
简单实现
如果想让浏览器读出“书以启智,技于谋生,活出斜杠”的声音,可以下面的js代码:
let utterThis = new SpeechSynthesisUtterance('书以启智,技于谋生,活出斜杠');
speechSynthesis.speak(utt