"sox --combine merge":如何将混合输出长度限制为两个输入中较短的一个?
"sox --combine merge": how to limit the mixed output length to the shorter of the two inputs?
我在 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
注意:如果你想让我测试它,请提供一些示例数据。
我在 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
注意:如果你想让我测试它,请提供一些示例数据。