素人Web屋の備忘録

素人Web屋の備忘録。たまに雑記。

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

続き書きます!

前回、音声ファイルの取り込みには成功したので、次にこの音声をテキストに変換する記述を追記していきます。

まず以下でGoogle cloud client libraryをインポートして、クライアントを作成します。

const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();

次に音声ファイルをbase64に変換する処理を書きます。

const fileName = './test.raw';
 
const file = fs.readFileSync(fileName);
const audioBytes = file.toString('base64');

次にエンコーディングやサンプリング周波数、言語などをconfigで指定します。
const audio、const configを作成してjson形式でconst requestを作成します。

const audio = {
  content: audioBytes,
};
const config = {
  encoding: 'LINEAR16',
  sampleRateHertz: 16000,
  languageCode: 'en-US',
};
const request = {
  audio: audio,
  config: config,
};

最後にrecognizeメソッドを使って音声データをテキスト化します。
recognizeメソッドはpromiseオブジェクトを戻り値で持ってるので、thenメソッドでその結果を受け取っています。

client.recognize(request)
  .then(data => {
    const response = data[0];
    const transcription = response.results
      .map(result => result.alternatives[0].transcript)
      .join('\n');
    console.log(`Transcription: ${transcription}`);
  })
  .catch(err => {
    console.error('ERROR:', err);
  });

ここまで書いたら実行します。

node ./index.js

自分は「あいうえお」と音声を取り込んでいたので結果は以下のようになります。

$ node index.js
Transcription: あいうえお

以上ざっくりと解説しましたが、ソース自体はnpm公式の@google-cloud/speechページに載っています。
https://www.npmjs.com/package/@google-cloud/speech

前回からここまでで、音声をローカルに取り込んでからローカルファイルの音声データをテキストに変える処理を書きました。
次はリアルタイムで音声を認識させてconsoleに出す方法を書きます!
読んでいただいてありがとうございました!!!