q16marvin
Goto Top

Stille in wav NUR finden, nicht entfernen

alle wav dateien filtern die eine stille von über 5 sekunden haben

Hallo,

bin langsam am verzweifeln. Ich habe mehrere tausend Wav Dateien die ich analysieren soll. Vorgabe ist eigentlich nur, alle Dateien zu finden die irgendwo innerhalb der Wav Datei 5 Sekunden Stille (Silence) haben.

Nun finde ich nur Programme die die Wav Datei gleich schneiden (trimen), was ich aber gar nicht will. Es soll mir nur die betreffenden Dateie anzeigen.

Hat jemand eine Idee?


Viele Grüsse!


Erik Dittert

Content-ID: 206425

Url: https://administrator.de/contentid/206425

Ausgedruckt am: 27.11.2024 um 23:11 Uhr

colinardo
colinardo 14.05.2013 um 12:20:02 Uhr
Goto Top
Hallo Erik,
also ich glaube dieses Commandline-Tool hier hat zwei Optionen mit denen man die db-Levels etc. in einer Sounddatei anzeigen lassen kann (stat bzw. stats). Die Ausgabe könnte man dann per Batch filtern und dementsprechend die Files aussortieren.

Grüße Uwe
Endoro
Endoro 14.05.2013 aktualisiert um 12:32:35 Uhr
Goto Top
Hallo Eric,

dieses wavecut Tool zeigt dir an der Kommandozeile die Stille in Sekunden an (WavcutHHH.exe -check "input.wav").

Gruss!
colinardo
colinardo 14.05.2013 um 12:42:12 Uhr
Goto Top
Zitat von @Endoro:
dieses wavecut Tool zeigt dir an der Kommandozeile die Stille
in Sekunden an (WavcutHHH.exe -check "input.wav").
macht es aber nicht ....
q16marvin
q16marvin 14.05.2013 um 15:22:33 Uhr
Goto Top
Zitat von @colinardo:
Hallo Erik,
also ich glaube dieses Commandline-Tool hier hat zwei Optionen mit denen man die
db-Levels etc. in einer Sounddatei anzeigen lassen kann (stat bzw. stats). Die Ausgabe könnte man dann per Batch
filtern und dementsprechend die Files aussortieren.

Grüße Uwe

ich habe extrem viel mit sox herumprobiert, leider immer ohne gewünschten erfolg face-sad
colinardo
colinardo 14.05.2013 aktualisiert um 15:26:45 Uhr
Goto Top
Das Tool was @Endoro gefunden hat, ist an sich nicht schlecht, nur out-of-the-box funktioniert es nicht in der Art wie du es brauchst. Da aber der c#-Code mit dabei ist werde ich das Teil mal umbauen das es das gewünschte ausgibt...melde mich dann wieder
Endoro
Endoro 14.05.2013 um 22:09:14 Uhr
Goto Top
Zitat von @q16marvin:
ich habe extrem viel mit sox herumprobiert, leider immer ohne gewünschten erfolg face-sad

.. zum Studium der Sox-Parameter würde ich nur einen schlimmen Feind verpflichten face-smile

Schau doch mal, ob @colinardo den Quelltext aufhübschen kann ...
Ich kann leider kein C/cpp/C#.

Gruss!
q16marvin
q16marvin 14.05.2013 um 22:41:11 Uhr
Goto Top
Zitat von @Endoro:
> Zitat von @q16marvin:
> ----
> ich habe extrem viel mit sox herumprobiert, leider immer ohne gewünschten erfolg face-sad

.. zum Studium der Sox-Parameter würde ich nur einen schlimmen Feind verpflichten face-smile

Schau doch mal, ob @colinardo den Quelltext aufhübschen kann ...
Ich kann leider kein C/cpp/C#.

Gruss!

Ja das stimmt, ich habe es geschafft sauber alle Stille aus einer Wave Datei zu entfernen. Nur will ich das ja gar nicht face-smile
colinardo
colinardo 15.05.2013 aktualisiert um 12:17:42 Uhr
Goto Top
So, hier schon mal vorab die geänderte Beta-Version des Tools zum ausprobieren. Download hier(16kb).
back-to-topAufruf:
findsilence.exe [SEKUNDEN STILLE] [PFAD IN DEM DIE WAV-FILES LIEGEN]
oder
findsilence.exe [SEKUNDEN STILLE] [SCHWELLWERT DER STILLE (Standard 0,0003)] [PFAD IN DEM DIE WAV-FILES LIEGEN]
Beispiel:
findsilence.exe 5 0,0003 "C:\Pfad\zu\den\Waves\"

back-to-topAusgabe:
Gibt die Pfade der WAV-Dateien aus die mindestens eine Pause von mindestens X Sekunden beinhalten (optional mit Angabe des Schwellwertes der Stille).

back-to-topHinweise:
Das Prog funktioniert im Moment nur mit WAV-Dateien die folgenden Kriterien entsprechen:
  • 44kHz 16Bit Stereo
  • Die Erkennung der Stille ist ungefähr auf 0,2 Sekunden genau
  • Die Wave-Files sollten die Endung *.wav haben.

