web-dev-qa-db-ja.com

PyAudioで特定の入力デバイスを選択する方法

PyAudio経由でオーディオを録音する場合、使用する正確な入力デバイスをどのように指定しますか?

私のコンピューターには2つのマイクがあり、1つは内蔵、もう1つはUSB経由で、USBマイクを使用して録音したいと思います。 ストリームクラス にはinput_device_indexはデバイスを選択するためのものですが、このインデックスがデバイスとどのように関連するかは不明です。たとえば、どのデバイスインデックス0が参照しているかを知るにはどうすればよいですか?推測しなければならないのですが、0は組み込みデバイスを指し、1はUSBデバイスを指しますが、プログラムでこれを確認する方法を見つけたいと思います。 Linuxでは、これらのインデックスとそれらが参照するデバイスのリストを取得する方法はありますか?

11
Cerin

使用できます:get_device_info_by_Host_api_device_index。例えば:

import pyaudio
p = pyaudio.PyAudio()
info = p.get_Host_api_info_by_index(0)
numdevices = info.get('deviceCount')
for i in range(0, numdevices):
        if (p.get_device_info_by_Host_api_device_index(0, i).get('maxInputChannels')) > 0:
            print "Input Device id ", i, " - ", p.get_device_info_by_Host_api_device_index(0, i).get('name')
19
slegroux

私はpyaudioを見たことはありませんが、 sounddevice もいくつか使用しています。

以下は、使用可能なinputおよびoutput _audio devices_をリストするコード例です。

_import sounddevice as sd
print sd.query_devices() 
_

下の出力からわかるように、ヘッドセットをマイクジャックに接続すると、_Index 1_が入力として使用可能になります。 1 Jack Mic (IDT High Definition A, MME (2 in, 0 out)

デフォルトのラップトップオーディオマイクは_index 2_として表示されますが

2 Microphone Array (IDT High Defi, MME (2 in, 0 out)

出力

_Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
   0 Microsoft Sound Mapper - Input, MME (2 in, 0 out)
>  1 Jack Mic (IDT High Definition A, MME (2 in, 0 out)
   2 Microphone Array (IDT High Defi, MME (2 in, 0 out)
   3 Microsoft Sound Mapper - Output, MME (0 in, 2 out)
<  4 Speakers / Headphones (IDT High, MME (0 in, 2 out)
   5 Communication Headphones (IDT H, MME (0 in, 2 out)
   6 Primary Sound Capture Driver, Windows DirectSound (2 in, 0 out)
   7 Jack Mic (IDT High Definition Audio CODEC), Windows DirectSound (2 in, 0 out)
   8 Microphone Array (IDT High Definition Audio CODEC), Windows DirectSound (2 in, 0 out)
   9 Primary Sound Driver, Windows DirectSound (0 in, 2 out)
  10 Speakers / Headphones (IDT High Definition Audio CODEC), Windows DirectSound (0 in, 2 out)
  11 Communication Headphones (IDT High Definition Audio CODEC), Windows DirectSound (0 in, 2 out)
  12 Communication Headphones (IDT High Definition Audio CODEC), Windows WASAPI (0 in, 2 out)
  13 Speakers / Headphones (IDT High Definition Audio CODEC), Windows WASAPI (0 in, 2 out)
  14 Jack Mic (IDT High Definition Audio CODEC), Windows WASAPI (2 in, 0 out)
  15 Microphone Array (IDT High Definition Audio CODEC), Windows WASAPI (2 in, 0 out)
  16 Headset Microphone (Bluetooth Hands-free Audio), Windows WDM-KS (1 in, 0 out)
  17 Headphones (Bluetooth Hands-free Audio), Windows WDM-KS (0 in, 2 out)
  18 Headphones (HpOut), Windows WDM-KS (0 in, 2 out)
  19 Microphone Array (MicIn2), Windows WDM-KS (2 in, 0 out)
  20 Jack Mic (MuxedIn), Windows WDM-KS (2 in, 0 out)
  21 Dock Mic (MuxedIn), Windows WDM-KS (2 in, 0 out)
  22 Rec. Playback (MuxedIn), Windows WDM-KS (2 in, 0 out)
  23 Speakers (Speaker/HP), Windows WDM-KS (0 in, 2 out)
_
2
Anil_M

arecord -lは、使用可能なすべての入力デバイスをリストします。

0
TheHlavi

PyAudioについては知りませんが、 sounddevice モジュールでは次のようになります。

python3 -m sounddevice
0
Matthias

PyAudioドキュメント では、input_device_index

そのデバイスインデックスが何であるかを確認するには、この Github Gist で提供されるコードに従うか、または Raspberry Piフォーラム にあるコードに従って、出力されたコード。

0
TheyDontHaveIT