LoginSignup
1
1

More than 1 year has passed since last update.

RubyOnRailsでGoogleTextToSpeechを使う。

Posted at

GoogleTextToSpeechに関する記事は、いくつかあるが、Rubyに絞ると良い記事がなく、比較的ハマったので、備忘録として、記録しておく。

結果として、こうなります。

Gemfile *.rb
gem 'google-cloud-text_to_speech', require: false
*.rb
  require "google/cloud/text_to_speech"

  def self.generate_speech
    # client生成
    client = Google::Cloud::TextToSpeech.text_to_speech do |config|
      # サービスクライアントを作成し、ダウンロードした秘密鍵を指定する。
      config.credentials = "config/xxxxxxxx.json"
    end
  # 設定値はこちら
    speech = {
      audio_config: {
        audio_encoding: "MP3",
        pitch: 0,
        speaking_rate: 1
      },
      input: {
        text: "こんにちわ"
      },
      voice: {
        language_code: "ja-JP",
        name: "ja-JP-Neural2-B"
      }
    }

    # The three arguments are all positional.
    response = client.synthesize_speech speech    
    # ここに音声ファイルが入ってます。
    return response.audio_content
  end

参考資料と解説

2023-01-10時点で、GoogleTextToSpeechのトップページに、Rubyのコードスニペットはなく、一番良い資料にたどり着くまでのリンクも見つけられません。

参考にするべきは、こちらのRubyのAPI資料である。

こちらの資料も、コードスニペットは、1.0からの移行に関するページしかないので、若干読みづらい。

認証について

ココらへんかなぁ。
サービスクライアントの作成については、下記記事など参照。

TextToSpeechの利用方法として、ユーザーの個人情報を利用するユースケースが想定されており、
その場合は、サービスクライアントは利用しないほうが良い。(そのためにカスタム質問が用意されている。)

単なる音声読み上げとしてつかったり、利用規約で正しくやり取りができていれば、サービスクライアントを使う方法で問題ないだろう。
あと、APIキーを利用した、アクセス方法はTextToSpeechでは利用できない。

上記のGEMを使わない方法は、サービスクライアントのキー情報を利用して、一時的なアクセスキーを作る必要があるので、google-cloud-text_to_speechのGemを利用した方がとても簡単。
google-api-ruby-clientというGEMもあるが、こちらを使わなくても、問題はない。

サービスクライアントがどういう認証を行っているかは、認証方式の解説はこちらの記事がが良さそうです。

まだ未解決の課題

サービスクライアントの設定情報をCredentialsで保存したいが、File読み込み以外の手順が必要そう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1