前端js vue的语音播报

  • 前端js vue的语音播报已关闭评论
  • 17 次浏览
  • A+
所属分类:Web前端
摘要

目前h5新增一个文字转语音的功能(但是正在完善中,勉强能用),h5新增的SpeechSynthesisUtterance实例

目前h5新增一个文字转语音的功能(但是正在完善中,勉强能用),h5新增的SpeechSynthesisUtterance实例

首先new一个SpeechSynthesisUtterance对象

使用实例对象的一些属性,包括:

  • text – 要合成的文字内容,字符串。
  • lang – 使用的语言,字符串, 例如:"zh-cn"
  • voiceURI – 指定希望使用的声音和服务,字符串。
  • volume – 声音的音量,区间范围是01,默认是1
  • rate – 语速,数值,默认值是1,范围是0.110,表示语速的倍数,例如2表示正常语速的两倍。
  • pitch – 表示说话的音高,数值,范围从0(最小)到2(最大)。默认值为1

方法

  • speak() 将对应的实例添加到语音队列中
  • cancel() 删除队列中所有的语音.如果正在播放,则直接停止
  • pause() 暂停语音
  • resume() 恢复暂停的语音
  • getVoices 获取支持的语言数组. 注意:必须添加在voiceschanged事件中才能生效

但是这个方法不支持老版的ie,需要加浏览器判断方法

isIe(){     if(!!window.ActiveXObject || "ActiveXObject " in window){         return true     }else{         return false     } },

然后根据ie使用方法

   voice(e){     window.speechSynthesis.cancel()       let timer       timer = setInterval(() => {         let msg = e         if(this.isIe()){             let voiceObj = new ActiveXObject("Sapi.SpVoice")             voiceObj.Rate = -1 // 语速             voiceObj.Volume = 50 // 音量             voiceObj.Speak(msg,1)         }else{             let speakMsg = new                 SpeechSynthesisUtterance(msg)             speakMsg.rate = 1 // 语速             speakMsg.pitch = 3 // 音量             window.speechSynthesis.speak(speakMsg)         }      }, 1000)      setTimeout(() => {         // 一段时间后清除定时器         clearInterval(timer)      }, 1000)     },