PyAudio IOError:没有可用的默认输入设备

Gus*_*Gus 26 python portaudio enthought pyaudio

我在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
Run Code Online (Sandbox Code Playgroud)

如果我尝试打开输入流,这是我得到的相同错误.存在相应的错误"IOError:No Default Output Device Available"

DrS*_*SAR 3

好的,这是一个不太漂亮但对我有用的解决方案。根据我对 ulidtko 的回答的评论, pyaudio 不是问题,而是 pyaudio 应该绑定到的底层 PortAudio 。

在 ubuntu 上,portaudio 驱动程序随此软件包一起安装:

sudo apt-get install python-gnuradio-audio-portaudio
Run Code Online (Sandbox Code Playgroud)

你必须已经有了这个,因为你说你的库存 ubuntu 可以很好地运行你的代码(尽管有一些可以忽略的调试消息)

如果你查询 portaudio 模块的位置,当你运行 enthought 的 python 时,你会发现以下内容:

>>> import pyaudio
>>> pyaudio.pa.__file__
'/opt/epd-7.2-2-rh5-x86_64/lib/python2.7/site-packages/_portaudio.so'
Run Code Online (Sandbox Code Playgroud)

以及 ubuntu 上的以下内容:

In [1]: import pyaudio
In [2]: pyaudio.pa.__file__
Out[2]: '/usr/lib/pymodules/python2.7/_portaudio.so'
Run Code Online (Sandbox Code Playgroud)

我将 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
Run Code Online (Sandbox Code Playgroud)

  • 即使更新 apt-get 也找不到包 `python-gnuradio-audio-portaudio` (8认同)