[ GCP ] 自分の声を録音して自動で文字に起こしてみる( CloudSpeech-to-Text API )

[ GCP ] 自分の声を録音して自動で文字に起こしてみる( CloudSpeech-to-Text API )

本記事ではGCPでAPIとして提供されている Cloud Speech-to-Text サービスを使用して、音声データから文字起こしを行なってみたいと思います。

今回はテスト音声として自分の声を録音し、それをどのくらいの精度で文字にしてくれるのかを確認してみます。

この記事ではAPIを実際に使用するまでに必要な手順をまとめていますが、音声データとそれに対する文字起こしの結果だけをご覧になる方は、見出し [ 3.8. 結果を確認する]にお飛びください。

GCPって何?

GCP とは Google Cloud Platform の略称で、Googleから提供されているパブリック・クラウドサービスを指します。詳しくは下記の記事をご覧ください。

[ GCP ] メガネと学ぶ Google Cloud Platform (1) GCPって何ぞや?

Cloud Speech-toText API って何?

Cloud Speech-to-Text とは、機械学習の機能を使用して音声からテキストデータを生成するGoogleのサービスです。対応言語は多岐に渡り、音声データの時間も短時間用の機能から長時間用の機能まで取り揃えられています。APIを使用することで、個人の目的にも使用することができます。

詳しくは、下記のURL先の情報をご覧ください。

https://cloud.google.com/speech-to-text/?hl=ja

実践

1. APIを有効にする

まずは Cloud Speech-toText API を有効化しましょう。

a. GCPコンソールのメニューから[ APIとサービス ]を選択し、[ ライブラリ ]をクリックします。

b.  ライブラリの検査画面で、[ Speech ] を入力するといくつかAPIが出てくるので、その中から[ Cloud Speech-to-Text API ] を選択します。

c. APIの画面に飛ぶので、「有効化」をクリックすれば設定は完了です。
(写真は有効化済みのものです。)

2. アカウントキーを取得し、キーファイルへのパスを通す

次にサービスアカウントキーを取得し、ファイルへのパスを通します。

a. GCPコンソールのメニューから[ APIとサービス ]を選択し、[ 認証情報]をクリックします。

b.  [ 認証情報を作成 ] のプルダウンをクリックし、[ サービスアカウントキー ] を選択します。

c.  役割を Project-編集者 に設定し、キーのタイプが JSON になっていることを確認して[ 作成 ] を押します。作成されると、キーファイルがダウンロードされます。

d. ローカルPCで、ダウンロードしたキーファイルへパスを通します。

 

3. Cloud SDK をインストールする。

ローカルPCでgcloudコマンドを使用する為に、Cloud SDK をインストールします。すでにインストールされている場合はスキップします。

Cloud SDK のインストールについては、下記URL先の公式ホームページの手順を参照ください。

https://cloud.google.com/sdk/docs/

4. 音声データを用意する

音声データを作成することがあまりないので、ここも手順化します。今回はmacで自分の声を録音するという前提で進めていきます。

mac で録音を行うことができるアプリは QuickTimePlayer です。これはデフォルトでmacにインストールされているので、今回はこれを使用します。

4-1. 録音する(mac)

a. QuickTimePlayer を開き、[ ファイル ] メニューの [ 新規オーディオ収録 ] を選択します。

b.  収録画面に飛ぶので、録音ボタンを押して収録します。作成したファイルはm4a形式で保存されます。ちなみに今回の方式では1分以上の音声データを変換できないので、音声データはそれ以内の時間に収まるようにします。長時間用の変換についても行うことができますが、本記事では触れていません。

4-2. FLAC形式に変換する

今回使用するAPIは m4a 形式に対応していないので、対応しているFLAC形式に変換します。今回変換にはwebサービスを利用します。

a. 次のURLにとび、[ AudioConverter ] メニューの [ convert to FLAC ] を選択します。

https://audio.online-convert.com/

