Closed10

【GCP】Text To Speechで音声合成を試す(ターミナルからのリクエストで合成する)

noknok

はじめに

  • 音声合成を行うまでの手順を、メモしながら確認進める。

公式ドキュメント

https://cloud.google.com/text-to-speech/docs/create-audio-text-command-line?hl=ja

デモページ

https://cloud.google.com/text-to-speech?hl=ja

今回試した環境

OS・ツールなど バージョン 備考
MacOS Ventura( 13.2.1 ) -
Python 3.9.6 ※gcloud CLIインストール時にPython必要
iTerm2(zsh) Build 3.4.20 ※デフォルトのターミナルでも可
noknok

無料プログラムの概要

  • 90日間 $300相当のクレジットが付与される
  • 無料枠の制限の範囲内であれば課金されることはない
  • 無料トライアル登録時に、クレカ情報の登録は必要(本人確認のために必要)
noknok

音声合成確認までの、大まかなフローまとめ

https://cloud.google.com/text-to-speech/docs/before-you-begin?hl=ja

  1. 新規GCPプロジェクト作成
  2. Text To Speechサービスの有効化
  3. サービスアカウントの作成
    3-1. サービスアカウントを新規作成する
    3-2. サービスアカウントに JSON キーを作成する
    3-3. 認証情報の環境変数を設定する
  4. gcloud CLI をインストール
  5. コマンドラインを使用してテキストから音声を作成する
    5-1. gcloud CLI を使って、認証トークンを取得する
    5-2. コマンドラインで、テキストから音声合成を行う(※直接音声ファイルが生成される訳ではない)
    5-3. 音声合成結果のデータをデコードし、音声ファイルを生成する
noknok

1、新規GCPプロジェクト作成

  1. ダッシュボードから、[プロジェクトの選択] > [新しいプロジェクト] を選択
  2. 任意のプロジェクト名を入力し、作成

新しいプロジェクト選択
プロジェクト名入力

noknok

2、Text To Speechサービスの有効化

  1. メニューから、[APIとサービス] > [ライブラリ] を選択
  2. 検索欄で "Text To Speech" を検索 > [Cloud Text-to-Speech] を選択
  3. Text To Speechサービス内の、[有効にする] を選択

ライブラリ選択
サービス検索
サービス有効化

noknok

3、サービスアカウントの作成

3−1、サービスアカウントを新規作成する

  1. メニュー内の、[サービスアカウント] > [サービスアカウントを作成] を選択
  2. [サービスアカウントの詳細] を任意の値で入力 > [完了] を選択
    ※今回は必須項目だけ入力とした。作成完了後、サービスアカウントが追加されていたらOK。
    サービスアカウント作成
    値入力
    作成結果

3−2、サービスアカウントに JSON キーを作成する

  1. タブメニューから、[キー] > [鍵を追加] を選択
  2. キータイプを [JSON] とし、[作成] を選択
  3. 作成ボタン選択後、JSONファイルがPCにダウンロードされることを確認する
  4. ダウンロード後のJSONファイルは、任意の場所に格納する
    ※今回はユーザーディレクトリ直下にGCP用のフォルダを作成し、格納した。
    鍵を追加
    鍵を作成
    鍵を保存
    格納場所

3−3、認証情報の環境変数を設定する

  1. ターミナルを起動する(私の環境だとiTerm2を利用)
  2. 以下コマンドを実行し、環境変数の設定を行う
export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"

# 例: export GOOGLE_APPLICATION_CREDENTIALS="/Users/GCP-Keys/xxxxxxxxxx.json"
noknok

4、gcloud CLI をインストール

https://cloud.google.com/sdk/docs/install?hl=ja

  1. Pythonのインストール状況を確認する
    ※Python3(3.8~3.9)が既にインストール済みだったので、今回はPythonインストールをスキップした。
ターミナル
# 以下いずれかのコマンドで、Pythonバージョンを確認
python3 -V
python -V
  1. 上記公式サイトより、環境に合った gcloud CLI をダウンロードする
  2. ダウンロードしたファイルを、任意の場所に展開する
    ※今回は、ユーザーディレクトリ直下に展開した(例: /Users/ユーザー名/展開先)
ターミナル
# tar.gzの展開コマンド例
tar zxvf google-cloud-cli-447.0.0-darwin-arm.tar.gz
  1. インストールスクリプトを使用して、gcloud CLIツールをPATHに追加
ターミナル
# 展開したフォルダのルートから以下を実行する
./google-cloud-sdk/install.sh
  1. gcloud CLI を初期化
ターミナル
# 展開したフォルダのルートから以下を実行する
tar zxvf google-cloud-cli-447.0.0-darwin-arm.tar.gz
noknok

5、コマンドラインを使用してテキストから音声を作成する

5−1、コマンドラインで、テキストから音声合成を行う(※直接音声ファイルが生成される訳ではない)

  1. リクエスト本文を、「request.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"
  }
}
  1. curlコマンドを使い、音声合成のリクエストを実行する。
    ※「request.json」が存在するディレクトリ配下で実行する。
ターミナル
curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://texttospeech.googleapis.com/v1/text:synthesize"
ターミナル
# レスポンス例
{
  "audioContent": "//NExAxxxxxxxxxxxxxxxxxxxxx 〜長いので省略〜"
}

5−2、音声合成結果のデータをデコードし、音声ファイルを生成する

  1. リクエスト結果内の、「audioContent」の値をコピーし(上記の"/NExAxxxxxxxxxxxxxxxxxx"の部分)、テキストファイルに保存する。
  2. 以下コマンドを実行し、デコードして音声ファイルを生成する
    ※公式サイトのコマンドだと、「-i」オプションがなかった。付けないと正常に実行できなかったので、付与した。
ターミナル
base64 --decode -i SOURCE_BASE64_TEXT_FILE.txt > DESTINATION_AUDIO_FILE.mp3
noknok

合成周りの特徴メモ

  • 合成時には、以下の調整が可能(参考元
要素 設定属性
ピッチの出力 pitch
音量 volume
発話速度 rate
  • 音声タイプは以下がある(参考元
タイプ 概要
標準 標準の音声。少し機械音ぽさあり(個人感想)
Neural2 カスタム音声で使用される技術と同じもので作成された音声(標準よりもナチュラルな合成音)
Studio ナレーション、ニュース読み上げなど、長いテキストで使用するために特別に設計されたもの
WaveNet Googleアシスタント、Googl検索、Google翻訳の音声生成に使用されているモデルを使用するもの
このスクラップは2023/10/01にクローズされました