如何从 Google Apps 脚本授权 Google 语音转文本?

How can I authorize Google Speech-to-text from Google Apps script?

我正在尝试从应用程序脚本执行 google-语音到文本。不幸的是,我找不到应用程序脚本或纯 HTTP 的任何示例,因此我可以 运行 使用简单的 UrlFetchApp。

我创建了一个服务帐户并设置了一个启用了语音转文本的项目 api,并且能够 使用命令行示例

成功运行识别

curl -s -H "Content-Type: application/json" \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ https://speech.googleapis.com/v1/speech:recognize \ -d @sync-request.json

我可以轻松地将其转换为 UrlFetchApp 调用,但我不知道如何生成由

创建的访问令牌

gcloud auth application-default print-access-token

有没有办法使用服务帐户凭据从应用程序脚本中获取它?

或者是否有任何其他方法可以从应用程序脚本中验证和访问语音到文本?

相当于通过服务帐户检索访问令牌是通过 apps script oauth library。该库处理 JWT 令牌的创建。

样本here

根据 TheMaster 的回答,我能够为我的案例构建一个 getToken 解决方案

`

function check() {
  var service = getService();
  if (service.hasAccess()) {
    Logger.log(service.getAccessToken());
  } else {
    Logger.log(service.getLastError());
  }
}

function getService() {
  return OAuth2.createService('Speech-To-Text Token')
      .setTokenUrl('https://oauth2.googleapis.com/token')
      .setPrivateKey(PRIVATE_KEY)
      .setIssuer(CLIENT_EMAIL)
      .setPropertyStore(PropertiesService.getScriptProperties())
      .setScope('https://www.googleapis.com/auth/cloud-platform');
}

`

自己转录的代码,是

function transcribe(){
  var payload = {
    "config": {
      "encoding" : "ENCODING_UNSPECIFIED",
      "sampleRateHertz": 48000,
      "languageCode": "en-US",
      "enableWordTimeOffsets": false
    },
    "audio": {
      content: CONTENT
    }
  };

  var response = UrlFetchApp.fetch(
    "https://speech.googleapis.com/v1/speech:recognize", {
      method: "GET",
      headers: {
        "Authorization" : "Bearer " + getService().getAccessToken()
      },
      contentType: "application/json",
      payload: JSON.stringify(payload),
      muteHttpExceptions: true
    });  

  Logger.log(response.getContentText());

}