1. kkitase

    No comment

    kkitase
Changes in body
Source | HTML | Preview
@@ -1,124 +1,124 @@
英語音声ファイルを [Google Speech-to-Text](https://cloud.google.com/speech-to-text/) を使ってテキスト化し、[Google スプレッドシート](https://docs.google.com/spreadsheets/create)で翻訳する方法を聞かれたので解説してみます。色々方法はありますが、ここでは、Google Cloud Platform (GCP) の Cloud Shell から、 gcloud コマンドを使った方法を説明します。
## 全体の流れのイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42406/06ec945a-dcc5-1419-5cc3-c73ec2e42e6b.png)
## 手順
### mp3 を flac に変換
今回は、[online-convert.com](https://audio.online-convert.com/convert-to-flac) を使います。また、今回使うファイル `test.mp3` は 元同僚の会社が開催した Webinar の音声です。
- `test.mp3` を [online-convert.com](https://audio.online-convert.com/convert-to-flac) にアップロード
- 下記パラーメータを指定して、`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](https://console.cloud.google.com/) で Project を作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42406/9c261fed-e108-f542-06fb-86e15144e67a.png)
- Cloud Speech-to-Text API を有効に(検索窓より、`Speech-to-Text`で検索)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42406/d6ab24d6-291b-b77b-a495-a26234badb9f.png)
### Google Cloud Storage(GCS)に、flac ファイルをアップロード
- [GCS](https://console.cloud.google.com/storage/browser) でバケットを作成(フォルダのようなもの。今回は`0228-speech` というバケットを作成しました。)バケットを作成する際にいくつか聞かれますが、バケットの名前だけいれて、後は、続行 ➡️ 続行 ➡️ 続行 ➡️ 続行 ➡️ 作成で進めてください。
- `test.flac` ファイルをアップロード
### flac ファイルをテキスト化
- Cloud Console から、[Cloud Shell を有効にする] をクリックし、Cloud Shell を起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42406/3b8067fa-0a68-3174-0ac3-7ad567973e09.png)
- gcloud コマンドにより、`test.flac` ファイルをテキスト化します。
```bash
🟢コマンド: 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 に転送します。
```bash
🟢コマンド: 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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42406/05e8c035-09c9-1388-3e9a-c76d8c86c68f.png)
### GCS にアップロードされた JSON ファイルを Google スプレッドシートにパース
[How to import JSON data into Google Spreadsheets in less than 5 minutes](https://medium.com/@paulgambill/how-to-import-json-data-into-google-spreadsheets-in-less-than-5-minutes-a3fede1a014a) に簡潔な手順があるので、こちらを参考に JSON をパースします。
- [Google スプレッドシートを作成](https://docs.google.com/spreadsheets/create)
- ツール ➡️ スクリプト エディタ
- 最初にあるコードをすべて削除し、[こちらの Script](https://gist.githubusercontent.com/paulgambill/cacd19da95a1421d3164/raw/047b04a1c321b697533adad5828e6df8748b5e54/import_json_appsscript.js) を上書き
- `ImportJSON.gs` という名前で保存
- Google スプレッドシートに戻り、ImportJSON を使い `test.json` ファイルをパース(URL に先程コピーした test.json の公開 URL を使います)
-`=ImportJSON("https://storage.googleapis.com/0228-test/test.json")`
+`=ImportJSON("https://storage.googleapis.com/0228-speech/test.json")`
- このままだと、GCS 上のファイルを削除すると参照できなくなるので、一度コピーして、テキストだけをペーストするといいかもしれません。
- うまくパースできたら、[GOOGLETRANSLATE 関数](https://support.google.com/docs/answer/3093331?hl=ja)を使って、翻訳します。
`=GOOGLETRANSLATE(A1)`
- 完成イメージは、こんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42406/10c91a33-952c-bea5-ecdb-b18e3555a689.png)
### GCS にアップロードしたファイルを削除
最後に、GCS にアップロードしたファイルを削除しておきます。まだ使うという方は残しておいても問題ありませんが、少々課金されますのでご注意を。
```bash
🟢コマンド: GCS に作成したバケットにあるファイルをすべて削除
gsutil -m rm gs://0228-speech/**
```
---
以上です。
ご意見、ご依頼等あれば、[Facebook](https://www.facebook.com/kkitase) | [Twitter](https://www.facebook.com/kkitase) までお願いします。