とあるWeb屋の備忘録

とあるWeb屋の備忘録。たまに雑記。

Cloud Speech API + node.jsで音声認識をさせてみる3

今回は音声をローカルファイルに書き込まず、リアルタイムで音声認識させてconsoleに出す処理を書いていきます。
Cloud Speech API + node.jsで音声認識をさせてみる1
Cloud Speech API + node.jsで音声認識をさせてみる2

今回はリアルタイムで認識させるので、fsモジュールは必要ないので外しておきます。
リアルタイムで認識させるためにstreamingRecognizeを使います。

const record = require('node-record-lpcm16');
const speech = require('@google-cloud/speech');
const speechClient = new speech.SpeechClient();
const SAMPLE_RATE = 16000

const request = {
  config: {
    encoding: 'LINEAR16',
    sampleRateHertz: SAMPLE_RATE,
    languageCode: 'ja-jp'
  }
};

const recognizeStream = speechClient
  .streamingRecognize(request)
  .on('error', console.error)
  .on('data', (data) => {
    console.log(data.results[0]);
  });

record.start({
  sampleRate: SAMPLE_RATE,
  recordProgram: 'sox',
  thresholdStart: 0.2,
  thresholdEnd: 0.1,
  silence: '0.1'
}).pipe(recognizeStream);

まず以下でrecognizeStreamを作成します。

const recognizeStream = speechClient
  .streamingRecognize(request)
  .on('error', console.error)
  .on('data', (data) => {
    console.log(data.results[0]);
  });

そしてレコーディングを開始して、取り込んだデータをrecognizeStreamに渡します。

record.start({
  sampleRate: SAMPLE_RATE,
  recordProgram: 'sox',
  thresholdStart: 0.2,
  thresholdEnd: 0.1,
  silence: '0.1'
}).pipe(recognizeStream);

ここまで記述したindex.jsを起動します。

node ./index.js

これでマイクに向かってしゃべると内容がConsoleに表示されます。
結果はこんな感じです。

$ node index.js
{ alternatives:
   [ { words: [],
       transcript: 'あいうえお',
       confidence: 0.9614928960800171 } ],
  isFinal: true,
  stability: 0 }

今日はここまで!読んでいただいてありがとうございました!!!