Недопустимая полезная нагрузка json для запроса syncrecognize curl

#curl #wget #google-cloud-speech

# #curl #wget #google-облако-речь

Вопрос:

Я последовал https://cloud.google.com/speech/docs/getting-started и успешно побежал

 curl -s -k -H "Content-Type: application/json" 
-H "Authorization: Bearer access_token" 
https://speech.googleapis.com/v1beta1/speech:syncrecognize 
-d @sync-request.json
 

чтобы получить ожидаемый результат. Однако теперь я пытаюсь сделать по существу то же самое, но для локального файла flac, поэтому вместо этого я запускаю:

 curl -s -k -H "Content-Type: audio/x-flac" -H "Authorization: Bearer [my access key]" 
https://speech.googleapis.com/v1beta1/speech:syncrecognize --data-binary @file.flac
 

и я получаю ответ

 {
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unexpected     token.nfLaCu0000u0000u0000"u0004n^",
    "status": "INVALID_ARGUMENT"
  }
}
 

Консоль разработчика api Google показывает поступающее сообщение, но не дает мне никакой дополнительной информации, которая могла бы мне помочь. Я также пытался

 wget --post-file file.flac --header="Content-Type: audio/x-flac; rate=16000" -O - "https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=[my api key]"
 

и я также получаю ошибку 400 Bad Request.

Кто-нибудь успешно достиг того, к чему я стремлюсь? Все примеры, которые я могу найти, предназначены либо для использования api для загруженного файла, либо для использования некоторых библиотек, в отличие от минималистичного запроса curl или wget.

Комментарии:

1. Глупый я. Я получил эту ошибку, потому что мне не хватало @ перед именем файла.

Ответ №1:

Вы должны попробовать заключить двоичный файл данных в кавычки следующим образом:

 curl -s -k -H "Content-Type: audio/x-flac" -H "Authorization: Bearer [my access key]" 
https://speech.googleapis.com/v1beta1/speech:syncrecognize --data-binary @'file.flac'
 

У меня была такая же проблема, и это решило ее для меня.

Комментарии:

1. Я попробую позже и расскажу вам, как это работает. Спасибо

2. Итак, я попытался добавить одинарные кавычки вокруг имени файла и все равно получил ту же ошибку. Любые другие предложения?