Python クラウド テクノロジー

Google Cloud Speech to Textで音声ファイルを文字ファイルに落とすまでの手順詳細図解

投稿日:

Google Cloud Speech to TextというGoogleのクラウドサービスを使用して音声ファイルから文字ファイルを作成する手順を図解入りで詳細に説明します。

手順


1.Google Cloud Platformに入ります

2.新しいプロジェクトを作成します。

 今回は「Google Speech to Text test」というプロジェクト名としました。

3.左列のメニューバーの「APIとサービス>ライブラリ」から「Cloud Speech-to-Text API」を選択し有効化します。

4.左列のメニューバーの「APIとサービス>認証情報」から「認証情報を作成>サービスアカウントキー」を選択します。

5.サービスアカウント名は任意なので今回は「Speech2Text」とします。

キーのタイプはJSONとします。

作成を押すとJSON形式のファイルがダウンロードできます。

6.Cloud Shellをアクティブにします

7.ファイルをアップロードから5.で作成したJSON形式のファイルをアップロードします。

8.Shellに下記コマンドを打ち込み、アップロードしたJSON形式のファイルを設定します

ちなみにJSONファイルにスペースがあると上の写真のようにエラーが出ますのでご注意ください。

9.続いて音声ファイルをアップロードする入れ物(パケット)を作ります。

左列のメニューバーの「Storage>ブラウザ」を選択

パケット名は任意ですが今回「gs2t」とします。

以下続行していくとパケットが作成できます。

10.パケットに音声ファイルをアップロードします。

今回は3つの音声ファイルを対象とします。

ステレオだと正常に動作しなかったのでモノラルにしました。

ファイル名 形式 サンプリングレート 音数 内容
sample001.wav WAV 22050 モノラル 日本語(機械音声)
CallTest_mono.flac FLAC 44100 モノラル 日本語(人の声)
WarrenBuffett.flac FLAC 44100 モノラル 英語(人の声)
11.音声を文字に変換するPythonスクリプトを作成します。

18〜20行目をファイル毎に変更します。

・sample001.wav

sample_rate_hertz=22050, encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16, language_code='ja-JP'

・CallTest_mono.flac

sample_rate_hertz=44100, encoding=enums.RecognitionConfig.AudioEncoding.FLAC, language_code='ja-JP'

・WarrenBuffett.flac

sample_rate_hertz=44100, encoding=enums.RecognitionConfig.AudioEncoding.FLAC, language_code='en-US'

12.PythonスクリプトをCloud Shellからアップロードします。

クラウドの実行環境には7.でアップロードしたJSONファイルとPythonスクリプトが存在する状態となります。

13.Pythonスクリプトで使用する「google-cloud-speech」ライブラリを
インストールします。

14.PythonスクリプトをCloud Shell上で実行します。

Waiting for operation to complete... と表示されれば音声から文字への変換処理が実施されます。

音声ファイルが長ければ処理時間も長くなります。

14.出力された文字ファイルを確認

Shell上で以下コマンドを実行

%ls

output2019・・・.txtというのが出力されたファイルとなります。

15.文字ファイルをダウンロード

%dl output2019・・・.txt

※ハマり所
・speechライブラリがインポートできない

ImportError: cannot import name 'speech' from 'google.cloud' (unknown location)

→手順13.の通りShell上で下記コマンドを打ちインストールする

・パーミッションが拒否される

google.api_core.exceptions.PermissionDenied: 403 Your application has authenticated using end user credentials from the Google Cloud SDK or Google Cloud Shell which are not supported by the speech.googleapis.com. We recommend configuring the billing/quota_project setting in gcloud or using a service account through the auth/impersonate_service_account setting. For more information about service accounts and how to use them in your application, see https://cloud.google.com/docs/authentication/.

→手順7.8.の通りJSONファイルをエクスポートして環境設定する

結果


sample001.wav

→正確に文字になっています

CallTest_mono.flac

→かなり不正確になってしまいました

WarrenBuffett.flac

→日本語よりは精度が高そうではありますが実用できるかは何とも

私が実践した限りではまだ人の生音声の文字起こしをお任せというわけにはいかないという印象でした。

自身の音声を使用する場合には話し方の工夫で文字にしやすくできたりするのかもしれません。

あとは自身で教師データや報酬を用意して学習させていくという事でしょうか。

今回は以上です。

-Python, クラウド, テクノロジー

Copyright© IT系でないエンジニアの転身 , 2020 All Rights Reserved Powered by STINGER.