前端实现语音播报(Vue2)

语音播报,一般有两种情况:

第一种是后端返回mp3播放url,
第二种就是前端自己拼接的,

以下是实现方法:

一、后端直接返回mp3播放的url

从后端拿到的url,以后,可以直接使用new Audio来创建,以下是我的代码,这样写就可以直接播报了

      // BASE_URL,是基地址,AudioUrl 接口地址
      let audioUrl = OPERATION_BASE_URL + "/" + AudioUrl;
      let mp3 = new Audio(audioUrl);
      mp3.play();
      let timeer = undefined;
      mp3.oncanplay = () => {
        timeer = mp3.duration;
      };

二、前端自己拼接文字信息来播报

实现语音播报要有两个原生API

分别是【window.speechSynthesis】【SpeechSynthesisUtterance】

// 执行函数
let voices, timerVoices
// 注意:在某些浏览器,window.speechSynthesis.getVoices();获取的数据是空数组。所以放到计时器中
timerVoices = setInterval(() => {
    voices = window.speechSynthesis.getVoices()
    if (voices.length) {
        clearInterval(timerVoices)
        console.info("加载浏览器语音包成功")
        // 执行函数
        initVoice({
          text: '钱来来',
          vol: 1,
          rate: 1
        })
    }
}, 17)
 
// 函数
function initVoice(config) {
  window.speechSynthesis.cancel();//播报前建议调用取消的函数,如有正在播报的话音,播报会任务被塞进入队列,只有等上一个语音结束才会执行下一个语音
  //获取语音包
  let listArr = window.speechSynthesis.getVoices();
  listArr = listArr.filter(item => item.lang.indexOf('zh-') > -1);
  if (listArr.length == 0) {
    console.error('没有可用的中文语音!');
  }
  //实例化播报内容
  let instance = new SpeechSynthesisUtterance();
  instance.text = config.text || '轻轻敲醒沉睡的心灵,慢慢张开你的眼睛,看看忙碌的世界,是否依然孤独的转个不停!'; // 文字内容
  instance.lang = config.lang || "zh-CN"; // 使用的语言:中文
  instance.volume = config.vol || 1; // 声音音量:1
  instance.rate = config.rate || 1; // 语速:1
  instance.pitch = 1; // 音高:1
  window.speechSynthesis.speak(instance); // 播放
  instance.addEventListener("end", () => {});// 监听播报完成状态,播完可以做些其它处理    
}

结语:以上就是实现语音播报的二种方法,大家结合自己的情况使用!!!

要在前端Vue实现文字转语音真人发声,可以使用"speak-tts"库来实现。以下是一种实现方法: 1. 首先,在Vue文件中引入"speak-tts"库。可以在需要语音播报Vue文件中使用以下代码引入库: 2. 在Vue文件的数据区域添加一个speech属性,用于初始化语音播报的参数,如语言设置等。可以使用以下代码添加speech属性: 3. 在Vue文件的mounted生命周期中调用speechInit()方法,用于初始化语音播报。可以使用以下代码在mounted生命周期中调用speechInit()方法: 4. 在Vue文件的methods中添加speak()方法,用于触发文字转语音真人发声。可以使用以下代码添加speak()方法: 5. 在Vue文件的template模板中添加一个按钮,用于触发语音播报。可以使用以下代码添加一个点击按钮: 这样,当点击按钮时,就会触发speak()方法,实现文字转语音真人发声。 完整的代码如下所示: ```html <template> <div class="about"> <button @click="speak">语音播报</button> </div> </template> <script> import Speech from 'speak-tts' export default { data() { return { speech: null } }, mounted() { this.speechInit(); }, methods: { speechInit() { this.speech = new Speech(); this.speech.setLanguage('zh-CN'); this.speech.init().then(() => { console.log('语音播报初始化完成') }) }, speak() { this.speech.speak({text: "欢迎关注小编"}).then(() => { console.log("播报完成") }) } } } </script> ``` 通过以上步骤,在前端Vue中就可以实现文字转语音真人发声了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vue实现文字转语音语音播报](https://blog.csdn.net/weixin_40502718/article/details/128469257)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值