Text-to-Speech API

GCP の Text-to-Speech API を使って
テキストから音声を生成する

入力したテキストを
音声を男性か女性か選択して
生成する

音声の文字起こしなら
Speech toText
のほうになる

GCP へログインし
認証情報 > API とサービスの有効化

Cloud Text-toSpeech API
をクリック

これには無料枠があるようでhttps://cloud.google.com/text-to-speech/pricing/?hl=JA
に記載されている

1ヶ月あたり
0〜100 万文字

音声合成マークアップ言語(SSML)タグも文字数カウントに含まれる

有効化のときに課金設定があるので注意

有効化できたら
認証情報で
認証情報を作成

サービスアカウントを作成する

続行
で完了
をクリック

これでサービスアカウントが作成される

このアドレスをクリックし
キーをクリック

鍵を追加

新しい鍵を追加
でタイプをJSONにする

これでJSONファイルをダウンロードしたら
環境変数を設定する

GOOGLE_APPLICATION_CREDENTIALS
を設定する

これにパスを設定する
ダウンロードしたJSONファイルを
secret.json に名前を変えておく

ダウンロードしたファイルを新しい順にするなら

lsコマンドでファイルを新しい順番、古い順番にソートする方法

を参考に

ls -lt

で表示されるので

cp raspberryPi-b787a5abd4d5.json secret.json

でコピーし

mv secret.json ~/notebook/


jupyter notebook で扱えるようにしておく

次に
notebook でos ライブラリをインポートすることで使っていく

import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'secret.json'

でOK

次にライブラリのインストール

Text-to-Speech クライアント ライブラリ

を参考に

pip install --upgrade google-cloud-texttospeech

をいれる

notebook でやるなら

!pip install --upgrade google-cloud-texttospeech

とする

これで準備できたので
音声の再生

from google.cloud import texttospeech

client = texttospeech.TextToSpeechClient()

synthesis_input = texttospeech.SynthesisInput(text="Hello, World!")

voice = texttospeech.VoiceSelectionParams(
    language_code="en-US", ssml_gender=texttospeech.SsmlVoiceGender.NEUTRAL
)

audio_config = texttospeech.AudioConfig(
    audio_encoding=texttospeech.AudioEncoding.MP3
)

response = client.synthesize_speech(
    input=synthesis_input, voice=voice, audio_config=audio_config
)

with open("output.mp3", "wb") as out:
    out.write(response.audio_content)
    print('Audio content written to file "output.mp3"')

クライアント ライブラリの使用

からコピペして
コメント部分を削除

client = texttospeech.TextToSpeechClient()

の部分で認証をしている

synthesis_input = texttospeech.SynthesisInput(text="Hello, World!")


出力する音声をセット
今回なら
Hello, World
となる

voice = texttospeech.VoiceSelectionParams(
    language_code="en-US", ssml_gender=texttospeech.SsmlVoiceGender.NEUTRAL
)

で声の設定
language_code で言語の指定
en-US なら英語

ssml_gender は性別の設定
NEUTRAL だとどっちでもないような音声になる

audio_config = texttospeech.AudioConfig(
    audio_encoding=texttospeech.AudioEncoding.MP3
)

で音声形式の指定
今回は MP3 にしている

これらのパラメータを

response = client.synthesize_speech(
    input=synthesis_input, voice=voice, audio_config=audio_config
)

でセットして音声を作成する

filename ="output.mp3"
with open(filename, "wb") as out:
    out.write(response.audio_content)
    print(f'Audio content written to file {filename}')

と最後を変えることで音声ファイル名を簡単に変更できる

wb なので
バイナリ形式で書き込み

しかし Cloud SDK がないと実行できないみたいなので
Google Cloud SDK のインストール

を参考に

echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list


Cloud SDK の配布 URI をパッケージ ソースとして追加

sudo apt-get install apt-transport-https ca-certificates gnupg


apt-transport-https がインストールされているのを確認

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -


公開鍵のインポート

sudo apt-get update
sudo apt-get install google-cloud-sdk


リポジトリ更新と
google-cloud-sdk のインストール

しかしマニュアルを読んでみたら
全機能は使えないので
Linux 用インストールでないとダメと気づいた
Ubuntu 18.04 (WSL) に、Google Cloud SDK をインストールする

も参考に

一度

sudo apt-get remove google-cloud-sdk
sudo apt remove python3-crcmod 

で削除

curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-337.0.0-linux-x86_64.tar.gz

でファイルを取得

tar zxvf google-cloud-sdk-337.0.0-linux-x86_64.tar.gz 


圧縮ファイルを展開

/google-cloud-sdk/install.sh

を実行し
Google Cloud SDK のパスを通すことでコマンド補完ができるようになる

source .bashrc

を実行して設定反映を忘れずに

./google-cloud-sdk/bin/gcloud init


SDK初期化と認証開始

You must log in to continue. Would you like to log in (Y/n)?  

となるので
Y
とすると
ブラウザが立ち上がり
認証画面になる

認証成功なら
https://cloud.google.com/sdk/auth_success
の画面がでる

次にどのプロジェクトをデフォルトにするか聞かれる

Please enter numeric choice or text value (must exactly match list 
item):  
Please enter a value between 1 and 12, or a value present in the list: 

となるので
任意のプロジェクト No を入力すると終了

gcloud components update

でコンポーネントを更新

しかしこれでもダメ

GCPの Text-to-Speech で 文字読み上げ を作る

を参考に

pip install pydub


MP3再生に必要なパッケージをいれる

pip install google-cloud-storage

をしたけどダメ

もう一回APIの確認をしたら
Cloud Speech Text API が無効になっていたので
再度有効化してから
もう一度鍵ファイルを作成することで有効化された

これで再度実行したら無事に音声が作成された