Psychopy 中的纯音以不需要的点击结束

Pure tones in Psychopy end with unwanted clicks

Psychopy 中的纯音以点击结束。我怎样才能删除这些点击? 在 psychopy 中生成的音调和作为 .wav 导入的音调都有同样的问题。我尝试在使用 Audacity 生成的 .wav 音调中添加 0.025 毫秒的淡出。但是仍然在心理状态下播放它们时,它们以咔嗒声结束。

现在我不确定如何继续进行。我需要进行一个心理声学实验,它不能像那样进行音调呈现。

据我所知,噼啪声或咔哒声通常与缓冲错误有关。许多年前,我在 Linux 系统上设置了错误的比特率时遇到了类似的问题。所以这里可能至少有两个可能的罪魁祸首:比特率和缓冲区大小。

您已经应用了起始斜坡和偏移斜坡以允许膜摆动 in/out,所以这应该不是问题。 (顺便说一句,我认为你的意思是 0.025 而不是毫秒?否则,斜坡会太短!)

PyGameinitializes音响系统设置如下:

initPygame(rate=22050, bits=16, stereo=True, buffer=1024)

而 Pyo initializes 是这样的:

initPyo(rate=44100, stereo=True, buffer=128)

psychopy.sound 的文档指出:

For control of bitrate and buffer size you can call psychopy.sound.init before creating your first Sound object:

from psychopy import sound
sound.init(rate=44100, stereo=True, buffer=128)
s1 = sound.Sound('ding.wav')

所以,我建议你:

  • 尝试两种声音后端,Pyo 和 PyGame——您可以在 常规/音频库 下的 PsychoPy 首选项中更改要使用的后端。将字段更改为 ['pyo'] 以仅使用 Pyo,或更改为 ['pygame'] 以仅使用 PyGame.
  • 使用两个后端(Pyo,PyGame)对比特率和缓冲区大小进行不同设置的实验。

但是,如果你想开始认真的心理声学,我建议你不要使用任何建议的解决方案,并获得一些专业的声音硬件或带模拟输出的数据采集板,这将提供亚毫秒精度的无失真声音,例如 National Instruments 或竞争对手生产的设备。可以通过 PyLibNIDAQmx.

从 Python 控制 NI 板

声音开头和结尾的卡嗒声经常发生,因为声音在中途停止,因此波形突然从某个值变为零。该波形只能使用叠加在信号上的高振幅高频波来制作,即点击。所以解决方案是让波在零时停止。

您使用的是旧版本的 psychopy 吗?如果是,则升级。较新的版本将 Hamming window(淡入淡出 in/out)添加到应避免点击的自生成音调中。

对于 .wav 文件,尝试在最后添加(额外的)静音,例如50 毫秒。可能是精神病过早地停止了声音。