浏览器内置语音合成

项目中报警,出了音频以外,还需要根据文字读取出语音,百度了一下,浏览器已经内置了相关功能(语音合成)

 

/**
 * 调用浏览器内置语音合成对象:语音合成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);
    }
}

 

posted @ 2022-06-28 17:27  名字不好起啊  阅读(268)  评论(0编辑  收藏  举报