"sox --combine merge":如何将混合输出长度限制为两个输入中较短的?



我在Makefile中使用Linux上的SoX命令行工具将两个原始(浮点32位(输入音频文件交错到一个文件中:


make_combine: 
sox 
--bits 32 --channels 1 --rate 48000 signal_1.f32 
--bits 32 --channels 1 --rate 48000 signal_2.f32 
--type raw --channels 2 --combine merge signal_mixed.f32

当signal_1和signal_2的长度不同时,我遇到了问题。如何将混合输出限制为两个输入中较短的一个?

使用soxi -s查找最短的文件,例如:

samps=$(soxi -s signal_1.f32 signal_2.f32 | sort -n | head -n1)

然后使用trim效果来缩短文件,例如(未测试(:

sox --combine merge 
"| sox signal_1.f32 -p trim 0 ${samps}s" 
"| sox signal_2.f32 -p trim 0 ${samps}s" 
signal_mixed.f32

注意:如果你想让我测试一下,请提供一些样本数据。

最新更新