Der Wiedergabeton wird aufgenommen

1

Ich habe Probleme mit meinem Audio. Wenn ich Audio aufnehme, nehme ich Wiedergabeton auf, es sei denn, ich habe das richtige Gerät angegeben (siehe unten). Anstatt mein USB-Mikrofon aufzunehmen, wird der Ton, der über meine Kopfhörer wiedergegeben wird, aufgenommen.

Ich bin mir nicht sicher, was passiert und wie ich es beheben kann. Ich verwende ALSA und Pulseaudio, und meine asound.conf ist die von Pulseaudio generierte Standardkonfiguration. Ausgabe von cat /proc/asound/cards:

0 [PCH            ]: HDA-Intel - HDA Intel PCH
                     HDA Intel PCH at 0xf7910000 irq 29
1 [NVidia         ]: HDA-Intel - HDA NVidia
                     HDA NVidia at 0xf7080000 irq 17
2 [C01U           ]: USB-Audio - Samson C01U
                     Samson Technologies Samson C01U at usb-0000:00:14.0-9, full speed

Ausgabe von amixer -c0 contents: https://pastebin.com/cyERFpPk

Um beim Testen meines Mikrofons Ton aufzunehmen, habe Samson C01U:USB Audio (hw:2,0): Front Mic:0ich Audacity mit dem Aufnahmegerät auf und mit einem Kabel verwendet arecord -d 2 -D hw:2,0 -f cd test.wav. Beide nehmen den Ton von meinem Mikrofon auf. Bei der Wiedergabe des Tons von arecordwird er jedoch nur über die linke Seite meines Kopfhörers wiedergegeben.

Mir ist auch ein anderes Problem aufgefallen. Überstunden (vor allem, wenn ich mit meinen Audiopegeln herumspiele) Ich fange an, beim Hören von Audio etwas Statisches zu hören. Manchmal ist es sehr schwach und manchmal sehr laut. Das ist mir noch nie passiert. Ich kann dieses Problem beheben, indem ich pulseaudio neu starte, aber es ist ärgerlich, dies zu tun.

Meine /etc/asound.conf: https://pastebin.com/2XSEhfHb . Ich habe keine ~/.asoundrc.

wdhg
quelle
Bitte geben Sie Details zu Ihrer Konfiguration an, wenn Sie ALSA oder Pulseaudio verwenden und wie genau Sie den Ton aufnehmen. Je mehr Details, desto besser; Wie die Frage ist, ist es ein Ratespiel. Mögliche Gründe: Falsches Setup für die Tonaufnahme oder Hardware-Loopback vom Kopfhörer zum aktivierten Aufnahmekanal (prüfen Sie mit alsamixeroder amixer).
Dirkt
@dirkt Welche Konfigurationsdetails benötigen Sie? Ich verstehe Pulseaudio oder ALSA oder deren Konfiguration nicht ganz. Entschuldigen Sie bitte, wenn ich nicht genügend Informationen gebe.
wdhg
Bitte: (1) Frage bearbeiten mit Ausgabe von cat /proc/asound/cards(2) Identifizieren Sie die Kartennummer in der obigen Ausgabe mit Ihren Kopfhörern 42, speichern Sie die Ausgabe amixer -c42 contentsin einem Pastebin und bearbeiten Sie die Frage mit Link. (3) Beschreiben Sie Schritt für Schritt, wie Sie den Ton aufnehmen ("Ich verwende audacity, wenn das Aufnahmegerät auf XXX eingestellt ist" oder "Ich mache arecord -d hw:0 ..." usw.).
Dirkt
Zur Klarstellung: Ihr Problem ist nicht , dass , während Sie den Ton erfassen, Sie etwas in Ihrem Kopfhörer hören. Ihr Problem ist, dass Sie den Ton mit dem Samson gut aufnehmen können. Wenn Sie ihn jedoch über die an Ihre Intel-Soundkarte angeschlossenen Kopfhörer wiedergeben, hören Sie ihn nur auf dem linken Ohr, obwohl Sie erwartet hatten, dass Sie ihn auf beiden Ohren hören . Ist das richtig?
Dirkt
Das Problem besteht darin, dass ich beim Aufnehmen von Audio standardmäßig Wiedergabeton aufnehme, es sei denn, ich habe das richtige Gerät angegeben. Wenn ich den Befehl arecord -d 2 test.wavohne Angabe des Geräts verwende, zeichnet er Wiedergabeton auf. Dies gilt auch für Zwietracht, denn wenn ich die Sprachkanäle verwende, hört jeder nur meinen Wiedergabeton. Wenn ich das Gerät angeben kann, funktioniert es, aber wenn ich mein Standardgerät verwende, wird mein Wiedergabeton aufgezeichnet. Ich möchte dieses Problem beheben, damit mein Standardgerät mein USB-Mikrofon und nicht mein Wiedergabeton ist.
wdhg

Antworten:

1

Ok, kurzer Überblick, wie das Zeug funktioniert.

Ihre Intel HDA-Soundkarte verfügt über eine digitale Verbindung zu einem "Codec" -Chip, der die D / A- und A / D-Wandler, Analogmixer, Analogverstärker und Analogschalter enthält. ALSA hat Kerneltreiber für die Soundkarten und weist die Mixer-Elemente zu, die Sie sehen können amixer, um einige (aber nicht alle) Dinge im Codec zu steuern.

Sie können ALSA mit "Plugins" über das gesamte System /etc/asound.confoder pro Benutzer konfigurieren ~/.asoundrc.

