使用 Pyo 在 Python 中播放声音

Playing sound in Python using 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  

returns 这个输出:

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 设备非法组合的消息。 G运行ted,你也可以看到我的尝试惨遭失败。使用或不使用 Server() 代码块都会出现相同的错误消息。

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

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

它只是挂起,什么都不做。

知道为什么 pyo 没有按应有的方式玩 python 吗?关于如何修复它有什么想法吗?

感谢您的宝贵时间。

我最终放弃了 pyo 库,并成功地使用 PyGame 在 PsychoPy 中播放声音,方法是在从 psychopy 导入 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)

然后您可以使用 pyo 中的 SfPlayer class 来播放声音文件:

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

和运行 gui界面:

s.gui(locals(), exit=False)