英語音声ファイルを Google Speech-to-Text を使ってテキスト化し、Google スプレッドシートで翻訳する方法を聞かれたので解説してみます。色々方法はありますが、ここでは、Google Cloud Platform (GCP) の Cloud Shell から、 gcloud コマンドを使った方法を説明します。
全体の流れのイメージ
手順
mp3 を flac に変換
2020 年 2 月 29 日現在、Google Speech-to-Text が正式に対応しているフォーマットは、flac, wav になりますので、今回は、online-convert.com を使って、mp3 を flac に変換します。今回使うファイル test.mp3
は 元同僚の会社が開催した Webinar の音声です。
-
test.mp3
を online-convert.com にアップロード -
下記パラーメータを指定して、
test.mp3
をtest.flac
にコンバート
Parameter | Value |
---|---|
Change bit resolution | 16 bit |
Change sampling rate | 16000Hz |
Change audio channels | mono |
コンバートされた flac ファイルをダウンロード
自分のパソコン等に test.flac
をダウンロードしておきます。
GCP の初期設定
-
Cloud Console で Project を作成
Google Cloud Storage(GCS)に、flac ファイルをアップロード
-
GCS でバケットを作成(フォルダのようなもの。今回は
0228-speech
というバケットを作成しました。)バケットを作成する際にいくつか聞かれますが、バケットの名前だけいれて、後は、続行 ➡️ 続行 ➡️ 続行 ➡️ 続行 ➡️ 作成で進めてください。 -
test.flac
ファイルをアップロード
flac ファイルをテキスト化
-
Cloud Console から、[Cloud Shell を有効にする] をクリックし、Cloud Shell を起動
-
gcloud コマンドにより、
test.flac
ファイルをテキスト化します。
🟢コマンド: test.flac を text 化(バケット名、ファイル名は自分のものを使ってください)
gcloud ml speech recognize-long-running \
'gs://0228-speech/test.flac' \
--language-code='en-US' --async
ℹ️出力結果
Check operation [operations/8912459795353051547] for status.
{
"name": "8912459795353051547" 📣この OPERATION_ID をコピーしておいてください
}
🟢コマンド: 進行状況チェック(OPERATION_ID は上のステップでコピーしたもの)
gcloud ml speech operations describe OPERATION_ID
ℹ️出力結果
{
"metadata": {
"@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata",
"lastUpdateTime": "2020-02-28T12:05:09.348366Z",
"progressPercent": 28, 📣進捗率 28% ということ
"startTime": "2020-02-28T11:43:58.633950Z"
},
"name": "8912459795353051547"
}
🟢コマンド: 翻訳作業が終わった後に、test.json ファイルを作成するように。(OPERATION_ID は上のステップでコピーしたもの)
gcloud ml speech operations wait OPERATION_ID > test.json
ℹ️出力結果
Waiting for operation [operations/OPERATION_ID] to complete....
- gcloud コマンドにより、
test.flac
ファイルを GCS に転送します。
🟢コマンド: test.json を Google Cloud Storage に転送
gsutil cp test.json gs://0228-speech/test.json
🟢コマンド: test.json を Google Cloud Storage で公開
gsutil acl ch -u AllUsers:R gs://0228-speech/test.json
ℹ️出力結果
Updated ACL on gs://0228-speech/test.json
GCS にアップロードされた JSON ファイルを Google スプレッドシートにパース
How to import JSON data into Google Spreadsheets in less than 5 minutes に簡潔な手順があるので、こちらを参考に JSON をパースします。
-
ツール ➡️ スクリプト エディタ
-
最初にあるコードをすべて削除し、こちらの Script を上書き
-
ImportJSON.gs
という名前で保存 -
Google スプレッドシートに戻り、ImportJSON を使い
test.json
ファイルをパース(URL に先程コピーした test.json の公開 URL を使います)
=ImportJSON("https://storage.googleapis.com/0228-speech/test.json")
-
このままだと、GCS 上のファイルを削除すると参照できなくなるので、一度コピーして、テキストだけをペーストするといいかもしれません。
-
うまくパースできたら、GOOGLETRANSLATE 関数を使って、翻訳します。
=GOOGLETRANSLATE(A1)
GCS にアップロードしたファイルを削除
最後に、GCS にアップロードしたファイルを削除しておきます。まだ使うという方は残しておいても問題ありませんが、少々課金されますのでご注意を。
🟢コマンド: GCS に作成したバケットにあるファイルをすべて削除
gsutil -m rm gs://0228-speech/**
以上です。