我想播放不同长度的“同一时间”的不同长度的wav文件,这些文件独立于彼此,就像一个真正的鼓组。同时播放多个wav文件,适用于Python中的鼓机
我找到了音频控制,如PyAudio,Pydub ..等不同的库,我认为解决这个问题的线程..但如果我修改它根本不会
from pydub import AudioSegment
from pydub.playback import play
import thread
def play_sound(f_directory,f_file):
audio = AudioSegment.from_file(f_directory+f_file)
play(audio)
thread.start_new_thread(play_sound,("drum samples/","ride_crash.wav"))
thread.start_new_thread(play_sound,("drum samples/","crash_hi.wav"))
thread.start_new_thread(play_sound,("drum samples/","kick.wav"))
播放声音此代码至此
from pydub import AudioSegment
from pydub.playback import play
import thread
def play_sound(f_directory,f_file):
audio = AudioSegment.from_file(f_directory+f_file)
play(audio)
thread.start_new_thread(play_sound("drum samples/","ride_crash.wav"))
thread.start_new_thread(play_sound("drum samples/","crash_hi.wav"))
thread.start_new_thread(play_sound("drum samples/","kick.wav"))
它只播放第一个。
我使用PyDub而不是PyAudio的原因是我认为PyDub的使用要容易得多,但对于这种情况可能无用。我也使用覆盖,但与此相关的问题是,它仅在第一个文件的持续时间内播放所有文件。
我想知道什么是问题或请让我知道是否有更好的解决方案,也许是另一个库,但如果可能我想避免PyGame或Pyglet等......因为我认为这会减慢我的程序。如果没有,我期待着它。
pydub的播放在可用时使用pyaudio,并作为后备使用。尽管[pyaudio机制](https://github.com/jiaaro/pydub/blob/master/pydub/playback.py#L22)_could可以扩展用于生产使用,但它们都用于快速简单的调试用途(我保证,你不想要任何真实的东西)。基本上你只需要把块缩小得多(比如10毫秒,如果这是一个可以接受的延迟时间,那很可能是),并且在写入流之前一次将所有当前播放的音频信号合并为10毫秒。 – Jiaaro