2011-01-12 14 views
23

Sto usando PyAudio sotto Enthought Python Distribution (Python 2.6.6) in Ubuntu 10.10 x64.PyAudio IOError: nessun dispositivo di input predefinito disponibile

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

Questo è lo stesso errore che ottengo se provo ad aprire un flusso di input. C'è l'errore corrispondente "IOError: No default Output Device Disponibile"

+2

Cosa ottieni se provi 'pa.get_device_count()'? – mtrw

+0

@mtrw pa.get_device_count() restituisce 0 – Gus

+0

'pyaudio' installato tramite' sudo apt-get install python-pyaudio' funziona su Ubuntu-11.10 – jfs

risposta

2

OK, qui è una soluzione che non è abbastanza, ma funziona per me. Come per il mio commento alla risposta di ulidtko, pyaudio non è il problema ma piuttosto il portAudio sottostante al quale si suppone che pyaudio si leghi.

su Ubuntu i driver PortAudio sono installati con questo pacchetto:

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

è necessario avere già questo, dal momento che hai detto il tuo magazzino ubuntu corre la multa di codice (anche se con alcuni messaggi di debug che possono essere ignorati)

Se si interroga la posizione del modulo PortAudio troverete quanto segue quando si esegue python di Enthought:

>>> import pyaudio 
>>> pyaudio.pa.__file__ 
'/opt/epd-7.2-2-rh5-x86_64/lib/python2.7/site-packages/_portaudio.so' 

e tH e in seguito a magazzino ubuntu:

In [1]: import pyaudio 
In [2]: pyaudio.pa.__file__ 
Out[2]: '/usr/lib/pymodules/python2.7/_portaudio.so' 

ho spostato l'Enthought _portaudio.so fuori strada e lo ha sostituito con un collegamento al sistema _portaudio.so e ora tutto compreso il bel analizzatore di spettro nel Chaco demo/avanzato lavori di directory:

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

Ho incontrato lo stesso problema con EPD 7.3 (64 bit) in Ubuntu 12.04 e questa soluzione ha funzionato.Una differenza: ho installato python-pyaudio piuttosto che python-gnuradio-audio-portaudio. –

+2

non riesce a trovare il pacchetto 'python-gnuradio-audio-portaudio', aggiorna anche apt-get – Sinux

1

PyAudio provides Python bindings for PortAudio, the cross-platform audio I/O library.

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

è stato installato il software PortAudio? È necessario per il pyaudio funzionare.

+0

sì, PortAudio è installato. Penso che sia una stranezza con la distribuzione di Enthought Python. Sotto la distribuzione standard, PyAudio funziona perfettamente. – Gus

+0

Il problema si trova con Enitots portaudio poiché i moduli pyaudio sono identici. – DrSAR

3

Vorrei raccomandare PYO per l'I/O audio e la sintesi, l'ho trovato davvero facile da riprendere. Ecco il codice per illustrare come vorrei arrivare PYO per ottenere e l'uscita di un ingresso audio dopo elaborazione in grado di cambiare il suo passo:

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 consente inoltre di modificare le frequenze e parametri di sintesi, generatori o qualsiasi cosa al volo , che è stato il più grande sorteggio per me perché lo uso principalmente per la programmazione di strumenti dal vivo di sintetizzatore.

Essa ha anche una grande manual ...