2011-01-12 88 views
23

我在Ubuntu 10.10 x64下的Enthought Python Distribution(Python 2.6.6)下使用PyAudio。PyAudio IOError:沒有默認輸入設備可用

>>> import pyaudio 
>>> pa = pyaudio.PyAudio() 
>>> pa.get_default_input_device_info() 

Traceback (most recent call last): 
    File "<pyshell#24>", line 1, in <module> 
    pa.get_default_input_device_info() 
    File "/usr/lib/python_epd/lib/python2.6/site-packages/pyaudio.py", line 936, in get_default_input_device_info 
    device_index = pa.get_default_input_device() 
IOError: No Default Input Device Available 

這與我嘗試打開輸入流時得到的錯誤相同。有相應的錯誤「IO錯誤:沒有默認的輸出設備可用」

+2

如果你嘗試`pa.get_device_count()`,你會得到什麼? – mtrw 2011-01-12 18:00:30

+0

@mtrw pa.get_device_count()返回0 – Gus 2011-01-12 18:26:55

+0

通過`sudo apt-get install python-pyaudio`安裝的`pyaudio`在Ubuntu-11.10上運行 – jfs 2012-01-13 15:45:50

回答

2

OK,這裏是一個解決方案,不漂亮,但對我的作品。 根據我對ulidtko的回答的評論,pyaudio不是問題,而是pyaudio應該綁定到的底層PortAudio。

在Ubuntu portaudio驅動程序都安裝了這個軟件包:

sudo apt-get install python-gnuradio-audio-portaudio 

你必須有這個已經,因爲你說你的股票的Ubuntu上運行代碼罰款(雖然可以忽略一些調試消息)

如果您查詢您portaudio模塊的位置,你會發現下面的,當你正在運行enthought的蟒蛇:

>>> import pyaudio 
>>> pyaudio.pa.__file__ 
'/opt/epd-7.2-2-rh5-x86_64/lib/python2.7/site-packages/_portaudio.so' 

和TH E採用股票的Ubuntu:

In [1]: import pyaudio 
In [2]: pyaudio.pa.__file__ 
Out[2]: '/usr/lib/pymodules/python2.7/_portaudio.so' 

我_portaudio.so移動enthought的方式進行,並鏈接到_portaudio.so和現在的一切,包括在查科演示可愛的頻譜分析儀系統取代了它/先進目錄工作:

cd /opt/epd-7.2-2-rh5-x86_64/lib/python2.7/site-packages/ 
mv _portaudio.so _portaudio.so.originalEPD 
ln -s /usr/lib/pymodules/python2.7/_portaudio.so 
3

我會推薦PYO音頻I/O和綜合,我發現它很容易拿起。 下面是一些代碼來說明我將如何處理它改變它之後的音頻輸入獲得PYO獲取和輸出調:

from pyo import * 
serv = Server(duplex=1).boot() 
serv.start() 
shiftfreq = 329.63 
# 329.63 is the frequency for the E note 
mic = Input(chnl=0) 
shift = FreqShift(mic, shift=shiftfreq, mul=.5).out() 
serv.gui(locals()) 

PYO也可以讓你實時更改頻率和合成,生成參數或任何,這對我來說是最大的吸引力,因爲我主要用它來編程現場合成器樂器。

它也有很大的manual ...