簡體   English   中英

使用python從給定的音頻文件中檢測靜音索引

[英]detecting the index of silence from a given audio file using python

我正在嘗試使用 numpy、struct 等各種模塊在 python 中處理音頻文件。但我真的很難檢測文件中的靜音,例如靜音的位置。 我遇到的方法之一是在我的音頻信號上滑動一個固定時間間隔的窗口並記錄平方元素的總和。 我是 python 的新手,幾乎不知道它,因此無法實現這個方法。

如果您對外部圖書館開放,一種快速的方法是使用pydub
pydub有一個叫做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

結果

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

為了獲得更好的結果,請使用 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM