【问题标题】:How can I repeatedly play a sound sample, allowing the next loop to overlap the previous如何重复播放声音样本,让下一个循环与前一个循环重叠
【发布时间】:2017-01-31 12:39:12
【问题描述】:

不确定这是否是骗局,但到目前为止我发现的帖子并没有解决我的问题。


不久前,我写了一个(音乐)metronome for Ubuntu。节拍器写在python3/Gtk

为了重复播放节拍器(录制的声音样本),我使用subprocess.Popen() 播放声音,使用ogg123 作为 cli 工具:

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

这很好用,我可以轻松地跑到每分钟 240 次。

在 Windows 上

我决定在 Windows (python3/tkinter/ttk) 上重写该项目。但是,我很难播放声音,以更高的速度重复节拍样本。下一个节拍根本不会开始,而前一个节拍(显然)尚未完成,正在播放节拍样本。

有没有办法,在 Windows 上的 python3 中,我可以在样本仍在播放时开始播放下一个节拍?

目前,我正在使用winsound

winsound.Playsound()

如上所述,在循环中运行它存在问题。

【问题讨论】:

    标签: python windows python-3.x audio


    【解决方案1】:

    您可以使用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改成你需要的号码。

    【讨论】:

    • 谢谢!设置有点麻烦,奇怪的错误,不习惯 Windows :) 明天晚上会继续。待续……谢谢!
    • 愚蠢的问题,但你确定它适用于 python3 吗?我真的找不到任何文档。
    • 我有 2.7 ,您可能需要跟进 pydub 站点上的文档以进行特定的 python 3 相关安装。我知道由于依赖关系,安装可能会有点痛苦。一旦安装,它虽然顺利。更多细节在这里 - https://github.com/jiaaro/pydub#installation
    • 我检查了 pydub 确实支持 3.x ,因此只需让它在 Windows 上运行即可。祝你好运
    • 不幸的是,它无法在 Windows 上运行。很确定我正确设置了路径。顺便说一句,您是如何在 Liux 上安装的? pip install 为 python2 安装。
    猜你喜欢
    • 2021-08-27
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多