##まず最初に準備(サービスアカウント、バケット作成)
まずはこの記事を参考に以下のことをやります。
GoogleCloudStorageでPythonからファイルをやりとりする方法
- サービスアカウントの作成(API)
- クラウドストレージでバケットを作成
サービスアカウント作成時に、役割が「ストレージ管理者」になっていますが自分はそれが選べなかったので、「オーナー」にしました。
全リソースへのアクセス権限があるみたいなので迷ったらこれでいいのではないでしょうか。
##PythonでGoogleCloudStorageを操作
Googleクラウドのパッケージをインストールします。
sudo pip install --upgrade google-cloud
以下のスクリプトでバケットにローカルファイルのアップロードと、バケットからのダウンロードが可能です。
import os
from google.cloud import storage
#クラウドストレージ(バケット)に接続
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]='キーファイルパス(Json)'
client = storage.Client()
bucket = client.get_bucket('バケット名')
#ファイルをアップロード
blob = bucket.blob('保存ファイル名')
blob.upload_from_filename(filename='ローカルファイルパス')
#アップロードしたファイルをダウンロード
blob2 = bucket.get_blob('取得ファイル名')
print(blob2.download_as_string())
##以下のエラーが出た場合(No module named 'google.api_core.client_info')
自分の場合はここで以下のエラーが出て先に進めなかったのですが、
ModuleNotFoundError: No module named 'google.api_core.client_info'
pythonの仮想環境を構築し、そこにライブラリをインストールすることで正常に動きました。
venv: Python 仮想環境管理
$ python3 -m venv venv
$ source venv/bin/activate
$ venv/bin/pip install --upgrade google-cloud
$ pip install google.cloud.storage
これらのコマンド打った後に、実行したら無事に操作できました。
##次にやりたいこと
- pythonのウェブフレームワークを使用して、簡単な文字起こしサービスを作成
- まずはローカルからではなくwebからアップロードしたものをバケットに送れるようにする
- Cloud Speech-to-Text を使用
- 今回はテキストファイルを用いたが、課題は結構アップロードからダウンロードまで時間がかかったこと
- 長い音声ファイルを場合のレスポンス。。