Node.js 在前端录制音频并发送到后端以进行Google语音API调用

Node.js 在前端录制音频并发送到后端以进行Google语音API调用,node.js,reactjs,google-speech-api,Node.js,Reactjs,Google Speech Api,我正在尝试将我认为简单的功能构建到一个网站中,我正在使用ReactJS和ExpressforBackend构建这个网站。但事实证明,这比我一开始想象的要困难得多 基本上,我想要的是在前端有一个按钮,开始和结束用户的声音录制。然后,我想将音频发送到服务器,从服务器调用Google的Speech2Text API来获取文本。我的问题有两个,首先,你推荐哪一个图书馆来录音?起初我使用RecorderJS,但在遵循步骤并将数据转换为我认为正确的格式(16符号位线性PCM)之后,当我发送并保存数据时,我得

我正在尝试将我认为简单的功能构建到一个网站中,我正在使用ReactJS和ExpressforBackend构建这个网站。但事实证明,这比我一开始想象的要困难得多

基本上,我想要的是在前端有一个按钮,开始和结束用户的声音录制。然后,我想将音频发送到服务器,从服务器调用Google的Speech2Text API来获取文本。我的问题有两个,首先,你推荐哪一个图书馆来录音?起初我使用RecorderJS,但在遵循步骤并将数据转换为我认为正确的格式(16符号位线性PCM)之后,当我发送并保存数据时,我得到的是垃圾,而不是我记录的。现在我尝试使用node-recorder-lpcm16库,它精确地记录了我需要的编码,但是我不确定我是否正确地运行了它,因为在文档中他们为node-recorder-lpcm16这样的节点编写了它们

recorder = require('node-recorder-lpcm16');
recorder.record();
但我在React代码中所做的是:

import recorder from 'node-record-lpcm16';
...
onButtonPress() {
    recorder.record();
我在import语句中没有得到一个错误,但在record()调用中得到了一个错误。我得到的错误是
Uncaught error:没有找到这样的记录器:sox
,但在我的配置中,我没有将sox作为recordProgram传递,而是“rec”,更不用说我已经在前端目录中使用
brew install sox
npm install sox
安装了sox

其次,我不是100%最好的方式发送音频到服务器。现在我正在使用缓冲区,使用POST请求将其作为逗号分隔的字符串发送;在服务器端,用逗号拆分字符串并将其转换为正确的数组。然而,这对于较长时间的录制是不可行的,我想知道是否有一种方式可以以某种方式流式传输它,以及我应该使用什么LIB或工具来实现这一点。例如,在google语音文档中,他们有一个使用节点lpcm库的示例,如下所示:

const recorder = require('node-record-lpcm16');
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
const recognizeStream = client
  .streamingRecognize(request)
  .on('error', console.error)
  .on('data', data => {whatever});
recorder
  .record({
    sampleRateHertz: sampleRateHertz,
    threshold: 0,
    recordProgram: 'rec'
  })
  .stream()
  .on('error', console.error)
  .pipe(recognizeStream);
我想知道如何设置从客户端到服务器的这种管道?我是否每次都必须在(“数据”)上发送POST请求,或者是否有更聪明的方法


抱歉,篇幅太长,谢谢您的帮助。

您找到解决方案了吗?