我有一个保存为 .wav 文件的各种长度的声音样本列表。我想播放第一个样本并让它永远循环。作为事件或状态更改后的某个时间点,我希望第二个样本开始播放第一个样本。然后两个样本将永远循环。在下一个事件之后,第三个样本将被添加到混合中。所有三个样本都将永远循环。对于所有样本,这将继续。我已成功同时播放多首曲目,但无法将新曲目添加到以前循环播放的曲目中。我尝试过 PyAudio 和 PyDub。有没有办法让一个连续的循环流添加额外的轨道?我有点卡住了。先感谢您。from pydub import AudioSegmentfrom pydub.playback import playaudio1 = 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 文件。我试图添加第二个玩家,但它抛出了一个错误。
1 回答
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
在挖掘和多次尝试之后,我找到了一种使用 pygame 模块的方法。我最初没有研究这个模块,因为我认为它仅限于 8 个同时发出的声音。那只是默认设置。
pygame.mixer.set_num_channels(26)
我将通道数更改为 26。
import pygame
import time
pygame.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)
添加回答
举报
0/150
提交
取消
