Воспроизведение звука в 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: `Ошибка хоста '

output (['Microsoft Sound Mapper - Output', 'Динамики / наушники (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, как следует? Есть идеи, как я могу это исправить?

Спасибо за ваше время.


person Docconcoct    schedule 23.11.2016    source источник


Ответы (2)


Вы должны 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)
person Community    schedule 17.04.2017
comment
Я пробовал это решение, но оно не сработало. В итоге я использовал PyGame для своих аудио нужд. Спасибо за предложение. - person Docconcoct; 18.04.2017

В конце концов я отказался от библиотеки pyo и успешно смог воспроизвести звук в PsychoPy с помощью PyGame, выполнив следующие действия ПЕРЕД импортом sound из психопии:

from psychopy import prefs
prefs.general['audioLib'] = ['pygame']

...

sound.Sound(value = soundfile)

Я обнаружил, что Pyo - это кошмар при использовании Windows 7 Pro. Надеюсь, эта работа с PyGame окажется полезной.

person Docconcoct    schedule 27.11.2016