Ошибка Cloud Speech API: RecognitionAudio не задан

При попытке следовать [быстрому запуску] (https://cloud.google.com/speech/docs/getting-started) для облачного API скорости, после выполнения команды «curl» в командной строке произошла ошибка, показанная ниже:

{
  "error": {
  "code": 400,
  "message": "RecognitionAudio not set.",
  "status": "INVALID_ARGUMENT"
  }
}

Почему RecognitionAudio не установлен в самом API? Используемый sync-request.json такой же, как и в быстром запуске:

{
  "config": {
      "encoding":"FLAC",
      "sampleRateHertz": 16000,
      "languageCode": "en-US",
      "enableWordTimeOffsets": false
  },
  "audio": {
      "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
  }
}

person SuperSonic    schedule 11.09.2017    source источник
comment
У меня та же проблема. удалось решить в итоге?   -  person Koen    schedule 03.10.2017


Ответы (4)


Я не уверен, что именно вы делаете неправильно, но я смог без проблем использовать запрос как есть из документации.

Получили ли вы токен доступа для проекта Google Cloud, в котором был включен голосовой API? Следующая команда генерирует токен доступа, который можно использовать в качестве носителя:

gcloud auth application-default print-access-token

Мне было полезно поместить следующее в файл сценария (req.sh)

curl -s -H "Content-Type: application/json" \
    -H "Authorization: Bearer <output>" \
    https://speech.googleapis.com/v1/speech:recognize \
    -d @sync-request.json

Затем я просто использовал вывод из print-access-token со сценарием.

person class    schedule 19.09.2017

У меня была точно такая же проблема, и я решил ее, добавив кавычки в значение -d, например:

curl -s -H "Content-Type: application/json" \
    -H "Authorization: Bearer <your-access-token>" \
    https://speech.googleapis.com/v1/speech:recognize \
    -d "@sync-request.json"
person Seba Arriagada    schedule 10.10.2017
comment
Это помогло и мне. Использование Windows - person zeldi; 08.12.2017

Я получал эту ошибку, потому что я не запускал команду в cli в том же каталоге, что и мой файл sync-request.json.

Как только я изменил каталоги, я использовал команду из документации с моим токеном доступа, и это сработало нормально.

person Mattatat-tat    schedule 23.10.2017

У меня была та же проблема, и у меня это сработало, когда я пропустил @sync- из команды curl. Эта команда работала для меня:

curl -s -H "Content-Type: application/json" \
-H "Authorization: Bearer " \
https://speech.googleapis.com/v1/speech:recognize \
-d @request.json

Не знаете, какова точная функция @sync ?

person Koen    schedule 04.10.2017
comment
В примере использовалось имя файла sync-request.json для сохранения запроса JSON. Чтобы передать имя файла curl, вы используете опцию -d (для данных) и ставите перед именем файла знак @. Поэтому, если вы ранее сохранили файл JSON как request.json, вам нужен только @request.json - person Kenworth; 05.10.2017