我使用node.js模块与google语音API进行交互。
例如
const Speech = require('@google-cloud/speech');
我正在处理成千上万的音频片段转录,正如您所期望的那样....
speech.recognize(filepath, requestOptions)
.then((results) => {
//...
}
MOST成功。但是,每隔一段时间,我就会收到这个错误:
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
答案 0 :(得分: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错误代码为also documented similarly here。
Cloud Speech API记录了不同的错误代码和PERMISSION_DENIED
is documented as follows:
PERMISSION_DENIED
调用方无权执行指定的操作 操作。 PERMISSION_DENIED不得用于引起的拒绝 耗尽一些资源(使用RESOURCE_EXHAUSTED代替那些资源) 错误)。如果调用者不能使用,则不能使用PERMISSION_DENIED 已识别(使用UNAUTHENTICATED代替那些错误)。这个错误 代码并不意味着请求有效或请求的实体 存在或满足其他先决条件。
HTTP映射:403禁止
同样根据您的问题,尚不清楚音频内容的来源是什么。如果它位于Google云端存储上,您可能需要确保拥有访问内容的正确权限,我认为这可能是查看权限被拒绝错误的原因。
此外,当您收到此错误时,您可以检查如果再次发出相同的请求会发生什么 - 它是以相同的方式失败还是成功?这将有助于确认它们是否是一次性错误,或者是否与您的请求标头和/或有效负载相关。
speech API does have request limits which are also enforced,请确保您不会超过它们,并且您也可能会遇到类似的错误。虽然,对于这种情况,我认为您会看到不同的错误RESOURCE_EXHAUSTED
而不是PERMISSION_DENIED
。我只是作为一个FYI添加它。
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开发人员项目,并且是 使用给定的a在所有应用程序和IP地址之间共享 开发人员项目。