如何使用 Sox 高效创建多个音频文件的频谱图?

Car*_*jas 7 audio sox

我有一堆音频文件,我想使用 Sox 为每个单独的文件创建频谱图。通常,对于单个文件,我这样做:

sox audiofile.flac -n spectrogram
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何将此方法扩展到多个文件。理想情况下,我希望我的输出.png文件具有与其各自音频文件相关联的文件名;例如audiofile1.pngfor audiofile1.flacaudiofile2.pngforaudiofile2.flac等等。

有人知道怎么做这个吗?

小智 7

感谢约瑟夫的回答。也许它在他发帖时有效,但我不得不-ospectrogramsox 接受命令之后添加。

for file in *.flac;do
    outfile="${file%.*}.png"
    sox "$file" -n spectrogram -o "$outfile"
done
Run Code Online (Sandbox Code Playgroud)

我会将它们全部放在自己的文件夹中以进行存档。 有用!

您甚至可以通过在图像中的频谱图上方添加文件的标题,并使其更宽一些以查看更多细节来更进一步。默认图像对我来说有点小。

for file in *.flac;do
    outfile="${file%.*}.png"
    title_in_pic="${file%.*}"
    sox "$file" -n spectrogram -t "$title_in_pic" -o "$outfile" -x 2000
done
Run Code Online (Sandbox Code Playgroud)


Jos*_* R. 5

您可以将命令包含在循环中:

for file in *.flac
do
    outfile="${file%.*}.png"
    sox "$file" -n spectrogram "$outfile"
done
Run Code Online (Sandbox Code Playgroud)

至于文件命名,sox(1) 手册页似乎建议您可以在命令行上明确命名输出文件,以便您可以在循环中使用它。

在循环利用bash的第一行参数替换剥去.flac从文件扩展名,并添加.png扩展。