मैं Google स्पीच एपीआई के लिए वेबस्केट कनेक्शन की ऑडियो स्ट्रीम भेजने की कोशिश कर रहा हूं। Websocket 20ms increments में बाइनरी संदेश भेजता है। यह वृद्धि में भेजता है मुझे विश्वास दिलाता है कि मुझे किसी भी तरह से Google को कनेक्शन को मारने से बचने के लिए अस्थायी रूप से डेटा को स्थानीय फ़ाइल में पढ़ना और लिखना होगा। हालांकि, यह आदर्श नहीं है।Google स्पीच एपीआई में स्ट्रीम के रूप में 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.');
});
});