在 Heroku 上使用 Google 的 TextToSpeech API

Using Google's TextToSpeech API on Heroku

我正在尝试在 heroku 上使用 Google's TextToSpeech REST API

我有一个服务帐户密钥文件,它在本地运行良好,但我不知道如何让它在未安装 Google Cloud SDK 的 Heroku 上运行。也就是说,考虑这个 sample curl call from the quickstart:

curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) -H "Content-Type: application/json; charset=utf-8" --data "{
  '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'
  }
}" "https://texttospeech.googleapis.com/v1beta1/text:synthesize" > synthesize-output.txt

这取决于 bash 命令 $(gcloud auth application-default print-access-token),这又取决于正在安装的 google 云 SDK(我在本地安装了 mac 版本)。

我研究了使用 ruby client library,我相信如果它通过 GOOGLE_CLOUD_KEYFILE_JSON env 变量具有密钥文件,它会在后台处理身份验证,但它似乎不支持 TextToSpeech。

如何在 Heroku 上进行 TextToSpeech API 调用?

您真的只需要使用服务帐户凭据通过 OAuth 2.0 获取访问令牌。您可以手动执行此操作或使用 SDK。 Google 作为一组 Speech-to-Text 客户端库,位于 link 此处。支持的语言包括 Ruby、C#、Go、Java、Node.js、PHP 和 Python:

您可以通过以下方式安装 Ruby SDK:

$ gem install google-cloud-speech

然后将文件路径作为环境变量添加到您的凭据文件中:

$ export GOOGLE_APPLICATION_CREDENTIALS="/path/to[FILE_NAME].json"

我使用 Go,这里有一个 Google 文本转语音示例,同时调用 text.synthesize(如您的示例)和 voices.list。此示例将 Google 密钥文件内容存储在一个环境变量中,这使得从 Heroku 实例中读取变得容易。虽然现在使用 google/google-api-go-client SDK, I just noticed and will consider upgrading to GoogleCloudPlatform/google-cloud-go

这会检索访问令牌,然后实例化 Google Go 客户端 SDK:

Google Go SDK 在此处支持文本转语音:

使用 godep 也可以轻松访问 Heroku,如此处所述:

我还有一个脚手架应用程序,它将创建您需要的文件,以便在此处为 Go 应用程序启用 "Deploy to Heroku" 按钮:

如果您使用 Go 并且有任何问题请告诉我。