Spur aus Audiodatei herausrechnen

Waljakov
Waljakov
Registrierter Benutzer
Zuletzt hier
16.04.24
Registriert
25.11.13
Beiträge
861
Kekse
8.155
Hi,
ich versuche mir gerade ein paar Basics in digitaler Signalverarbeitung beizubringen und dachte, ich dokumentiere mein kleines Projekt hier ein bisschen, evt interessiert es ja den ein oder anderen. Vielleicht findet sich ja auch jemand, der sich mit dem Thema auskennt und ein paar Tips geben kann.
Ich geht nicht darum, dass ich ein Tool suche, sondern selbst eins schreiben und dabei was lernen will.

Aufgabenstellung
Ich hab zwei Dateien:
- Source: Eine digital generierte Wav-Datei, im Moment ein einfaches Metronom
- Record: Die Source-Datei hab ich auf mein Smartphone gezogen, dort abgespielt und gleichzeitig mit dem Mic wieder aufgenommen.

Gewünschtes Ergebnis: Ich möchte das Source-Signal aus dem Record-Signal herausrechnen, sodass nur die Geräusche übrig bleiben, die das Microphone neben dem Source-Signal noch aufgenommen hat.

Naiver Ansatz
Mein erster recht naiver Ansatz war, einfach die beiden Wellenformen übereinander zu legen und zu subtrahieren. Dazu habe ich die beiden Signale erstmal grob in Audacity übereinander gelegt und dann ein Tool geschrieben, mit dem sich die Wellen Frame-genau ausrichten lassen und die Amplitude des Signale anzupassen.
Aber wer hätte es gedacht: Das funktioniert überhaupt nicht. Die Wellenformen sind zu unterschiedlich.

Aus Interesse habe ich dann das Record-Signal in 2 Teile gesplittet und die erste Hälfte als Source-Signal und die zweite Hälfte als Record-Signal benutzt und so versucht, die zweite Halfte mit der ersten Hälfte auszulöschen. Ich hab den hier makierten Klick des Metronoms genommen und dort beide Teile übereinander gelegt.
newplot (4).png

Hier der Klick rangezoomt. In blau das Source-Signal und in orange das Record-Signal.
newplot (2).png


Hier sieht man in Grün das Ergebnis, also die subtrahierten Wellenformen. Im Vergleich zum Record-Signal ist das Ergebnis schon ein Stück leiser geworden. Das kann man auch hören.
newplot (1).png


Wenn man jedoch zum ersten Klick (siehe Bild1) springt und ranzoomt, sieht man, dass hier die beiden Wellenformen nicht übereinander passen.
newplot (3).png


Das sieht man auch am Ergebnis, es tritt kaum Reduktion der Lautstärke auf.
newplot (5).png


Wenn man sich das Ergebnis anhört, ist also nur der zweite Klick leiser als im Record-Signal, die anderen sind entweder genauso laut oder sogar lauter.

Hätte ich so nicht erwartet.
Fazit: Obwohl es sich um ein digitales, periodisches Signal handelt, führt das Wiederaufnehmen des Signals doch zu einer erheblichen zeitlichen Verschiebung.

Ansatz 2: Spektralanalyse
Im nächsten Schritt will ich jetzt mittels Fourier-Transformation ein Spektrum der Signale erstellen, diese Spektren voneinander subtrahieren und wieder in eine Wellenform umwandeln und schauen, ob das zu brauchbaren Ergebnissen führt.



Das Tool im jetzigen Stand hab ich hier hochgeladen, wer will, kann gerne selbst ein wenig damit herumexperimentieren: https://flappix.github.io/audio_remover/ (braucht nocht ziemlich lang zum Laden, das optimiere ich evt später nochmal)

Mit offset_x und offset_y lässt sich das Source-Signal (blau) ausrichten, mit multiplier kann man es amplifizieren (laut/leiser machen). Im Waveform Plot werden das Source-, Record- und Ergbnis-Signal gleichzeitig angezeigt. Mit einem Klick auf das Signal in der Legende rechts oben lassen sich die einzelnen Signale ausblenden, damit man einen besseren Überblick bekommt. Wenn man mit der Maus über den Plot fährt, sieht man oben eine Menuleiste, mit der man zoomen und verschieben kann.
 
Wo soll die Reise denn hingehen?
Was möchtest Du am Ende, nach dem Gelernten?

