2016-04-27 159 views
5

PyAudio経由でオーディオを録音する場合、使用する入力デバイスをどのように指定するのですか?PyAudioで特定の入力デバイスを選択する方法

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

答えて

0

私がPyAudioのことは知らないが、それはそのようになっsounddeviceモジュールで:

python3 -m sounddevice 
1

私はhaventははpyaudioに見えたが、私はいくつかの機会に同様sounddeviceを使用しました。

ここに、利用可能なinputoutputaudio 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) 
7

として起動します中: 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') 
+0

このコードは失敗しました。また、info = p.get_host_api_info_by_index(0)とnumdevices = info.get( 'deviceCount')を追加する必要があります。また、self.pの代わりにpを使う必要がありました。あなたの答えを修正してください、私はそれをupvoteします。ありがとう。 @WaynePiekarski Done。 –

+0

ありがとう! – slegroux