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

时间:2011-01-12 17:55:06

标签: python portaudio pyaudio enthought

我在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”

6 个答案:

答案 0 :(得分: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 ...

答案 1 :(得分:2)

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

在ubuntu上,使用此软件包安装了portaudio驱动程序:

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

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

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

>>> 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

答案 2 :(得分:1)

  

PyAudio为跨平台音频I / O库PortAudio提供Python绑定。

http://people.csail.mit.edu/hubert/pyaudio/

您安装了PortAudio软件吗?需要pyaudio才能正常工作。

答案 3 :(得分:1)

终于对我有用了:

从源代码构建和安装 portaudio 并安装最新版本的 pyaudio。

然后在 /usr/local/lib 中将 libportaudio.so.2.0.0 重命名为 oldlibportaudio.so.2.0.0 并在 /usr/lib/x86_64-linux-gnu

中创建了一个新的软链接
sudo mv libportaudio.so.2.0.0 oldlibportaudio.so.2.0.0
sudo ln -s /usr/lib/x86_64-linux-gnu/libportaudio.so.2.0.0 libportaudio.so.2.0.0

在 Ubuntu 20.04 x64 上测试

答案 4 :(得分:0)

检查此 https://github.com/shichao-an/soundmeter/issues/7

您要做的就是 安装ALSA:sudo apt-get install libasound-dev

然后构建portaudio(此版本pa_stable_v190600_20161030.tgzhttp://www.portaudio.com/download.html

然后获取root特权(在普通sudo su root不起作用的Ubuntu下,su root。)

将portaudio归档文件放在/usr/src中,并用tar xvfz pa_snapshot.tgz解压缩,这将生成目录/usr/src/portaudio

下降到该目录并执行以下命令:

./configure

make

make install

ldconfig

成功安装portaudio后,必须运行linrad配置脚本,以使Linrad知道portaudio可用的事实。

请确保您在./configure文件中获得ALSA的同意,

 Target ...................... x86_64-unknown-linux-gnu
  C++ bindings ................ no
  Debug output ................ no

  ALSA ........................ yes
  ASIHPI ...................... no

  OSS ......................... yes
  JACK ........................ no       "

安装最新版本的pyaudioPyAudio-0.2.11.tar.gz

答案 5 :(得分:0)

从以下来源安装pyaudio对我有用

conda install nwani::portaudio nwani::pyaudio

参考:Mamun或Rashid的问题答案... OSError: No Default Input Device Available