首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCP STT快速启动问题的认证

GCP STT快速启动问题的认证
EN

Stack Overflow用户
提问于 2021-08-04 15:16:40
回答 3查看 147关注 0票数 0

我正在跟踪GCP的演讲到文本的快速启动。据我所知,我已经遵循了所有的设置标准。

  • 为我的项目启用STT。
  • 生成Service密钥并下载JSON文件。
  • 已安装SDK并初始化。
  • 在Windows中,我将GOOGLE_APPLICATION_CREDENTIALS设置为下载的JSON文件。
  • 在Windows中,我执行了gcloud auth activate-service-account <my service email generated by GCP> --key-file= "mypath/JSON key file"
  • 我执行了gcloud auth list并看到了我的项目帐户标识符。

我执行了示例curl命令:

代码语言:javascript
复制
curl -s -H "Content-Type: application/json" -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) https://speech.googleapis.com/v1/speech:recognize -d @sync-request.json

得到这个错误:

代码语言:javascript
复制
{
  "error": {
    "code": 401,
    "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED"
  }
}

在快速启动步骤中没有提到OAuth

作为一个测试,我执行了:

代码语言:javascript
复制
gcloud auth application-default print-access-token

得到了这个:

代码语言:javascript
复制
(gcloud.auth.application-default.print-access-token) File "mypath/JSON key file" was not found.  

即使文件存在于我指定的文件夹中。

尝试其他方法时,我尝试在SDK中执行Java示例。它创建了一个非常简单的没有凭据的SpeechClient,这似乎令人怀疑。我将GOOGLE_APPLICATION_CREDENTIALS env变量提供给示例。我认为这个例子使用了gRCP,但不确定。

该示例挂在以下位置:

代码语言:javascript
复制
RecognizeResponse response = speech.recognize(config, audio);

在网上查看时,我发现可能的嫌疑是糟糕的身份验证,这与尝试CMD行示例相同。

任何及所有的指导都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2021-08-04 15:38:22

您是否从JSON密钥文件所在的同一个目录运行curl命令?

谷歌的文档声明如下:

注意,要将文件名传递给curl,可以使用-d选项(用于"data"),并在文件名前面加上一个@符号。该文件应该位于执行curl命令的同一个目录中。

票数 0
EN

Stack Overflow用户

发布于 2021-08-04 16:00:29

我有关于CLI问题的答案。对我来说是个愚蠢的错误。当我设置GOOGLE_APPLICATION_CREDENTIALS时,我用双引号包装路径名。叹一口气。我在没有双引号的情况下重置env变量。我可以成功地运行gcloud auth应用程序-默认的打印访问令牌-它打印出令牌。我又用$(gcloud auth.)尝试了curl命令。也犯了同样的错误。接下来,我尝试使用curl命令替换$(gcloud auth.)上面的记号还了,它就起作用了!

接下来,我需要解析Java示例,而且我很好。

票数 0
EN

Stack Overflow用户

发布于 2021-08-04 17:35:24

不需要怀疑:

如果在构造客户端时不指定凭据,则客户端库将通过环境变量GOOGLE_APPLICATION_CREDENTIALS查找凭据。

在您的java代码中,尝试打印System.getenv("GOOGLE_APPLICATION_CREDENTIALS"),以验证其设置。可能不是,这取决于您在IDE或终端中设置它的方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68653830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档