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

问题描述 投票:2回答:2

Psychopy中的纯音以点击结束。如何删除这些点击?在心理上产生的音调和作为.wav导入的音调都具有相同的问题。我尝试在使用Audacity生成的.wav音中添加0.025ms的淡出。但是在用心理模型播放时,它们会以咔哒声结束。

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

python psychopy
2个回答
1
投票

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

你使用旧版的心理学吗?如果是,则升级。较新的版本为自生音调添加汉明窗口(淡入/淡出),避免点击。

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


2
投票

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

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

PyGame initializes音响系统具有以下设置:

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

虽然Pyo initializes它的方式如下:

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

psychopy.sound的文件说明:

要控制比特率和缓冲区大小,可以在创建第一个Sound对象之前调用psychopy.sound.init:

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

所以,我建议你:

  • 尝试使用声音后端,Pyo和PyGame - 您可以更改在General / audio库下的PsychoPy首选项中使用哪一个。将字段更改为['pyo']以仅使用Pyo,或将['pygame']更改为仅使用PyGame。
  • 使用两个后端(Pyo,PyGame)尝试不同的比特率和缓冲区大小设置。

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

© www.soinside.com 2019 - 2024. All rights reserved.