在 Python 中随机开始播放多个循环音轨?

我有一个保存为 .wav 文件的各种长度的声音样本列表。我想播放第一个样本并让它永远循环。作为事件或状态更改后的某个时间点,我希望第二个样本开始播放第一个样本。然后两个样本将永远循环。


在下一个事件之后,第三个样本将被添加到混合中。所有三个样本都将永远循环。对于所有样本,这将继续。


我已成功同时播放多首曲目,但无法将新曲目添加到以前循环播放的曲目中。我尝试过 PyAudio 和 PyDub。


有没有办法让一个连续的循环流添加额外的轨道?我有点卡住了。先感谢您。


from pydub import AudioSegment

from pydub.playback import play


audio1 = AudioSegment.from_file("zipper.wav") 

audio2 = AudioSegment.from_file("jar.wav") 

audio3 = AudioSegment.from_file("dribble.wav") 


mixed = audio1.overlay(audio2)          

mixed1  = mixed.overlay(audio3)


mixed1.export("mixed.wav", format='wav')


play(mixed1)   

编辑#1


随着不断的实验,pydub 似乎是一个阻塞函数,所以我将无法使用它,因为我会将这种音频混合与热像仪分析与 OpenCV 和 LED 灯矩阵结合起来。


不知道从这里去哪里。


编辑 #2 我在这个链接上发现了一些非阻塞的 pyaudio 代码。它允许我无限循环播放一个 .wav 文件。我试图添加第二个玩家,但它抛出了一个错误。


杨__羊羊
浏览 324回答 1
1回答

米琪卡哇伊

在挖掘和多次尝试之后,我找到了一种使用 pygame 模块的方法。我最初没有研究这个模块,因为我认为它仅限于 8 个同时发出的声音。那只是默认设置。pygame.mixer.set_num_channels(26)我将通道数更改为 26。import pygameimport timepygame.mixer.init()pygame.init()pygame.mixer.set_num_channels(26)sound1 = pygame.mixer.Sound("sound1.ogg")sound2 = pygame.mixer.Sound("sound2.ogg")sound1.play(loops = -1)time.sleep (2)sound2.play(loop = -1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python