我正在尝试使用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','Primary Sound Driver','扬声器/耳机(Realtek 高清音频)','Realtek ASIO','扬声器/耳机 (Realtek高清晰度音频)'],[0,1,2,3,4,5])
输入(['Realtek ASIO'],[4])
服务器未启动。 必须启动服务器! Pa_OpenStream中的portaudio错误:I / O设备的非法组合 Portaudio错误:Pa_AbortStream中I / O devicesportaudio错误的非法组合:无效的流指针 Pa_CloseStream中的portaudio错误:无效的流指针
从代码和输出中可以看出,我试图确保输入和输出设备是相同的。
这是由于有关I / O设备非法组合的消息。当然,你也可以看到我的尝试失败了。无论是否有Server()
代码块,都会显示相同的错误消息。
我在PsychoPy中运行了上述代码。当我在Spyder中运行相同的代码时,它实际上永远不会被传递:
play_audio1 = sound.SoundPyo(value = 'LRsound.wav', stereo = True)
它只是无所事事。
任何想法为什么pyo不应该像python一样玩?关于我如何解决它的任何想法?
感谢您的时间。
答案 0 :(得分:0)
我最终放弃了pyo库并成功地使用PyGame在PsychoPy中播放声音,方法是在从mentalopy导入sound
之前执行以下操作:
from psychopy import prefs
prefs.general['audioLib'] = ['pygame']
...
sound.Sound(value = soundfile)
在使用Windows 7 Pro时,我发现Pyo是一场噩梦。希望这个与PyGame一起使用会很有用。
答案 1 :(得分:0)
在执行任何其他操作之前,您必须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()
并运行gui界面:
s.gui(locals(), exit=False)