vue 實現百度語音合成(語音播報)


這里我完全依照百度提供的語音合成api來做:https://ai.baidu.com/docs#/TTS-Online-Node-SDK/top 直接去看node.js SDK。

1.換取access_token:

參考:https://ai.baidu.com/docs#/TTS-API/top,在這里用瀏覽器換取token

2.下載sdk依賴:

npm install baidu-aip-sdk

 

完整代碼(非原創,參考了一個demo,但是很久以前寫的找不到了):

btts(text) {
      console.log(text);
   //以下參數參考api文檔,token和人的聲音音色之類的參數
var param={ tex: text, tok: '24.e835483633e8680242bb042693e1c071.********.1573463462.******-16425747',//這個token要換成自己的 spd: 5, pit: 5, vol: 15, per: 4 }; 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') {
             //創建audio對象進行播報
var audio = new Audio(); audio.setAttribute('src', URL.createObjectURL(xhr.response)); audio.play(); audio=null; }else{
            //這里如果百度語音合成的接口返回類型不是audio/mp3,是json的話,代表你的參數有問題,返回結果失敗,具體可以查看api文檔 alert(
"調用語音合成接口token已失效!"); } }else{ alert("語音合成接口調用失敗!"); } } } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM