2016-12-08 14 views
0

У меня возникают проблемы с воспроизведением звуков в PsychoPy, и я не знаю почему. я получаю сообщение об ошибке: Could not convert string to float: Sounds/dog.wavОшибка воспроизведения звуков в PsychoPy: Не удалось преобразовать строку в float

Вот мой код:

# 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

Моя версия психопата - 1.82.01, я не знаю, разница. –

+0

Работает ли он с 'Sound/dog.mp3'? – furas

+1

Вы уверены, что 'Sound()' нужен список файлов, а не одно имя? 'sound.Sound (" Sounds/dog.wav ")' или 'sound.Sound (Звуки [0])' – furas

ответ

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. т.е. звуковые объекты могут воспроизводиться, останавливаться и т. д., тогда как имена - это просто строки, которые могут быть напечатаны, объединены, использованы как путь к файлу и т. д.