L oop через несколько параметров тела запроса API cURL с использованием скрипта Bash - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу преобразовать несколько аудиофайлов в текст с помощью API распознавания речи Google Cloud.

Я успешно расшифровал один аудиофайл под названием «1.fla c» ...

Запрос:

curl -s -H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESSTOKEN" \
https://speech.googleapis.com/v1/speech:recognize \
-d '
{"config": {"languageCode": "pt-BR", "audioChannelCount": 2},"audio":{"uri": "gs://PROJECTID/1.flac"}}
' 

Ответ:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "cat",
          "confidence": 0.9999999
        }
      ]
    }
  ]
}

Я успешно сгенерировал несколько строк для части данных / тела вышеуказанного запроса ...

Запрос:

for i in 1 2 3
do
echo "{\"config\": {\"languageCode\": \"pt-BR\", \"audioChannelCount\": 2},\"audio\":{\"uri\": \"gs://PROJECTID/$i.flac\"}}"
done

Ответ:

{"config": {"languageCode": "pt-BR", "audioChannelCount": 2},"audio":{"uri": "gs://PROJECTID/1.flac"}}
{"config": {"languageCode": "pt-BR", "audioChannelCount": 2},"audio":{"uri": "gs://PROJECTID/2.flac"}}
{"config": {"languageCode": "pt-BR", "audioChannelCount": 2},"audio":{"uri": "gs://PROJECTID/3.flac"}}

Как можно Я объединяю эти два сценария, так что API-интерфейс curl выполняется один раз для каждого из трех файлов с одним ответом, подобным следующему:

{
      "results": [
        {
          "alternatives": [
            {
              "transcript": "cat",
              "confidence": 0.9999999
            }
          ]
        }
      ]
    }
{
      "results": [
        {
          "alternatives": [
            {
              "transcript": "dog",
              "confidence": 0.9999999
            }
          ]
        }
      ]
    }
{
      "results": [
        {
          "alternatives": [
            {
              "transcript": "horse",
              "confidence": 0.9999999
            }
          ]
        }
      ]
    }

1 Ответ

1 голос
/ 21 апреля 2020

Ваш код почти верен.

for i in 1 2 3
do
    curl -s -H "Content-Type: application/json" \
         -H "Authorization: Bearer ACCESSTOKEN" \
         -d '{"config": {"languageCode": "pt-BR", "audioChannelCount": 2}
             ,"audio":{"uri": "gs://PROJECTID/'$i'.flac"}}' \
          https://speech.googleapis.com/v1/speech:recognize
 done

Я ставлю URL в конце, потому что обычно опции идут перед аргументами

Значение -d состоит из 3 частей [ '...'] [$ i] ['...'] связаны друг с другом. Это позволяет расширить [$ i]

...