28

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

4

6 回答 6

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 还允许您动态更改合成器、发生器或任何东西的频率和参数,这对我来说是最大的吸引力,因为我主要使用它来编程现场合成器乐器。

它还有一个很棒的手册...

于 2011-07-22T16:02:30.237 回答
3

好的,这是一个不漂亮但对我有用的解决方案。根据我对 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'

我将思考的 _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
于 2012-04-26T18:30:40.610 回答
2

最后这对我有用:

从源代码构建和安装 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 上测试

于 2021-01-12T10:30:34.117 回答
1

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

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

您是否安装了 PortAudio 软件?它是工作所必需的pyaudio

于 2011-01-20T14:01:50.950 回答
1

检查这个 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

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

确保./configure文件中的 ALSA 为 yes

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

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

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

安装最新版本的pyaudio ( PyAudio-0.2.11.tar.gz)

于 2018-09-24T16:49:12.800 回答
0

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

conda install nwani::portaudio nwani::pyaudio

参考:Mamun 或 Rashid 的问题答案... OSError:没有可用的默认输入设备

于 2020-03-09T11:26:03.460 回答