You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Google Cloud Speech-to-text v2 API遇403权限错误求助

Google Cloud Speech-to-Text v2 API 403权限错误问题

错误响应

{
  "error": {
    "code": 403,
    "message": "Permission 'speech.recognizers.recognize' denied on resource (or it may not exist).",
    "status": "PERMISSION_DENIED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "IAM_PERMISSION_DENIED",
        "domain": "iam.googleapis.com",
        "metadata": {
          "permission": "speech.recognizers.recognize"
        }
      }
    ]
  }
}

已完成操作

  • 创建服务账号
  • 为其分配Cloud Speech Client IAM角色
  • 创建服务账号密钥
  • 创建识别器(recognizer)
  • 使用JWT向Google授权服务器认证获取访问令牌
  • 调用Google Speech-to-text v2 API(返回上述权限错误)

API调用信息

  • 端点:https://{Location}-speech.googleapis.com/v2/projects/{Project ID}/locations/{Recognizer Location}/recognizers/{Recognizer Name}:recognize?access_token={Access Token}
  • 请求头:Authorization: Bearer、Content-Type: audio/wav、accept: */*

补充信息

  • 程序功能:允许用户录制音频,发送至Google转写后进行后续处理
  • 已成功调用v1版Speech-to-text API,正在迁移至v2版本
  • 未为服务账号委派全域权限
  • 认证时JWT声明未提供"sub"字段
  • 获取认证响应时未返回范围信息(请求时已提供,文档示例响应包含该字段),仅返回访问令牌、令牌类型和过期时间

排查建议

  1. 确认角色权限覆盖v2需求:检查Cloud Speech Client角色是否包含speech.recognizers.recognize权限。v2 API的权限与v1不同,v1使用speech.speech.recognition,需确保当前角色能覆盖v2的特定权限。
  2. 验证识别器资源权限:确认识别器与服务账号在同一项目、同区域,且服务账号对该识别器资源有直接权限绑定。项目级角色可能因资源配置问题未生效到特定识别器。
  3. 检查令牌请求范围:确保JWT请求时指定的scope为https://www.googleapis.com/auth/cloud-platform或https://www.googleapis.com/auth/speech,这两个范围才有权限调用v2 API。
  4. 测试令牌有效性:用gcloud auth activate-service-account --key-file=你的密钥文件.json激活服务账号,再用gcloud auth print-access-token生成令牌,替换到API调用中测试,排除令牌生成流程的问题。
  5. 核对端点参数正确性:确认端点中的项目ID、识别器区域、识别器名称无拼写错误,区域需与创建识别器时完全一致(如us-central1不能简写)。
  6. 修正请求头格式:Authorization头需完整格式为Authorization: Bearer {实际访问令牌},确保令牌已正确拼接在Bearer之后。

内容的提问来源于stack exchange,提问作者hja190

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 20:53:19