Tipp: Im Zeitbereich mehr oder weniger gleichmäßig und ähnlich große Zeitabschnitte zu löschen entspricht einer recht ekeligen Fensterfunktion im Frequenzbereich (also einer Verfälschung) ... Lässt sich halt nicht überlisten ...
 
Ist das ein reines Experiment oder steht tatsächlich eine praktische Anwendung im Hintergrund?
Beitrag automatisch zusammengefügt:

Hast Du Dich mit den bereits existierenden Lösungen beschäftigt?

Warum machst Du es Dir nicht im ersten Schritt einfacher (es geht Dir ja darum Grundlagen zu erarbeiten) und verwendest nicht rein digital erzeugtes Material?

Den Threadtitel finde ich übrigens extrem ungünstig gewählt, jeder der hier regelmäßig reinschaut wird sich denken, dass mal wieder jemand den Rap vom Beat trennen will...
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: 3 Benutzer
Hi:hat:

Spannend.
Ich mag solche Experimente:)

Vom programmieren her versteh ich zu wenig.

Aus akustischer hinsicht mal paar Gedankengänge:
-Mono vereinfacht alles. (Scheint bereits ein Mono schnippsel zu sein? habs nicht geprüft)
-Wiedergabe über Lautsprecher verändert die Wellenform --> Massenträgheit. Die Übertragung der Wellenform in der Luft, bzw im Raum verändert das nochmal. Das Mikrofon verändert sie ein drittes Mal. Raumantwort kommt dem trocken Signal hinterhergeflogen, und das wird die Wellenform nochmal verändern.
-Was auch noch hinzu kommt, ist eine Verzögerung am Mikrofon. Je nachdem wie weit das Mikrofon vom aufzunehmenden Lautsprecher entfernt ist.

Die Wellenform verändert sich bestimmt, jedoch sollte man das schon hinbekommen, sodass grosse Anteile sich auslöschen, wenn die Verzögerung sehr genau angeglichen wird, jedoch spielen mMn da zu viele Faktoren mit rein, ansatzweise eine vollständige Auslöschung hinzubekommen.

Es sei denn.... hmmmmmmm Achte darauf dass dein Raum totenstill ist. Jetzt nimmst du dein Sample mit dem Mikrofon auf, und ersetzt damit dein "Ursprungssample"
Dieses Signal müsste absolut identisch sein, wie wenn du jetzt erneut dieses Signal aufnimmst. Auch die Verzögerung wird identisch sein. (Sofern das Mikrofon nicht mehr bewegt wird, keine Lautstärken verändert werden etc...)
Wenn das sauber gemacht wird, müsste sich das mMn nahezu vollständig auslöschen, wenn man das subtrahiert. Natürlich mit Ausnahme der Nebengeräusche die bei der ersten Aufnahme ja drauf geachtet wurde, dass er Raum totenstill war, im Gegensatz zur zweiten Aufnahme. Aber wenn ich dich richtig verstanden habe, ist ja genau das das Ziel, dass die Nebengeräusche als Einziges stehen bleiben?
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Fazit: Obwohl es sich um ein digitales, periodisches Signal handelt, führt das Wiederaufnehmen des Signals doch zu einer erheblichen zeitlichen Verschiebung.
Das kann vom Objekt kommen wie bei echten tickenden Uhren oder dem 50Hz Sinus, was ich beides schon rausnehmen musste, oder es kommt von zwei unterschiedlichen Aufnahmegeräten oder zwei unterschiedlichen Zeitpunkten der Aufname, wenn das eine kälter ist und das billige Quarz langsamer tickt.

So einfach ist das also nicht. Ich kann dir ungefähr skizzieren, wie man das bei MRT und RADAR macht, fürchte aber dass Dir hier die Signalverarbeitungskenntnisse fehlen. Daher nur als Stichpunkte:

Um es im Zeitbereich zu säubern, musst du das Störsignal mittels einer Aufnahme prozessieren und isolieren um ein Muster zu erhalten. Im Weiteren muss die Variation des Musters qualifiziert und quanitifizert werden. Dann muss ein Störmodel definiert werden. Z.B. ein 50Hz-Oszillator, dessen Lautstärke und Phase einstellbar sind. Dann muss das Nutzsignal daraufhin untersucht werden, welche Amplitude und welche Phase das Störsignal hat. Diese Messung wandert in das Störmodell dessen Output einfach abegezogen wird. Je nachdem wie stabil eine Uhr tick und die 50Hz brummen ist das zwischn 80% und 95% zu eliminieren.

