bash - 使用 Bash 脚本循环遍历多个 cURL api 请求正文参数
问题描述
我想使用 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
}
]
}
]
}
我成功地为上述请求的数据/正文部分生成了多行...
要求:
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]
推荐阅读
- jasperserver - 允许 jasper 服务器用户创建域
- javascript - 如何在 html 中使用来自 firestore 的数据收集
- apache-nifi - NiFi PutFile 处理器不会将文件保存到目录
- bitbucket-pipelines - 替换 bitbucket 管道中的单步
- c++ - 请求“l2”中的成员“getSize”,它是非类类型“List()”
- javascript - 从 Node.js 应用程序查询 Heroku 托管的 Postgres 数据库时出现“自签名证书”错误
- django - NoReverseMatch at / Reverse for 'delete_order' 未找到参数 '('',)'。尝试了 1 种模式:['delete_order/(?P
[^/]+)/$'] - c - How to wait for byte to be written to serial GSM modem?
- c# - 使用 global.aspx 在 ASP.net 中创建访问计数器
- php - PHP 对象的访问字段