Как авторизовать Google Speech-to-text из скрипта Google Apps? - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь выполнить google-речь-текст из скрипта приложений. К сожалению, я не могу найти никаких примеров для скрипта приложений или чистого HTTP, поэтому я могу запустить его с помощью простого UrlFetchApp.

Я создал учетную запись службы и настроил проект с включенным речевым и текстовым API и смог для успешного запуска распознавания, используя пример командной строки

curl -s -H "Content-Type: application / json" \ -H "Авторизация: Bearer" $ (gcloud auth application-default print -access-token) \ https://speech.googleapis.com/v1/speech: распознавать \ -d @ syn c -request. json

, который я легко могу перевести на вызов UrlFetchApp, но У меня нет идеи генерировать токен доступа, созданный

gcloud auth application-default-print-access-token

Есть ли способ получить его из приложений? сценария с использованием учетных данных учетной записи службы?

Или есть ли другой способ авторизации и доступа к преобразованию речи в текст из сценария приложения?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2020

Используя ответ от 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());

}
2 голосов
/ 27 апреля 2020

Эквивалент получения токенов доступа через учетные записи служб через библиотеку приложений oauth . Библиотека занимается созданием токена JWT.

Образец здесь

...