I'm trying to execute google-speech-to-text from apps script. Unfortunately, I cannot find any examples for apps script or pure HTTP, so I can run it using simple UrlFetchApp.
I created a service account and setup a project with enabled speech-to-text api, and was able to successfully run recognition using command-line example
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
which I can easily translate to UrlFetchApp call, but I don't have an idea to generate access token created by
gcloud auth application-default print-access-token
Is there a way to get it from apps script using service account credentials?
Or is there any other way to auth and access speech-to-text from apps script?
The equivalent of retrieving access tokens through service accounts is through the apps script oauth library. The library handles creation of the JWT token.
Sample here
Using the answer from TheMaster, I was able to build a getToken solution for my case
`
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');
}
`
The code for transcribe itself, is
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());
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With