2017-03-09 30 views
5

我正尝试将WebSocket连接的音频流发送到Google Speech API。 websocket以20ms为增量发送二进制消息。它以增量的方式发送它使我相信我会以某种方式暂时读取和写入数据到本地文件,以避免与Google的连接中断。但是,这并不理想。如何将websocket二进制消息作为流发送到Google Speech API?

有没有办法直接管道websocket流到recognizeStream?从文档

谷歌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.'); 
    }); 


}); 

回答

0

这其实很简单。太简单了,我觉得没有看到它有点羞怯。根据代码是如何写在OP这完美的作品:

else if (message.type === 'binary') { 

    //Send to Google Speech API by passing into recognizeStream 
    recognizeStream.write(message.binaryData) 

} 
0

最好的解决办法是使用专门的流媒体解决方案,而不是做自己,这将处理所有的缓冲区,并为您提供稳定的流,适用于Google Speech API.Try使用类似

https://www.npmjs.com/package/websocket-stream

相关问题