gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:13:11 26 4
gpt4 key购买 nike

在实验中,我正在准备从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()

在进行实验时,声音似乎相互融合。它们听起来并不离散。
结果有点问题,这是Psychopy的问题(​​声音太短时质量不是很好吗?)或代码的问题?

感谢您的时间!
非常欢迎任何其他建议或改进代码的建议。

最佳答案

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

for stimulus in stimuli:
#print (stimuli)
for frameN in range(18):
#print clock.getTime()
win.flip()
if frameN == 0:
sound_stimulus = sound.Sound(stimulus)
sound_stimulus.play()
clock.reset() # Time zero is stimulus onset

我在这里做了两件事。首先,我仅在翻转开始时才启动 sound_stimulus.play()clock.reset(),而不是在后续更新时启动。其次,我启动了AFTER win.flip声音,以便定时进行翻转。如果在翻转之前播放,则声音可以在16.7毫秒间隔内的任何位置开始播放(但可能仅在第一次试用时才会发出)。

顺便说一句,由于您并没有真正使用变量 sound_stimulus,您可以进一步简化代码:

        if frameN == 0:
sound.Sound(stimulus).play()

关于csv - 从CSV文件播放的心理声音混合在一起(时间以帧为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50026946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com