Воспроизведение звука на 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)
Другие вопросы по тегам