windows 如何重复播放声音样本,使下一个循环与上一个循环重叠

olmpazwi  于 2022-11-18  发布在  Windows
关注(0)|答案(2)|浏览(153)

不知道这是不是一个欺骗,但我发现到目前为止的职位没有解决我的问题。
前段时间,我写了一个(音乐)metronome for Ubuntu,节拍器是用python3/Gtk写的
为了重复播放节拍器- tick(录制的声音样本),我使用subprocess.Popen()播放声音,并将ogg123用作cli工具:

subprocess.Popen(["ogg123", soundfile])

这个很好用,我可以很容易地跑到每分钟240拍。

在Windows上

我决定在Windows(python3/tkinter/ttk)上重写这个项目。但是我很难播放声音,以更高的速度重复节拍样本。下一个节拍根本不会开始,而上一个节拍(表面上)还没有完成,播放节拍样本。
在Windows上的python3中,有没有办法在示例仍在播放时开始播放下一个节拍?
目前,我使用的是winsound

winsound.Playsound()

在循环中运行它会出现前面提到的问题。

tcomlyy6

tcomlyy61#

您可以使用pydub进行音频操作,包括重复播放。
下面是一个示例。您可以使用pydub site.中的示例对此进行进一步开发

from pydub import AudioSegment
from pydub.playback import play

n = 2

audio = AudioSegment.from_file("sound.wav") #your audio file
play(audio * n)  #Play audio 2 times

将上面的n更改为所需的数字。

xu3bshqb

xu3bshqb2#

假设你想让音频大于固定长度,比如20000毫秒或20秒,那么你可以简单地重复添加音频

sound = AudioSegment.from_file(GENERAL_FOLDER + "/" + "beep.wav", "wav")

sound_extended = sound

while sound_extended < 20000:
    sound_extended = sound_extended + sound

相关问题