我有一個保存為 .wav 文件的各種長度的聲音樣本列表。我想播放第一個樣本并讓它永遠循環(huán)。作為事件或狀態(tài)更改后的某個時間點,我希望第二個樣本開始播放第一個樣本。然后兩個樣本將永遠循環(huán)。在下一個事件之后,第三個樣本將被添加到混合中。所有三個樣本都將永遠循環(huán)。對于所有樣本,這將繼續(xù)。我已成功同時播放多首曲目,但無法將新曲目添加到以前循環(huán)播放的曲目中。我嘗試過 PyAudio 和 PyDub。有沒有辦法讓一個連續(xù)的循環(huán)流添加額外的軌道?我有點卡住了。先感謝您。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 似乎是一個阻塞函數(shù),所以我將無法使用它,因為我會將這種音頻混合與熱像儀分析與 OpenCV 和 LED 燈矩陣結(jié)合起來。不知道從這里去哪里。編輯 #2 我在這個鏈接上發(fā)現(xiàn)了一些非阻塞的 pyaudio 代碼。它允許我無限循環(huán)播放一個 .wav 文件。我試圖添加第二個玩家,但它拋出了一個錯誤。
1 回答

米琪卡哇伊
TA貢獻1998條經(jīng)驗 獲得超6個贊
在挖掘和多次嘗試之后,我找到了一種使用 pygame 模塊的方法。我最初沒有研究這個模塊,因為我認(rèn)為它僅限于 8 個同時發(fā)出的聲音。那只是默認(rèn)設(shè)置。
pygame.mixer.set_num_channels(26)
我將通道數(shù)更改為 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
提交
取消