使用 Bash 脚本循环遍历多个 cURL api 请求正文参数
Loop through multiple cURL api request body parameters using Bash script
我想使用 Google Cloud 的语音识别 API 将多个音频文件转换为文本。
我成功转录了一个名为“1.flac”的音频文件...
要求:
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
}
]
}
]
}
我为上述请求的 data/body 部分成功生成了多行...
要求:
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"}}
我如何组合这两个脚本,以便 curl API 对三个文件中的每一个执行一次,并得到如下响应:
{
"results": [
{
"alternatives": [
{
"transcript": "cat",
"confidence": 0.9999999
}
]
}
]
}
{
"results": [
{
"alternatives": [
{
"transcript": "dog",
"confidence": 0.9999999
}
]
}
]
}
{
"results": [
{
"alternatives": [
{
"transcript": "horse",
"confidence": 0.9999999
}
]
}
]
}
你的代码几乎是正确的。
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]
我想使用 Google Cloud 的语音识别 API 将多个音频文件转换为文本。
我成功转录了一个名为“1.flac”的音频文件...
要求:
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
}
]
}
]
}
我为上述请求的 data/body 部分成功生成了多行...
要求:
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"}}
我如何组合这两个脚本,以便 curl API 对三个文件中的每一个执行一次,并得到如下响应:
{
"results": [
{
"alternatives": [
{
"transcript": "cat",
"confidence": 0.9999999
}
]
}
]
}
{
"results": [
{
"alternatives": [
{
"transcript": "dog",
"confidence": 0.9999999
}
]
}
]
}
{
"results": [
{
"alternatives": [
{
"transcript": "horse",
"confidence": 0.9999999
}
]
}
]
}
你的代码几乎是正确的。
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]