在PsychoPy中播放声音时出错:无法将字符串转换为浮点数

时间:2016-12-08 11:07:36

标签: python string audio wav psychopy

我在使用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()

1 个答案:

答案 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对象。即声音对象可以播放,停止等,而名称只是字符串,可以打印,连接,用作文件路径等。