GCP签名URL传入Azure认知语音转文本出现URI认证失败如何解决
问题解决方法
该错误为Azure语音服务访问GCS签名URL时身份校验失败导致,可按以下步骤依次排查修复:
修复GCS签名URL生成逻辑
你当前的签名代码添加了Storage.SignUrlOption.withContentType()参数,该参数会强制要求所有访问该签名URL的请求必须携带和音频文件完全一致的Content-Type请求头才能通过GCS的权限校验,但Azure语音服务拉取音频文件时不会主动携带对应请求头,直接触发认证失败。
修改签名代码,移除withContentType()参数即可:
storage.signUrl( blobInfo, DURATION, TimeUnit.DAYS, Storage.SignUrlOption.httpMethod(HttpMethod.GET) );
其他排查项
- 确认GCS存储桶的CORS规则配置正确:允许GET请求,允许的源和请求头均可设为
*,避免跨域拦截导致Azure无法拉取文件 - 确认签名URL有效期足够覆盖整个转录作业的运行周期,避免中途URL过期失效
- 传入Azure请求体前先验证签名URL可用性:在无痕浏览器窗口直接访问生成的签名URL,确认无需额外登录即可直接下载音频文件
- 确认请求体中URL格式正确:放到
contentUrls数组中的URL没有被二次转义,不存在多余的转义字符、空格或者截断问题 - 若上述操作均无效,可临时将目标音频文件设为公开只读,验证是否能正常完成转录,排除存储桶基础权限配置问题
内容的提问来源于stack exchange,提问作者Syed Hussain
相关产品推荐
相关产品推荐

