Linux Programm zur automatischen Aufnahme von wav-Files

OP #8097263
Lesenswert?
• ▲
▼

Ich brauche ein Programm, welches zum Aufnehmen von wav-Files mit einem Mikrophon. Wenn man es startet, soll es warten, bis der Tonpegel einen bestimmten Wert überschreitet und dann solange aufnehmen, bis der Tonpegel zu schwach ist.

Ich habe mit dem "sox" probiert:

1
rec aufnahme.wav silence 1 0.1 3% 1 2.0 3%

Es funktioniert, aber zwischendurch gibt es immer wieder Störgeräusche. Woran kann das liegen?

: Bearbeitet durch User
OP #8097392
Lesenswert?
• ▲
▼

J. H. schrieb:

Eine Alternative ist vielleicht SVAR - Simple Voice Activated Recorder.

Danke für den Hinweis. Es scheint nicht im Ubuntu Repo, aber man findet es hier: https://github.com/arkq/svar/tree/master Mit dem Programm tauchen die Störungen auch auf. Ich hatte es jetzt auf mehrere Arten über ein paar Tage mit einem Tischmikrophon probiert (das gibt nur 16kHz aus). Nachdem ich nun auf die Idee kam, ein Headset zu verwenden, funktioniert es. Ich vermute, dass die Treiber mit den 16kHz des Tischmikrophons nicht richtig zurecht kommen.

#8097469
Lesenswert?
• ▲
▼

Christoph M. schrieb:

Ich vermute, dass die Treiber mit den 16kHz des Tischmikrophons nicht richtig zurecht kommen.

Ja, könnte sein. In gewisser Weise könnte ein Windows-Emulator oder sowas wie Wine hilfreich sein. Die andere Variante wäre, sich mal bei Ubuntu Studio umzusehen und bei anderen Mikrofonen, die Linux-Freundlicher sind.

: Bearbeitet durch User
#8097492
Lesenswert?
• ▲
▼

Christoph M. schrieb:

Ich vermute, dass die Treiber mit den 16kHz des Tischmikrophons nicht richtig zurecht kommen.

Ich würde auf den Sound-Daemon tippen. Möglicherweise braucht der einen separaten Pfad¹ mit geeigneten Parametern. (so wie bei 44.1kHz vs 48kHz)

¹Internen Datenpfad selbstverständlich, aber ich schreib's lieber mal explizit hin.

: Bearbeitet durch User
#8098052
Lesenswert?
• ▲
▼

Eine weitere alternative ist das ALSA Programm 'arecord'. Zu finden wenn man das Paket 'alsa-utils' installiert oder wie zum Beispiel unter Debian schon standardmäßig installiert ist.

Vorteil ist soweit ich weiß, das Programm kommuniziert direkt mit ALSA (also mit den Linux Soundtreiber) ohne Umwege über PulseAudio (oder ein anderer Sound-Server) was nach wie vor leider etwas zumindest auf meinem Uralt-PC ein wenig laggy ist.

#8098267
Lesenswert?
• ▲
▼

Vielleicht funktionierts ja mit ffmpeg und volumedetect besser:

1
ffmpeg -f alsa -i default -filter:a volumedetect -t 0.1 -f null /dev/null 2>&1 >/dev/null | awk '/max_volume/ {print $5}'

Wenn irgendetwas zu hören ist zeigt es damit den aktuellen Pegel an, hier zB -91 (dB) bei Stille, nicht ganz klar ist mir der Unterschied von max_volume vs mean_volume, aber rausgeschrieben wird der aktuelle Audiopegel von dem was gerade hörbar ist...

OP #8099313
Lesenswert?
• ▲
▼

Ich denke viel hängt vom Mikrophon ab. Das Konftel EGO hat 16kHz und diese Frequenz scheint im Bereich Raummikrophon recht verbreitet. Es gibt da noch neuere Jabra Microphone, aber auf der Webseite ist die Aptastfrequenz nicht herauszukriegen: https://www.jabra.com/de-de/business/speakerphones/jabra-speak-series/jabra-speak2-55

Es scheint Konferenzmikrophone in beliebigen Varianten und Preisklassen zu geben: https://www.visunext.de/c/audio/professionelle-audiokomponenten/professionelle-mikrofone/konferenzmikrofone/

: Bearbeitet durch User
#8099972
Lesenswert?
• ▲
▼

sox (bzw. rec als Alias) wäre schon ein passendes Tool, hat genau die gewünschte Funktion um auf ein Signal zu warten, dann aufzunehmen und dann bei längerer Stille die Aufnahme zu stoppen.

Problem mit den "Störsounds" könnte evtl. von pulseaudio oder pipewire und dessen Alsa-Gerät-Simulation mit mehrfacher Samplerate-Konvertierung 16k -> 48k -> 44.1k herrühren.

Versuch:

1
AUDIODRIVER=alsa rec -t alsa hw:1,0 -r 16000 aufnahme.wav silence 1 0.1 3% 1 2.0 3%

(*)

das "hw:1,0" kannst du dir aus "arecord -l" ziehen, damit du das richtige Mikrophon findest (hw:<karte>,<gerät>).

Die Samplerate "-r 16000" muss zum Mic passen, da jetzt kein pipewire und auch kein alsa_dmix mehr an der rumdreht.

grep Rates: /proc/asound/card*/stream*

zeigt für meine beiden Mikrophone:

1
/proc/asound/card0/stream0:    Rates: 8000, 11025, 16000, 22050, 32000, 44100, 48000
2
/proc/asound/card1/stream0:    Rates: 16000
3
/proc/asound/card1/stream0:    Rates: 24000
4
/proc/asound/card1/stream0:    Rates: 32000
5
/proc/asound/card1/stream0:    Rates: 48000

(Beide USB, eins hat nur ein Interface mit mehreren Rates, das andere mehrere Interfaces mit je einer Samplerate. Das kann kein 44.1kHz)

Wenn es direkt über alsa ohne Störgeräusche geht könnten wir weiterschauen, was an deiner Pipewire-Config verbessert werden kann. (Erste Idee: min-quantum hochstellen)

*) PS: Kontrolliere ob das auch wirklich an Pipewire/Pulseaudio vorbei auf das Device zugreift (pw-mon u.Ä.). Notfalls den Audio-Daemon für den Test ganz stoppen.

: Bearbeitet durch User
OP #8100088
Lesenswert?
• ▲
▼

Εrnst B. schrieb:

sox (bzw. rec als Alias) wäre schon ein passendes Tool, hat genau die gewünschte Funktion um auf ein Signal zu warten, dann aufzunehmen und dann bei längerer Stille die Aufnahme zu stoppen.

Danke für deine ausführliche Hilfestellung. Im Anhang mal eine typische Störung. Ich habe es jetzt mehrmals wieder mit sox mit der Zeile im Eingangspost probiert und es trat keine Störung mehr auf. Das Problem ist also je nach Tagesform mal da und mal weg. Wenn ich die Aufnahme mit einem Python-Programm mache, ist die Störung dagegen fast immer vorhanden, deshalb würde ich vermuten, dass irgend ein Buffer zu lange blockiert wird, wenn Python läuft.

Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren