我正在尝试在heroku上使用Google's TextToSpeech REST API。
我有一个服务帐户密钥文件,在本地工作正常,但我无法弄清楚如何在没有安装Google Cloud SDK的Heroku上运行它。也就是说,考虑这个sample curl call from the quickstart:
$(gcloud auth application-default print-access-token)
取决于bash命令GOOGLE_CLOUD_KEYFILE_JSON
,后者依赖于正在安装的Google云端SDK(我在本地安装了mac版本)。
我研究过使用ruby client library,如果它通过.shadow
env变量拥有密钥文件,我相信它会在引擎盖下处理身份验证,但它似乎不支持TextToSpeech。
如何在Heroku上进行TextToSpeech API调用?
答案 0 :(得分:2)
您只需要使用服务帐户凭据通过OAuth 2.0获取访问令牌。您可以手动执行此操作或使用SDK。谷歌作为一组语音到文本客户端库在此链接。支持一些语言,包括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,但我刚刚注意到并且现在会考虑升级到GoogleCloudPlatform/google-cloud-go
。
这将检索访问令牌,然后实例化Google Go Client SDK:
Google Go SDK支持文字转语音:
使用此处记录的godep
也很容易使用Heroku:
我还有一个脚手架应用程序,它将创建启用"部署到Heroku"所需的文件。这里的Go应用按钮:
如果您使用Go并有任何问题,请告诉我。