python - que - PyAudio IOError: No hay un dispositivo de entrada predeterminado disponible
python developing (4)
PyAudio proporciona enlaces de Python para PortAudio, la biblioteca de E / S de audio multiplataforma.
http://people.csail.mit.edu/hubert/pyaudio/
¿Instalaste el software PortAudio? Se requiere que el pyaudio
funcione.
Estoy usando PyAudio bajo la distribución de Python de Enthought (Python 2.6.6) en Ubuntu 10.10 x64.
>>> 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
Este es el mismo error que recibo si intento abrir una secuencia de entrada. Existe el error correspondiente "IOError: No hay un dispositivo de salida predeterminado disponible"
Compruebe esto https://github.com/shichao-an/soundmeter/issues/7
Todo lo que tienes que hacer es instalar ALSA: sudo apt-get install libasound-dev
luego compile portaudio (esta versión pa_stable_v190600_20161030.tgz
) http://www.portaudio.com/download.html
luego obtenga privilegios de root ( sudo su root
en Ubuntu, donde plain su root
no funciona).
Coloque el archivo portaudio en /usr/src
y descomprímalo con tar xvfz pa_snapshot.tgz
Esto generará el directorio /usr/src/portaudio
.
Desciende a este directorio y ejecuta estos comandos:
./configure
make
make install
ldconfig
El linrad
configuración de linrad
debe ejecutarse después de la instalación exitosa de portaudio para que Linrad sea consciente del hecho de que portaudio está disponible.
Asegúrese de obtener ALSA como sí en el archivo ./configure
Target ...................... x86_64-unknown-linux-gnu
C++ bindings ................ no
Debug output ................ no
ALSA ........................ yes
ASIHPI ...................... no
OSS ......................... yes
JACK ........................ no "
Instala la última versión de pyaudio
( PyAudio-0.2.11.tar.gz
)
OK, aquí hay una solución que no es bonita pero funciona para mí. Según mi comentario a la respuesta de ulidtko, pyaudio no es el problema, sino el PortAudio subyacente al que se supone que pyaudio debe unirse.
En Ubuntu los controladores de portaudio se instalan con este paquete:
sudo apt-get install python-gnuradio-audio-portaudio
Ya debes tener esto, ya que dijiste que tu stock ubuntu ejecuta bien tu código (aunque con algunos mensajes de depuración que pueden ignorarse)
Si consulta la ubicación de su módulo de portaudio, encontrará lo siguiente cuando ejecute python de enthought:
>>> import pyaudio
>>> pyaudio.pa.__file__
''/opt/epd-7.2-2-rh5-x86_64/lib/python2.7/site-packages/_portaudio.so''
y lo siguiente en stock ubuntu:
In [1]: import pyaudio
In [2]: pyaudio.pa.__file__
Out[2]: ''/usr/lib/pymodules/python2.7/_portaudio.so''
Dejé de lado el entendido _portaudio.so y lo reemplacé con un enlace al sistema _portaudio.so y ahora todo, incluido el encantador analizador de espectro en la demo chaco / directorio avanzado, funciona:
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
Recomendaría PYO para la E / S de audio y la síntesis, me pareció muy fácil de aprender. Aquí hay un código para ilustrar cómo obtendría PYO para obtener y emitir una entrada de audio después de procesarla para cambiar su tono:
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 también te permite cambiar las frecuencias y los parámetros de síntesis, los generadores o cualquier cosa sobre la marcha, que fue el mayor atractivo para mí porque lo uso principalmente para la programación de instrumentos de sintetizador en vivo.
También tiene un gran manual ...