我正在尝试将websocket连接的音频流发送到Google Speech API. websocket以20ms的增量发送二进制消息.它以递增的方式发送它让我相信我会以某种方式暂时读取和写入数据到本地文件,以避免杀死与Google的连接.但是,这并不理想.
有没有办法直接将websocket流管道传输到recognStream?
来自文档的Google streamingRecognize示例:
const request = { config: { encoding: encoding,sampleRate: sampleRate } }; const recognizeStream = speech.createRecognizeStream(request) .on('error',console.error) .on('data',(data) => process.stdout.write(data.results)); record.start({ sampleRate: sampleRate,threshold: 0 }).pipe(recognizeStream);
Websocket连接:
var Httpdispatcher = require('httpdispatcher'); var dispatcher = new Httpdispatcher(); var WebSocketServer = require('websocket').server; var server = http.createServer(handleRequest); var wsServer = new WebSocketServer({ httpServer: server,autoAcceptConnections: true,}); function handleRequest(request,response){ try { //log the request on console console.log(request.url); //dispatch dispatcher.dispatch(request,response); } catch(err) { console.log(err); } } wsServer.on('connect',function(connection) { console.log((new Date()) + ' Connection accepted' + ' - Protocol Version ' + connection.webSocketVersion); connection.on('message',function(message) { if (message.type === 'utf8') { console.log(message.utf8Data); } else if (message.type === 'binary') { //Send to Google Speech API by passing into recognizeStream } }); connection.on('close',function(reasonCode,description) { console.log((new Date()) + ' Peer ' + connection.remoteAddress + ' disconnected.'); }); });