Etwas eleganter aber komplizierter geht es im Frequenzbereich: Dazu geht es in eine 3D-Fourier-Analyse mit deren Hilfe man die Mustervariationen in ihre Bestandteile zerlegt, die dann ihrerseits mit einer permanent durchgeführten Fourier des Nutzsignals autokorreltiert wird, um dort das zeitliche Muster zu erkennen. Mit diesen Informationen wird dann das gesamte Spektrum modifiziert und per iFFT wieder resynthetisiert.

Methode 1 eignet sich für sehr gleichförmige, periodische und einfach analystisch beschreibbare Wellen ausreichender Lautstärke.

Merhode 2 eignet sich auch für sehr geringe Lautstärken weit unterhalb des Nutzsignals und bei sehr komplizierten Wellenformverläufen, hat aber den Nachteil, dass das Nutzsignal generell deformiert wird, weil eine Resynthese niemals perfekt ist. Selbst das Zerlegen in eine FFT und wiederbauen mit iFFT ohne etwas zu ändern, macht schon ordentliche / hörbare Artefakte.
Beitrag automatisch zusammengefügt:

Ein Tipp: Wenn man das Störgeräusch nicht isoliert aufnehmen kann, dann lässt es sich gfs durch Projektion ermitteln, indem man die Fragmente eines Streams, in dem es immer wieder vorkommt, übereinander kopiert, so verschiebt, dass es am Lautesten wird und addiert. Die anderen Nutzanteile kürzen sich dann statistisch weg. Auch das kann man automatisieren.
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Solange der genaue Aufbau inklusive aller Parameter nicht bekannt ist, bleibt das alles Spekulation.
 
Hi,
ertsmal danke für die Rückmeldung und die Tipps.

Wo soll die Reise denn hingehen?
Was möchtest Du am Ende, nach dem Gelernten?
Ist das ein reines Experiment oder steht tatsächlich eine praktische Anwendung im Hintergrund?
Die ursprüngliche Idee war mal, einen Looper für's Smartphone zu programmieren, der mit dem Lautsprecher und nicht nur über Kopfhörer benutzt werden kann. Das Problem bei den Apps, die ich kenne, ist, dass natürlich immer das Metronom auf der Spur zu hören ist und wenn man mehrere Spuren aufnimmt, alle vorherigen immer mit aufgenommen werden. Wenn man die vorherigen Spuren herausrechnen oder zumindest leiser machen könnte, wäre das schon ganz cool. Aber ob es soweit kommt, bleibt erstmal abzuwarten, vorerst ist es tatsächlich nur ein Experiment bzw eine Übung für mich.


Warum machst Du es Dir nicht im ersten Schritt einfacher (es geht Dir ja darum Grundlagen zu erarbeiten) und verwendest nicht rein digital erzeugtes Material?
Ich weiß nicht, ob ich dich richtig verstehe. Du meinst, ein analoges Signal aufzunehmen und mit dem zu arbeiten? Im Grunde habe ich das ja schon gemacht, in dem ich das Metronom über das Micrpophon wieder aufgenommen habe. In wie fern macht es das einfacher?


Es sei denn.... hmmmmmmm Achte darauf dass dein Raum totenstill ist. Jetzt nimmst du dein Sample mit dem Mikrofon auf, und ersetzt damit dein "Ursprungssample"
Dieses Signal müsste absolut identisch sein, wie wenn du jetzt erneut dieses Signal aufnimmst.
Genau das habe ich ja im Grunde gemacht, in dem ich das aufgenomme Sample in der Hälfte gesplittet habe. War wahrscheinlich etwas umständlich formuliert. Ich hätte auch erwartet, dass dann beide Samples komplett identisch sind, aber sind sie nicht, wie man in Bild 4 sehen kann. Es ist nur ein minimaler Unterschied, aber der reicht, dass die Wellenformen nicht mehr übereinander passen. Zumindest bei diesen hohen Frequenzen des Metronoms. Evt würde das bei einem Basston noch funktionieren.


