如何从 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 电子表格中的 Google Apps 脚本自动更新“站点地图”功能?