如何循环 CURL 命令?

How to for loop CURL commands?

我正在使用 Watson 的 Speech-To-Text Lite 服务,我正在尝试找到一种方法来自动加载新的音频文件以进行转录。我是 Bash 的新手,所以我连最基本的术语都不清楚 - 所以我发现这个问题很难找到解决方案。

对于单个用例,我 运行 以下文件(我的 API 键被 'MY APIKEY' 省略)

curl -X POST -u "apikey: MY APIKEY" --header "Content-Type: audio/flac" --data-binary "@audiofile_1.flac" "https://gateway-lon.watsonplatform.net/speech-to-text/api/v1/recognize?model=en-US_BroadbandModel&speaker_labels=true" > C:/Users/outputpath/output_1.txt

我基本上想要实现的是克服必须手动输入和重新输入音频文件和输出的名称。因此,如果我有三个(或更多)音频文件(即 audiofile_1、2 和 3.flac),我想创建一个对应于每个音频文件的输出文件——一些可能有帮助的伪代码解释一下我的意思

files = [file_1, file_2, file_3]

for file_x in files:
    run curl command
    save as output_x

你差不多明白了。您只需要学习一些 shell 语法:

files=("file_1" "file_2" "file_3")

for file_x in "${files[@]}"
do
    curl -X POST -u "apikey: MY APIKEY" --header "Content-Type: audio/flac" --data-binary "@${file_x}" "https://gateway-lon.watsonplatform.net/speech-to-text/api/v1/recognize?model=en-US_BroadbandModel&speaker_labels=true" > "C:/Users/outputpath/${file_x}.txt"
done

首先,您使用文件列表创建 files 数组。然后,您遍历这些文件并对每个文件执行 运行 curl 命令。