0

我正在使用 node.js 模块与谷歌语音 API 进行交互。

例如。

const Speech = require('@google-cloud/speech');

正如您所期望的那样,我正在处理数千个音频剪辑转录......

speech.recognize(filepath, requestOptions)
  .then((results) => {
    //...
  }

大多数成功。但是,每隔一段时间,我就会收到这个错误:

Error: Internal server error, code=7. Try your request again.
  at /home/ubuntu/video_captions/source/node_modules/grpc/src/node/src/client.js:434:17

代码7到底是什么?我在文档中找不到它。

更新:我似乎找到了 grpc 错误代码,但代码是由变量名而不是原始数值指定的: https ://grpc.io/docs/guides/error.html#general-errors

4

1 回答 1

2

权限被拒绝错误

gRPC 错误代码7指示GRPC_STATUS_PERMISSION_DENIED.

  /** The caller does not have permission to execute the specified
     operation.  PERMISSION_DENIED must not be used for rejections
     caused by exhausting some resource (use RESOURCE_EXHAUSTED
     instead for those errors).  PERMISSION_DENIED must not be
     used if the caller can not be identified (use UNAUTHENTICATED
     instead for those errors). */
  GRPC_STATUS_PERMISSION_DENIED = 7,

gRPC 错误代码也类似地记录在这里

语音 API 错误代码

Cloud Speech API 记录了不同的错误代码,并PERMISSION_DENIED记录如下

没有权限

调用者没有执行指定操作的权限。PERMISSION_DENIED 不能用于因耗尽某些资源而导致的拒绝(使用 RESOURCE_EXHAUSTED 代替这些错误)。如果无法识别调用者,则不得使用 PERMISSION_DENIED(对这些错误使用 UNAUTHENTICATED 代替)。此错误代码并不意味着请求有效或请求的实体存在或满足其他先决条件。

HTTP 映射:403 禁止

云存储权限

同样从您的问题来看,尚不清楚音频内容的来源是什么。如果它在 Google Cloud Storage 上,您可能希望确保您拥有访问内容的正确权限,我认为这可能是看到权限被拒绝错误的一个可能原因。

一次性错误与请求相关错误

此外,当您收到此错误时,您可以检查如果您再次发出相同的请求会发生什么 - 它是以同样的方式失败还是成功?这将有助于确认它们是否是一次性错误,或者它们是否与您的请求标头和/或有效负载有关。

请求限制

语音 API 确实有请求限制,这些限制也是强制执行的,请确保您没有超过它们,并且您也可能会遇到类似的错误。虽然,对于这种情况,我认为您会看到不同的错误RESOURCE_EXHAUSTED,而不是PERMISSION_DENIED. 我将其添加为仅供参考。

Cloud Speech API 当前的 API 使用限制如下(可能会发生变化):

Type of Limit              Usage Limit
---------------------------------------------------
Requests per 100 seconds*  500
Requests per day*          250,000    
Processing per 100 seconds 5000 seconds of audio    
Processing per day         480 hours of audio
  • 每个StreamingRecognize会话都被视为一个请求,即使它在流中包含多个 StreamingRecognizeRequest 音频帧。

超过这些限制的音频处理请求和/或尝试将产生错误。

这些限制适用于每个 Cloud Speech API 开发者项目,并且使用给定的开发者项目在所有应用程序和 IP 地址之间共享。

于 2017-07-19T01:49:27.017 回答