我正在尝试使用Google's TextToSpeech REST API在 Heroku 上。
我有一个服务帐户 key 文件,在本地运行良好,但我不知道如何使其在未安装 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 cloud SDK(我本地安装了mac版本) .
我研究过使用 ruby client library ,我相信如果它通过 GOOGLE_CLOUD_KEYFILE_JSON 环境变量具有 key 文件,它会在后台处理身份验证,但它似乎不支持 TextToSpeech。
如何在 Heroku 上进行 TextToSpeech API 调用?
最佳答案
您实际上只需要使用服务帐户凭据即可通过 OAuth 2.0 获取访问 token 。您可以手动执行此操作或使用 SDK。 Google 作为一组语音转文本客户端库,位于此处的链接。支持多种语言,包括 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 key 文件内容存储在环境变量中,这样可以轻松从 Heroku 实例读取。虽然这使用 google/google-api-go-client
SDK ,我刚刚注意到并会考虑升级到 GoogleCloudPlatform/google-cloud-go
现在。
这会检索访问 token ,然后实例化 Google Go 客户端 SDK:
Google Go SDK 在此处支持文本转语音:
Go 也可以使用 godep
轻松访问 Heroku,如下所述:
我还有一个脚手架应用程序,它将创建为此处的 Go 应用程序启用“部署到 Heroku”按钮所需的文件:
如果您使用 Go 并有任何疑问,请告诉我。
关于heroku - 在 Heroku 上使用 Google 的 TextToSpeech API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50429362/