Python-端到端覆盖3个以上WAV文件

Python-端到端覆盖3个以上WAV文件,python,audio,wave,Python,Audio,Wave,我试图将1个wav文件的结尾与下一个文件开头的20%重叠。像这样,需要覆盖的文件数量可变(通常约为5-6个) 我已尝试使用pydub实现扩展以下内容以覆盖2个wav文件: from pydub import AudioSegment sound1 = AudioSegment.from_wav("/path/to/file1.wav") sound2 = AudioSegment.from_wav("/path/to/file1.wav") # mix sound2 with sound1,

我试图将1个wav文件的结尾与下一个文件开头的20%重叠。像这样,需要覆盖的文件数量可变(通常约为5-6个)

我已尝试使用pydub实现扩展以下内容以覆盖2个wav文件:

from pydub import AudioSegment

sound1 = AudioSegment.from_wav("/path/to/file1.wav")
sound2 = AudioSegment.from_wav("/path/to/file1.wav")

# mix sound2 with sound1, starting at 70% into sound1)
output = sound1.overlay(sound2, position=0.7 * len(sound1))

# save the result
output.export("mixed_sounds.wav", format="wav") 
并编写了以下程序:

for i in range(0,len(files_to_combine)-1):
    if 'full_wav' in locals():
        prev_wav = full_wav
    else:
        prev = files_to_combine[i]
        prev_wav = AudioSegment.from_wav(prev)

    next = files_to_combine[i+1]        
    next_wav = AudioSegment.from_wav(next)

    new_wave = prev_wav.overlay(next_wav,position=len(prev_wav) - 0.3 * len(next_wav))
    new_wave.export('partial_wav.wav', format='wav')

    full_wav = AudioSegment.from_wav('partial_wav.wav')
但是,当我查看最后一个wave文件时,只有列表中的前两个文件实际合并了,其余的都没有。其想法是不断重写
部分_wav.wav
,直到最终包含近端到端重叠声音的完整wav文件。为了调试它,我将
new\u wave
存储在每个组合的不同文件中。第一个wave文件是最后一个:它只显示前两个wave文件的组合,而不是整个文件。此外,我希望每次迭代的
len(partial_wav)
会逐渐增加。Hoever,在第一次组合后,这保持不变:

partial_wave : 237
partial_wave : 237
partial_wave : 237
partial_wave : 237
partial_wave : 237
主要问题


对于3个以上的wav文件,如何将一个wav文件的结尾(大约最后30%)与下一个wav文件的开头重叠?

我相信您可以继续级联
音频片段
,直到您的最后一个片段,如下所示

工作代码:

from pydub import AudioSegment
from pydub.playback import play

sound1 = AudioSegment.from_wav("SineWave_440Hz.wav")
sound2 = AudioSegment.from_wav("SineWave_150Hz.wav")
sound3 = AudioSegment.from_wav("SineWave_660Hz.wav")


# mix sound2 with sound1, starting at 70% into sound1)
tmpsound = sound1.overlay(sound2, position=0.7 * len(sound1))


# mix sound3 with sound1+sound2, starting at 30% into sound1+sound2)
output = tmpsound .overlay(sound3, position=0.3 * len(tmpsound))

play(output)
output.export("mixed_sounds.wav", format="wav")