1. kkitase

    No comment

    kkitase
Changes in title
-英語音声をテキスト化して GAS で翻訳してみた
+英語音声をテキスト化してさらに翻訳する方法
Changes in body
Source | HTML | Preview

英語音声ファイルを Google Speech-to-Text を使ってテキスト化し、Google スプレッドシートで翻訳する方法を聞かれたので解説してみます。色々方法はありますが、ここでは、Googleで翻訳する方法を聞かれたので解説してみます。色々方法はありますが、ここでは、 Cloud Platform (GCP) Cloud Shell から、 gcloud コマンドを使った方法を説明します。Google Cloud Platform (GCP) の Cloud Shell から、 gcloud コマンドを使った方法を説明します。

全体の流れのイメージ

image.png

手順

mp3 を flac に変換

今回は、online-convert.com を使います。また、今回使うファイル test.mp3 は 元同僚の会社が開催した Webinar の音声です。

  • test.mp3online-convert.com にアップロード

  • 下記パラーメータを指定して、test.mp3test.flac にコンバート

Parameter Value
Change bit resolution 16 bit
Change sampling rate 16000Hz
Change audio channels mono

コンバートされた flac ファイルをダウンロード

自分のパソコン等に test.flac をダウンロードしておきます。

GCP の初期設定

  • Cloud Console で Project を作成
    image.png

  • Cloud Speech-to-Text API を有効に(検索窓より、Speech-to-Textで検索)
    image.png

Google Cloud Storage(GCS)に、flac ファイルをアップロード

  • GCS でバケットを作成(フォルダのようなもの。今回は0228-speech というバケットを作成しました。)バケットを作成する際にいくつか聞かれますが、バケットの名前だけいれて、後は、続行 ➡️ 続行 ➡️ 続行 ➡️ 続行 ➡️ 作成で進めてください。

  • test.flac ファイルをアップロード

flac ファイルをテキスト化

  • Cloud Console から、[Cloud Shell を有効にする] をクリックし、Cloud Shell を起動
    image.png

  • 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 で公開リンクをクリックし、URL をコピーしておきます。 image.png

GCS にアップロードされた JSON ファイルを Google スプレッドシートにパース

How to import JSON data into Google Spreadsheets in less than 5 minutes に簡潔な手順があるので、こちらを参考に JSON をパースします。

  • Google スプレッドシートを作成
  • ツール ➡️ スクリプト エディタ
  • 最初にあるコードをすべて削除し、こちらの Script を上書き
  • ImportJSON.gs という名前で保存
  • Google スプレッドシートに戻り、ImportJSON を使い test.json ファイルをパース(URL に先程コピーした test.json の公開 URL を使います) =ImportJSON("https://storage.googleapis.com/0228-speech/test.json")
  • このままだと、GCS 上のファイルを削除すると参照できなくなるので、一度コピーして、テキストだけをペーストするといいかもしれません。
  • うまくパースできたら、GOOGLETRANSLATE 関数を使って、翻訳します。
    =GOOGLETRANSLATE(A1)

  • 完成イメージは、こんな感じです。
    image.png

GCS にアップロードしたファイルを削除

最後に、GCS にアップロードしたファイルを削除しておきます。まだ使うという方は残しておいても問題ありませんが、少々課金されますのでご注意を。

🟢コマンド: GCS に作成したバケットにあるファイルをすべて削除
gsutil -m rm gs://0228-speech/**

以上です。

ご意見、ご依頼等あれば、Facebook | Twitter までお願いします。