2017-02-06 3 views
3

Я пытался настроить службу узлов для потоковой передачи живого звука в API Google Speech, но я столкнулся с проблемой, которая, по моему мнению, может быть связана с проверкой подлинности.NodeJs Google Speech API Streaming

Служба написана на узле с использованием Express и BinaryServer, я получаю данные без каких-либо проблем (и смог сохранить их на локальном диске, но этот раздел кода не приведен в приведенном ниже примере), но когда я пытаюсь отправить в Google API, я ничего не получаю (хотя, если я удалю ключевое имяFileName из запроса, я получаю «Ошибка: не могу загрузить учетные данные по умолчанию», что справедливо, потому что я бегу снаружи БКА)

var express = require("express"); 
var app = express(); 
var port = 54180; 
var BinaryServer = require('binaryjs').BinaryServer; 

var server = BinaryServer({ 
    port: port 
}); 

app.listen(port, function() { 
    console.log('server open on port ' + port); 
}); 

binaryServer = BinaryServer({ 
    port: 9001 
}); 

binaryServer.on('connection', function (client) { 
    console.log('Binary Server connection started'); 

    client.on('stream', function (stream, meta) { 
     console.log('>>>Incoming audio stream'); 

     var speech = require('@google-cloud/speech')({ 
      projectId: 'MYPROJECT-1234' 
       //keyFilename: '/config/KeyFile.json' 
     }); 

     const request = { 
      config: { 
       encoding: 'LINEAR16', 
       sampleRate: 16000 
      }, 
      singleUtterance: false, 
      interimResults: true 
     }; 

     // Create a recognize stream 
     const recognizeStream = speech.createRecognizeStream(request) 
      .on('error', function (error) { 
       console.log('Error'); 
       console.log(error) 
      }) 
      .on('data', function (data) { 
       console.log('Data'); 
       console.log(data); 
      }); 

     // Send the microphone input to the Speech API 
     stream.pipe(recognizeStream); 

     stream.on('end', function() { 
      fileWriter.end(); 
      recognizeStream.end(); 
      console.log('||| Audio stream ended'); 
     }); 
    }); 
}); 

Я также признаю, что это первый раз, когда я пытался повторно труба к другому API, так что это может быть, что я пьяный, что часть, но сообщение идентификационного по умолчанию заставляет меня думать, что это трубопровод ОК, и это просто отказ мой запрос, не возвращая причины.

Может ли кто-нибудь определить, что я ошибаюсь?

Cheers. вопрос

+1

Я также искал подобное решение. Вот мой вопрос https://stackoverflow.com/questions/43505524/nodejs-convert-int16array-binary-buffer-to-linear16-encoded-raw-stream-for-googl –

ответ

Смежные вопросы