Я пытался настроить службу узла для потоковой передачи звука в реальном времени в Google Speech API, но столкнулся с проблемой, которая, как мне кажется, может быть связана с аутентификацией.
Служба написана в узле с использованием Express и BinaryServer, я получаю данные без каких-либо проблем (и смог сохранить их на локальный диск, но этого фрагмента кода нет в приведенном ниже примере), но когда я пытаюсь для отправки в Google API я ничего не получаю в ответ (хотя, если я удалю keyFileName из запроса, я получаю «Ошибка: не удалось загрузить учетные данные по умолчанию», что достаточно справедливо, потому что я работаю вне GCE)
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, так что, возможно, я напортачил с этой частью, но сообщение с учетными данными по умолчанию заставляет меня думать, что все в порядке, и оно просто отклоняет мою просьбу без объяснения причин.
Может ли кто-нибудь заметить, что я ошибаюсь?
Ваше здоровье.