我正在尝试使用 numpy、struct 等各种模块在 python 中处理音频文件。但我真的很难检测文件中的静音,因为静音的存在。我遇到的一种方法是在我的音频信号上滑动一个固定时间间隔的窗口并记录平方元素的总和。我是 python 新手,几乎不知道它,因此无法实现此方法。
最佳答案
如果您对外部图书馆开放,一种快速的方法是使用 pydub .pydub
有一个名为 silence 的模块有方法detect_silence
和 detect_nonsilent
这可能对您的情况有用。
然而,唯一需要注意的是,沉默至少需要半秒钟。
下面是我尝试使用音频文件的示例实现。
但是,由于我的静音时间不到半秒,因此只有少数静音范围是正确的。
您可能想尝试一下,通过调整 min_silence_len
来查看它是否适合您。和 silence_thresh
.
程序
from pydub import AudioSegment, silence
myaudio = 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)
结果[(0, 1), (1, 14), (14, 20), (19, 26), (26, 27), (28, 30), (29, 32), (32, 34), (33, 37), (37, 41), (42, 46), (46, 47), (48, 52)]
关于python - 使用python从给定的音频文件中检测静音索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40896370/