项目中报警,出了音频以外,还需要根据文字读取出语音,百度了一下,浏览器已经内置了相关功能(语音合成)
/**
* 调用浏览器内置语音合成对象:语音合成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);
}
}
原创文章,作者:wure,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/270625.html