Node.js 无法使用NodeJS将麦克风音频从谷歌语音流到文本

Node.js 无法使用NodeJS将麦克风音频从谷歌语音流到文本,node.js,Node.js,我将开发一个简单的基于web的语音到文本项目。使用NodeJS、ws(WebSocket)和Google的语音到文本API进行开发 然而,我没有运气从谷歌的语音到文本API中得到成绩单 下面是我的服务器端代码(server.js): 下面是我的客户端代码(ws.js): 当我运行项目,打开浏览器,试着对着麦克风说一些句子时。不幸的是,在NodeJS控制台中没有返回转录,也没有返回错误消息 当我在谷歌云控制台中检查状态时,它在仪表板中只显示499代码 非常感谢你的帮助 我认为这个问题可能与流处理有

我将开发一个简单的基于web的语音到文本项目。使用NodeJS、ws(WebSocket)和Google的语音到文本API进行开发

然而,我没有运气从谷歌的语音到文本API中得到成绩单

下面是我的服务器端代码(server.js):

下面是我的客户端代码(ws.js):

当我运行项目,打开浏览器,试着对着麦克风说一些句子时。不幸的是,在NodeJS控制台中没有返回转录,也没有返回错误消息

当我在谷歌云控制台中检查状态时,它在仪表板中只显示499代码


非常感谢你的帮助

我认为这个问题可能与流处理有关。可能某个流处理在操作结束前停止。我的建议是查看JasvaScript代码中的回调,以便找到一些“违背”的承诺

此外,这可能是显而易见的,但对于一分钟以上的音频,有一个不同的文档:

已取消-操作已取消,通常由调用方取消

HTTP映射:499客户端关闭请求

由于出现错误消息,这也可能与node js的异步和多线程特性有关

希望这能奏效

ws.on('message', function (message) {
    if (typeof message === 'string') {
        if(message == "connected") {
            console.log(`Web browser connected postback.`);
        }
    }
    else {
        if (recognizeStream !== null) {
            const buffer = new Int16Array(message, 0, Math.floor(message.byteLength / 2));
            recognizeStream.write(buffer);
        }
    }
});
function recorderProcess(e) {
    var floatSamples = e.inputBuffer.getChannelData(0);
    const ConversionFactor = 2 ** (16 - 1) - 1;
    var floatSamples16 = Int16Array.from(floatSamples.map(n => n * ConversionFactor));
    ws.send(floatSamples16);
}

function successCallback(stream) {
    window.stream = stream;
    var audioContext = window.AudioContext;
    var context = new audioContext();
    var audioInput = context.createMediaStreamSource(stream);
    var recorder = context.createScriptProcessor(2048, 1, 1);
    recorder.onaudioprocess = recorderProcess;
    audioInput.connect(recorder);
    recorder.connect(context.destination);
}