我在 Ubuntu 10.10 x64 的 Enthought Python Distribution (Python 2.6.6) 下使用 PyAudio。
>>> 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
这与我尝试打开输入流时遇到的错误相同。有相应的错误“IOError: No Default Output Device Available”
最佳答案
好的,这是一个不太漂亮但对我有用的解决方案。 根据我对 ulidtko 回答的评论,pyaudio 不是问题,而是 pyaudio 应该绑定(bind)到的底层 PortAudio。
在 ubuntu 上,portaudio 驱动程序与此软件包一起安装:
sudo apt-get install python-gnuradio-audio-portaudio
你必须已经有了这个,因为你说你的股票 ubuntu 可以很好地运行你的代码(尽管有一些可以忽略的调试消息)
如果你在运行 enthought 的 python 时查询你的 portaudio 模块的位置,你会发现如下:
>>> import pyaudio
>>> pyaudio.pa.__file__
'/opt/epd-7.2-2-rh5-x86_64/lib/python2.7/site-packages/_portaudio.so'
以及股票 ubuntu 上的以下内容:
In [1]: import pyaudio
In [2]: pyaudio.pa.__file__
Out[2]: '/usr/lib/pymodules/python2.7/_portaudio.so'
我将 enthought _portaudio.so 移开,并将其替换为系统 _portaudio.so 的链接,现在包括 chaco demo/advanced 目录中可爱的频谱分析仪在内的所有内容都可以正常工作:
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
关于python - PyAudio IOError : No Default Input Device Available,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672155/