2011-01-12 2 views
23

Я использую PyAudio под распространением Python Enthought (Python 2.6.6) в Ubuntu 10.10 x64.PyAudio IOError: Нет устройства ввода по умолчанию

>>> 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: Нет По умолчанию устройство вывода Доступно"

+2

Что вы можете получить, если попробуете 'pa.get_device_count()'? – mtrw

+0

@mtrw pa.get_device_count() возвращает 0 – Gus

+0

'pyaudio', установленный через' sudo apt-get install python-pyaudio' работает на Ubuntu-11.10 – jfs

ответ

2

ОК, вот это решение, которое не очень, но работает для меня. Согласно моему комментарию к решению ulidtko, pyaudio - это не проблема, а, скорее, базовый PortAudio, к которому должен привязываться pyaudio.

На убунту в Portaudio драйверы установлены с этим пакетом:

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

Вы должны иметь это уже, так как вы сказали, ваш запас убунту работает ваш код штрафа (хотя и с некоторыми отладочных сообщений, которые могут быть проигнорированы)

Если вы запрашиваете местоположение вашего Portaudio модуля вы найдете следующее, когда вы работаете питон Enthought в:

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

и -е е следующие на складе убунту:

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

Я переехал Enthought _portaudio.so из пути и заменить его ссылкой на систему _portaudio.so и теперь все, включая прекрасный анализатор спектра в Чако демо/расширенный Справочные работы:

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

Я столкнулся с той же проблемой с EPD 7.3 (64 бит) в Ubuntu 12.04, и это решение сработало.Одно отличие: я установил python-pyaudio, а не python-gnuradio-audio-portaudio. –

+2

не может найти пакет 'python-gnuradio-audio-portaudio' даже обновить apt-get – Sinux

1

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

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

ли установлено программное обеспечение Portaudio? Требуется, чтобы работала pyaudio.

+0

Да, установлен PortAudio. Я думаю, что это странность в отношении распространения Enthought Python. В стандартном дистрибутиве PyAudio отлично работает. – Gus

+0

Проблема заключается в использовании порталов Enthoughts, поскольку модули pyaudio идентичны. – DrSAR

3

Я бы порекомендовал 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()) 

ЧЛН также позволяет изменять частоту и параметры синтеза, генераторов или что-нибудь на лету , что было самой большой ничьей для меня, потому что я использую ее в основном для программирования живых синтезаторов.

Он также имеет большой manual ...