How to select a specific input device with PyAudio How to select a specific input device with PyAudio python python

How to select a specific input device with PyAudio


you can use:get_device_info_by_host_api_device_index.For instance:

import pyaudiop = 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')


I havent looked at pyaudio but I've used sounddevice as well on few occasions.

Here is an example code that lists available input and output audio devices.

import sounddevice as sdprint sd.query_devices() 

As you can see from below output, when I put my headset to mic jack , Index 1is available as input.1 Jack Mic (IDT High Definition A, MME (2 in, 0 out)

While default laptop audio microphone comes up as index 2

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

Output

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32Type "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)


In the PyAudio Documentation it states that you can define an input_device_index.

To find out what that device index is, you can follow the code provided in this Github Gist or by following the code found on the Raspberry Pi Forum which provides an example of the outputted code.