我试图将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文件时,只有列表files_to_combine
中的前2个文件实际上是合并而不是其余的。我们的想法是不断重写partial_wav.wav
,直到它最终包含近端的完整wav文件以结束重叠声音。为了调试这个,我将new_wave
存储在每个组合的不同文件中。第一个波形文件是最后一个:它只显示前两个波形文件组合而不是整个波形文件。此外,我期望每次迭代的len(partial_wav)
逐渐增加。然而,在第一次组合之后,这仍然是相同的:
partial_wave : 237
partial_wave : 237
partial_wave : 237
partial_wave : 237
partial_wave : 237
主要问题
如何将一个wav文件的末尾(大约最后30%)与下一个wk文件的末尾重叠超过3个波形文件?
答案 0 :(得分:2)
我相信您可以继续级联audiosegments
,直到最后一段为止。
工作代码:
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")