Das kann vom Objekt kommen wie bei echten tickenden Uhren oder dem 50Hz Sinus, was ich beides schon rausnehmen musste, oder es kommt von zwei unterschiedlichen Aufnahmegeräten oder zwei unterschiedlichen Zeitpunkten der Aufname, wenn das eine kälter ist und das billige Quarz langsamer tickt.
Was ist denn hier das Objekt? Ich hatte ja keine unterschiedlichen Aufnahmegeräte, alles war das selbe Smartphone.


Um es im Zeitbereich zu säubern, musst du das Störsignal mittels einer Aufnahme prozessieren und isolieren um ein Muster zu erhalten. Im Weiteren muss die Variation des Musters qualifiziert und quanitifizert werden. Dann muss ein Störmodel definiert werden. Z.B. ein 50Hz-Oszillator, dessen Lautstärke und Phase einstellbar sind. Dann muss das Nutzsignal daraufhin untersucht werden, welche Amplitude und welche Phase das Störsignal hat. Diese Messung wandert in das Störmodell dessen Output einfach abegezogen wird. Je nachdem wie stabil eine Uhr tick und die 50Hz brummen ist das zwischn 80% und 95% zu eliminieren.
Danke für diesen Denkanstoß, aber ich möchte im Endeffekt nicht nur periodische Signale, sondern alle Formen von Geräuschen benutzen können. Deshalb werde ich wahrscheinlich eher den Weg Richtung FFT gehen.
 
Du meinst, ein analoges Signal aufzunehmen und mit dem zu arbeiten?

Richtig. Dabei kommen so viele Faktoren hinzu (das haben Zelo01 und engineer ja ausgeführt), die die Grundlagenforschung/-arbeit (deutlich) erschweren. Als Grundlage würde ich die verschiedenen Techniken (Polaritätumkehr, Spektrumdingsbums etc) ansehen. Da würde ich versuchen im ersten Schritt diese genau zu verstehen und wie man sie ggf. in der Software realisiert/implementiert. Dann könnte als nächstes der Einfluss des Mikrophons (bzw. verschiedener Mikrophone von verschiedenen Smarties) in die Betrachtung einfließen. Da könnte man zunächst auch digital bleiben, in dem man verschiedene EQ-Kurven anwendet.
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Achso, ja dann hab ich dich da missverstanden.

Mir ist noch was aufgefallen, lässt sich anhand der Bilder nicht wirklich erkennen. Die Source Datei. Das Metronom. Bist du auch sicher, dass dieses Metronom immer exakt die selbe Wellenform abgibt? Zur Sicherheit: Nimm nur ein Schlag, und kopiere den, um ihn mehrfach hintereinander abzuspielen. Dann kannst du sicher sein dass dieses Signal immer identisch ist.

Wenn du dein Tool mit zwei folgenden Anschlägen des Metronoms fütterst, beide von der Source Datei, kriegst du das vollständig ausgelöscht? Wenn nicht, ist bereits die Ursprungswellenform nicht immer gleich.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: 1 Benutzer
Als Grundlage würde ich die verschiedenen Techniken (Polaritätumkehr, Spektrumdingsbums etc) ansehen. Da würde ich versuchen im ersten Schritt diese genau zu verstehen und wie man sie ggf. in der Software realisiert/implementiert.
Ah okay, das meinst du. Ich glaube, über den Punkt bin tatsächlich schon drüber. Wie man einfache Operationen auf einem Signal durchführt, weiß ich, ich hab auch schon die ein oder andere Audioanwendung programmiert. Jetzt würde ich gerne etwas tiefer in die Signalverarbeitung einsteigen.

Mir ist noch was aufgefallen, lässt sich anhand der Bilder nicht wirklich erkennen. Die Source Datei. Das Metronom. Bist du auch sicher, dass dieses Metronom immer exakt die selbe Wellenform abgibt? Zur Sicherheit: Nimm nur ein Schlag, und kopiere den, um ihn mehrfach hintereinander abzuspielen. Dann kannst du sicher sein dass dieses Signal immer identisch ist.
Guter Punkt(y) Das hatte ich getestet, wenn ich den Split-Versuch mit der ursprünglichen Digital-Datei mache, löschen sich beide Wellen komplett aus. Der 1. Klick von 4. ist immer etwas höher (4/4 Takt), aber die restlichen 3 sind identisch und jeweils die ersten sind auch immer identisch.
 
  • Gefällt mir
