web-dev-qa-db-ja.com

PyAudio IOError:使用可能なデフォルトの入力デバイスがありません

私はUbuntu10.10x64のEnthought Python Distribution(Python 2.6.6)でPyAudioを使用しています。

>>> 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:使用可能なデフォルトの出力デバイスがありません」があります

27
Gus

OK、これはきれいではないが私にとってはうまくいく解決策です。 ulidtkoの回答に対する私のコメントによると、pyaudioは問題ではなく、pyaudioがバインドすることになっている基盤となるPortAudioです。

Ubuntuでは、portaudioドライバーはこのパッケージとともにインストールされます。

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

あなたのストックubuntuはあなたのコードをうまく実行すると言ったので、あなたはすでにこれを持っている必要があります(無視できるいくつかのデバッグメッセージがありますが)

Enthoughtのpythonを実行しているときに、portaudioモジュールの場所を照会すると、次のことがわかります。

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

私は思いついた_portaudio.soを邪魔にならないように移動し、システム_portaudio.soへのリンクに置き換えました。これで、chaco demo/advancedディレクトリにある素敵なスペクトラムアナライザを含むすべてが機能します。

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
DrSAR

オーディオI/Oと合成には [〜#〜] 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では、シンセサイザーやジェネレーターなどの周波数やパラメーターをその場で変更することもできます。これは、主にライブシンセサイザー楽器のプログラミングに使用しているため、私にとって最大の魅力でした。

それはまた素晴らしい 手動 ...

3
archiboldian

PyAudioは、クロスプラットフォームのオーディオI/OライブラリであるPortAudioにPythonバインディングを提供します。

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

PortAudioソフトウェアをインストールしましたか? pyaudioが機能するために必要です。

1
ulidtko

次のソースからpyaudioをインストールするとうまくいきました

conda install nwani::portaudio nwani::pyaudio

参照:質問に対するMamunまたはRashidの回答... OSError:使用可能なデフォルトの入力デバイスがありません

0
shantanu pathak

これを確認してください https://github.com/shichao-an/soundmeter/issues/7

あなたがしなければならないのはALSAをインストールすることです:Sudo apt-get install libasound-dev

次に、portaudioをビルドします(このバージョンpa_stable_v190600_20161030.tgzhttp://www.portaudio.com/download.html

次に、root権限を取得します(プレーンなSudo su rootが機能しないUbuntuではsu root)。

Portaudioアーカイブを/usr/srcに置き、tar xvfz pa_snapshot.tgzで解凍します。これにより、ディレクトリ/usr/src/portaudioが生成されます。

このディレクトリに降りて、次のコマンドを実行します。

./configure

make

make install

ldconfig

linrad configureスクリプトは、portaudioが正常にインストールされた後に実行して、Linradにportaudioが使用可能であることを認識させる必要があります。

./configureファイルでALSAがyesとして取得されていることを確認してください

 Target ...................... x86_64-unknown-linux-gnu
  C++ bindings ................ no
  Debug output ................ no

  ALSA ........................ yes
  ASIHPI ...................... no

  OSS ......................... yes
  JACK ........................ no       "

最新バージョンのpyaudioPyAudio-0.2.11.tar.gz)をインストールします

0
Parthan