使用python从给定的音频文件中检测静音索引

Pay*_*ngh 3 python audio

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

小智 11

为了获得更好的结果,请使用 dBFS

from pydub import AudioSegment,silence

myaudio = intro = AudioSegment.from_mp3("RelativityOverview.mp3")
dBFS=myaudio.dBFS
silence = silence.detect_silence(myaudio, min_silence_len=1000, silence_thresh=dBFS-16)

silence = [((start/1000),(stop/1000)) for start,stop in silence] #in sec
print(silence)
Run Code Online (Sandbox Code Playgroud)


Ani*_*l_M 6

如果您对外部图书馆开放,一种快速的方法是使用pydub
pydub有一个模块调用的沉默是有方法 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
Run Code Online (Sandbox Code Playgroud)

结果

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

================================ 重新开始 ================== ================

[(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)]