b. 録音データをドロップして、コンバート設定を編集します。コンバート設定では、
「サンプルレートを16000」に、
「チャンネルをモノラル(mono)」に
します。設定を終えたら [ Start conversion ] を選択し、変換ファイルをダウンロードします。

5. ファイルを Cloud Storage に保存する。

次に、作成したファイルをGCPのストレージに保存します。

a. GCPコンソールのメニューから[ Storage ]を選択し、[ ブラウザ ]をクリックします。

 

b. [ バケットを作成 ] を押下し、バケットの設定をしてバケットを作成します。今回はテスト用なので、設定は画像のような設定(Coldline = ほとんど使用しないデータ)で大丈夫です。

c. 作成したバケットに録音データをドロップすれば、データの準備は完了です。

 

6.  リクエスト用のファイルを作成する

ここまできたら、あとはAPIへのリクエスト準備だけです!

次のような内容のjsonファイルを作成します。ここでのファイル名は [ sync-request.json ] とします。(なんでも良いのですが)

  • encoding
    音声ファイルのデータ形式を指定します。今回はFLACを使用しています。MP3やMP4は使用できません。
  • sampleRateHertz
    音声のサンプルレートを指定します。
  • languageCode
    対象音声の言語を指定します。日本語であれば ja-JP 、英語であれば en-US などを指定します。
  • uri
    音声データの保存場所を指定します。今回はGCPのStorageを使用しているので、 “gs://” を先頭につけて先ほど作成したバケットの位置と格納したファイルの名前を記載してください。

7. Speech-to-Text API にリクエストを送信する

最後に、作成したjsonファイルを用いてAPIにリクエストを送ります。コマンドは次の通りです。
コマンドは、先ほど作成したjsonファイルと同じ階層で実行します。

  • curl
    HTTPアクセスをしてコンテンツを取得できるコマンドです。以下のようなオプションを設定できます。
  • -s  : ダウンロードの進捗とエラーメッセージを表示しない。
  • -H : リクエストヘッダを追加する。POSTのフォーマットがJSONの場合は -H "Content-Type: application/json" という指定をする
    gcloud auth application-default print-access-token ( ※非curlオプション )
    : gcloud コマンドにより通したパスから認証トークンを取得する。
  • -d : POSTする本体を指定するオプションで、その後の@以降が送信データになる。

※curlコマンド参考
https://hydrocul.github.io/wiki/commands/curl.html

8. 結果を確認する

API へのリクエストを行うと、そのレスポンスの中に文字起こしされたテキストが入っています。

レスポンスを見る前に、まずは今回の音声データを確認してみましょう。
フランツ・カフカの『変身』の冒頭を読んでみました。

このデータに対して、APIが文字に起こしてくれたデータ(レスポンス)がこちらです。

レスポンスはjson形式で返却されます。transcript が起こされたテキストデータで、confidence は単語レベルでの信頼度を示してくれています。
今回は、一字一句、間違えずに翻訳してくれています…すごい…。

句読点などは起こしてくれないので商業利用する時などはもう一つ編集の手間が必要ですが、それにしても便利なAPIであることは間違い無いですね!

 

ちなみにもう少し長い文章でも試してみました。夏目漱石の『草枕』の冒頭です。

 

 

概ね良かったのに、最後…隅肉過労…。

まとめ

  • GCP で提供されている Cloud Speech-to-Text API を使用することで、音声データの文字起こしができる。
  • 音声から生成されるテキストの精度は高く、実用に十分耐え得る。

 

以上です。ここまでご覧いただき、ありがとうございました!

 

参考

https://cloud.google.com/speech-to-text/docs/basics?hl=ja

https://cloud.google.com/speech-to-text/docs/quickstart-protocol?_ga=2.193739949.-1297467846.1550208871

https://blog.apar.jp/web/8971/

https://www.magellanic-clouds.com/blocks/guide/create-gcp-service-account-key/

https://qiita.com/knyrc/items/7aab521edfc9bfb06625

 

GoogleCloudPlatformカテゴリの最新記事