SoX (Sound eXchange) 或 ffmpeg 中的包络模式

Envelope pattern in SoX (Sound eXchange) or ffmpeg

我一直在使用 SoX 生成白噪声。我正在寻找一种方法来调制整个轨道上的音量,从而创建类似于此的模式:

White noise envelope effect

我已经尝试过淡入淡出,但是淡入到 100% 音量并淡出到 0% 音量,这在这种情况下很痛苦。

颤音效果也不是我想要的,因为模式的频率会随着时间而改变。

唯一的替代方法是将白噪声文件拆分成单独的文件,应用淡入淡出,然后将 trim 应用到任一端,这样它就不会一直淡出,但这似乎很多不必要的处理。

我一直在检查这个例子 Using SoX to change the volume level of a range of time in an audio file,但我认为这不是我想要的。

我在 Ubuntu 中将命令行与 SoX 一起使用,但我愿意接受有关 ffmpeg 或任何其他基于 Linux 的命令行解决方案的建议。

对于 ffmpeg,您可以使用音量过滤器

ffmpeg -i input.wav -af \
"volume='if(lt(mod(t\,5)/5\,0.5), 0.2+0.8*mod(2*t\,5)/5\, 1.0-0.8*mod(t-(5/2)\,5)/(5/2))':eval=frame" \
  output.wav

上面过滤器中的表达式,在 t=0 到 t=2.5 秒内将音量从 0.2 增加到 1.0,然后在 t=5 秒时逐渐回落到 0.2。这里包络的周期是5秒