如何使用PyDub删除wave文件开头和结尾的静音?
我想我应该一段一段地访问它,检查它是否静默(但我做不到):/
例如,我有一个wave文件,在开始,结束或两者(如下图)都有静音,我想删除文件开始和结束时的静音:
我想导入它
sound = AudioSegment.from_wav(inputfile)
循环为每一个声音样本,以检查它是否沉默,并标记最后一个沉默的样本,因为当波开始(marker1),然后得到最后一个样本之前,波结束(marker2),我可以导出新的声音文件从两个标记
newsound = sound[marker1:marker2]
newsound.export(outputfile, format="wav")
3条答案
按热度按时间brccelvz1#
我建议你以至少10毫秒的时间段进行循环,以便更快地完成(更少的迭代),而且因为单个样本并没有真正的“响度”。
声音是振动,所以至少需要2个样本来检测是否有任何声音,(但这只会告诉你高频)。
不管怎么说...这样的东西可以工作:
gupuwyp22#
pydub
可能在第一次提出这个问题后已经更新了,但下面是我用来修剪尾随和前导静音的代码:detect_leading_silence
frompydub.silence
为您提供了可以用于对加载的AudioSegment
进行切片的索引。基本上,您可以反转AudioSegment
,修剪它,然后再次反转它以修剪拖尾静音。从两端剥离沉默就等于修剪前导沉默和尾随沉默。请注意,如果加载的
AudioSegment
是静默的或在修剪操作后变为静默,则strip_silence
应引发IndexError
。上次我查看时,默认块大小为10 ms,默认静默阈值为-50 dBFS。
我的
pydub
版本是0.25.1,我的ffmpeg
版本是4.3.1。oxcyiej73#
你可以这样写代码: