1. 程式人生 > >百度語音+react+loopback實現語音合成返回播放

百度語音+react+loopback實現語音合成返回播放

1.在百度語音中建立自己的專案,需要拿到APP_ID、API_KEY、SECRET_KEY。

 

2.loopback端提供介面服務,在./boot目錄下新建root.js檔案,編寫不依賴模型的自定義介面服務,程式碼如下:

'use strict';

const fs=require('fs')
const AipSpeechServer = require('baidu-aip-sdk').speech;

module.exports = function(server) {
  // Install a `/` route that returns server status
var router = server.loopback.Router();// 語音合成 //設定appid/appkey/appsecret const APP_ID = "14799027"; const API_KEY = "2oSvF6rAFnq6hiVowTxM4fkb"; const SECRET_KEY = "AbyQ8gagqQGauBGOKU9DABsLQOIq5Pwo"; // 新建一個物件,建議只儲存一個物件呼叫服務介面 const client =new AipSpeechServer(APP_ID, API_KEY, SECRET_KEY); // 語音合成 router.post('/speech', function
(req, res, next){ client.text2audio( req.body.text || '你好,百度語音合成測試', { //cuid: '機器 MAC 地址或 IMEI 碼,長度為60以內', spd: req.body.spd || '5',//音速 pit: req.body.pit || '5',//音調 vol: req.body.vol || '5',//音量 per: req.body.per || '0'//播音角色 } ) .then( function(res1){
if(res1.data){ console.log(res1,'d;'); fs.writeFileSync('./server/static/tts.audio.mp3', res1.data); res.json({ ret: 0, data:{ path: 'http://192.168.6.12:6001/tts.audio.mp3',//返回小程式呼叫播放 audio:'data:audio/wav;base64,' + new Buffer(res1.data).toString('base64') // buffer二進位制檔案轉base64 }, msg: '' }); }else{ // 服務發生錯誤 console.log(res1); res.json({ ret: res1.err_no, data:{ }, msg: res1.err_msg }); } }, function(e){ // 發生網路錯誤 console.log(e); res.json({ ret: -100, data:{ }, msg: '網路錯誤,請檢查網路' }); } ); }); server.use(router); };

3.前端呼叫服務介面即可。

let data = {
      text: '請,蔣龍江,到1號診室就診。',
      spd: '5',
      pit: '3',
      vol: '8',
      per: '0'
 };
let a = yield axios.post(`/speech`,data);
let n = new Audio();
n.src = a.data.data.audio;
n.play();

這樣在瀏覽器中就能播放了。

百度語音node只支援線上語音庫,暫不支援離線。