百度語音+react+loopback實現語音合成返回播放
阿新 • • 發佈:2018-11-15
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 statusvar 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只支援線上語音庫,暫不支援離線。