GoogleCloudPlatformを使ってみたい!!!!!!
是非使ってみたい。
使ってみたいんだ私は。
「AWS使ってますよ」はよく聞くのですが、
私の周りに限った話だと「GCP使ってますよ」はあまり聞かないんですよね。
検索すると使ってらっしゃる人はたくさんいるのですが、
私の周りだとたまたまAWS派が多いようで、私としてはGCPもちょっと気になってます。
AWSというとEC2の様なサーバ用途のイメージが強いですが、
GCPも同様のサービスがあったりします。
ただ、それよりも個人的には「CLOUD MACHINE LEARNING」のイメージが強いですね。
Googleの持つ膨大なデータで学習されたAIをちょっとだけ借りることが出来ます。
今回はザックリ概要を調べた上で、音声解析のサービス「CloudSpeedAPI」を使ってみましたので、
使った感想を残しておこうと思います。
1. GoogleCloudPlatformとは
まずはザックリと。
Googleが提供するクラウドサービスで、
- スケーラブルなホスティングサ-ビス
- ストレージやデータベースだけの提供
- Googleが学習させたAIの活用
などなど、約30種類のサービスを提供しています。
また、初回登録時には$300分の無料枠があり、お試しでいろいろ使ってみることが可能です。
しかもAWSのように従量課金であり、使った分だけ費用が発生するスタイル。
お試し、ということでは手を出しやすいですね。
2. CLOUD SPEECH API
高度な音声認識
Google Cloud Speech API では、使いやすい API で高度なニューラル ネットワーク モデルを適用し、
音声をテキストに変換できます。API は 80 以上の言語と方言を認識し、グローバルなユーザーベー
スをサポートします。アプリケーションのマイクを通して受信するユーザーの音声をテキストに変換
したり、音声によるコマンド制御を可能にしたり、音声ファイルをテキストに変換したり、さまざま
な機能を利用できます。Google が自身のサービスで利用している技術を利用して、リクエストでア
ップロードされた音声を認識し、Google Cloud Storage の音声ストレージに統合できます。
長い!!
要は音声解析です。
とりあえずチュートリアルに則って作業を進めてみます。
ええと、大まかに流れは以下になります。
- GoogleCloudPlatformに登録
- コンソールでアプリケーションの登録
- GoogleCloudPlatformSDKのインストール
- GoogleCloudStrageに解析用音声データを配置
- 音声解析リクエストの送信
1. GoogleCloudPlatformに登録
ここですね。
クレカの番号入れないと使えないのですが、
「勝手に請求なんか絶対にしないよ!!」と強めに書いてあるので大丈夫です。
企業の担当者の方は安心してお試しください。 (2017/8時点)
2. コンソールでアプリケーションの登録
「コンソールを開く」を押下して…
ヘッダにプロジェクト名が表示されているのでそれを押下して…
※プロジェクトが一つもない状態だと操作が違うかもしれません。
ここからプロジェクトを追加します。
この状態から使うAPIを追加していくのですが、導線が分かりづらいので注意です。
以下のスクリーンショットを参照
ここ!!!です。
最初どこから追加するのかわかりませんでした。
有効、にして…
認証情報を作成します。
お試しなので、APIキー方式にします。(ちょっと脆弱かも)
ここで作成したAPIキーをアプリ側に使わせるわけですね。
3. GoogleCloudPlatformSDKのインストール
GCPSDKをインストールする必要があります。
コマンドラインツールですね。
ここに沿って実施します。
GCPクイックインストール
今回の作業環境は以下
- CentOS7.1
- Python 2.7.5(Python 2.7必須です)
クイックスタートページ内のリンクからソースを取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
[root@localhost ~]# wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-158.0.0-linux-x86_64.tar.gz [root@localhost ~]# tar -zxvf google-cloud-sdk-158.0.0-linux-x86_64.tar.gz\?hl\=ja [root@localhost ~]# ./google-cloud-sdk/install.sh Do you want to help improve the Google Cloud SDK (Y/n)? Y # レポートをGoogleに送信するか聞かれるので、適当にYes |----------------------------------------------------------------------------------------------------------------| | Compo-e-ts | |----------------------------------------------------------------------------------------------------------------| | Status | -ame | ID | Size | |----------------------------------------------------------------------------------------------------------------| | Update A-ailable | Big-uery Comma-d Li-e Tool | b- | < 1 MiB | | Update A-ailable | Cloud SDK Core Libraries | core | 6.5 MiB | | Update A-ailable | Cloud Storage Comma-d Li-e Tool | gsutil | 3.0 MiB | | -ot I-stalled | App E-gi-e Go E|te-sio-s | app-e-gi-e-go | 98.0 MiB | | -ot I-stalled | Cloud Bigtable Comma-d Li-e Tool | cbt | 4.1 MiB | | -ot I-stalled | Cloud Bigtable Emulator | bigtable | 3.5 MiB | | -ot I-stalled | Cloud Datalab Comma-d Li-e Tool | datalab | < 1 MiB | | -ot I-stalled | Cloud Datastore Emulator | cloud-datastore-emulator | 15.4 MiB | | -ot I-stalled | Cloud Datastore Emulator (Legacy) | gcd-emulator | 38.1 MiB | | -ot I-stalled | Cloud Pub/Sub Emulator | pubsub-emulator | 33.2 MiB | | -ot I-stalled | Emulator Re-erse Pro|y | emulator-re-erse-pro|y | 14.5 MiB | | -ot I-stalled | Google Co-tai-er Local Builder | co-tai-er-builder-local | 3.6 MiB | | -ot I-stalled | Google Co-tai-er Registry"s Docker crede-tial helper | docker-crede-tial-gcr | 2.2 MiB | | -ot I-stalled | gcloud Alpha Comma-ds | alpha | < 1 MiB | | -ot I-stalled | gcloud Beta Comma-ds | beta | < 1 MiB | | -ot I-stalled | gcloud app Ja-a E|te-sio-s | app-e-gi-e-ja-a | 128.1 MiB | | -ot I-stalled | gcloud app Pytho- E|te-sio-s | app-e-gi-e-pytho- | 6.5 MiB | | -ot I-stalled | kubectl | kubectl | 16.0 MiB | | I-stalled | Default set of gcloud comma-ds | gcloud | | |----------------------------------------------------------------------------------------------------------------| To install or remove components at your current SDK version [158.0.0], run: $ gcloud components install COMPONENT_ID $ gcloud components remove COMPONENT_ID # コンポーネントを追加するときはこのコマンドでできる模様。 To update your SDK installation to the latest version [166.0.0], run: $ gcloud components update # コンポーネントのアップデートも可能 Modify profile to update your $PATH and enable shell command completion? Do you want to continue (Y/n)? Y # パスを通すぞと言ってくるので当然Yes The Google Cloud SDK installer will now prompt you to update an rc file to bring the Google Cloud CLIs into your environment. Enter a path to an rc file to update, or leave blank to use [/root/.bashrc]: Backing up [/root/.bashrc] to [/root/.bashrc.backup]. [/root/.bashrc] has been updated. ==> Start a new shell for the changes to take effect. For more information on how to get started, please visit: https://cloud.google.com/sdk/docs/quickstarts |
これでインストールは完了。
適当に作業ディレクトリを作って、プロジェクトとして初期化します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
[root@localhost ~]# mkdir gcptest [root@localhost ~]# cd gcptest/ [root@localhost gcptest]# source ~/.bashrc [root@localhost gcptest]# gcloud init Welcome! This command will take you through the configuration of gcloud. Your current configuration has been set to: [default] You can skip diagnostics next time by using the following flag: gcloud init --skip-diagnostics Network diagnostic detects and fixes local network connection issues. Checking network connection...done. Reachability Check passed. Network diagnostic (1/1 checks) passed. You must log in to continue. Would you like to log in (Y/n)? Y # googleアカウントにログインしろと言われるのでYes。 Go to the following link in your browser: https://accounts.google.com/o/oauth2/auth?redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&prompt=select_account&response_type=code&client_id=32555940559.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&access_type=offline Enter verification code: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # ↑のURLをクリックして認証コードを取得し、コンソールにコピペしてエンター。 Updates are available for some Cloud SDK components. To install them, please run: $ gcloud components update # アップデートしとけ、と言われるので、素直にやっておこう。後ほど実施。 You are logged in as: [spinach.jp@gmail.com]. Pick cloud project to use: [1] XXXXXX [2] XXXXXX [3] fluted-torus-176417 [4] XXXXXX [5] XXXXXX [6] Create a new project Please enter numeric choice or text value (must exactly match list item): 3 # ログインしたアカウントで設定済みのgoogle系のAPIのプロジェクト一覧が表示される。 # 今回は先ほど作成したプロジェクトを指定。 Your current project has been set to: [fluted-torus-176417]. |
gcloudのコンポーネントを最新化
1 2 |
[root@localhost ~]# gcloud components update |
これで準備は完了です。
4. GoogleCloudStrageに解析用音声データを配置
SpeechAPIは、GoogleCloudStrageに配置された音声データしか解析できないので、
事前に音声データをGloudStrageに配置しておく必要があります。
以下のURLにアクセスしてGoogleCloudStrageを申し込み、コンソールから音声ファイルを配置しましょう
こんな感じで配置します。
※いっぱいあるのは試行錯誤の結果。
そして、こちらに置かれたファイルは以下のURIでアクセス可能になってます。
1 |
gs://sinuous-citizen-2481/test06.flac |
スキーマが「gs://」
ドメイン部は画像の部分ですね。
GoogleCloudStrageでは、バケットという単位でディレクトリを切るので、それを指定します。
その後にファイル指定ですね。
ただ、SpeechAPIの音声解析の際に注意点です。
- モノラル音声のみ対応
- wmaやMP3はダメ。flac?などに変換する必要あり。
なので、予め上記の設定で録音するか、
既存の音声であれば変換しておく必要があります。
5. 音声解析リクエストの送信
以下の様なjsonファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 |
{ "config": { "encoding":"FLAC", "sampleRate": 44100, "languageCode": "ja-JP" }, "audio": { "uri":"gs://sinuous-citizen-2481/test.flac" } } |
トークンを取得しましょう。
なっがいのが返ってきます。
1 2 3 |
[root@localhost gcptest]# gcloud auth print-access-token XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
トークンと一緒にリクエストを投げます。
1 2 3 4 5 6 7 |
curl -s -k \ -H "Content-Type: application/json" \ -H "Authorization: Bearer [さっき取得したトークン]" \ https://speech.googleapis.com/v1beta1/speech:syncrecognize \ -d @test.json |
するとこんな感じのレスポンスが返ってきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "results": [ { "alternatives": [ { "transcript": "こんにちは", "confidence": 1 } ] } ] } |
成功ですね。
エラーメッセージとその対策
簡単に躓いた箇所のエラーメッセージとその対策です。
モノラルじゃないとき
1 2 |
Invalid audio channel count |
モノラル音声にしなさいということ。
モノラル音声に変換して配置し直しましょう。
サンプルレートの指定が間違ってるとき
1 2 |
sample_rate_hertz (16000) in RecognitionConfig must either be unspecified or match the value in the FLAC header (44100). |
jsonで指定されたSampleRateは16000だけど、音声ファイルは44100に見えるからそっちに寄せなさい。といこと。
jsonのSampleRateを44100にしましょう。
所感
まずは使ってみよう、ということで使ってみました。
所感としては以下です。
- 使う事自体は簡単
- 使用頻度や使用量で料金が変わるので注意。(無料枠はある)
- 複数人が喋るケースに対応していないので注意。
- 雑音が多いと解析が難しそう。(雑踏の中とか)
とはいえ、Googleさんのデータ量であればいずれこのあたりも解消されると思います。
今後が楽しみですね。
以上です。