Reaktionen: 2 Benutzer
Noch ein Gedanke:
Wenn du das Metronom über die Lautsprecher abspielst, schalte besser nur ein Lautsprecher ein. Ein sehr grosser Faktor, welcher die Wellenform zusätzlich verändert, kannst du so aus der Gleichung rausnehmen.
 
  • Gefällt mir
Reaktionen: 2 Benutzer
Sehr gute Anregung!
Ich hab nichts dazu gefunden, ob mein Smartphone überhaupt mehrere Lautsprecher verbaut hat. Ich glaube nicht. Ich hab auch keine Option gefunden, um etwas derartiges einzustellen. Ich hab aber dabei gesehen, dass eine Option "Dolby Audio" eingestaltet war, die wohl dynamisch Eq-Anpassungen macht. Diese hab ich mal deaktiviert.
Du hast mich dann aber auf die Idee gebracht, das ganze nochmal mit meiner JBL3-Bluetoothbox zu probieren, einmal über Bluetooth und einmal über Kabel.

Bei dem Handylautsprecher ohne Dolby Audio und der JBL3 über Kabel kam das selbe raus wie vorher, aber mit der JBL über Bluetooth konnte ich drei hintereinanderfolgende Klicks deutlich leiser machen bevor die Signale auseinander gelaufen sind. Nicht umbedingt eine sehr praktische, aber dennoch interessante Beobachtung.

newplot (6).png
 
Nachfolgend kam mir noch die Idee, das Source Signal in mehrere Teile zu zerlegen und jeden Teil für sich an dem Recorded-Signal auszurichten. Um das nicht von Hand machen zu müssen, habe ich erstmal einen grobschlechtigen Minimierungs-Algorithmus programmiert, der jedes Fragment ein wenig nach links und rechts beweget, für jede Position das Recorded-Signal subtrahiert und dann die Position nimmt, bei der die Lautstärke (RMS) des resultierenden Signals am geringsten ist. Auf die selbe Weise wird dann noch ein Optimum für die Amplifikation ermittelt.

Das Ergebnis sieht auf dem Plot erstmal recht vielversprechend aus. Im Lila sieht man das Ergebnis, wenn man das fragmentierte und ausgerichtete Signal vom Recorded-Signal subtrahiert.
newplot (7).png


Das Problem ist jetzt nur, dass manche benachbarte Fragmente stark voneinander entfernt wurden, da sich das Signal aus mir unbekannten Gründen in Länge zieht. An diesen Stellen hört man deutlich unschöne Artefakte.
Aber ich denke, diese Lücken lassen sich auffüllen. Ich werde doch erstmal in dieser Richtung weitermachen, bevor ich FFT mit einbeziehe.
 
Zuletzt bearbeitet:
Was ist denn hier das Objekt? Ich hatte ja keine unterschiedlichen Aufnahmegeräte, alles war das selbe Smartphone.
Der Störschallaussender war gemeint.
der jedes Fragment ein wenig nach links und rechts beweget,
Das muss mit sub sampling passieren, also interpolierender Filterung auf erhöhter Auflösung, sonst läuft die Phase in die Wiese.

für jede Position das Recorded-Signal subtrahiert und dann die Position nimmt, bei der die Lautstärke (RMS) des resultierenden Signals am geringsten ist.
Geht nicht. Diese Kriterium umfasst alle Frequenzen. Ausrichten darf man es nur an der Minimierung des Störspektrums.

da sich das Signal aus mir unbekannten Gründen in Länge zieht
Die Raten passen nicht zusammen. So einfach geht das nicht.

Auch generell ist die Vorgehensweise nicht zielführend, wenn da was Hochwertiges rauskommen soll. So betreibst du "Granularsynthese" mit Störsignalen.

ch werde doch erstmal in dieser Richtung weitermachen, bevor ich FFT mit einbeziehe.
Mit aller Vorsicht empfehle ich dir diesbezüglich mal die Grundlagen der Signalverarbeitung und der Nachrichtentechnik und im Weiteren die Estimationstheorie.
Passen würde ziemlich gut das von meinem Professor:
https://www.buecher.de/shop/fachbue...ar/products_products/detail/prod_id/25468718/
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Störschallaussender
Also der Handylautsprecher?

