Hallo *, ich muss gleich vorweg schicken: Ich bin weder Mathematiker, noch DSP-Spezialist - nur ein einfacher musikmachender Informatiker. Ich habe das Problem, dass ich auf einem Arduino Due den ADC fuer das digitalisieren von Audiosignalen benutzen moechte. Leider scheine ich mir da ziemlich viel Rauschen mit einzufangen. Nach einigem Lesen von diversen Artikeln, las ich den Vorschlag zum entrauschen einen Kalman-Filter zu bentuzen. Beispiele dazu findet man einige (sogar eine fertige Arduino-Library), aber alle beziehen sich auf die Auswertung von Gyros bei Robotern. Nun kommt meine Unkenntnis der hoeheren Mathematik zum tragen: 1.) Kann man den Kalman-Filter ueberhaupt fuer Audio Signale benutzen? 2.) Hat jemand einen Link zu einem Algorithmus oder noch besser: zu einer verstaendlichen Erklaerung, damit man selbst den Algorithmus erstellen kann? Alles was ich bisher an Beschreibungen gefunden habe, wuerde mich zu einem Mathematikstudium zwingen - was ich meinem Hirn aber nicht antun mag ;-) Danke && Gruss, Holger
Kalmanfilter arbeiten modellbasiert. Das hast du modellierst sinnvolle Verläufe deines Signals und Rauschn getrennt, um dann das Rauschen gezielt "wegzuschätzen". Ein Modell für den Signalverlauf eines Audiofiles stelle ich mehr sehr anspruchsvoll vor ;) andere Meinungen?
Der Signalpegel ist ausreichend hoch? Meine Gitarristen stellen ja gern schon an der Gitarre die Lautstärke ein und wundern sich, wenn es rauscht und brummt.
Hi, Vorneweg: Der Prozessor ist im tiefstmöglichen Standby, während der ADC abtastet, oder? Zum Kalman kann ich Dir empfehlen, nur auf englisch zu suchen, wenn Du eine verständlichere Erläuterung brauchst. Ich glaube aber ehrlich gesagt, dass ein Aufbau mit externem Wandler und "rauscharmen" PCB schneller (und vor allem qualitativ besser) zum Ziel führt. Vielleicht findest Du ja auch Arduino-Kompatible Fertigboards mit AD-Wandler, die auf Audio ausgelegt sind?
Liebe Leute: Ein Kalmanfilter ist ohne ein vernünftiges Modell VÖLLIG SINNFREI! Wie will man Musik sinnvoll modellieren ? Wenn das jemand könnte, dann gäbe es schon andere Filter gegen Rauschen. Das ist ein fundamentales Problem nicht nur in der Elektrotechnik ! Lest bitte nach was genau ein Kalmanfilter ist und wozu er da ist und wie er funktioniert.
Henrik P. schrieb: > Ich glaube aber ehrlich gesagt, dass ein Aufbau mit externem Wandler und > "rauscharmen" PCB schneller (und vor allem qualitativ besser) zum Ziel > führt. > Vielleicht findest Du ja auch Arduino-Kompatible Fertigboards mit > AD-Wandler, die auf Audio ausgelegt sind? Was wird hier überhaupt von Arduino geredet? Dafür braucht man (wenn man es unbedingt versuchen will) eine Vernünftige DSP mit mehreren FPUs wenn man das ganze in Echtzeit machen will. Nicht umsonst gibt es Audio-DSPs und solch einen Zirkus. Das erledigt man nicht mit einem Arduino der so und so völlig gebremst ist ... Man könnte ja mal ein FPGA Shiel nehmen (habe neulich eines auf Kickstarter gesehen) und damit ein bisschen Spielen ...
Mach mal Angaben wie deine Außenbeschaltung aussieht. Wie du abtastest (Auflösung ADC, Rederenz, Samplingrate) und woran du siehst das du viel Rauschen hast...
Na ja, im Ton-Gewerbe gibt es eine Grundregel: Shit in, Shit out. Verbessere bessere deine Signalwege um dein Rauschen zu minimieren.
Hallo *, vielen Dank fuer Eure zahlreichen Antworten und Anregungen. Ich verscuhe sie mal in diesem Beitrag aufzuarbeiten. * Warum der Arduino Due und kein DSP? Ich bin (gegen einige hier im Forum) totaler Neuling und Quereinsteiger im Bereich Audioverarbeitung mit uC. Ich kann mit dem Arduino inzwischen recht gut umgehen und finde die Umgebung einfach. Klar hat der DSP Vorteile gegenueber einem Arduino, aber die hohe Lernkurve (und auch Kosten gegenueber dem Arduino) beim Einstieg in DSP-Programmierung schrecken mich ab. Der Due ist mit seinem ARM32 Kern ueberhaupt erst in Lage DSP-aehnliche Berechnungen durchzufuehren. Man staunt ja auch, was heutige Durchschnittsrechner in Sachen Musikbearbeitung gegenueber den Rechnern vor 15 Jahren leisten. Ich glaube dieser Ansatz gilt auch fuer den Due: Erschlage ein zeitkritischen Problem mit hoher Rechenleistung. * Prozessor in standby mode? Ehrlich gesagt: nein. Ich muesste mal ausprobieren, wie viel man vom Due (bzw. seinem ARM32) schlafen legen kann und ob dies auch so gut funktioniert, dass man noch gnuegend Rechenzeit fuer die Bearbeitung des Signals uebrig hat. Ich vermute, den Prozessor zum schlafen zu bewegen kostet CPU cycles... * Aufbau und Aussenbeschaltung Den Aufbau und die Aussenbeschaltung kann man ganz gut an dem Projekt selbst sehen: http://www.electrosmash.com/pedalshield#hw (Um Unklarheiten zu vermeiden: Dies ist nicht mein Projekt - ich bin nur Nutzer) Unter diesem Link gibt es auch Soundbeispiele. Dort hoert man, wenn der True-Bypass betaetigt wird, wie es rauscht und surrt. Vermutlich CPU-noise. * Kalman Filter Jetzt ist mir langsam auch klar, warum man im Internet nichts ueber Kalman Filter fuer Audio-Signale findet: weil es scheinbar schlicht nicht geht. Danke fuer die Info! * Allgemein Mir ist schon klar, dass der Due eigentlich nicht dafuer gedacht ist. Das ganze soll ja auch nicht gegen die durchaus auch kostenguenstigen kommerziellen Produkte angehen (habe fuer 89 Euro ein Korg Pandora gekauft, der so ziemlich alles kann, was man auf Reisen zum Ueben braucht). Ich moechte halt etwas ueber Algorithmen fuer die Verformung von Audiosignalen lernen und dazu das nehmen, was ich habe: Arduino Kenntnisse. Ich denke ich werde mal ein paar Experimente mit Filtern machen und den Schlafmodues ausprobieren. Dabei lerne ich auf jedenfall dazu - ob es funktioniert oder nicht. Danke an alle, die sich mit dem Problem befasst und mir geantwortet haben! Gruss, Holger
Holger Wirtz schrieb: > * Kalman Filter theoretisch könnte man ja das Rauschen modellieren und die Musik rausfiltern. Wenn man das übriggebliebene Rauschen mittels Phaseninvertierung auf das Signal gibt, bleibt idealerweise nur noch die Musik übrig. Dazu muss man aber seeeehr viel über das jeweilige Rauschen im konkreten Fall wissen und ich glaube ehrlich gesagt nicht, dass es sonderlich gut tut. Ohne Mathe geht da gar nichts; aber spannend wär das mal :)
porter schrieb: > Referenz Ein Grundverständnis für Systemtheorie und Wissen über Kalmanfilter und deren Funktionsweise. Erwartest du nun ein Dokument in dem steht "Kalmanfilter sind nicht für Audio geeignet"? Das ist ungefähr so sinnvoll wie Straßen zu vereisen um Depresionen zu heilen ... rava schrieb: > theoretisch könnte man ja das Rauschen modellieren und die Musik > rausfiltern. das dürfte wohl das schwierige sein ... über Rauschen kann man nur statistische Aussagen treffen und selbstverständlich zu keinem Zeitpunkt irgendwas zu Amplitude und Phasenlage sagen rava schrieb: > Wenn man das übriggebliebene Rauschen mittels > Phaseninvertierung auf das Signal gibt, bleibt idealerweise nur noch die > Musik übrig. Naja ich habe zwar den Begriff der Phaseninvertierung noch nie gehört denke aber, dass das ein Begriff aus der Musikerszene ist. Ich denke damit ist eher eine Invertierung gemeint ist. Besser ausgedrückt müsste man das Rauschen vom Gesamtsignal subtrahieren um die reine Musik zu bekommen. (Triviallösung). Eine Phasendrehung macht kaum Sinn falls das gemeint sein sollte. Holger Wirtz schrieb: > * Warum der Arduino Due und kein DSP? > > Ich bin (gegen einige hier im Forum) totaler Neuling und Quereinsteiger > im Bereich Audioverarbeitung mit uC. Ich kann mit dem Arduino inzwischen > recht gut umgehen und finde die Umgebung einfach. Klar hat der DSP > Vorteile gegenueber einem Arduino, aber die hohe Lernkurve (und auch > Kosten gegenueber dem Arduino) beim Einstieg in DSP-Programmierung > schrecken mich ab. Das ist irgendwo auch logisch. Mit Arduino holst du dir Einfachheit aber eben auf Kosten der Performance. Du kannst nie die Stärken der jeweiligen Architektur nutzen. > Der Due ist mit seinem ARM32 Kern ueberhaupt erst in Lage DSP-aehnliche > Berechnungen durchzufuehren. Man staunt ja auch, was heutige > Durchschnittsrechner in Sachen Musikbearbeitung gegenueber den Rechnern > vor 15 Jahren leisten. Ich glaube dieser Ansatz gilt auch fuer den Due: > Erschlage ein zeitkritischen Problem mit hoher Rechenleistung. Das ist natürlich alles Geschwafle. Du hast weder eine Schätzung noch Wissen wieviele FLOPS du brauchst aber quasselst mal los. Du hast keine Ahnung von Rechenaufwand bei Filtern. Je nach Filter benötigen die von kleinen 8-bit Controllern bei 4 MHz bis hin zu mehreren FPGAs parallel. Du hast Echtzeitfähigkeit nicht definiert. Du rätst einfach ins Blaue ohne auch nur den Hauch einer Ahnung von der Materie. Aber du weißt es ja definitiv besser als Leute die schon jahrelang in der Branche unterwegs sind ... du bist Anfänger also nimm auch mal Rat an!
Hi, ich will auch mal meinen Senf dazugeben. Für die Diskretisierung von stetigen Größen ist doch der Kalman eigentlich der Filter, freilich kann man den für Audio nutzen. Find's teilweise erstaunlich, was für Regentänze um den Kalman-Filter gemacht werden und welche Götter da erst beschworen werden müssen um das verstehen zu dürfen. Natürlich sollte man für die Verwendung eines Kalmans wissen, welchen Anteil der Sensor bei einer Messung am Rauschen hat und was das globale Rauschen (Systemrauschen) ist - kann man aber auch einfach einmal konstant schätzen, sind ja nur Varianzen und man merkt dann schon, wenn's zuviel wird und das Signal zu glatt. Letztlich ist ja das, was der Kalman macht, ja eigentlich nüscht anderes als Rechnen mit zwei Normalverteilungen. Und um zwei Meßwerte zu summieren bzw. deren Varianz nach dem Messen zu errechnen - das kann man auch gut mit 'nem 8-Bit AVR. Nachträglich kann man mittels Bitschubsereien und/oder immer noch optimieren - da denke ich aber, dass die Samplingrate des ADCs die entscheidendere Rolle spielt als das Ausrechnen des Kalman-Updates und -Predicts. Es gab irgendwo im Netz ein 'Motorblog' von Paul Balzer zum Thema, wo der eindimensionale KF ziemlich anschaulich erklärt wird - und 'ne funktionierende und einfach verständliche Matlab-Implementierung in 1D noch dazu.
:
Bearbeitet durch User
Hi nochmal! Ich hatte irgendwie den Eindruck, dass hier im Thread ein wenig konfus mit dem Schlagwort 'Kalman' umgegangen wird. Daher habe ich mal eine kleine Demo in C99 geschrieben, die einen eindimensionalen Kalman implementiert (einfach mal Paul Balzerts Blog-Eintrag frecherweise nachgebaut). Zugegeben, ich nutze bei der Berechnung der Kovarianz noch eine Zeile 'float'-Operationen, was für den Cortex-M3 nicht die Traumlösung an Effizienz ist. Da findet ihr aber sicher auch eine Lösung. Beste Grüße, Falk Schilling Edit: sorry, beim Definieren des Initialzustandes des dynamischen Systems habe ich leider Varianz und Erwartungswert vertauscht belegt (Varianz muss groß (z.B. 10000) sein und Erwartungswert 0). Im Anhang korrigierte Fassung.
:
Bearbeitet durch User
Das bringt nur leider zum Entrauschen eines Audiosignals nichts, weil es keinen Zustand gibt den man schätzen kann. Ein sinnvollerer Ansatz ist eine Schätzung des Rauschspektrums mit Minimum Statistics (http://www.ruhr-uni-bochum.de/IKA/forschung/forschungsbereich_martin/speech_audio_processing/eusipco1994_martin.pdf) und Wiener Filter oder spektrale Subtraktion zum Entrauschen. Das ist aber auch kein Ersatz für eine vernünftige Hardware die das Rauschen von vornherein so weit es geht vermeidet.
Was ist denn ARM32? Sowas wie "x86-32" - was dann irgendwas zwischen 80386 und i7 sein kann?
Andreas Schwarz schrieb: > Das bringt nur leider zum Entrauschen eines Audiosignals nichts, weil es > keinen Zustand gibt den man schätzen kann. Ok, zugegeben: der obige Ansatz ist ein allgemeiner Ansatz zur Schätzung von Zuständen von Sensoren. Wählt man die Varianzen richtig, schätzt man somit einfach, welchen Wert der Sensor beim nächsten Update vermutlich diskretisieren wird. Die Schätzung auf Spektralebene ist schon eine Abstraktion weiter (somit teurer), da vorher noch vom Orts- in den Frequenzbereich transformiert werden muss. Dort bleibt das Prinzip zum Rauscheliminierung ja aber das gleiche, nur dass man keine Sensorwerte mehr als Erwartungswert reinpfeift, sondern eine Frequenz. > Ein sinnvollerer Ansatz ist eine Schätzung des Rauschspektrums mit > Minimum Statistics > (http://www.ruhr-uni-bochum.de/IKA/forschung/forschungsbereich_martin/speech_audio_processing/eusipco1994_martin.pdf) > und Wiener Filter oder spektrale Subtraktion zum Entrauschen. Das ist > aber auch kein Ersatz für eine vernünftige Hardware die das Rauschen von > vornherein so weit es geht vermeidet. Die Praxis sieht leider oft so aus, dass eine vernünftige Hardware nicht immer zur Verfügung steht bzw. auch nicht jedem bekannt ist, wie die Techniken überhaupt anzuwenden sind. Und die zwei kleinen Funktionen mal in sein uC-Projekt reinziehen und mal ausprobieren, was sie bewirken, denke ich, sollte doch gehen. Alleine durch das Ausprobieren und feststellen, warum es anwendbar oder nicht anwendbar ist, ist doch schon einiges gewonnen. Gut - mit dem Cortex-M3 und hinreichend hoher Samplingrate ( > 30kS/s ) + FFT + obigem Kalman + FFT^{-1} und DA-Wandlung - zugegeben, das ist ein recht optimistisches Vorhaben... Man kann aber das Gesamtsystem auch so partitionieren, dass für die AD-Wandlung + FFT ein eigener Controller genommen wird, für die Schätzung ein Zweiter und für Rücktrafo + Frequenzsynthese ein drittes. Ich weiß nicht, wass die DSP-Befehlssatzerweiterung des ARMs an Leistung bringen, kann mir aber vorstellen, dass da auch was rauszuholen ist. Edit: Ach so, wen's interessiert - IEEE SPS hat zu verschiedenen Themen wie Kalman-Filterung, GNURadio's VOLK-Library (!) und ähnliches Zeug ein paar Sachen auf http://www.sigview.org zum Angucken bereitgestellt.
:
Bearbeitet durch User
Hat sich mal jemand das Projekt angesehen, das der TO nachgebaut hat? Das ganze Design ist Mist. Ein hochverstärkender TL072 mit sehr hochohmigem Eingang und ziemlich hochohmiger Außenbeschaltung, huckpack montiert über einen Microcontroller. Das muß rauschen und knistern, wahrscheinlich macht das zu flache Ausgangsfilter des DAC da noch am wenigsten Probleme.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.