PyAudio IOError: Pas De Périphérique D'Entrée Par Défaut Disponible
J'utilise PyAudio sous la Distribution Enthought Python (Python 2.6.6) dans 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
C'est la même erreur que j'obtiens si j'essaie d'ouvrir un flux d'entrée. Il y a l'erreur correspondante "IOError: No Default Output Device Available"
4 réponses
OK, voici une solution qui n'est pas jolie, mais fonctionne pour moi. Selon mon commentaire à la réponse d'ulidtko, pyaudio n'est pas le problème mais plutôt le PortAudio sous-jacent auquel pyaudio est censé se lier.
sur ubuntu les pilotes portaudio sont installés avec ce paquet:
sudo apt-get install python-gnuradio-audio-portaudio
vous devez déjà l'avoir, puisque vous avez dit que votre stock ubuntu exécute votre code très bien (bien qu'avec quelques messages de débogage qui peuvent être ignorés)
Si vous interrogez l'emplacement de votre module portaudio vous trouverez ce qui suit lorsque vous lancez le python de enthought:
>>> import pyaudio
>>> pyaudio.pa.__file__
'/opt/epd-7.2-2-rh5-x86_64/lib/python2.7/site-packages/_portaudio.so'
et le suivant le stock ubuntu:
In [1]: import pyaudio
In [2]: pyaudio.pa.__file__
Out[2]: '/usr/lib/pymodules/python2.7/_portaudio.so'
j'ai déplacé l'enthousiaste _portaudio.donc hors du chemin et remplacé par un lien vers le système _portaudio.donc et maintenant tout, y compris le bel analyseur de spectre dans le Chaco demo/répertoire avancé fonctionne:
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
je recommanderais PYO pour l'E/S audio et la synthèse, j'ai trouvé ça très facile à récupérer. Voici un code pour illustrer comment J'aurais pu faire en sorte que PYO obtienne et sorte une entrée audio après l'avoir traitée pour changer son pitch:
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 permet également de changer les fréquences et les paramètres de synthèse, générateurs ou n'importe quoi à la volée, ce qui a été le plus grand tirage pour moi parce que je l'utilise principalement pour programmer des instruments de synthétiseur en direct.
il a aussi un grand manuel...
pyaudio au travail.PyAudio fournit des fixations Python pour PortAudio, la bibliothèque d'e/s audio multiplateformes.
vérifiez ceci https://github.com/shichao-an/soundmeter/issues/7
Tout ce que vous avez à faire est
install ALSA:sudo apt-get install libasound-dev
puis construire portaudio (cette version pa_stable_v190600_20161030.tgz
)
http://www.portaudio.com/download.html
puis obtenir les privilèges root (sudo su root
sous Ubuntu où brut su root
ne fonctionne pas.)
Place de la portaudio archives /usr/src
et décompressez-le avec tar xvfz pa_snapshot.tgz
Cela permet de générer le répertoire /usr/src/portaudio
.
Descendre dans ce répertoire et exécutez ces commandes:
./configure
make
make install
ldconfig
linrad
configure script doit être lancé après l'installation réussie de portaudio pour informer Linrad du fait que portaudio est disponible.
assurez-vous que vous obtenez ALSA comme oui dans le ./configure
le fichier
Target ...................... x86_64-unknown-linux-gnu
C++ bindings ................ no
Debug output ................ no
ALSA ........................ yes
ASIHPI ...................... no
OSS ......................... yes
JACK ........................ no "
installez la dernière version de pyaudio
(PyAudio-0.2.11.tar.gz
)