Воспроизведение звука на Python с использованием Pyo
Я пытаюсь воспроизвести звуки с помощью библиотеки Pyo.
Следующий код:
from psychopy import sound, logging, core
logging.console.setLevel(logging.DEBUG)
from pyo import *
s = Server()
s.setInputDevice(4)
s.setOutputDevice(4)
s.boot()
s.start()
print "output", pa_get_output_devices()
print "input", pa_get_input_devices()
play_audio1 = sound.SoundPyo(value = 'LRsound.wav', stereo = True)
play_audio1.play()
core.wait(1) # wait so the sound can play
возвращает этот вывод:
Pyo версия 0.8.0 (использует одинарную точность)
Предупреждение Portmidi: невозможно открыть выход midi 0 (Microsoft MIDI Mapper): PortMidi: `Ошибка хоста '
выход (["Microsoft Sound Mapper - Выход", "Колонки / Наушники (Realtek", "Основной драйвер звука", "Колонки / Наушники (Realtek High Definition Audio)", "Realtek ASIO", "Колонки / Наушники (Realtek High Definition" Аудио)'], [0, 1, 2, 3, 4, 5])
вход (['Realtek ASIO'], [4])
Сервер не загружен. Сервер должен быть загружен! ошибка portaudio в Pa_OpenStream: недопустимая комбинация устройств ввода-вывода. Ошибка portaudio: недопустимая комбинация устройств ввода-вывода. ошибка portaudio в Pa_AbortStream: неверный указатель потока. ошибка portaudio в Pa_CloseStream: неверный указатель потока
Как вы можете видеть из кода и вывода, я попытался убедиться, что устройства ввода и вывода одинаковы.
Это связано с сообщением о недопустимой комбинации устройств ввода / вывода. Конечно, как вы можете видеть, моя попытка потерпела неудачу. Те же сообщения об ошибках появляются с или без Server()
кусок кода.
Я запустил приведенный выше код в PsychoPy. Когда я запускаю один и тот же код в Spyder, он никогда не передается:
play_audio1 = sound.SoundPyo(value = 'LRsound.wav', stereo = True)
это просто висит, ничего не делая.
Есть идеи, почему pyo не играет с python, как следует? Любые идеи о том, как я могу это исправить?
Спасибо за ваше время.
2 ответа
В конце концов я отказался от библиотеки pyo и успешно смог воспроизвести звук в PsychoPy с помощью PyGame, выполнив следующее ДО импорта sound
от психопии:
from psychopy import prefs
prefs.general['audioLib'] = ['pygame']
...
sound.Sound(value = soundfile)
Я нашел Pyo кошмаром при использовании Windows 7 Pro. Надеюсь, что эта работа с PyGame окажется полезной.
Ты должен boot()
Server
прежде чем делать что-то еще, ваши строки должны быть:
import pyo
s = pyo.Server()
s.boot()
s.start()
s.setInputDevice(4)
s.setOutputDevice(4)
Тогда вы можете использовать SfPlayer
класс от pyo
проиграть звуковой файл:
play_audio1 = pyo.SfPlayer(path="LRsound.wav", speed=[1, 1])
play_audio1.out()
и запустить интерфейс графического интерфейса:
s.gui(locals(), exit=False)