GoogleのTTSを試してみたメモ


## 概要
[クイックスタート](https://cloud.google.com/text-to-speech/docs/quickstart-protocol?authuser=1#synthesize_audio_from_text)を試してみる。
けっこうスムーズにできた。
日本語もOKだった。

## 新規プロジェクトの作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/37474980-589c-d5ca-4419-36b5ebc99107.png)

## 課金が有効になっていることを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/03c2f9b9-ffac-d6de-a9b1-731b51b80b74.png)

## Text To Speechの有効化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/13ba2e4f-832e-efdc-6431-eeed152b1cfb.png)

## 認証情報の作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/010ec5db-7ee0-acfd-c6bc-11893c414315.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/97609101-da4e-8666-ca80-74504ae9dc42.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99876/061d000f-d9f3-f06a-651a-0a6923a30bd8.png)

## ファイルの配置と環境変数の設定

* 今回は試しに、ダウンロードしたjsonをprivate.jsonにリネームして、`/private`ディレクトリに配置した
* 配置したファイルのパスを環境変数に指定

```
export GOOGLE_APPLICATION_CREDENTIALS="/private/private.json"
```

## cloud sdkをインストール
https://cloud.google.com/sdk/docs?authuser=1

## gcloudにアクセス

### 環境変数が設定されていることを確認

```
bash-5.0# echo $GOOGLE_APPLICATION_CREDENTIALS
/private/private.json
```

### 環境変数で指定されたパスにファイルがあることを確認

```
bash-5.0# ls /private/
private.json
```

### テストファイルの準備

```json:/data/test.json
{
  "input": {
    "text": "Android is a mobile operating system developed by Google, based on the Linux kernel and designed primarily for touchscreen mobile devices such as smartphones and tablets."
  },
  "voice": {
    "languageCode": "en-gb",
    "name": "en-GB-Standard-A",
    "ssmlGender": "FEMALE"
  },
  "audioConfig": {
    "audioEncoding": "MP3"
  }
}
```

```sh:/scripts/test.sh
#!/bin/bash

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @/data/test.json  \
https://texttospeech.googleapis.com/v1/text:synthesize \
-o /response/`date +%Y%m%d-%H%M%S`.json
```

### 実行

```
bash-5.0# ls /scripts/test.sh
```

### 結果の確認
* /response/20200312-110838.json が作成されたことを確認

### jsonファイルから値を取り出す
* [jq](https://qiita.com/takeshinoda@github/items/2dec7a72930ec1f658af) コマンドをインストールして使用する。
  * -r `"`を除去するオプション


```sh:/scripts/jsonToBase64.sh
#!/bin/bash

cat /response/20200312-110838.json | jq .audioContent -r > /base64/test.txt
```

### 取り出した内容をbase64デコード

```sh:/scripts/base64ToMP3.sh
#!/bin/bash

base64 -d /base64/test.txt > /mp3/test.mp3
```

### 作成されたmp3ファイルを確認。

喋ってる！

### ここまでのソース
[この時点のソース](https://github.com/hibohiboo/develop/tree/40804f0e552e5ef61d428a2382196235d1588085/tutorial/lesson/gcp/tts)

#### 環境

- Windows 10 Home
- virtualbox 6.1.4
- Vagrant 2.2.7
- ubuntu 18.04 LTS Linux ubuntu-bionic
- docker-ce Docker version 19.03.5
- docker-compose version 1.25.3

## 日本語を試してみる

### データファイルの作成

```json:/data/japan.sh
{
  "input": {
    "text": "よくできました"
  },
  "voice": {
    "languageCode": "ja-JP",
    "name": "ja-JP-Standard-A",
    "ssmlGender": "FEMALE"
  },
  "audioConfig": {
    "audioEncoding": "MP3"
  }
}
```

### 実行スクリプトの作成
* 今回は、途中のファイルを作らずに、apiで取得した結果を直接mp3にする

```sh:/scripts/apiToMP3.sh
#!/bin/bash

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @/data/japan.json  \
https://texttospeech.googleapis.com/v1/text:synthesize | jq .audioContent -r | base64 -d > /mp3/japan.mp3
```

### よくできました！

[この時点のソース](https://github.com/hibohiboo/develop/tree/5187f3c9d98e8a6641e6e89984ec18ae90fff241/tutorial/lesson/gcp/tts)


## 参考
[Google Cloud Text-to-Speech の使い方 日本語テキストを読み上げさせてみよう](https://blog.apar.jp/web/9893/)