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-Key: 206425

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

Printed on: April 26, 2024 at 15:04 o'clock

Member: colinardo
colinardo May 14, 2013 at 10:20:02 (UTC)
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
Member: Endoro
Endoro May 14, 2013 updated at 10:32:35 (UTC)
Goto Top
Hallo Eric,

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

Gruss!
Member: colinardo
colinardo May 14, 2013 at 10:42:12 (UTC)
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 ....
Member: q16marvin
q16marvin May 14, 2013 at 13:22:33 (UTC)
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
Member: colinardo
colinardo May 14, 2013 updated at 13:26:45 (UTC)
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
Member: Endoro
Endoro May 14, 2013 at 20:09:14 (UTC)
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!
Member: q16marvin
q16marvin May 14, 2013 at 20:41:11 (UTC)
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
Member: colinardo
colinardo May 15, 2013 updated at 10:17:42 (UTC)
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
Member: Endoro
Endoro May 15, 2013 at 09:29:46 (UTC)
Goto Top
Hallo colinardo,

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

Gruss!
Member: colinardo
colinardo May 15, 2013 updated at 09:34:19 (UTC)
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 !
Member: Endoro
Endoro May 15, 2013 at 09:56:22 (UTC)
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!
Member: colinardo
colinardo May 15, 2013 at 10:01:02 (UTC)
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...
Member: colinardo
colinardo May 15, 2013 at 10:19:17 (UTC)
Goto Top
Update des Tools mit zusätzlichen Parametern s. Kommentar oben
Member: q16marvin
q16marvin May 15, 2013 at 16:31:48 (UTC)
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)
Member: colinardo
colinardo May 15, 2013 updated at 16:38:38 (UTC)
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 ...
Member: q16marvin
q16marvin May 15, 2013 at 17:46:25 (UTC)
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
Member: colinardo
colinardo May 15, 2013 at 19:46:10 (UTC)
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.
Member: q16marvin
q16marvin May 16, 2013 at 06:56:13 (UTC)
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?
Member: colinardo
colinardo May 16, 2013 updated at 07:58:15 (UTC)
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