在 PsychoPy 中连续播放 wav 声音文件

Play wav sound file continuously in PsychoPy

我有一个播放嘟嘟声的声音文件,我想连续播放几秒钟的声音,这样它听起来就像一个连续的声音。这是我的代码

alarm = sound.Sound('alarm.wav', secs = 5)
alarm.play()

但是只播放了1秒,也就是原声的长度。请帮忙!

持续时间参数(秒)不是这样工作的。如果 alarm.wav 超过 5 秒,它将只播放前五秒(即我认为它可以截断一个文件,尽管它的主要目的是定义指定为音符的声音持续时间,而不是通过外部声音文件)。但它不会通过重复播放持续时间较短的文件来自动填补这段时间。

您应该使用一些声音编辑软件将 alarm.wav 的五个实例连接到另一个文件中(最简单的解决方案),或者创建一个循环播放五次(这可能很难集成到您的绘制没有轻微时间故障的循环)。

这里有一些解决方案:

  1. 使用 psychopy 产生蜂鸣声:

    alarm = sound.Sound(700, secs=5)  # 700Hz beep
    
  2. 当你想要的长度是原始文件的倍数时,循环它,虽然这很可能在每次重复时产生一些点击(因为振幅突然跳跃,除非它们匹配完美):

    alarm = sound.Sound('alarm.wav', loops=5)
    
  3. 使用音频编辑器将蜂鸣声延长至五秒,确保循环时没有咔嗒声。如果你有固定的持续时间,这可能比 (2) 更好。

  4. 如果您有多个播放长度,例如在条件之间,在实验期间的适当时间使用 alarm.stop()。然后要么将 loops 设置为一个高数字,要么像 (3) 那样将声音编辑得足够长,这样您就知道它只会在您的命令下停止。