Das muss mit sub sampling passieren, also interpolierender Filterung auf erhöhter Auflösung, sonst läuft die Phase in die Wiese.
Bin nicht sicher, ob ich das richtig verstehe, ist das Interpolieren auf eine höhere Auflösung nicht eher Oversampling?

Geht nicht. Diese Kriterium umfasst alle Frequenzen. Ausrichten darf man es nur an der Minimierung des Störspektrums.
Guter Punkt, das ist mir nicht aufgefallen, da ich nur das zZ nur das Störsignal betrachte. Ich kann mir gerade nur nicht vorstellen, wie das Gesamtsignal leiser werden kann, als wenn ich das Störsignal genau an der richtigen Position subtrahiere. Aber probiere das mal mit einer Datei, auf der noch ein zweites Signal zu hören ist.

Die Raten passen nicht zusammen. So einfach geht das nicht.
Ich glaub, da hab ich mich unklar ausgedrückt. Ich will das Signal nicht auseinander ziehen, sondern die eine Aufnahme ist einfach im Vergleich zur anderen etwas in die Länge gezogen, und ich weiß nicht, wieso das so ist.


Mit aller Vorsicht empfehle ich dir diesbezüglich mal die Grundlagen der Signalverarbeitung und der Nachrichtentechnik und im Weiteren die Estimationstheorie.
Ja, da hast du wahrscheinlich Recht, aber auf so einen trockenen Theorieschinken für 120euro hab ich keine Lust, ich experimentiere lieber selbst herum, da ich mehr Spaß dran.
 
Ich will das Signal nicht auseinander ziehen, sondern die eine Aufnahme ist einfach im Vergleich zur anderen etwas in die Länge gezogen, und ich weiß nicht, wieso das so ist.
Ist es minimal? Dann liegts wohl dran, dass dein Handy nicht mit Audacity synchronisiert ist.

Wenns eine deutliche Abweichung ist, tippe ich auch auf unterschieliche Sampleraten in Handy bzw Audacity.
Wenn zB eine Samplingrate von 44.1kHz angegeben ist, sind das 44100 Abtastungen pro Sekunde. Jetzt leuchtet es bestimmt ein, warum die Datei in einer anderen Samplingrate in der Länge gestaucht oder gedehnt wird...?

Bei dem Handylautsprecher ohne Dolby Audio und der JBL3 über Kabel kam das selbe raus wie vorher, aber mit der JBL über Bluetooth konnte ich drei hintereinanderfolgende Klicks deutlich leiser machen bevor die Signale auseinander gelaufen sind. Nicht umbedingt eine sehr praktische, aber dennoch interessante Beobachtung.
hmmmm der JBL3 Lautsprecher geht im Frequenzbereich vermutlich wesentlich tiefer als der Handylautsprecher. = grössere Wellenlängen, bzw die müssen weniger genau aufeinanderpassen, damit sich das zum grossteil auslöscht.

Aber du schreibst ja, dass Handy und JBL kein Unterschied machen über Kabel? Nur per Blutooth?

Also ich vermute das ist Zufall, dass die Wellenformen halt zufällig besser deckend sind. Warum Zufall? Weil Blutooth Verlustbehaftet ist, bedeutet die Datei wird beschnitten und kommt nicht wie das Original an. Zudem verursacht Blutooth ziemlich erhebliche Latenzen.


Wie gesagt, ich finds ein spannendes Experiment, jedoch glaube ich, da müsste man systematischer vorgehen.
Jetzt spielen zig Faktoren mit rein. Welcher Faktor was genau bewirkt kann man nur erahnen. Ich würde mal nach Ausschlussverfahren angehen was eindeutig ermittelbar ist, und das dann abhaken, um sich dem Ziel nähern zu können.

Als erstes würde ich das Tool mal nur mit identischen Source Dateien füllen, und damit mal auf dessen Funktion checken. Mit den Sourcedateien müsste es eigentlich problemlos funktionieren, da die ja absolut identisch sind.. Soweit ich dich verstanden habe hast du das bereits gecheckt?

Erst mit dem Mikrofon kommen unzählige Faktoren hinzu. Einige lassen sich nur erahnen, andere kann man aber genaustens messen, oder berechnen.

