KIHARA BLOG:社内ラズコンでめざせ優勝!

Raspberry Pi(ラズパイ)で機械学習とか音声認識とか姿勢推定とかしながら組み込みシステムを構築して、社内ラズコンで優勝をめざすブログです。勉強中:Raspberry Pi、Linux、Python、Coral EdgeTPU、PoseNet、Julius

ラズパイ11日目①:Juliusを諦めてGCP Speech-To-Textで音声認識する

Juliusでの音声認識に試行錯誤を繰り返していたのですが、どうにも認識率が上がらず… SiriやGoogleアシスタントをうまく使えないかと検討していて、GCP(Google Cloud platform)にいいサービスがあったので乗り換えることにしました。

試したこと

Speech-To-Textサービスを使って、マイクに向かった喋った言葉がテキスト化されるというサンプルコードを試しました。
youtu.be

GCP(Google Cloud platform)とは?

Google Cloud platformとは、Googleクラウド上で提供するサービス群の総称です。
Googleのサービスやインフラをクラウド上で利用できます。
例えば、Google検索の仕組みをシステムに組み込んだり、ローカルに開発環境を設定しなくてもWeb上でアプリ開発ができたりと、かなり便利です。
しかも従量課金制のため、一定までは無料で利用することができます。そのうえGCP初回登録の場合には$300の無料クレジットが用意されています。
ちなみに、今回利用したSpeech-To-Textであれば、月60分までは無料で利用することができます。

cloud.google.com

cloud.google.com

Speech-To-Textとは?

cloud.google.com

上記のプロダクトページをスクロールすると、どの程度の精度で音声認識されるのかを試すことができるコンテンツが用意されています。
PC付属のマイクがあれば、ぜひ「Microphone」にチェックを入れて試してみてください。精度の高さが実感できるはずです。
①「Microphone」にチェックを入れて「START」をクリック
②PC付属のマイクに話しかける
③画面に音声認識結果が表示される

Speech-To-Textの利用手順

GCPのサービスを利用するためには、「プロジェクト」「サービスアカウント」「サービスアカウントキー」の3つが必要です。
また、大前提にGoogle アカウントを持っていることが必要ですので、まだないという人はGoogleアカウントを作成してから、以下の手順に進んでください。

手順①プロジェクトを開設する。

GoogleアカウントでGCPコンソールにログインします。 ヘッダーメニュの▼から[新しいプロジェクト]をクリックして作成画面を表示します。



プロジェクト名を入力して[作成]ボタンをクリック後、しばらくするとGCPプロジェクトが作成されます。作成したGCPプロジェクトのダッシュボード画面に切り替われば、プロジェクトの作成は完了です。

手順②請求先アカウントを作成する。

無料トライアル期間であっても、かならず請求先アカウントの作成が必要になります。
有効なクレジットカードを手元に準備して、請求先の作成に進みます。
ヘッダーメニュの三から[お支払い]をクリックします。

名前を入力して[続行]をクリックします。

住所、支払い方法(クレジットカード情報)を入力後、[送信して課金を有効にする]をクリックします。

以上で請求先アカウントの作成は完了です。

手順③Speech-To-Textクライアントライブラリのインストール

Speech-To-Textを使うためのクライアントライブラリをインストールします。

pip install --upgrade google-cloud-speech

手順④サンプルコードを動かす

下記のGoogle Cloud AIと機械学習のドキュメントページに、各言語ごとのサンプルコードが公開されています。
私はPythonのコードを利用させてもらいました。
cloud.google.com

サンプルコードでは音声認証の言語設定が英語になっていますので、下記のように書き換えておきます。

 language_code = 'ja-JP'

あとは、コンソールから次のようなコマンドで実行します。

 python3 Speech-To-Text.py stream

マイクに向かって喋った言葉を、リアルタイムでテキスト化してコンソール画面に出力してくれます。
漢字変換もしてくれるし、英単語も正しく認識してくれます。全体的に認識の精度がすこぶる高い!
あとはテキスト化された単語に対して画面操作を割り当てるだけです。かんたん~!