我在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”
答案 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.tgz
)
http://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 "
安装最新版本的pyaudio
(PyAudio-0.2.11.tar.gz
)
答案 5 :(得分:0)
从以下来源安装pyaudio对我有用
conda install nwani::portaudio nwani::pyaudio
参考:Mamun或Rashid的问题答案... OSError: No Default Input Device Available