Postman调用GCP Text-to-Speech API返回403鉴权错误问题咨询
GCP Text-to-Speech API 403 PERMISSION_DENIED 报错解决步骤
你遇到的报错由两个核心问题共同触发:对应项目下Text-to-Speech API未启用、使用gcloud个人终端用户凭据调用时未指定计费归属项目。按以下步骤操作即可完成调用,拿到音频Base64结果。
前置检查
- 确认你使用的GCP项目已经绑定了有效计费账户,所有GCP API调用均要求项目关联计费(Text-to-Speech提供免费调用额度,绑定后不会自动产生费用)
- 提前记录你的GCP项目ID(控制台项目首页可以查到,即错误返回里
projects/后面的数字ID对应的项目)
步骤1:启用Text-to-Speech API
- 登录GCP控制台,切换到你要使用的目标项目
- 顶部搜索栏输入
Text-to-Speech API,进入API详情页 - 点击页面上的「启用」按钮,等待1-2分钟服务开通完成,这一步解决错误中
SERVICE_DISABLED的根因。
步骤2:配置鉴权与请求(二选一即可,新手推荐方案1快速调试)
方案1:临时调试用(无需创建服务账号)
- 打开本地终端,执行命令配置gcloud默认配额项目:
gcloud config set project 替换成你的GCP项目ID
- 执行命令重新生成访问令牌:
gcloud auth application-default print-access-token
- 打开Postman,原有配置保留:
- 请求方法:POST
- 请求地址:
https://texttospeech.googleapis.com/v1/text:synthesize - 请求头
Content-Type:application/json - 鉴权方式选
Bearer Token,填入上一步刚生成的令牌 - 请求体用你之前准备的JSON即可,无需修改
- 额外新增一个请求头:
- 头名称:
X-Goog-User-Project - 头值:你的GCP项目ID
- 头名称:
方案2:规范调用(服务账号鉴权,适合长期/生产使用)
- 进入GCP控制台「IAM与管理」-「服务账号」页面
- 点击「创建服务账号」,填写账号名称后,给该账号授予
Cloud Text-to-Speech 用户角色,完成创建 - 进入刚创建的服务账号详情页,切换到「密钥」标签,选择「添加密钥」-「创建新密钥」,密钥类型选JSON,下载生成的密钥文件到本地
- 本地终端执行命令,通过服务账号密钥生成访问令牌:
gcloud auth activate-service-account --key-file=替换成你下载的JSON密钥文件的本地路径 gcloud auth print-access-token
- Postman中Bearer鉴权填入上一步生成的服务账号令牌即可,不需要额外添加
X-Goog-User-Project头,其余请求配置和你之前的配置保持一致。
步骤3:验证返回结果
发送请求后,接口会返回如下结构的响应,其中audioContent字段就是你需要的MP3音频Base64编码字符串:
{ "audioContent": "//NExAARqoIIAAhEuWAAAGNmBGMY4EBcxvABAXBPmPIAF//yAuh9Tn5CEap3/o......" }
常见踩坑说明
- 不要直接用未配置配额项目的个人账号令牌调用接口,这类终端用户凭据不被Text-to-Speech API直接认可
- 令牌有效期为1小时,过期后重新执行对应命令生成新令牌替换即可
- 若提示权限不足,检查服务账号是否正确绑定了Text-to-Speech相关角色,遵循最小权限原则,不要授予多余权限
内容的提问来源于stack exchange,提问作者Calladrus2k1
相关产品推荐
相关产品推荐

