从csv文件播放的心理变态声音混合在一起(时间以帧为单位)

从csv文件播放的心理变态声音混合在一起(时间以帧为单位),csv,audio,frames,psychopy,Csv,Audio,Frames,Psychopy,在实验中,我准备从csv文件播放声音,并以帧为单位测量计时。考虑到每个声音持续300毫秒,这相当于18帧 from psychopy import data from psychopy import core, visual, gui, data, event from psychopy.tools.filetools import fromFile, toFile import numpy, random, csv, time from psychopy import logging, pre

在实验中,我准备从csv文件播放声音,并以帧为单位测量计时。考虑到每个声音持续300毫秒,这相当于18帧

from psychopy import data
from psychopy import core, visual, gui, data, event
from psychopy.tools.filetools import fromFile, toFile
import numpy, random, csv, time
from psychopy import logging, prefs
prefs.general['audioLib'] = ['pyo']  # Set the Audio Library [pyo (highest performer, check it), sounddevice (looks promessing, check it) or pygame (not good with timing)]
prefs.general['audioDriver']=['coreaudio']
from psychopy import sound


win = visual.Window([400,300], monitor="testMonitor", units="cm", fullscr=False)
stimuli = []
datafile = open("audioStim.csv", "rb")
reader = csv.reader(datafile, delimiter=";")
for row in reader:
    stimuli.append(row[0])
    #print (stimuli)
datafile.close()

clock = core.Clock()
for stimulus in stimuli:
    #print (stimuli)
    for frameN in range(18):
        #print clock.getTime()
        sound_stimulus = sound.Sound(stimulus)
        sound_stimulus.play()
        win.callOnFlip(clock.reset)
        win.flip()



## Closing Section
win.close()
core.quit()
进行实验时,声音似乎相互混合。它们听起来并不离散。 结果有点问题,这是心理变态(声音很短时质量不好?)还是代码的问题

谢谢你抽出时间! 非常欢迎对代码的任何其他改进建议。

您的代码开始在每个帧上播放声音,即每秒播放60次。这样做:

对于刺激中的刺激:
#打印(刺激)
对于范围(18)内的帧:
#打印时钟。getTime()
win.flip()
如果frameN==0:
声音刺激=声音。声音(刺激)
音效
clock.reset()#时间零点为刺激开始
我在这里做了两件事。首先,我只在翻转开始时启动
声音刺激.play()
时钟.reset()
,而不是在后续更新时启动。第二,我在win.flip之后开始播放声音,这样它就与flip同步了。如果在翻转前播放,声音可以在16.7毫秒的间隔内的任何地方开始(但可能只在第一次尝试时才开始)

顺便说一句,由于您没有真正使用变量
sound\u stimulation
,因此可以进一步简化代码:

如果frameN==0:
声音。声音(刺激)。播放()
您的代码开始在每个帧上播放声音,即每秒播放60次。这样做:

对于刺激中的刺激:
#打印(刺激)
对于范围(18)内的帧:
#打印时钟。getTime()
win.flip()
如果frameN==0:
声音刺激=声音。声音(刺激)
音效
clock.reset()#时间零点为刺激开始
我在这里做了两件事。首先,我只在翻转开始时启动
声音刺激.play()
时钟.reset()
,而不是在后续更新时启动。第二,我在win.flip之后开始播放声音,这样它就与flip同步了。如果在翻转前播放,声音可以在16.7毫秒的间隔内的任何地方开始(但可能只在第一次尝试时才开始)

顺便说一句,由于您没有真正使用变量
sound\u stimulation
,因此可以进一步简化代码:

如果frameN==0:
声音。声音(刺激)。播放()

@lookingforanswers。伟大的如果它解决了您的问题,请记住单击右侧的“接受答案”,以帮助将来的用户找到答案。@lookingforanswers。伟大的如果它解决了您的问题,请记住单击右侧的“接受答案”,以帮助未来用户找到答案。