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

使用RecognitionAudio.fromStream调用谷歌语音转文本API遇权限错误求助

谷歌Speech-to-Text API fromStream权限问题解决方案

问题背景

使用谷歌Speech-to-Text API时,以下两种方式均可正常转录音频文件:
使用fetchFromUri的代码示例:

var file = RecognitionAudio.fetchFromUri(fileUri);
var longRunningRecognizeOperation = speech.LongRunningRecognize(config, file);

使用fetchFromStorageUri的代码示例:

var storageFile = RecognitionAudio.fetchFromStorageUri(gsStorageUri);
var longRunningRecognizeOperation = speech.LongRunningRecognize(config, storageFile);

但使用fromStream方式时:

var audioStream = RecognitionAudio.fromStream(fileStream);
var longRunningRecognizeOperation = speech.LongRunningRecognize(config, audioStream);

收到错误提示:

"The caller does not have permission"

项目已使用服务账号密钥JSON文件,需配置额外权限让RecognitionAudio.fromStream正常工作。

解决方案

  • 确认服务账号的角色权限:
    确保服务账号已分配roles/speech.speechRecognitionUser角色,该角色允许调用Speech-to-Text API的所有识别操作(包括流式识别)。如果之前仅配置了云存储相关角色(如roles/storage.objectViewer),仅能支持从存储URI调用,无法覆盖流式识别的权限需求。
  • 验证服务账号密钥的有效性:
    检查代码中是否正确加载了目标服务账号的密钥文件:
    • 可通过设置环境变量GOOGLE_APPLICATION_CREDENTIALS指向密钥文件绝对路径;
    • 或在代码中显式加载密钥内容,确保使用的密钥对应已配置正确角色的服务账号,避免密钥与服务账号不匹配。
  • 检查API访问限制:
    登录谷歌云控制台,进入「API和服务」→「凭据」,查看对应服务账号的API访问限制,确认未限制Speech-to-Text API的访问权限,确保流式识别端点可正常调用。
  • 排查音频流格式匹配性:
    虽然错误提示为权限问题,但音频流格式与RecognitionConfig配置不匹配时,也可能触发异常。确认流的编码格式(如LINEAR16)、采样率、声道数等参数与配置完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:32:49