it-swarm.com.de

So wählen Sie mit PyAudio ein bestimmtes Eingabegerät aus

Wie geben Sie bei der Audioaufnahme über PyAudio das genaue zu verwendende Eingabegerät an?

Mein Computer verfügt über zwei Mikrofone, eines eingebaut und eines über USB, und ich möchte mit dem USB-Mikrofon aufnehmen. Die Stream-Klasse hat einen input_device_index für die Auswahl des Geräts, es ist jedoch nicht klar, wie dieser Index mit den Geräten korreliert. Woher weiß ich zum Beispiel, auf welchen Geräteindex sich 0 bezieht? Wenn ich raten müsste, würde ich sagen, dass 0 sich auf das eingebaute Gerät bezieht, während sich 1 auf das USB-Gerät bezieht, aber ich würde gerne einen programmatischen Weg finden, dies zu bestätigen. Gibt es unter Linux eine Möglichkeit, eine Liste dieser Indizes und der Geräte zu erhalten, auf die sie sich beziehen?

7
Cerin

sie können Folgendes verwenden: get_device_info_by_Host_api_device_index . Zum Beispiel:

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')
16
slegroux

Ich habe pyaudio nicht angeschaut, aber ich habe sounddevice auch bei einigen Gelegenheiten verwendet.

Hier ist ein Beispielcode, der die verfügbaren input und outputaudio devices Auflistet.

import sounddevice as sd
print sd.query_devices() 

Wie Sie unten sehen können, ist Index 1 Als Eingang verfügbar, wenn ich mein Headset an die Mikrofonbuchse stecke. 1 Jack Mic (IDT High Definition A, MME (2 in, 0 out)

Während das Standard-Laptop-Audiomikrofon als index 2 Angezeigt wird

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

Ausgabe

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

Verwenden Sie einfach arecord -l, um alle verfügbaren Eingabegeräte aufzulisten.

0
TheHlavi

Ich weiß nicht von PyAudio, aber mit dem sounddevice modul geht es so:

python3 -m sounddevice
0
Matthias

In der PyAudio-Dokumentation heißt es, dass Sie ein input_device_index.

Um herauszufinden, was dieser Geräteindex ist, können Sie dem Code in diesem Github Gist oder dem Code im Raspberry Pi Forum folgen ausgegebener Code.

0
TheyDontHaveIT