crossfading a group of audio files with sox splice

我们两清 提交于 2019-12-07 07:49:29

问题


I am able to join and crossfade two audio files using SoX, like so:

sox file1.wav file2.wav outfile.wav splice -q `soxi -D file1.wav`,0.5

where the soxi substitution is fetching the duration of file1 and 0.5 is the length of the cross-fade. I am now trying to extend this to an arbitrary number of files, in order to string them together with short crossfades in between. There would seem to be 2 approaches: piping and scripting. Sox has a -p option telling it to treat it's output as piped (instead of writing a file). But, with many input and arguments per command, it's not clear how that output (and input?) gets assigned in subsequent commands. So far I've got the line below, which does not work, trying to extend to 3 files.

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

Your tips on sox piping and scripting would be greatly appreciated.


回答1:


I have gotten most of the way there with

sox --combine concatenate *.wav _merge.wav splice -q 3,1

The splice effect at the end places the beginning of the cross-fade at 3 seconds into the first file, and uses 1 second as cross-fade duration (half second at beginning and end of two files). This method is a temporary fix as I can choose to include only ~3 second files in my output (using other methods). A better answer would figure out how to grab duration of current file and substitute that in place of the 3.

sox --combine concatenate *.wav _merge.wav splice -q $(soxi −D {}),1

If the {} here selected the current item (as in find), that would do it. But that doesn't seem to work.



来源:https://stackoverflow.com/questions/8955320/crossfading-a-group-of-audio-files-with-sox-splice

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!