我正在尝试使用 numpy、struct 等各种模块在 python 中处理音频文件。但我真的很难检测文件中的静音,例如静音的位置。我遇到的一个方法是在我的音频信号上滑动一个固定时间间隔的窗口并记录平方元素的总和。我是 python 的新手,几乎不知道它,因此无法实现这个方法。

最佳答案

如果您对外部图书馆开放,一种快速的方法是使用 pydubpydub 有一个名为 silence 的模块,该模块具有 detect_silencedetect_nonsilent 方法,可能对您的情况有用。
然而,唯一的鱼子酱是沉默至少需要半秒钟。

下面是我尝试使用音频文件的示例实现。但是,由于我的情况下的静音不到半秒,因此只有少数静音范围是正确的。

你可能想试试这个,看看它是否适合你,通过调整 min_silence_lensilence_thresh
程序

from pydub import AudioSegment,silence


myaudio = intro = AudioSegment.from_wav("a-z-vowels.wav")

silence = silence.detect_silence(myaudio, min_silence_len=1000, silence_thresh=-16)

silence = [((start/1000),(stop/1000)) for start,stop in silence] #convert to sec
print silence

结果

Win32 上的 Python 2.7.9(默认,2014 年 12 月 10 日,12:24:55)[MSC v.1500 32 位(英特尔)]
输入“copyright”、“credits”或“license()”以获取更多信息。

关于python - 使用python从给定的音频文件中检测静音索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40896370/

10-11 19:33