使用SOX时谷歌语音API语音识别错误

时间:2017-05-20 16:51:10

标签: node.js audio voice-recognition sox google-speech-api

我正在尝试用节点js创建非常简单的语音识别软件。我已经连接了Google语音API并且可以发送正确记录的.wav文件并获得转录并且识别非常好(使用Audacity记录)

但我遇到了语音识别问题"即时#34;就像将音频流直接从麦克风发送到Gooegle语音API。

这是我记录语音并发送给谷歌的主要方法。

function recognize(encoding, sampleRateHertz, languageCode)
{

  const request = {
    config: {
      encoding: encoding,
      sampleRateHertz: sampleRateHertz,
      languageCode: languageCode
    },
    interimResults: true // If you want interim results, set this to true
  };


  // Imports the Google Cloud client library
  const Speech = require('@google-cloud/speech');

  // Instantiates a client
  const speech = Speech();

  // Create a recognize stream
  const recognizeStream = speech.createRecognizeStream(request)
    .on('error', console.error)
    .on('data', (data) => process.stdout.write(data.results + ', '))


let fs = require('fs');
let Mic = require('node-microphone');
let mic = new Mic({ 'rate': '16000', 'channels': '1', 'debug': true, 'exitOnSilence': 6, 'bitwidth' : '16' });
let micStream = mic.startRecording();

micStream.pipe(recognizeStream);
micStream.pipe(fs.createWriteStream('test.wav') )
setTimeout(() => {
    //logger.info('stopped recording');
    console.log('stopped writing')
    mic.stopRecording();
}, 10000);
mic.on('info', (info) => {
    console.log('INFO ' + info);
});
mic.on('error', (error) => {
    console.log(error);
});
}

我传递给方法的配置数据

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'
    }
  })

所以我使用节点麦克风'为了录制,我安装了Windows和SOX。通过谷歌发送。我不会得到错误,但承认非常糟糕。我在非常容易的单词或短语上得到转录,例如"谁"," food"," call"。大多数情况下,如果我正常说话,则不会返回任何内容。

我有一种感觉,知道某些东西是错误的,或录音率(就像,记录是"太快"谷歌不明白),但我没有看到我的错误。

我还添加了文件保存功能。当我打开文件并听取它时,听起来很正常。当我发送这个文件进行识别时,我几乎什么都没回来。因此,录制音频流的方式有问题

编辑: 我几乎可以肯定问题出在SOX中。用其他程序记录的所有文件都可以更好地工作。

0 个答案:

没有答案