Pulseaudio läuft auf ALSA und bietet Anwendungen einen einheitlichen Audiotransportmechanismus. Es kümmert sich um die Abtastratenumwandlung usw., was die Verwendung von Pulseaudio (im Prinzip) wesentlich angenehmer macht als bei ALSA. In der Standardkonfiguration bietet Pulseaudio älteren ALSA-Anwendungen eine Kompatibilitätsebene mit Einträgen wie

pcm.!default pulse
ctl.!default pulse

Diese stellen die ALSA-Standardeingabe und -ausgabe so ein, dass ALSA-Anwendungen wie Pulseaudio-Anwendungen behandelt werden. Wenn Sie also arecordoder audacity(aber ALSA-Anwendungen) mit der Standard-ALSA-Eingabe verwenden, verwenden Sie tatsächlich Pulseaudio (Sie können auch verwenden, parecordum direkt auf Pulseaudio zuzugreifen). Wenn Sie jedoch auswählen hw:XXX, nehmen Sie direkt von den ALSA-Treibern auf.

Pulseaudio hat ein eigenes (sehr flexibles) Konzept für Audioquellen und -senken. Sie können sehen (und ändern), welche Anwendungen mit welchen Quellen und Senken verbunden sind pavucontrol(und auf vielen Desktop-Umgebungen und ähnlichen Desktop-Panels).

Wenn Sie also mit laufen arecordund zuschauen pavucontrol, sollte die Quelle der Intel HDA-Soundkarte (normalerweise "Built-in Audio Analog Stereo") angezeigt und aufgezeichnet werden.

Warum wird der Ton aufgezeichnet, der gleichzeitig wiedergegeben wird? Man müsste sich den Codec genauer ansehen (das können Sie mit cat /proc/asound/card*/codec\#*), aber es gibt ein Mixer-Steuerelement namens "Loopback-Mischen" in Ihrer amixerAusgabe, und es ist aktiviert. Ich vermute, Ihr Codec enthält eine Funktion, mit der Sie den aktuell ausgegebenen Ton aufzeichnen können. Deaktivieren Sie es in alsamixerund prüfen Sie , ob sich etwas ändert.

Wie richte ich es so ein, dass es automatisch vom Samson USB-Mikrofon aufzeichnet? Sie können die Standardeinstellungen in ALSA konfigurieren. Wenn Sie jedoch Pulseaudio beibehalten möchten, sollten Sie stattdessen Pulseaudio konfigurieren. Sie können Audioquellen pro Anwendung auswählen, pavucontrolwenn die Anwendung ausgeführt wird, und Pulseaudio speichert die Einstellungen. Sie können die Standard-Audioquelle auch festlegen, indem Sie auf der Registerkarte Eingabe auf "Als Fallback festlegen" klicken oder in pacmd set-default-source my_sourceder Befehlszeile verwenden. pacmd list-sources | grep name:Sie erhalten eine Liste der verfügbaren Quellen. Löschen Sie die eckigen Klammern, wenn Sie den Quellnamen in der Befehlszeile verwenden.

Bearbeiten

Jeder Pulseaudio-Senke ist eine .monitorQuelle zugeordnet. Was also passiert ist, dass Pulseaudio aus irgendeinem Grund keinen ALSA-Eingang bekommen kann, so dass es keine entsprechenden Quellen erzeugen kann. Die einzige Quelle, die übrig bleibt, ist die .monitorQuelle, die den aktuell wiedergegebenen Sound ausgibt. Also keine interne Schleife im Codec (obwohl dies eine andere Möglichkeit ist, aktuell wiedergegebenen Ton aufzunehmen).

Das heißt, Sie müssen debuggen, warum Pulseaudio keine Quellen entsprechend den ALSA-Eingaben erstellen kann, obwohl es eine dmixSenke erstellt, die es auch nicht sollte - das sollte eine Hardware-Senke sein.

Bitte geben Sie das /etc/asound.confund ~/.asoundrcals ersten Schritt. Gibt es vor dem Start von Pulseaudio bereits Programme, die ALSA direkt verwenden und verhindern, dass Pulseaudio die Hardware-Ein- / Ausgänge verwendet?

dirkt
quelle
Danke für die Antwort. Also habe ich amixer"Loopback-Mischen" geöffnet und ausgeschaltet, mein Wiedergabeton wurde jedoch noch aufgezeichnet. Hier ist die Ausgabe von cat /proc/asound/card*/codec\#*: pastebin.com/4t4B33kD . Ich öffnete auch pavucontrolund es zeigt nur ein Eingabegerät, "Monitor of Built-in Audio". pacmd list-sources | grep name:gibt auch nur eine Quelle aus: "name: <alsa_output.dmix.monitor>". Ich kann mein Eingabegerät / die Eingangsquelle nicht auf mein Mikrofon umstellen.
wdhg
Wie kann ich feststellen, ob es ein Programm gibt, das ALSA direkt vor dem Start von Pulseaudio verwendet? Ich glaube nicht, dass es welche gibt, aber wie kann ich sicher sein?
wdhg
Gute Frage. Die beste Methode, die ich mir vorstellen kann, ist lsof | grep /dev/snd, dass alle Prozesse mit /dev/snd/pcm*(Active I / O) oder (Active I / O) angezeigt werden sollen /dev/snd/control*.
Dirkt
Ausgang lsof | grep /dev/sdn: pastebin.com/ehfuku91
wdhg
0

Behebt, dass mein Wiedergabeton durch Entfernen von pulseaudio aufgezeichnet wird

wdhg
quelle