如何从 Google Apps 脚本授权 Google Speech-to-text?

Posted

技术标签:

【中文标题】如何从 Google Apps 脚本授权 Google Speech-to-text?【英文标题】:How can I authorize Google Speech-to-text from Google Apps script? 【发布时间】:2020-08-11 11:34:19 【问题描述】:

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

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

curl -s -H "内容类型:应用程序/json" \ -H "授权:承载"$(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

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

或者有没有其他方法可以从应用脚本验证和访问语音到文本?

【问题讨论】:

【参考方案1】:

通过服务帐户检索访问令牌的等效方法是通过apps script oauth library。该库处理 JWT 令牌的创建。

示例here

【讨论】:

【参考方案2】:

使用 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());


【讨论】:

以上是关于如何从 Google Apps 脚本授权 Google Speech-to-text?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Google Apps 脚本显示授权对话框

无法通过Google Apps脚本显示授权对话框

如何将 Google Apps 脚本的范围缩小到特定文件

如何从 Google 电子表格中的 Google Apps 脚本自动更新“站点地图”功能?

通常如何从 Google Apps 脚本访问 BigQuery

如何通过使用数组从 Google 表格中提取数据并格式化来优化 Apps 脚本代码?