Viel Spaß beim ausprobieren face-wink
Grüße Uwe
Endoro
Endoro 15.05.2013 um 11:29:46 Uhr
Goto Top
Hallo colinardo,

die Testdatei von wavecut wird nicht erkannt. Die "besteht" nur aus 9 Sec Stille...

Gruss!
colinardo
colinardo 15.05.2013 aktualisiert um 11:34:19 Uhr
Goto Top
Zitat von @Endoro:
die Testdatei von wavecut wird nicht erkannt. Die "besteht" nur aus 9 Sec Stille...
Ich kann einen Schwellwert angeben unter der ein Bereich als Stille erkannt wird, wie hast du die Stille erstellt ? ist sie wirklich 0db ?
Die Datei die dabei ist ist doch "trombone.wav" und ist nicht komplett still !
Endoro
Endoro 15.05.2013 um 11:56:22 Uhr
Goto Top
Zitat von @colinardo:
Die Datei die dabei ist ist doch "trombone.wav" und ist nicht komplett still !

Stimmt, mein Lautsprecher war ausgeschaltet face-surprise

wenn ich da aber 1 sec. Stille an den Anfang packe, spicht dein Tool schon an.

Gruss!
colinardo
colinardo 15.05.2013 um 12:01:02 Uhr
Goto Top
Zitat von @Endoro:
wenn ich da aber 1 sec. Stille an den Anfang packe, spicht dein Tool schon an.
also hier geht das mit diversen Testfiles problemlos stell mir mal deine Datei zum Download bereit...
ich erweitere das Tool noch um einen Parameter für den Schwellwert...
colinardo
colinardo 15.05.2013 um 12:19:17 Uhr
Goto Top
Update des Tools mit zusätzlichen Parametern s. Kommentar oben
q16marvin
q16marvin 15.05.2013 um 18:31:48 Uhr
Goto Top
Zitat von @colinardo:
Update des Tools mit zusätzlichen Parametern s. Kommentar oben

vielen vielen dank für deine mühe, leider bekomme ich folgende fehlermeldung:

Unbehandelte Ausnahme: WavCutException: Size of fmt header != 16
bei CWavStreamReadHeaders.ReadWavStreamReadHeaders(BinaryReader r)
bei CWavStreamReader.StreamThroughWaveFile(BinaryReader r, IReadWaveData objC
allback)
bei CWavStreamReader.StreamThroughWaveFile(String sFileName, IReadWaveData ob
jCallback)
bei CCountWaveSamples.CountWaveSamples(String sWavInput)
bei CWavcutFindSilence.FindSilence(String sWavInput, UInt32 pause, Double sch
wellwert)
bei CWavcutMain.Start(String args)
bei Program.Main(String args)
colinardo
colinardo 15.05.2013 aktualisiert um 18:38:38 Uhr
Goto Top
Das Problem hatte ich auch. Das File muss ein pures PCM 16Bit WAVE-File sein, je nach Encoder machen die teilweise noch zwei zusätzliche Bits in den Header. Der libsnd-Encoder in Adobe Audition CS6 z.B. gibt dazu kompatible Files aus. Dazu müsste ich mich aber noch tiefer in die Materie "Audio" einarbeiten um es universeller zu machen, kommt Zeit kommt Rat ...
q16marvin
q16marvin 15.05.2013 um 19:46:25 Uhr
Goto Top
kann es sein das meine wave dateien alle unterschiedliche lautstärken haben? denn mit den standarndeinstellungen deines tools findet er leider nichts face-sad
colinardo
colinardo 15.05.2013 um 21:46:10 Uhr
Goto Top
deswegen habe ich den Schwellwert-Parameter eingebaut. Stille ist ja relativ. Für den einen ist es leise wenn nen Bagger vorbeifährt, für den anderen wenn man noch nicht mal mehr nen Regenwurm furzen hört.
Also mit dem Schwellwert sagst du dem Programm "was" Stille bedeutet, d.h. alles was leiser als dieser ist bedeutet Stille. Du musst den Wert also jetzt schrittweise von 0,0003 erhöhen bis er auf deine Files passt. Wenn du bei einem File nichts aus dem Lautsprecher hörst bedeutet das nicht zwangsläufig das auf technischer Ebene wirklich "Nulllinie" herrscht.
Also schnapp dir mal einen Audioeditor und schau mal in die Files rein. Pick dir zwei drei Files raus und teste damit.
Bin kein Audio-Guru, aber was ich programmiere das teste ich auch , und hier hatte ich bis jetzt keinerlei Fehler. Jetzt liegst bei Dir, sorry.
q16marvin
q16marvin 16.05.2013 um 08:56:13 Uhr
Goto Top
okay das mache ich, das heisst der wert ist in db angegeben richtig? ich muss also nur ein programm finden was mir diesen wert anzeigt, kennst du zufällig eins?
colinardo
colinardo 16.05.2013 aktualisiert um 09:58:15 Uhr
Goto Top
Nein der Wert ist nicht in Dezibel. Du kannst folgenden Wertebereich zuordnen:

0% Lautstärke(absolute Nulllinie)  ~  0,000003
100% Lautstärke  ~  5500,0

ein guter kostenloser Audioeditor ist z.B. Audacity