如何使用 pydub 检测音频流中的静音?

How to detect silence in an audio stream with pydub?

我想监控音频流的静音。知道我该怎么做吗?这是流,不是音频文件。

你最好的选择是从流中抓取块(我建议 50 毫秒块,因为 20Hz 的一个完整波形是 50ms),并使用此数据构建一个 AudioSegment。

完成后,您将能够使用 AudioSegment().dBFS 属性 粗略测量该块的平均响度。了解高点和低点后,您可以设置一个阈值,低于该阈值将被视为静音。

您当然也可以自动确定静音阈值,但这可能需要跟踪最后 X 秒内最响亮和最安静的信号电平,并且可能还需要使用某种衰减。

注意:我上面描述的方法绝对不是最快的方法,但 pydub 本身不处理流式传输。也就是说,这可能是使用 pydub 实现目标的最简单方法。