Google Cloud 文字转语音 API - 权限错误

7
我正尝试按照这些说明设置Google Cloud Text-to-Speech API - https://cloud.google.com/text-to-speech/docs/quickstart。我已经成功完成了设置Google SDK和使用服务账户凭据进行身份验证的步骤1-6。然而,当我尝试运行合成语音的样本HTTP请求时,我收到以下错误信息:

在项目usable-auth-library中未使用过Cloud Text-to-Speech API,或者它已被禁用。请通过访问https://console.developers.google.com/apis/api/texttospeech.googleapis.com/overview?project=usable-auth-library启用它,然后重试。

当我按照错误消息中的链接时,它会引导我进入以下页面:

API“texttospeech.googleapis.com”不存在,或者您没有访问权限。

我很感激您的帮助。

看起来你的代码正在尝试使用 usable-auth-library 项目进行身份验证,而不是你实际的项目。我猜这是由于凭据的使用方式造成的。你是否尝试将 GOOGLE_APPLICATION_CREDENTIALS 环境变量设置为你的服务账号 JSON 文件的位置呢? - Jon Skeet
谢谢您的回复。我已按照您的建议设置了GOOGLE_APPLICATIONS_CREDENTIALS,但仍然遇到相同的错误。也许需要更改curl请求中的gcloud命令(curl -H“Authorization:Bearer”$(gcloud auth application-default print-access-token))吗? - MKB
如果你把 application-default 去掉,可能会有所帮助。如果你打算使用客户端库,直接跳过这一步可能更好,因为这样可以更容易地确保你真正使用了服务账号凭据。 - Jon Skeet
谢谢回复。现在问题已经得到解决,是在设置了GOOGLE_APPLICATION_CREDENTIALS环境变量之后重新运行gcloud auth activate-service-account步骤解决的。 - MKB
确认一下,我也按建议删除了“application-default”。 - MKB
显示剩余4条评论
3个回答

4

使用 API 密钥而不是谷歌文档推荐的服务帐号密钥,可以更轻松地在大多数平台上集成。

以下是获得 API 密钥所需的所有步骤:

  1. Cloud Console中创建项目(或使用现有项目)。
  2. 确保为您的项目启用了计费
  3. 启用 文本转语音 API
  4. 创建一个 API 密钥

如果您按照所说的正确执行了所有步骤,则可能只需要最后一步。

然后,您可以像这样使用 curl 命令

Curl -H "X-Goog-Api-Key: PUT_YOUR_API_KEY_HERE" \
  -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-text.txt

这对我解决了问题。 - mheavers
在执行这个步骤的同时,我们可以使用 PHP 的客户端库吗? - muneeb_ahmed

1
如果有人需要帮助,我在将API添加到具有JWT凭据的现有Google服务帐户时遇到了此错误。我按照快速入门协议上的链接进行操作,并成功使其工作。在下面的页面上,我点击了“启用API”按钮。

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

Text-to-Speech Quickstart

在下一页上,我点击了“创建项目”下拉菜单并选择了一个现有的项目。不需要获取新的凭据。

enter image description here

我正在使用Go语言,并且能够使用 golang.org/x/oauth2/google 运行我的代码。

0

一旦您创建了API密钥,这里是您的curl单行程序,它获取结果,解析它,格式化它并对其进行解码。

  1. 在此处生成API密钥 https://console.cloud.google.com/apis/credentials?showWizardSurvey=true
  2. 安装jq JSON解析器
  3. 运行:
curl -H "X-Goog-Api-Key: APIKEYHERE" -H "Content-Type: application/json; charset=utf-8" --data "{ 'input':{ 'text':'I\'ve added the event to your calendar.' }, 'voice':{ 'languageCode':'en-gb', 'name':'en-GB-Standard-A', 'ssmlGender':'FEMALE' }, 'audioConfig':{ 'audioEncoding':'MP3' } }" "https://texttospeech.googleapis.com/v1/text:synthesize" | jq '.audioContent' | cut -d "\"" -f 2 > encodedOutput && base64 --decode encodedOutput > texttospeech.mp3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接