使用sox接头交叉衰减一组音频文件

问题描述 投票:4回答:2

我能够使用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管道和脚本编写的技巧将不胜感激。    
audio scripting sox piping
2个回答
2
投票
我已经完成了大部分的准备工作

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中的内容),则将执行此操作。但这似乎不起作用。    

0
投票
尽管这是一个老问题,但我为那些偶然发现该问题的人提供了一个可行的解决方案的参考:

您可以使用here所示的方法将多个文件淡化为一个。

© www.soinside.com 2019 - 2024. All rights reserved.