项目中报警,出了音频以外,还需要根据文字读取出语音,百度了一下,浏览器已经内置了相关功能(语音合成)
/** * 调用浏览器内置语音合成对象:语音合成Speech Synthesis API */ export class SpeechTest { constructor() { // 最简单的执行 this.simple(); // info this.init(); } simple() { // 最简单的使用 let utterThis = new window.SpeechSynthesisUtterance('你好,世界!'); window.speechSynthesis.speak(utterThis); } /** * 展开 */ init() { /** * 构造语音合成实例 * @property text - 要合成的文字内容,字符串。 * @property lang - 使用的语言,字符串, 例如:"zh-cn" * @property voiceURI - 指定希望使用的声音和服务,字符串。 * @property volume – 声音的音量,区间范围是0到1,默认是1。 * @property rate – 语速,数值,默认值是1,范围是0.1到10,表示语速的倍数,例如2表示正常语速的两倍。 * @property pitch – 表示说话的音高,数值,范围从0(最小)到2(最大)。默认值为1。 * @callback onstart – 语音合成开始时候的回调。 * @callback onpause – 语音合成暂停时候的回调。 * @callback onresume – 语音合成重新开始时候的回调。 * @callback onend – 语音合成结束时候的回调。 * @type {SpeechSynthesisUtterance} */ let utterThis = new window.SpeechSynthesisUtterance(); utterThis.text = '0123456789'; utterThis.onstart = function () { console.log('start') }; utterThis.onend = function () { console.log('end') }; /** * speechSynthesis 对象 * @method speak() – 只能接收SpeechSynthesisUtterance作为唯一的参数,作用是读合成的话语。 * @method cancel() – 立即终止合成过程。(无论当前是否读完,都停止;可配合 speak 无缝切换下一个读语句) * @method pause() – 暂停合成过程。(会积累执行的 speak 语句) * @method resume() – 重新开始合成过程。(读所有的 speak) * @method getVoices – 此方法不接受任何参数,用来返回浏览器支持的语音包列表,是个数组 */ window.speechSynthesis.speak(utterThis); } }