Da würde ich als Erstes das Timing angehen. Mal genaustens ermitteln, mit wieviel Verzögerung das Mikrofon aufnimmt, und das entsprechend korrigieren. Nur dann kannst du sicher sein, dass die zwei gegenüberstehenden Dateien auch deckend sind. Das Tool ermitteln zu lassen, welche "Stellung" am meisten subtrahiert, glaube ich auch, dass das nicht zielführend ist. Wenn du das drei mal wiederholst, wirst du vermutlich auch 3 verschiedene Werte ausgespuckt bekommen?
Solange die Lautsprecher, bzw Mikrofonposition nicht verändert wird, ist das ein statischer, gleichbleibender Wert, der sich immer wieder exakt wiederholt. Wenn du timingmässig im Tool nur die kleinste Streuung hast, bei wiederholter Aufnahme, macht das Tool etwas falsch beim "angleichen" durch minimale Verschiebung.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: 1 Benutzer
Ist es minimal? Dann liegts wohl dran, dass dein Handy nicht mit Audacity synchronisiert ist.

Wenns eine deutliche Abweichung ist, tippe ich auch auf unterschieliche Sampleraten in Handy bzw Audacity.
Wenn zB eine Samplingrate von 44.1kHz angegeben ist, sind das 44100 Abtastungen pro Sekunde. Jetzt leuchtet es bestimmt ein, warum die Datei in einer anderen Samplingrate in der Länge gestaucht oder gedehnt wird...?
Als erstes würde ich das Tool mal nur mit identischen Source Dateien füllen, und damit mal auf dessen Funktion checken. Mit den Sourcedateien müsste es eigentlich problemlos funktionieren, da die ja absolut identisch sind.. Soweit ich dich verstanden habe hast du das bereits gecheckt?
Nee, das ist nicht das Problem.
Ich habe die selbe Datei zwei mal über die JBL mit Bluetooth aufgenommen, alle Parameter identisch, das Handy in gleichem Abstand von der Box, gleiche Lautstärke, alles genau gleich.
Trotzdem kann ich beide Dateien nicht exakt übereinander legen. Wenn ich den ersten Klick perfekt ausrichte, ist ab dem ca. 5-6 Klick ein deutlicher Versatz zwischen den Signalen sichtbar. Sieht man natürlich erst, wenn man seeeehr nah ranzoom. Das meine ich mit, das Signal ist in die Länge gezogen. Wenn das was mit der Samplerate zu tun hätte, müsste dieser Effekt bei beiden Dateien greifen und sich ausgleichen.

Um diesen Effekt, dessen Ursache mir noch nicht klar ist, auzugleichen, habe ich das eine Signal in mehrere Fragmente zerteilt und jedes Fragment für sich perfekt ausgerichtet. Wie man an dem letzten Bild sehen kann, funktioniert das auch sehr gut. Das Problem ist nur, dass dadurch kleine Lücken zwischen den Fragmenten entstehen und die machen sich durch einen unschönen Knack bemerkbar. Wenn man die Lücken jetzt aber füllen könnte, würde das soweit funktionieren, glaube ich.

Wenn ich zwei mal die selbe Datei nehme, funktioniert es natürlich, aber das hilft ja nicht.

Wenn du das drei mal wiederholst, wirst du vermutlich auch 3 verschiedene Werte ausgespuckt bekommen?
Nein, der Algorithmus ist deterministisch, der Spuckt bei gleicher Eingabe auch immer das selbe Ergebnis aus. Und der funktioniert auch gut, wenn man sich die Signale anguckt, sind so perfekt wie es möglich ist, ausgerichtet, besser bekommt man es von Hand auch nicht hin.

In der Latenz sehe ich eigentlich auch kein Problem, ich kann die Signale ja entweder von Hand oder mittels Algorithmus selbst exakt ausrichten.


Ich hoffe, ihr versteht mich nicht falsch, ich finde es sehr gut und hilfreich, dass ihr hier Kommentare und Kritik postet. Ich hatte nur den Eindruck, dass ich die Situation nicht exakt genug beschrieben habe und ich deshalb eure Antworten auch nicht umsetzen kann.
 
Zuletzt bearbeitet:
Geht nicht. Diese Kriterium umfasst alle Frequenzen. Ausrichten darf man es nur an der Minimierung des Störspektrums.
Guter Punkt, das ist mir nicht aufgefallen, da ich nur das zZ nur das Störsignal betrachte. Ich kann mir gerade nur nicht vorstellen, wie das Gesamtsignal leiser werden kann, als wenn ich das Störsignal genau an der richtigen Position subtrahiere. Aber probiere das mal mit einer Datei, auf der noch ein zweites Signal zu hören ist.
Auch das hab ich nochmal überprüft und es funktioniert, egal, ob zusätzliche Geräusche auf der Spur sind oder nicht, es wird immer die bestmögliche Ausrichtung gefunden.
 
