Python覆盖3个以上的WAV文件

2024-05-03 06:54:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图重叠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") 

并编写了以下程序:

^{pr2}$

但是,当我查看最后一个wave文件时,实际上只有列表files_to_combine中的前2个文件被合并,而不是其余的文件。这个想法是不断重写partial_wav.wav,直到它最终包含近端到端重叠声音的完整wav文件。为了调试这个问题,我将new_wave存储在每个组合的不同文件中。第一个wave文件是最后一个:它只显示前2个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文件的开头重叠?在


Tags: 文件topathfromoutputlen结尾wave
1条回答
网友
1楼 · 发布于 2024-05-03 06:54:31

我相信您可以继续级联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") 

相关问题 更多 >