Wie kann man Audio mit Python aufnehmen?

7

Insbesondere: Wie kann ich Python mit ALSA verwenden, um Audioeingaben zu erfassen?

Ich denke darüber nach, einen oled-basierten Spektrumanalysator für Pi-basierte Audioplayer zu entwickeln. Ein Teil der Lösung besteht darin, das aktuell wiedergegebene Audio zu lesen. Ich habe dies mit ALSA in Python versucht:

import alsaaudio
inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE, alsaaudio.PCM_NONBLOCK)

An diesem Punkt stirbt das Skript:

alsaaudio.ALSAAudioError: Keine solche Datei oder kein solches Verzeichnis

Das Hinzufügen einer solchen Karte funktioniert auch nicht:

card = 'sysdefault:CARD=ALSA'
inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE, alsaaudio.PCM_NONBLOCK, card)

Ich habe verschiedene verwandte Beiträge auf Raspbian gesehen, aber keine Lösung.

andig
quelle
Siehe auch raspberrypi.stackexchange.com/q/1536/8926
Dieser Brasilianer

Antworten:

4

Ich glaube nicht, dass der Raspberry Pi die notwendige Hardware hat, um Audioeingänge zu erfassen. Sie können diese Ausführung bestätigen alsamixer.

Geben Sie hier die Bildbeschreibung ein

Das würde erklären, warum eine alsaaudio.ALSAAudioErrorAusnahme durch eine alsaaudio.PCM.__init__Methode ausgelöst wurde .

Entdecken Sie USB-Geräte von Drittanbietern

Ich habe einen Artikel mit dem Titel Spracherkennung mit dem Raspberry Pi genossen ; Darin wurden die Schritte beschrieben, die zum Hinzufügen des Audioeingangs erforderlich sind. Raspberry Pi in ein Audio-Spionagegerät ist auch bei der Installation von USB-Mikrofonen hilfreich. Das unterstreichende Thema besteht darin, sicherzustellen, dass das Basissystem konfiguriert und bereit ist, Audio über ALSA aufzunehmen, bevor eine Anwendung entwickelt wird.

Modul alsaaudioist gut dokumentiert

Alsaaudio wird mit Testsuiten geliefert, um zu überprüfen, ob Ihre lokale Installation voll funktionsfähig ist.

bash> cd pyalsaaudio-0.7
bash> python recordtest.py -c NAME_OF_USB_CARD output.wav

Die NAME_OF_THE_USB_CARD sollte ein Name sein, der von der Methode von alsaaudio.cards () aufgelistet wird . Dies ist der gleiche Name für den dritten Parameter für die Klasse alsaaudio.PCM .

Emcconville
quelle
Mhm. Beim Ausführen von alsamixer wird die oben gezeigte Meldung zu den Erfassungssteuerelementen nicht angezeigt. Stattdessen wird eine Lautstärkeregelung angezeigt?
Andig
Drücken Sie F4für die Aufnahmesteuerung. F3für die Wiedergabe und F5für alle Bedienelemente. Verwenden Sie F6diese Option , um zwischen Soundkarten zu wechseln.
Emcconville