vue实现文字转语音功能详解

2022-09-06 09:11:00

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

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

首先new一个SpeechSynthesisUtterance对象

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

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

方法

speak() 将对应的实例添加到语音队列中
cancel() 删除队列中所javascript有的语音.如果正在播放,则直接停止
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 ActiveXObjecandroidt("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)
  },

到此这篇关于vue实现文字转语音功能详解的文章就介绍到这了,更多相关vue语音播报内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!