Подтвердить что ты не робот

PyAudio IOError: нет устройства ввода по умолчанию

Я использую PyAudio в дистрибутиве Enthought Python Distribution (Python 2.6.6) в 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

Это та же ошибка, которую я получаю, если попытаюсь открыть входной поток. Существует соответствующая ошибка "IOError: нет выходного устройства по умолчанию"

4b9b3361

Ответ 1

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

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

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

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

Если вы запрашиваете местоположение своего модуля portaudio, вы обнаружите следующее, когда вы используете 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, работает:

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

Я бы порекомендовал PYO для аудио ввода/вывода и синтеза, мне было очень легко подобрать. Вот некоторый код, чтобы проиллюстрировать, как я получаю 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...

Ответ 3

PyAudio обеспечивает привязки Python для PortAudio, кросс-платформенной библиотеки аудио ввода-вывода.

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

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