1

我正在尝试使用 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 映射器):PortMidi:“主机错误”

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

输入(['Realtek ASIO'],[4])

服务器未启动。服务器必须启动!Pa_OpenStream 中的 portaudio 错误:I/O 设备的非法组合 Portaudio 错误:I/O 设备的非法组合 Pa_AbortStream 中的portaudio 错误:Pa_CloseStream 中的portaudio 错误:无效的流指针

正如您从代码和输出中看到的那样,我试图确保输入和输出设备相同。

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

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

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

它只是挂起无所事事。

知道为什么 pyo 没有像它应该玩的那样玩 python 吗?关于如何修复它的任何想法?

谢谢你的时间。

4

2 回答 2

1

你必须boot()Server做任何其他事情之前,所以你的行应该是:

import pyo

s = pyo.Server()
s.boot()
s.start()
s.setInputDevice(4)
s.setOutputDevice(4)

然后你可以使用SfPlayerfrom 类pyo来播放声音文件:

play_audio1 = pyo.SfPlayer(path="LRsound.wav", speed=[1, 1])
play_audio1.out()

并运行 gui 界面:

s.gui(locals(), exit=False)
于 2017-04-17T21:39:36.387 回答
0

我最终放弃了 pyo 库,并通过在sound从 Psychopy 导入之前执行以下操作,成功地使用 PyGame 在 PsychoPy 中播放声音:

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

...

sound.Sound(value = soundfile)

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

于 2016-11-27T11:44:19.233 回答