从命令行叠加(即同时)多次播放音频

从命令行叠加(即同时)多次播放音频

我正在尝试使用 bash 中的单个 toll 音频文件播放 3 个 toll 声音。我希望声音相互叠加。

单次鸣钟时长为4秒。

我要那个:

  • 第一次收费开始
  • 当第一个铃声响起时,开始后 1 秒,第二个铃声开始响起,覆盖第一个铃声,即第二个铃声不会停止第一个铃声
  • 当第一声和第二声铃响起时,第二声铃响起 1 秒后,第三声铃响起,覆盖第一声和第二声铃响,但不停止它们

我想

for i in 1 2 3; do mpg123 "single_toll.mp3" & sleep 1 ; done;

我知道第一声钟声已经完整地演奏了,而当应该听到第二声和第三声钟声与第一声重叠时,却听到了模糊的声音。

我错过了什么?

答案1

实际上 sox 解决了(灵感来自https://stackoverflow.com/questions/14634036/how-to-merge-several-audio-files-using-sox并根据 sox 手册页进行修改):

sox single_toll.mp3 -p pad 1 0 | \
sox - -m single_toll.mp3 -p pad 1 0 remix v2 | \
play - -m single_toll.mp3 remix v2

remix v2需要使用该参数,因为当 sox 重新混合时,它会将音量降低 1/2,正如手册页所解释的那样。

对于任意数量的收费站,第二行可以根据需要重复多次,实际上是N-2多次

相关内容