我在使用PsychoPy播放声音时遇到问题,我不知道为什么。
我收到此错误消息:Could not convert string to float: Sounds/dog.wav
这是我的代码:
# Grounding of Words Experiment #
# -*- coding: utf-8 -*-
#Import libraries
import re
import glob
from psychopy import sound, visual, event, data, core, gui # imports a module for visual presentation and one for controlling events like key presses
import ppc
Sounds=["Sounds/dog.wav", "Sounds/dog.mp3"]
#from psychopy import prefs
#prefs.general['audioLib'] = ['pygame']
sound_name = sound.Sound(Sounds)
sound_name.play()
core.quit()
答案 0 :(得分:2)
您的Sounds
变量是一个包含两个字符串的列表。 sound.Sound()
函数只需要一个字符串来定义要使用的音频文件。我现在无法提出API,但我想如果函数获得多个参数,它会期望第二个是一个数值(也许是一个持续时间)。因此,它抱怨你已经传递了一个字符串(第二个文件名),当它期待一个数字。
因此,您需要指定一个特定的声音文件而不是整个列表,因此只需将一个值传递给sound.Sound()
函数。
例如通过索引来引用它:
sound_name = sound.Sound(Sounds[0])
或者通过遍历列表一次一个地向它们提供它们:
for sound_file in Sounds:
sound_name = sound.Sound(sound_file)
sound_name.play()
也许考虑让你的变量名更精确地匹配他们的内容,以避免混淆。例如在您的代码中,Sounds
实际上是声音(文件)名称列表,而sound_name
不是声音的名称,而是实际的Sound
对象。即声音对象可以播放,停止等,而名称只是字符串,可以打印,连接,用作文件路径等。