Mit Audio-Anomalieerkennung hören Sie Probleme in Motoren, Pumpen, Lüftern und Getrieben, bevor sie zu Ausfällen werden. Dieser Leitfaden zum Anwendungsfall erklärt, wie akustisches Monitoring funktioniert, welche Modelle problemlos auf Edge-Hardware laufen und wie Sie Anomalie-Scores per MQTT veröffentlichen, damit Dashboards und Instandhaltungsteams ein klares Signal erhalten, ohne dass jemand Rohaudio streamt.
Warum man Maschinen zuhören sollte
Erfahrene Techniker diagnostizieren Maschinen nach Gehör: ein Pfeifen von einem trockenen Lager, ein rhythmisches Klopfen von einer losen Befestigung, ein Zischen von einem undichten Ventil. Akustisches Monitoring automatisiert diese Fähigkeit und setzt sie rund um die Uhr ein.
Schall hat gegenüber anderen Sensoren praktische Vorteile:
- Berührungslos. Ein Mikrofon muss weder an einer rotierenden Welle montiert noch in eine Steuerung verdrahtet werden, was Nachrüstungen erleichtert.
- Große Abdeckung. Ein Mikrofon kann eine kleine Gruppe von Maschinen oder einen ganzen Förderbandabschnitt überwachen.
- Reichhaltige Information. Frequenzen verraten Drehzahlen, Reibung, Kavitation, Luftlecks und Stöße.
- Günstige Hardware. MEMS-Mikrofone kosten wenig, und digitale Varianten lassen sich direkt an Mikrocontroller und Einplatinencomputer anschließen.
Der Nachteil ist der Lärm. Fabriken sind laut, Hintergrundgeräusche ändern sich ständig, und benachbarte Maschinen sind in jeder Aufnahme zu hören. Ein brauchbares System muss „anders als sonst“ von „der Gabelstapler ist vorbeigefahren“ unterscheiden.
Wie Audio-Anomalieerkennung funktioniert
Fast alle praxistauglichen Systeme folgen derselben Pipeline.
1. Aufnahme
Nehmen Sie kurze Clips (typischerweise eine bis zehn Sekunden) mit 16 kHz oder mehr auf. Viele Maschinenfehler zeigen sich unterhalb von 8 kHz, doch Luftlecks und manche Lagerschäden erzeugen Ultraschall- oder hochfrequente Anteile. Passen Sie Abtastrate und Mikrofon daher an den Fehler an, um den es Ihnen geht.
2. Merkmalsextraktion
Rohe Wellenformen lassen sich schwer vergleichen. Wandeln Sie jeden Clip in ein Log-Mel-Spektrogramm um: ein Zeit-Frequenz-Bild, in dem die Frequenzbänder so verteilt sind, wie das menschliche Gehör Tonhöhen wahrnimmt, und die Energie auf einer logarithmischen Skala liegt. Einfachere Alternativen sind Bandenergien, der spektrale Schwerpunkt und der RMS-Pegel.
3. Normalzustand lernen
Da Ausfälle selten sind, werden Modelle ausschließlich mit Aufnahmen im Normalzustand trainiert. Ziel ist nicht, einen bestimmten Fehler zu erkennen, sondern zu messen, wie weit ein neuer Clip von allem entfernt ist, was das Modell im Normalbetrieb gehört hat.
4. Bewerten und entscheiden
Jeder Clip erhält einen Anomalie-Score. Ein Schwellenwert, der aus der Score-Verteilung zurückgehaltener Normalaufnahmen festgelegt wird, entscheidet, ob der Clip ungewöhnlich ist. Persistenzregeln (mehrere ungewöhnliche Clips hintereinander) unterdrücken einmalige Geräusche.
Modelloptionen für die Edge
| Ansatz | Wie bewertet wird | Hardware | Stärken | Schwächen |
|---|---|---|---|---|
| Bandenergie-Basislinie | Abstand zu Mittelwert und Varianz pro Band | Mikrocontroller oder Pi | Winzig, erklärbar | Übersieht subtile Musteränderungen |
| Gaußsches Mischmodell auf Merkmalen | Negative Log-Likelihood | Raspberry-Pi-Klasse | Kommt mit mehreren Betriebsarten zurecht | Erfordert sorgfältige Merkmalswahl |
| Isolation Forest auf Merkmalen | Pfadlänge | Raspberry-Pi-Klasse | Multivariat, schnell trainiert | Merkmalsentwicklung erforderlich |
| Faltungs-Autoencoder | Rekonstruktionsfehler auf Spektrogrammen | Pi mit Beschleuniger, Jetson | Lernt komplexe Muster | Mehr Daten nötig, schwerer zu erklären |
| Vortrainiertes Embedding plus Distanz | Abstand zu Normal-Embeddings | Jetson oder GPU-Edge-Box | Stark mit wenig Trainingsdaten | Größeres Modell |
Ein sinnvoller Weg ist, mit der Bandenergie-Basislinie zu beginnen, nachzuweisen, dass der Schall bei Ihrer Maschine ein verwertbares Signal enthält, und bei Bedarf zu einem Autoencoder zu wechseln. Das Tutorial Isolation Forest für Sensordaten zeigt den merkmalsbasierten Ansatz im Detail, und dasselbe Muster gilt für Audiomerkmale.
Ein minimaler Edge-Listener mit MQTT-Ausgabe
Das folgende Skript läuft auf einem Raspberry Pi oder einem beliebigen Linux-Rechner mit Mikrofon. Es nimmt Zwei-Sekunden-Clips auf, berechnet logarithmische Energien in Mel-verteilten Bändern, lernt in den ersten Minuten eine Basislinie und veröffentlicht dann für jeden Clip einen Anomalie-Score.
pip install "paho-mqtt>=2.0" numpy sounddevice
# Unter Raspberry Pi OS ggf. zusätzlich: sudo apt install libportaudio2
import json
import time
import uuid
import numpy as np
import paho.mqtt.client as mqtt
import sounddevice as sd
PREFIX = "connectmq/demo/snd-4be0/plant1/line2/fan3"
RATE, CLIP_S, BANDS = 16_000, 2.0, 32
LEARN_CLIPS = 60 # etwa zwei Minuten normaler Geräusche
THRESHOLD = 4.0 # mittlerer absoluter Z-Wert über alle Bänder
def mel_edges(n_bands, fmin=50, fmax=7_800):
mel = lambda f: 2595 * np.log10(1 + f / 700)
inv = lambda m: 700 * (10 ** (m / 2595) - 1)
return inv(np.linspace(mel(fmin), mel(fmax), n_bands + 1))
EDGES = mel_edges(BANDS)
def band_features(clip):
spec = np.abs(np.fft.rfft(clip * np.hanning(len(clip)))) ** 2
freqs = np.fft.rfftfreq(len(clip), 1 / RATE)
feats = [spec[(freqs >= lo) & (freqs < hi)].sum() for lo, hi in zip(EDGES[:-1], EDGES[1:])]
return np.log10(np.array(feats) + 1e-10)
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2,
client_id=f"listener-{uuid.uuid4().hex[:8]}")
client.connect("broker.connectmq.com", 1883, keepalive=60)
client.loop_start()
history, mean, std, streak = [], None, None, 0
while True:
clip = sd.rec(int(RATE * CLIP_S), samplerate=RATE, channels=1, dtype="float32")
sd.wait()
feats = band_features(clip[:, 0])
rms_db = float(20 * np.log10(np.sqrt(np.mean(clip ** 2)) + 1e-9))
if len(history) < LEARN_CLIPS:
history.append(feats)
if len(history) == LEARN_CLIPS:
mean = np.mean(history, axis=0)
std = np.std(history, axis=0) + 1e-3
client.publish(f"{PREFIX}/audio/status",
json.dumps({"state": "monitoring", "bands": BANDS}),
qos=1, retain=True)
continue
z = np.abs((feats - mean) / std)
score = float(np.mean(z))
top_band = int(np.argmax(z))
streak = streak + 1 if score > THRESHOLD else 0
msg = {"ts": time.time(), "score": round(score, 2), "threshold": THRESHOLD,
"rmsDb": round(rms_db, 1),
"topBandHz": [round(EDGES[top_band]), round(EDGES[top_band + 1])],
"isAnomaly": streak >= 3, "model": "band-baseline-v1"}
client.publish(f"{PREFIX}/audio/score", json.dumps(msg), qos=0)
Die Nachricht enthält bewusst das Frequenzband mit der stärksten Abweichung. Ein Techniker, der „Anomalie, stärkste Änderung bei 2,1 bis 2,4 kHz“ sieht, hat einen viel besseren Ausgangspunkt als einer, der nur eine rote Lampe sieht.
Starten Sie das Skript in einem ruhigen Raum, lassen Sie es zwei Minuten lernen, spielen Sie dann einen Ton ab oder klopfen Sie in der Nähe des Mikrofons auf den Tisch und beobachten Sie, wie der Score steigt:
mosquitto_sub -h broker.connectmq.com -p 1883 -i snd-watch-4be0 -t "connectmq/demo/snd-4be0/#" -v
Warum Scores statt Audio veröffentlichen
Rohaudio von jeder Maschine zu streamen ist teuer, datenschutzrechtlich heikel (Mikrofone können Gespräche aufnehmen, was in der EU Fragen nach DSGVO und Mitbestimmung des Betriebsrats aufwirft) und unnötig. Wird an der Edge bewertet und alle paar Sekunden eine kompakte JSON-Nachricht veröffentlicht, bleibt die Bandbreite winzig und der Schall am Standort.
Wird ein Clip markiert, möchten Sie womöglich dennoch Belege. Ein guter Kompromiss besteht darin, den markierten Clip lokal zu speichern und nur seine Metadaten zu veröffentlichen oder kurze Ausschnitte auf Anforderung über ein Befehls-Topic hochzuladen und dabei unter der maximalen Nachrichtengröße des Brokers zu bleiben.
Von der Basislinie zum Autoencoder
Zeigt die Bandenergie-Basislinie, dass der Schall ein Signal enthält, übersieht aber subtilere Fehler, ist der übliche nächste Schritt ein kleiner Faltungs-Autoencoder, der auf Log-Mel-Spektrogrammen normaler Clips trainiert wird. Trainieren Sie ihn auf einer Workstation, konvertieren Sie ihn nach TensorFlow Lite oder ONNX und führen Sie ihn anstelle der Basislinie auf dem Edge-Gerät aus. Auf der MQTT-Seite ändert sich überhaupt nichts: Der Listener veröffentlicht weiterhin einen Score, einen Schwellenwert und die Modellversion auf demselben Topic. Dashboards und Alarmregeln funktionieren weiter, und Sie können beide Modelle vergleichen, indem Sie sie eine Woche lang parallel betreiben und jedes auf ein eigenes Score-Topic veröffentlichen lassen.
Checkliste für die Bereitstellung
- Einheitlich montieren. Wird das Mikrofon versetzt, ändert sich die Basislinie; fixieren Sie es und dokumentieren Sie seine Position.
- Alle normalen Betriebsarten aufnehmen. Leerlauf, Teillast, Volllast und Anlauf klingen jeweils anders; lernen Sie sie alle oder berücksichtigen Sie den Maschinenzustand.
- Maschinenzustand als Kontext nutzen. Abonnieren Sie das Zustands-Topic der Maschine und setzen Sie die Bewertung während Produktwechseln oder Reinigungen aus.
- Schwellenwerte anhand zurückgehaltener Normaldaten festlegen, nicht anhand der Trainingsclips selbst.
- Persistenz verlangen, bevor ein Alarm ausgelöst wird.
- Privatsphäre schützen. Verarbeiten Sie Audio lokal und veröffentlichen Sie niemals Roh-Clips auf gemeinsam genutzten oder öffentlichen Topics.
- Nach Wartungen neu lernen. Ein neuer Riemen oder ein neues Lager verändert den Klang ganz legitim.
Vom Score zur Instandhaltungsmaßnahme
Anomalie-Scores werden wertvoll, wenn sie mit anderen Signalen zusammenkommen. Ein steigender akustischer Score bei gleichzeitig steigender Schwingung und Temperatur ist ein starkes Indiz; eine akustische Spitze allein, während ein Gabelstapler vorbeifährt, ist es nicht. Diese Fusion und der Schritt zur Schätzung von Ausfallzeitpunkten werden in Predictive Maintenance mit Machine Learning behandelt, während Methoden der IoT-Anomalieerkennung erklärt, wo welcher Detektor laufen sollte. Der Leitfaden zu KI und IoT ordnet akustisches Monitoring in die breitere Edge-AI-Landschaft ein.
Listener mit dem Werk verbinden
Jeder Listener ist schlicht ein MQTT-Client; eine weitere Maschine hinzuzufügen bedeutet also, ein weiteres Gerät mit eigenem Topic bereitzustellen. Das Präfix im Skript (plant1/line2/fan3) folgt bereits der ISA-95-Logik. In einem Unified Namespace (UNS) wird daraus die vollständige Hierarchie Enterprise → Site → Area → Line → Cell, etwa acme/werk-stuttgart/montage/linie-2/luefter-3/audio/score, sodass der akustische Score direkt neben Zustand, Schwingung und Temperatur derselben Maschine liegt und Instandhaltung oder MES ihn ohne Zuordnungstabellen finden. Für Experimente mit synthetischen Geräuschen genügt der kostenlose öffentliche MQTT-Broker; für Produktionsdaten ist er nicht gedacht. Für echte Maschinen verwenden Sie einen privaten Cloud-MQTT-Broker mit TLS auf Port 8883 und eigenen Zugangsdaten pro Listener. ConnectMQ zeigt jeden Listener in der nach ISA-95-Ebenen gegliederten Geräteansicht, lässt Sie Scores im Live-Topic-Explorer verfolgen und kann ohne zusätzlichen Code Schwellenwert-Alarme für das Feld score auslösen.
Mit ConnectMQ zuhören
Erstellen Sie unter app.connectmq.com einen ConnectMQ-Broker im kostenlosen Serverless-Tarif, ganz ohne Kreditkarte, tragen Sie Host und Zugangsdaten in das Listener-Skript ein und beobachten Sie, wie der akustische Score Ihrer ersten Maschine in Echtzeit erscheint.
Häufig gestellte Fragen
Welches Mikrofon sollte ich für die Audio-Anomalieerkennung verwenden?
Für die meisten hörbaren Fehler reicht ein digitales MEMS-Mikrofon oder ein ordentliches USB-Mikrofon. Für Luftlecks und beginnende Lagerschäden sollten Sie Mikrofone und Abtastraten wählen, die höhere Frequenzen erfassen.
Kann Audio-Anomalieerkennung auf einem Mikrocontroller laufen?
Einfache Bandenergie-Basislinien und kleine TinyML-Modelle laufen auf leistungsfähigen Mikrocontrollern wie dem ESP32-S3. Autoencoder auf vollständigen Spektrogrammen benötigen meist einen Raspberry Pi mit Beschleuniger oder ein Gerät der Jetson-Klasse.
Wie gehe ich mit lauten Hintergrundgeräuschen um?
Platzieren Sie das Mikrofon nah an der Maschine, lernen Sie die Basislinie unter realistischen Hintergrundbedingungen und verlangen Sie mehrere aufeinanderfolgende anomale Clips, bevor ein Alarm ausgelöst wird. Richtmikrofone helfen ebenfalls.
Ist es sicher, Audio per MQTT zu senden?
Senden Sie bevorzugt Scores und Metadaten statt Audio. Wenn Sie Clips senden müssen, verwenden Sie einen privaten Broker mit TLS und Zugangsdaten, niemals den öffentlichen MQTT-Broker.



