【问题标题】:How can I authorize Google Speech-to-text from Google Apps script?如何从 Google Apps 脚本授权 Google Speech-to-text?
【发布时间】: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
有没有办法使用服务帐户凭据从应用程序脚本中获取它?
或者有没有其他方法可以从应用脚本验证和访问语音到文本?
【问题讨论】:
标签:
google-apps-script
oauth
jwt
service-accounts
google-cloud-speech
【解决方案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());
}