2016-11-23 165 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