美文网首页
vue 实现百度语音合成播放

vue 实现百度语音合成播放

作者: 小北呀_ | 来源:发表于2020-10-14 18:31 被阅读0次
文章:

官网
百度语音合成浏览器跨域访问示例
vue 实现百度语音合成

看完以上三篇基本demo可以成功

场景:项目有问题的时候,预警弹框弹出,音频开始播报问题。可能第一条未读完,第二条预警弹框也出来了,这个时候要保证两条音频有序播放。
问题:百度语音合成,浏览器默认拒绝自动播放音频,需要自动播放的话得手动设置
注意:还需要一个token

1.下载

npm install baidu-aip-sdk

2.vue文件

<template>
  <div>
    百度语音,浏览器默认拒绝自动播放音频,需要的话得手动设置
  </div>
</template>
<script>
export default {
  data(){
    return{
      list:[],//保存音频
    }
  },
  mounted(){
    this.btts('银河航天')
    setTimeout(()=>{
      this.btts('你最最最最最好看')
    },1000)
    setTimeout(()=>{
      this.btts('哈哈哈哈')
    },1200)

    // 以上三次模拟预警弹框,弹框一出开始播放,第二条语音在第一条音频播完紧跟上。

    // 计时器保证三条音频可以紧跟上
    this.playTime = setInterval(()=>{
      this.play()
    },1000)
  },
  destroyed(){
    clearInterval(this.playTime)
  },
  methods:{
    play(){
      // console.log(this.list,'1222222222222')
      if(this.list.length){
        // 播放
        var audio = new Audio();
        audio.setAttribute('src', this.list[0].src);
        audio.play();
        audio=null;

        // 及时清除计时器,避免重叠
        clearInterval(this.playTime)

        // 在第一条音频播放时间后重新开启计时器
        this.playTime = setInterval(()=>{
          this.play()
        },this.list[0].size)

        // 及时删除数组0
        this.list.splice(0,1)
      }
    },
    btts(text) {
      console.log(text,'文本');
    //以下参数参考api文档,token和人的声音音色之类的参数
      var param={
            tex: text,//合成的文本
            tok: '24.XXXXXXXXXXXX',//这个token要换成自己的
            spd: 5,//默认为5中语速
            pit: 5,//5中语调
            vol: 15,//音量,取值0-15,默认为5中音量
            per: 4,//基础音库
            ctp:1,//web
            lan:'zh'//中文
        };
      var url = 'http://tsn.baidu.com/text2audio';
      var p = param || {};
      var that = this;
      var xhr = new XMLHttpRequest();
      xhr.open('POST', url);

    // 创建form参数
       var data = {};
     for (var p in param) {
          data[p] = param[p]
      }
     // 赋值预定义参数
     data.cuid = data.cuid || data.tok;
      // data.ctp = 1;
      // data.lan = data.lan || 'zh';
    //以上为封装请求的参数


     // 序列化参数列表
    var fd = [];
      for(var k in data) {
          fd.push(k + '=' + encodeURIComponent(data[k]));
      }

      var frd = new FileReader();
      xhr.responseType = 'blob';
      xhr.send(fd.join('&'));

    //请求返回结果处理
      xhr.onreadystatechange = function() {
          if (xhr.readyState == 4) {
              if (xhr.status == 200) {
                  if (xhr.response.type == 'audio/mp3') {
            //  保存数据
                      that.list.push({
                        src:URL.createObjectURL(xhr.response),
                        size:xhr.response.size
                      })
                  }else{
            //这里如果百度语音合成的接口返回类型不是audio/mp3,是json的话,代表你的参数有问题,返回结果失败,具体可以查看api文档
                alert("调用语音合成接口token已失效!");
                }
              }else{
                alert("语音合成接口调用失败!");
              }
          }
      }
    }
  }
}
</script>
<style scoped>

</style>

相关文章

  • vue 实现百度语音合成播放

    文章: 官网[https://ai.baidu.com/ai-doc/SPEECH/0k38y8mfh]百度语音合...

  • iOS Unity导出的工程基础百度语音合成SDK问题

    没有基础百度语音合成sdk前, Unity可以正常播放声音。集成后百度语音合成sdk能够播放声音,但是Unity却...

  • iOS推送实现语音播报实践

    一、实现思路 1、应用活跃时,合成语音,播放语音 2、应用被杀死,唤醒应用,合成语音,播放语音 二、唤醒应用 1、...

  • 百度语音合成播放

    Android ASR SDK 集成合成****DEMO****中 (一) 简介: 本文针对遇见集成Android...

  • 智能语音客服服务助手

    智能语音客服服务助手 语音识别 阿里语音识别 百度语音识别 讯飞语音识别 语音合成 阿里语音合成 百度语音合成 讯...

  • 树莓派语音播报天气

    设置音量到最大 语音播放天气 依赖:requestsmpg123 服务: 百度语音合成 心知天气 最后加个定时任务...

  • iOS语音合成

    标签:ios语音合成 苹果公司在iOS7中推出了语音合成的技术,无需网络环境也可以实现语音合成。 iOS7语音合成...

  • 百度AI 2018-10-16

    安装baidu-aip:pip install baidu-aip语音合成 语音识别 利用语音识别和语音合成实现学...

  • CocoaLumberjack 带来内存暴涨

    今天测试百度语音合成功能时,发现App在播放语音期间内存一直暴涨,顿时警觉: 这里面有内存泄漏?各种检查都做了一遍...

  • iOS-百度语音合成 后台播放

    闲聊几句~小说项目中需要加一个听书功能,看了几个App都是用百度语音的,于是就决定使用百度语音了,本文记录一下如何...

网友评论

      本文标题:vue 实现百度语音合成播放

      本文链接:https://www.haomeiwen.com/subject/aviwpktx.html