【发布时间】:2017-02-06 12:14:40
【问题描述】:
我一直在尝试设置用于将实时音频流式传输到 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,所以可能是我把那部分搞砸了,但默认凭据消息让我认为它是正常的,并且它只是拒绝我的请求而不返回理由。
谁能看出我哪里错了?
干杯。
【问题讨论】:
-
我也在寻找类似的解决方案。这是我的问题stackoverflow.com/questions/43505524/…