2016-11-23 109 views
1

我试图使用pyo库播放声音。使用Pyo在Python中播放声音

下面的代码:

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 version 0.8.0 (uses single precision)

Portmidi warning: could not open midi output 0 (Microsoft MIDI Mapper): PortMidi: `Host error'

output (['Microsoft Sound Mapper - Output', 'Speakers/Headphones (Realtek ', 'Primary Sound Driver', 'Speakers/Headphones (Realtek High Definition Audio)', 'Realtek ASIO', 'Speakers/Headphones (Realtek High Definition Audio)'], [0, 1, 2, 3, 4, 5])

input (['Realtek ASIO'], [4])

Server not booted. The Server must be booted! portaudio error in Pa_OpenStream: Illegal combination of I/O devices Portaudio error: Illegal combination of I/O devicesportaudio error in Pa_AbortStream: Invalid stream pointer portaudio error in Pa_CloseStream: Invalid stream pointer

正如你可以从代码,我已经尝试确保输入和输出设备是输出看到相同。

这是由于有关非法组合I/O设备的消息。诚然,你也可以看到我的尝试失败了。带或不带Server()代码块时会出现相同的错误消息。

我在PsychoPy中运行了上面的代码。当我在Spyder中运行相同的代码时,它实际上并没有通过:

play_audio1 = sound.SoundPyo(value = 'LRsound.wav', stereo = True) 

它只是挂起了无所事事。

任何想法为什么pyo不是在玩python,因为它应该?关于如何修复它的任何想法?

谢谢你的时间。

回答

0

我最终放弃了对杓库,并成功地管理使用pygame的通过执行以下操作中PsychoPy播放的声音之前,从psychopy进口sound

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

...

sound.Sound(value = soundfile) 

我在使用Windows 7 Pro时发现Pyo是一场噩梦。希望PyGame的这项工作会有用。

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) 
+0

我曾尝试过这种解决方案,但没有奏效。我最终使用PyGame来满足我的音频需求。 (还是)感谢你的建议。 – Docconcoct