我能够使用SoX合并和淡入淡出两个音频文件,就像这样:
sox file1.wav file2.wav outfile.wav splice -q `soxi -D file1.wav`,0.5
其中soxi替换获取文件1的持续时间,而交叉淡入淡出的长度为0.5。我现在正尝试将其扩展到任意数量的文件,以将它们之间的短交叉渐变串在一起。似乎有两种方法:管道和脚本。 Sox具有-p选项,告诉它将其输出视为管道输出(而不是写入文件)。但是,由于每个命令有许多输入和参数,因此尚不清楚在后续命令中如何分配输出(and input?)。到目前为止,我已经在下面的行中尝试了[,试图将其扩展到3个文件。
sox -p file1.wav file2.wav splice -q `soxi -D file1.wav`,0.5 | sox -p file3.wav outfile.wav splice -q `soxi -D file3.wav`,0.5
您对Sox管道和脚本编写的技巧将不胜感激。
sox --combine concatenate *.wav _merge.wav splice -q 3,1
结尾处的拼接效果将淡入淡出的起点在第3个文件中放置3秒钟,并以1秒钟作为淡入淡出的持续时间(在两个文件的开头和结尾处使用半秒)。该方法是一种临时解决方案,因为我可以选择在输出中仅包含约3秒的文件(使用其他方法)。更好的答案是弄清楚如何获取当前文件的持续时间并用它代替3。
sox --combine concatenate *.wav _merge.wav splice -q $(soxi −D {}),1
如果此处的{}选择了当前项目(如find
中的内容),则将执行此操作。但这似乎不起作用。
您可以使用here所示的方法将多个文件淡化为一个。