使用 cURL 或 Python 让 Google Cloud Text to Speech 工作

Posted

技术标签:

【中文标题】使用 cURL 或 Python 让 Google Cloud Text to Speech 工作【英文标题】:Getting Google Cloud Text to Speech to work using cURL or Python 【发布时间】:2019-03-22 05:47:17 【问题描述】:

我尝试遵循以下建议:

Google Cloud Text To Speech API Quickstart example

Google Cloud Text-to-Speech Interface Confusion (How do I download the mp3 files?)

https://cloud.google.com/text-to-speech/docs/quickstart-client-libraries

但即使有所有这些信息,我也无法让它工作。 关于分步指南,我被困在:

“然后你可以像这样使用 curl 命令”或“3)他们提供了一个通用文件的示例请求:”

代码在哪里输入? Powershell 只给我错误,不幸的是这些错误是德语,所以我尝试翻译它们。我不认为它打算在那里使用代码,因为我除了复制并粘贴带有我的凭据的行之外什么也没做。

这是有问题的错误,当我将链接 #2 的代码(步骤 3)粘贴到 Powershell 中时:

In line: 3 characters: 5
+ --data "
+ ~
Expression is missing after the unary operator "-".
In line: 3 characters: 5
+ --data "
+ ~~~~
Unexpected token "data" in expression or statement.
In line: 3 characters: 9
+ --data "
+ ~
In the section "Data" the associated statement block is missing.
In line: 17 characters: 6
+ "" https://texttospeech.googleapis.com/v1/text:synthesize "> synth ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
Unexpected Token "" https://texttospeech.googleapis.com/v1/text:synthesize "" in expression or statement.
    + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId: MissingExpressionAfterOperator

【问题讨论】:

我可以在 Windows 环境中重现相同的错误,我认为这里的问题是您如何指定 cUrl。正如我所看到的,PS 中的命令应该是不同的,正如some other questions 所解释的那样。但是,我对 PS 不熟悉,您可以对此做进一步的研究。 【参考方案1】:

我已经用Google Cloud Text-to-Speech Interface Confusion (How do I download the mp3 files?) 进行了测试。我在步骤3) 中遇到了这个错误,我猜这就是你所看到的:


  "error": 
    "code": 403,
    "message": "Your application has authenticated using end user credentials from the Google Cloud SDK or Google Cloud Shell which are not supported by the texttospeech.googleapis.com. We recommend that most server applications use service accounts instead. For more information about service accounts and how to use them in your application, see https://cloud.google.com/docs/authentication/.",
    "status": "PERMISSION_DENIED"
  

所以我的问题是身份验证。为了解决这个问题,我按照this document中的步骤操作:

    将服务帐号密钥下载为 JSON 文件 运行export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"(我使用的是Linux环境)

在您的情况下,您应该运行 $env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]",因为您使用的是 Powershell。

【讨论】:

非常感谢您的帮助!!我应该更好地澄清 - 对不起。身份验证过程似乎是成功的,至少它不是我现在问题的罪魁祸首。我翻译了错误代码并编辑了我的帖子。我在编程方面经验不足,但看起来我正在使用 powershell 无法使用的语法。由于没有进一步说明如何处理步骤 3) 中的代码,老实说,我只是将其粘贴到终端中,但这并不太顺利......你知道我做错了什么吗?

以上是关于使用 cURL 或 Python 让 Google Cloud Text to Speech 工作的主要内容,如果未能解决你的问题,请参考以下文章

重定向 curl 后获取最终 URL

无法让 cURL 或 file_get_contents 在 PHP 中工作

使用 PHP 和 Curl 登录 Google,Cookie 已关闭?

Google Cloud Storage - 使用 CURL 请求下载文件

使用 PHP cURL 将文件上传到 Google 签名 URL

Qualys API 与 Python 的集成