Nein, der Algorithmus ist deterministisch, der Spuckt bei gleicher Eingabe auch immer das selbe Ergebnis aus. Und der funktioniert auch gut, wenn man sich die Signale anguckt, sind so perfekt wie es möglich ist, ausgerichtet, besser bekommt man es von Hand auch nicht hin.
Und wenn du das mit einer wiederholten Aufnahme machst, die ja wie du schilderst nicht immer genau gleich ist? Wie verhält sich das, wenn du zB ein ganz anderes Signal verwendest? Der Algorithmus wird mit unterschiedlichen Zahlen gefüttert, muss jedoch immer exakt auf die selbe Latenz kommen, sofern Lautsprecher- und Mikposition nicht verändert werden.

In der Latenz sehe ich eigentlich auch kein Problem, ich kann die Signale ja entweder von Hand oder mittels Algorithmus selbst exakt ausrichten.
Stell dir mal ein Sinuston vor. Den kannst du theoretisch um eine, zwei oder zwanzig Wellenlängen verschieben, und es passt immer zu 100% = Periodisches Signal. Egal ob zeitlich nach vor oder nach hinten verschoben wird.
Eine "natürliche" Wellenform ist nicht 100%ig, klar, aber auch da gibts dominierene Frequenzen, welche periodisch sind und sich wiederholen, und unter Umstäden mit einem Versatz mehr auslöschen als ohne Versatz. Da kommen dann die vielen angesprochenen Faktoren zum tragen die mit rein spielen.
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Und wenn du das mit einer wiederholten Aufnahme machst, die ja wie du schilderst nicht immer genau gleich ist? Wie verhält sich das, wenn du zB ein ganz anderes Signal verwendest? Der Algorithmus wird mit unterschiedlichen Zahlen gefüttert, muss jedoch immer exakt auf die selbe Latenz kommen, sofern Lautsprecher- und Mikposition nicht verändert werden.
Im Moment betrachte ich ja eh nur den vereinfachten Fall, dass ich ein Sample erst aufnehme, dann wieder über Box abspiele und die Aufnahme davon als Source-Datei benutze. Im diesem vereinfachten Fall funktioniert das auch mit einer wiederholten Aufnahme. Mit einem ganz anderen Signal funktioniert das natürlich nicht, aber warum sollte man auch zwei komplett unterschiedliche Signale übereinander legen, das ist ja nicht der Anwendungsfall.
Später soll dann direkt die erste Aufnahme als Source-Datei verwendet werden. Da ist aber eh noch das Problem, dass die so unterschiedlich zur Aufnahme aus der Box ist, dass es selbst von Hand schwierig ist, die gut übereiander zu legen. Aber eins nach dem anderen, erstmal kümmere ich mich um den vereinfachten Fall.

Stell dir mal ein Sinuston vor. Den kannst du theoretisch um eine, zwei oder zwanzig Wellenlängen verschieben, und es passt immer zu 100% = Periodisches Signal.
Okay, good call, da müsste man dann in der Praxis mal schauen, wie das mit Synthesizern aussieht, die wirklich annäherend perfekte periodische Signale liefern. Ich glaub aber, selbst da wird das funktionieren, wenn der Sinuston nicht die komplette Aufnahme über komplett gleichbleibend zu hören ist. Sobal der Sinuston irgendwo aufhört oder sich seine Frequenz oder Amplitude ändert, passiert das hier
newplot (8).png

In dem Bereich, wo sich die Wellen übelagern, ist die Resultierende klein, aber davor (und auch danach) gibt es einen deutlichen Ausschlag, weil das Sinussignal von 0 (oder einem anderen Wert, der ungleich der Sinusfunktion ist) subtrahiert wird. Deshalb würde der Algorithmus diese Position nicht wählen.


Ich hatte jetzt erstmal akustische Instrumente (bzw primär Gitarre) und halt ein Metronom im Sinn. Und da ist die Ähnlichkeit zu einer Sinuskurve so gering, dass auch keine Gefahr besteht.
 

Ähnliche Themen


Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben