Guten Tag, ich habe folgendes Problem und weiss nicht genau wie ich anfangen soll oder bräuchte ein Tipp wo man sich am besten einlesen kann oder sich anschauen sollte. Das Problem: Ich habe einen Raum in dem laute Lüftergeräusche zu hören sind. Auch in dem Raum stehen Maschinen die Fehlersignaltöne von sich geben. ( Der Ton ist immer der gleiche, bloss die Tonfolge ist unterschiedlich, je nach Fehler ). Es gilt jetzt mit einem Laptop, Mikrofon und MATLAB ( würde gerne Matlab dafür verwenden ) einen "Algorithmus" zu schreiben, der die Töne in der verrauschten Umgebung erkennt und den Fehler identifieren kann. Ich habe hier Aufnahmen aus dem Raum. Einmal habe ich nur das Rauschen aufgenommen und das andere mal das Rauschen mit Fehlerton. Eine Aufnahme nur vom Fehlerton (ohne Rauschen) zu erstellen ist leider nicht möglich. Wenn mir später noch genug Zeit bleibt, dann soll der Algorithmus auch bei verändertem Rauschen die Fehlertöne erkennen können. ( Für den Fall, dass sich das Rauschen durch z.B. Verwenden von anderen Störgeräuschquellen ändert. ) Hat jemand von euch schonmal Erfahrung mit sowas gemacht? kann mir jemand einen Tipp geben wo ich anfangen könnte? Literatur oder so ? LMS? Vielen Dank schonmal im Voraus...
:
Verschoben durch Moderator
Der Ton ist eine Sinusschwingung? Auch wenn sich der Ton nicht einzeln aufnehmen lässt, kann man nicht die Frequenz ermitteln? Das muss doch irgendwo dokumentiert sein, mit welcher Frequenz der Fehlerton ausgegeben wird. Beim Hersteller im Datenblatt/Anlagenbeschreibung ect. , notfall dort nachfragen. Dann würde es recht simpel werden.
Um eine Vorstellung von der Aufgabe zu kriegen: 1. In welchem Frequenzbereich liegen die Signaltöne? Wie sind sie kodiert, sprich, gibt es nur eine Tonhöhe (ähnlich wie Morsecode), oder gibt es mehrere aufeinanderfolgende oder überlagerte Frequenzen? Und wie lang sind die einzelnen Piepstöne zeitlich? Kann auch ein menschlicher Hörer den Fehler erkennen (wenn er ein bisschen trainiert)? 2. Die Auswertung muss vermutlich in Echtzeit geschehen, d.h. du liest online aus der Soundkarte und musst nach X Millisekunden ein Ergebnis liefern, richtig? 3. Wie deutlich sind die Signale wahrnehmbar? Heben sie sich klar aus dem Umgebungsgeräusch heraus, oder gehen sie eher darin unter? 4. Kann es passieren, dass mehrere Maschinen gleichzeitig lospiepsen? Kann man das irgendwie erkennen? Hat vielleicht jede Maschine ihre eigene Tonhöhe?
auf jeden Fall schonmal danke für die schnellen Antworten. Das Forum ist wirklich schnell und gut wie ich festgestellt habe. @Dirk Knoblich: Ich habe in den Unterlagen des Herstellers nix zu Frequenzen zum Ton gefunden, werde aber mal anfragen. Der Ton ist recht primitiv, wie ein Mainboard-Piepen im Fehlerfall. Es würde aber nur simple werden, wenn sich das Spektrum des Rauschens mit dem des Tons nicht überlappen oder wie meinst du? @willibald: zu deinen Fragen: 1. Es gibt nur eine Tonhöhe ( wie bei Mainboard-Piepsen im Fehlerfall ). Ein einzelnes Piepen ist 1-2 Sekunden lang. Je nach Piepfolge kann dann der Fehler erkannt werden. Ein menschlicher Hörer kann den Fehler auf jeden Fall erkennen. 2. Ja genau, die Messung sollte Echtzeit geschehen und schnellstmöglich eine Antwort liefern. Das ist aber kein Musskriterium. 3. Also als Mensch erkennt man den Fehlerton gut ( nur ein bisschen leise). Der Ton geht eigentlich nicht im Rauschen unter. 4. Es gibt 2 Maschinen die den gleichen Fehlerton nutzen und eine andere Maschine die eine andere Tonhöhe verwendet. Im schlimmsten Fall kann es auch passieren, das beide gleichzeitig lospiepsen. Dann müsste man wahrscheinlich aufgrund der Pegel ( die eine Maschine steht weiter weg )entscheiden welche Machine gepiept hat ( bei den beiden Maschinen mit gleichem Ton ). Ich habe zwar die Aufnahmen schon, aber konnte sie leider noch nicht analysieren und mir z.B. mal das Spektrum des Rauschens anschauen. Vielleicht ist es ja ganz einfach und man kann das Rauschen einfach filtern. Sollte das der Fall sein, so muss ich auf jeden Fall ein Schritt weiter gehen und auch bei Änderung des Rauschens eine erfolgreiche Analyse erfolgen. Also man muss dann vielleicht davon ausgehen, dass sich die Frequenzen des Fehlertones mit Frequenzen aus dem Rauschen überlappen. Aber das Thema stellen wir lieber mal hinten ran.
waubi schrieb: > Es würde aber nur simple werden, wenn > sich das Spektrum des Rauschens mit dem des Tons nicht überlappen oder > wie meinst du? Ein Rauschen besteht aus dem gesamten Frequenzspektrum (worst case, in reellen akustischem Rauschen durch Maschinen sind nicht alle Frequenzen enthalten/nicht stark vorhanden), also ist auch eine Überlappung vorhanden. Hat man die Frequenz des Tonsignals, so sollte dies per steilflankigem Bandfilter (mittels MATLAB) vom Rauschen isoliert werden können. Dann noch ein Vergleich des mittleren Schallpegels des Rauschen zum Pegel des Signals nach dem Bandpass (auch mittels MATLAB) und eine Detektierung des Tones sollte möglich sein. Der Rest ist dann logische Auswertung der Aufeinanderfolge/Länge der Töne. So war mein spontaner Gedankengang. Die Frequenz des Tones könnte mittels deiner Ausrüstung - Laptop + Mikrofon - auch zu bestimmen sein. Notwendig ist nur noch ein Echtzeit FFT - Programm, sprich ein PC-Oszilloskope mit FFT. Das Mikro nahe an den "Tonverursacher" und einfach schauen, welche Frequenz da hervorsticht. Wenn der Ton vom Menschen trotz des Rauschens wahrnehmbar ist, dann sollte das funktionieren.
@Dirk Knoblich: Danke für deine schnelle Antwort. Hatte mich vorhin etwas unvorsichtig ausgedrückt. Hatte die Lüftergeräusche als Rauschen bezeichnet. Ist ja nicht ganz falsch, muss ja kein weißes Rauschen sein. Will damit sagen, dass der etwas höherfrequente Fehlerton nicht im Rauschspektrum enthalten sein muss. knobikocher schrieb: >Die Frequenz des Tones könnte mittels deiner Ausrüstung - Laptop + >Mikrofon - auch zu bestimmen sein. Ich kann den Fehlerton nicht ohne Rauschen aufnehmen. Wie oben schon geschrieben habe ich nur eine Aufname vom Rauschen und eine Aufnahme vom Fehlerton mit Rauschen. Dann ist es schon schwieriger die Frequenz des Fehlertones zu bestimmten oder? knobikocher schrieb: >Hat man die Frequenz des Tonsignals, so sollte dies per steilflankigem >Bandfilter (mittels MATLAB) vom Rauschen isoliert werden können. Dann >noch ein Vergleich des mittleren Schallpegels des Rauschen zum Pegel des >Signals nach dem Bandpass (auch mittels MATLAB) und eine Detektierung >des Tones sollte möglich sein. Mit dem Vergleich des mittleren Pegels des Rauschens, wie meinst du das genau? Was genau bewirkt das? Wäre es damit dann auch möglich bei Änderungen des Rauschens und der Pegel den Ton noch zu erkennen? Entschuldigung für meine lästigen Fragen... Ich glaub ich werde morgen wenn MatLab endlich mal da ist, ein Algorithmus schreiben und das mal so ausprobieren.
Ich würde es mal mit einem adaptiven Filter versuchen. Klappt natürlich nur, wenn das Rauschen kein wirkliches Rauschen ist...
@Fabian: also mit LMS Algorithmus ( least mean square error ) ?
waubi schrieb: > knobikocher schrieb: >>Die Frequenz des Tones könnte mittels deiner Ausrüstung - Laptop + >>Mikrofon - auch zu bestimmen sein. > > Ich kann den Fehlerton nicht ohne Rauschen aufnehmen. Wie oben schon > geschrieben habe ich nur eine Aufname vom Rauschen und eine Aufnahme vom > Fehlerton mit Rauschen. Dann ist es schon schwieriger die Frequenz des > Fehlertones zu bestimmten oder? Wenn du Fehlerton+Rauschen hast und das durch eine FFT jagst und das Frequenzspektrum anschaust sollte das vom Prinzip her so aussehen wie in dem Bild im folgendem Link: http://www.mathworks.com/help/techdoc/ref/new_fft2.gif Das Rauschen ist halt über alle Frequenzen enthalten mit geringer Amplitude, aber eine große Amplitude zeigt sich (im Link sind es zwei: einmal bei 50Hz und einmal bei 120Hz). Und sowas solltest du dann auch festellen können. Der Peak -> die Frequenz des Fehlertones. Infos zu FFT + MATLAB: http://www.mathworks.com/help/techdoc/ref/fft.html Zu dem Rest muss ich grad nochmal nachdenken^^
Also, wenn die Frequenz des Piepstons bekannt ist (oder gemessen werden kann), dann würde ich die Aufnahme zuerst schmalbandig filtern, so dass nur die frequenzmäßige Nachbarschaft des Piepstons übrigbleibt. Auf das gefilterte Signal würde ich dann eine gleitende Effektivwertbestimmung loslassen und schauen, ob man die errechneten Werte eindeutig in zwei Klassen unterteilen kann: Klasse 1: Lautes Signal, Piepston da, Klasse 2: Leises Signal, Piepston weg. Gleitender Effektivwert heißt: Das Zeitsignal in Blöcke teilen (Länge der Blöcke: irgendwas zwischen 100 und 1000 ms, experimentieren!) und über jeden Block den Effektivwert berechnen (also quadrieren, mitteln, Wurzel ziehen). Im Idealfall fällt dann jeder Block eindeutig in eine der beiden Klassen, und du musst nur noch die ohne Pegelwechsel zusammenhängenden Blöcke abzählen, um auf den Fehlercode zu kommen. In der Praxis wird es Übergangsblöcke geben, weil die Blockgrenzen nicht mit den Ein- und Ausschalt-Zeitpunkten des Tons zusammenfallen werden. Diese Übergangsblöcke musst du dann ignorieren. Und die Blöcke klein genug wählen, so dass die Auszählung noch auf eindeutige Ergebnisse führt. Das wäre ein naiver, anschaulicher und mathematisch einfacher Ansatz. Komplizierter (mit Spektralanalyse und so) gehts natürlich immer.
willibald schrieb: > Also, wenn die Frequenz des Piepstons bekannt ist (oder gemessen werden > kann), dann würde ich die Aufnahme zuerst schmalbandig filtern, so dass > nur die frequenzmäßige Nachbarschaft des Piepstons übrigbleibt. Auf das > gefilterte Signal würde ich dann eine gleitende Effektivwertbestimmung > loslassen und schauen, ob man die errechneten Werte eindeutig in zwei > Klassen unterteilen kann: Klasse 1: Lautes Signal, Piepston da, Klasse > 2: Leises Signal, Piepston weg. Vielleicht zur besseren Unterscheidung über einen langen Zeitraum von vielleicht 30s den Effektivwert des allgemeinen Rauschens bestimmen und zur Unterscheidung heranziehen. Effektivwert_Rauschen > Effektivwert_nach_Bandpass = kein Ton = 0 Effektivwert_Rauschen < Effektivwert_nach_Bandpass = Ton = 1
Das Rauschen ist doch quasistationär, es ändert sich nicht oder nur langsam. das bedeutet, daß das Rauschen transformiert in den Frequenzbereich eine konstante Kurve ist. Das Piepsen ist doch jetzt ein zusätzlicher Ton bzw. eine zusätzliche Frequenz. Wenn du die quasistationären Hintergrundgeräusche im Frequenzbereich zu zwei aufenanderfolgenden Zeitpunkten voneinander abziehst, dann sollte im Prinzip 0 herauskommen, wenn allerdings ein zusätzlicher Pieps seitdem dazugekommen ist bleibt genau der übrig.
Ach so: Wenn du das mathematisch genauer betrachten willst dann such mal nach "Korrelationsalalyse", bzw. nach "statistische Signaltheorie". Warnung vorweg: ist hartes Brot! Bei uns haben von etwa 450 Studenten ca. 5 das Fach vertieft gehört :-).
waubi schrieb: > Ich habe einen Raum in dem laute Lüftergeräusche zu hören sind. Auch in > dem Raum stehen Maschinen die Fehlersignaltöne von sich geben. ( Der Ton > ist immer der gleiche, bloss die Tonfolge ist unterschiedlich, je nach > Fehler ). > Es gilt jetzt....der die Töne in der > verrauschten Umgebung erkennt und den Fehler identifieren kann. Hi, waubi, die Funkaufklärung hat dies Thema bis zur Erschöpfung durchgearbeitet. Dort übertragen die "Töne" auch noch Datensignale, die man zumindest nach dem Typ erkennen will, Ort und Tätigkeit. Die Fehlerrate wird das große Problem sein. Wer immer für die Erkennung der Signaltöne Geld ausgibt, er will auch Zuverlässigkeit. Deshalb schlage ich vor in Anlehnung an die Wetterfühler, von denen eine Station mehrere im Garten haben kann: 1. Nimm einen ganz billigen Laptop, der aber mit wireless nodes kommunizieren kann, der dafür mindestens eine USB oder serielle Schnittstelle hat. 2. Baue in jedes Gerät, das Du überwachen willst, eine solche node als Meßstelle ein. Oder klebe sie in die Nähe des akustischen Signalgebers. Ob die nur die Tätigkeit des Signals an sich erkennen muss, die Dauer, gar Morsezeichen, die Tonhöhe - die node sollte das tun, bevor der Laptop sie abfragt. 3. Lass Deinen Laptop periodisch alle soche messstellen abfragen, ob sie ein akustisches Signal erkannt haben, und wenn ja, mit welchen Merkmalen. Gesichtspunkt Versorgung der Messstellen. Lithiumbatterien oder Netzteile? Frage des Wartungsaufwandes. Aber da, wo eine Maschine steht, da ist eine Netzsteckdose selten weit. Begründungen: 1. Jede Messstelle ist optimal platziert dort, wo das Signal lauter ist als jeder Lüfter. 2. Hohe Zuverlässigkeit. Cioa Wolfgang Horn
Wolfgang Horn schrieb: > Deshalb schlage ich vor in Anlehnung an die Wetterfühler, von denen eine > Station mehrere im Garten haben kann: Das ist sicher ein guter Vorschlag, wenn es darum geht, aus einem Prototyp ein marktfähiges (und hochpreisiges) Produkt zu machen. Aber ich glaube, davon ist waubi noch weit entfernt. Ihm geht es erst mal nur um die Idee, die zum Detektor-Algorithmus führt, und da ist ein einzelner PC mit Matlab drauf um einiges handlicher als das verteilte System, was du vorschlägst.
Im Buch "Praxiseinstieg LabVIEW", ISBN 3772340393 , ist ein Akustisches GPS beschrieben (p. 215). Da ist auch gezeigt, wie man mit der Soundkarte aufnehmen und das Spektrum ausgeben kann (p. 166). Damit müsste das Problem zu lösen sein. Aber lade doch mal eine Wave-Datei hoch, dann kann man genauer antworten.
Hallo, vielen Dank für die schnellen, guten Antworten. Hätte nicht gedacht, dass hier so ein toller, problemlösender Betrieb ist. Leider komme ich im Moment nicht an den Testrechner mit den Aufnahmen ran. Wenn dann kann ich ja mal die Aufnahmen hochladen. @Wolfgang Horn: das ist natürliche eine gute Idee, würde es aber doch gerne auf meine oben beschriebene Weise lösen. Es geht hier auch um den Lerneffekt im Umgang mit Spektren, Matlab, einfach Lösung usw. @Dirk Knoblich: Zitat von knobikocher: >Effektivwert_Rauschen > Effektivwert_nach_Bandpass = kein Ton = 0 >Effektivwert_Rauschen < Effektivwert_nach_Bandpass = Ton = 1 den Ansatz werde ich wohl mal verfolgen. Auch den Ansatz von U.R. Schmitt mit der Differenz. Ich werde es die Tage mal ausprobieren und dann weiter berichten. Habe leider auf diesem Gebiet noch nix Praktisches gemacht und muss erstmal einen Überblick bekommen. Auf jeden Fall vielen Dank für euere Hilfen... Gruß Waubi
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.