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に出す方法を書きます!
読んでいただいてありがとうございました!!!