将麦克风中的音频流发送到Google Speech-Javascript

时间:2018-08-05 18:00:34

标签: node.js websocket streaming getusermedia google-speech-api

我正在尝试将客户端(nuxt)端的麦克风输入发送到node + socket.io服务器,然后再发送到Google Speech API。我从navigator.mediaDevices.getUserMedia({ audio: true })获取流,并使用socket.io-stream将其发送到后端。我的客户端代码如下。

import ss from 'socket.io-stream'

navigator.mediaDevices.getUserMedia({ audio: true }).then((mediaStream) => {
  ss(this.$socket).emit('audio', mediaStream);
});

我的服务器代码如下。

const io = require('socket.io')(3555);
const ss = require('socket.io-stream');
const speech = require('@google-cloud/speech');

io.on('connection', (socket) => {
  const client = new speech.SpeechClient({ keyFilename: 'key.json' });
  const encoding = 'LINEAR16';
  const sampleRateHertz = 16000;
  const languageCode = 'en-US';
  const request = {
      config: {
          encoding: encoding,
          sampleRateHertz: sampleRateHertz,
          languageCode: languageCode,
      },
      interimResults: true,
  };
  ss(socket).on('audio', (stream) => {
    const recognizeStream = client.streamingRecognize(request)
    .on('error', console.error)
    .on('data', data => {
        process.stdout.write(
          data.results[0] && data.results[0].alternatives[0]
            ? `Transcription: ${data.results[0].alternatives[0].transcript}\n`
            : `\n\nReached transcription time limit, press Ctrl+C\n`
        );
    });
    stream.pipe(recognizeStream);
  });
});

但是此代码不起作用,并显示错误TypeError: stream.pipe is not a function

请有人指出错误或告诉我一种解决方法。谢谢!

0 个答案:

没有答案