Help us understand the problem. What is going on with this article?

英語音声をテキスト化して翻訳する方法

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

全体の流れのイメージ

image.png

手順

mp3 を flac に変換

2020 年 2 月 29 日現在、Google Speech-to-Text が正式に対応しているフォーマットは、flac, wav になりますので、今回は、online-convert.com を使って、mp3 を flac に変換します。今回使うファイル 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 までお願いします。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした