Google语音应用程序在启动后3秒停止

时间:2017-09-04 19:13:25

标签: node.js google-speech-api

我试图运行nodeJS Google Speech example,但当我用node recognize.js listen启动时,它在3秒后停止,没有任何输出。没有错误输出。 我已经尝试过其他NodeJS程序,它们运行没有问题。 我在Ubuntu 14.04.5 LTS上使用nodejs v8.4.0和npm v5.3.0。我在Ubuntu 16.04 LTS上试过这个并且工作正常。

这是我尝试运行的代码:

 'use strict';
function streamingMicRecognize (encoding, sampleRateHertz, languageCode) {
  const record = require('node-record-lpcm16');
  const Speech = require('@google-cloud/speech');
  const speech = Speech();
  const request = {
    config: {
      encoding: encoding,
      sampleRateHertz: sampleRateHertz,
      languageCode: languageCode
    },
    interimResults: false // If you want interim results, set this to true
  };

  const recognizeStream = speech.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`));

  record
    .start({
      sampleRateHertz: sampleRateHertz,
      threshold: 0,
      verbose: false,
      recordProgram: 'rec', // Try also "arecord" or "sox"
      silence: '10.0'
    })
    .on('error', console.error)
    .pipe(recognizeStream);

  console.log('Listening, press Ctrl+C to stop.');
}

const cli = require(`yargs`)
  .demand(1)
  .command(
    `listen`,
    `Detects speech in a microphone input stream. This command requires that you have SoX installed and available in your $PATH. See https://www.npmjs.com/package/node-record-lpcm16#dependencies`,
    {},
    (opts) => streamingMicRecognize(opts.encoding, opts.sampleRateHertz, opts.languageCode)
  )
  .options({
    encoding: {
      alias: 'e',
      default: 'LINEAR16',
      global: true,
      requiresArg: true,
      type: 'string'
    },
    sampleRateHertz: {
      alias: 'r',
      default: 16000,
      global: true,
      requiresArg: true,
      type: 'number'
    },
    languageCode: {
      alias: 'l',
      default: 'en-US',
      global: true,
      requiresArg: true,
      type: 'string'
    }
  })
  .example(`node $0 listen`)
  .wrap(120)
  .recommendCommands()
  .epilogue(`For more information, see https://cloud.google.com/speech/docs`)
  .help()
  .strict();

if (module === require.main) {
  cli.parse(process.argv.slice(2));
}

1 个答案:

答案 0 :(得分:0)

我发现它是来自node-record-lpcm16的设备选项。仅在device: 'plughw:0,0'添加了record.start选项。