我可以使用 SoX 连接和交叉淡入淡出两个音频文件,如下所示:
sox file1.wav file2.wav outfile.wav splice -q `soxi -D file1.wav`,0.5
其中 soxi 替换是获取 file1 的持续时间,0.5 是交叉淡入淡出的长度。我现在尝试将其扩展到任意数量的文件,以便将它们与中间的短交叉淡入淡出串在一起。似乎有两种方法:管道和脚本。 Sox 有一个 -p 选项,告诉它将其输出视为管道输出(而不是写入文件)。但是,由于每个命令有许多输入和参数,尚不清楚输出如何(并输入? http://linuxmoc.wordpress.com/2009/01/20/vox-recording-in-linux-part-2/#comments) 在后续命令中被分配。到目前为止我已经得到了下面的行不起作用,尝试扩展到 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 秒处,并使用 1 秒作为交叉淡入淡出持续时间(两个文件的开头和结尾各半秒)。此方法是一个临时修复,因为我可以选择在输出中仅包含约 3 秒的文件(使用其他方法)。
更好的答案是弄清楚如何获取当前文件的持续时间并用它代替 3。
sox --combine concatenate *.wav _merge.wav splice -q $(soxi −D {}),1
如果此处的 {} 选择了当前项目(如find
),这样就可以了。但这似乎不起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)