如何在python中基于静默分割音频文件并重叠最后2秒

如何在python中基于静默分割音频文件并重叠最后2秒,python,audio,split,pydub,Python,Audio,Split,Pydub,目前,我正在使用此代码将音频文件切成小块: sound = AudioSegment.from_mp3("1.WAV") f=open("decoded.txt", "a+") chunks = split_on_silence(sound,min_silence_len=280,silence_thresh=-33,keep_silence=150) for i, chunk in enumerate(chunks): print(i) print("\n") chu

目前,我正在使用此代码将音频文件切成小块:

sound = AudioSegment.from_mp3("1.WAV")
f=open("decoded.txt", "a+")
chunks = split_on_silence(sound,min_silence_len=280,silence_thresh=-33,keep_silence=150)

for i, chunk in enumerate(chunks):
    print(i)
    print("\n")
    chunk.export(folder+"/chunk{0}.wav".format(i), format="wav")
    AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), folder+"/chunk{0}.wav".format(i))
    r = sr.Recognizer()
    with sr.AudioFile(AUDIO_FILE) as source:
        print("Listening...")
        audio = r.record(source)  # read the entire audio file
        f.write((r.recognize_google(audio) +" "))

f.close();

这将创建根据静默分割的文件块。。。但我想要的是,每当音频被分割时,下一个片段从2秒后开始,这样任何可能被剪切的单词都可以出现。比如,如果沉默发生在时间10,13,18,22,那么我的切片应该是0-10,8-13,11-18,16-22。我正在使用pydub根据沉默进行拆分。我可以在pydub中更改一些内容吗?或者是否有其他软件包可以执行此操作?

由于每个数据块都是在静默状态下分割的,因此在前2秒钟内不会有数据。
但是,您可以做的是,复制前一个块(n-1)的最后2秒,并与下一个块(n)合并,跳过第一个块

伪代码如下所示

n1+n2+n3+…n#在静默状态下分割的音频块

n1+(+n2)+(+n3)+……

您还可以使用来查看什么值对您的需求有意义

另一个想法是使用它来找到静音范围,并自行决定在何处剪切原始音频


我将把它作为编码练习留给你。

我自己做了几天的研究,得出了与你说的完全相同的结论。我只花了5秒的时间间隔,在剪切音频之前,我将开始时间设置为“-2”。这似乎很有魅力。很高兴知道我在正确的轨道上:)非常感谢