eurofunk Kappacher GmbH
From Sound to Sense
Description
Sabine Hasenleithner von eurofunk Kappacher spricht in ihrem devjobs.at TechTalk über die technischen Hintergründe von Sprach Erkennung im Notruf Kontext und zeigt in einer Live Demo eine mögliche Implementierung.
Beim Videoaufruf stimmst Du der Datenübermittlung an YouTube und der Datenschutzerklärung zu.
Video Zusammenfassung
In From Sound to Sense zeigt Sabine Hasenleithner (eurofunk Kappacher GmbH), wie man mit PyTorch und TorchAudio ein kompaktes Audio-Kommandoerkennungsnetz trainiert und deployt – motiviert durch Sprachbarrieren im Notrufumfeld. Mit dem Speech Commands-Datensatz (35 Wörter, ~105k 1‑Sekunden-WAVs, 2.600 Sprecher) trainiert sie direkt auf Waveforms, erreicht nach 21 Epochen ~85% Genauigkeit und exportiert das Modell via TorchScript (ca. 138 KB, ~26k Parameter) für eine Flask-Demo; wichtig sind konsistente 8‑kHz-Sample-Rate und der Eval-Modus ohne Dropout/BatchNorm. Zuschauer erhalten einen reproduzierbaren End-to-End-Workflow von Datenimport über Training (Colab/Anaconda) bis Deployment, inklusive Speichern/Laden, Label-Mapping und praxisnahen Fallstricken wie CUDA-Treibern.
Von Sound zu Sense: Sprachbefehle mit PyTorch und TorchAudio trainieren – ein technischer Deep Dive aus „From Sound to Sense“ von Sabine Hasenleithner (eurofunk Kappacher GmbH)
Kontext und Motivation: Warum „Sound to Sense“ im Kontrollzentrumsumfeld zählt
In „From Sound to Sense“ zeigt Sabine Hasenleithner (eurofunk Kappacher GmbH), wie man mit einem PyTorch-Tutorial ein schlankes neuronales Netz für Sprachbefehle trainiert – vom Rohsignal bis zur einsatzfähigen Inferenz. Der praktische Fokus passt zu ihrem Arbeitsalltag: AI-unterstützte Übersetzungs- und Transkriptionssysteme im Backend, mit klarer Ausrichtung auf reale Anforderungen von Leitstellen.
Die Motivation ist handfest: Bereits 2011 wurde für die europäische Notrufnummer 112 berichtet, dass 28 % der Anrufenden Sprachprobleme haben. Für eine Nummer, die „alle“ erreichen soll, ist das ein strukturelles Risiko. Die European Emergency Number Association (EENA) rief daher zu speziellen KI-Initiativen auf – etwa zur Spracherkennung, Sprachidentifikation, Transkription, Übersetzung und (wo nötig) Unterstützung der Triage. Genau in diese Richtung zielt Hasenleithners Praxisbeispiel: robuste, kleine Modelle für präzise Aufgaben, die sich gut in bestehende Systeme integrieren lassen.
Das Werkzeugset: PyTorch und TorchAudio
Hasenleithner baut auf PyTorch – einer Open-Source-Bibliothek, deren Fundament Tensors und neuronale Netze sind. Zentral im Vortrag ist außerdem TorchAudio, ebenfalls Open Source. TorchAudio bringt:
- Ein- und Ausgabe für Audiodaten
- Signal- und Datenverarbeitung (Transforms)
- Zugriff auf kuratierte Datensätze, darunter der hier verwendete Speech-Commands-Datensatz
Diese Kombination erlaubt es, vom WAF-File bis zur Vorhersage in einem konsistenten Workflow zu bleiben. Besonders pragmatisch: Das gesamte Tutorial lässt sich in Google Colab starten – ein Klick auf das Colab-Icon genügt – oder lokal in einem Jupyter-Notebook ausführen.
Vorsicht bei lokaler GPU: Anaconda als Sandbox
Wer lokal mit GPU trainiert, sollte die CUDA-Treiber im Blick behalten. Hasenleithner warnt ausdrücklich davor, „am falschen Knopf zu drehen“ – ein defekter NVIDIA-Treiber kann schnell zu einem Black Screen führen. Ihr Tipp: mit Anaconda arbeiten. Eine isolierte Umgebung reduziert das Risiko, das Host-System durch Treiberexperimente zu zerschießen.
Der Datensatz: Speech Commands
Im Tutorial wird der Speech-Commands-Datensatz aus TorchAudio genutzt. Die Eckdaten, die Hasenleithner hervorhebt:
- Rund 105.000 Äußerungen
- 35 verschiedene Wörter (Kommandos)
- Jede Audiodatei ist maximal 1 Sekunde lang, gespeichert als WAV
- Etwa 2.600 Sprecherinnen und Sprecher
- Gesamtgröße ca. 3,8 GB
Die Verteilung der Wörter ist „schön“ balanciert – kein einzelnes Kommando dominiert, was das Training fairer macht. Die Liste umfasst Richtungsangaben (etwa „backward“, „forward“), Tiere („cat“, „dog“), Ziffern (0–9) und mehr. Für ein Befehlsmodell im Leitstellenkontext ist diese Bandbreite ein guter Startpunkt, weil sie kurze, klar abgegrenzte Tokens hat.
Vom Rohsignal aus denken: Waveform statt Merkmalsextraktion
Das Tutorial trainiert direkt auf Waveforms – also auf dem zeitdiskreten Amplitudensignal. Eine Waveform ist ein Zahlenarray mit positiven, negativen und Nullwerten über die Zeit. Hasenleithner deutet das anschaulich: Bei „cat“ lassen sich Peaks rund um den Vokal und ein Stopp am „t“ erkennen. Statt auf Spektrogramme oder MFCCs zu wechseln, bleibt das Beispiel bewusst beim Rohsignal. Das ist didaktisch stark: Man sieht unmittelbar, wie aus „Zahlen über die Zeit“ Bedeutung extrahiert wird.
Der Trainingsablauf in PyTorch: kompakt, reproduzierbar, schnell
Das offizielle Tutorial führt entlang eines klaren Pfads:
- Datensatz importieren
- Daten formatieren
- Netzwerk definieren
- Trainieren und testen
- Fazit
Der Clou ist die Geschwindigkeit: Bereits nach 21 Epochen erreicht das Modell eine Genauigkeit von etwa 85 %. Für ein minimalistisches Setup mit Waveform-Input ist das ein sehr gutes Ergebnis. Hasenleithner betont, dass oberhalb von 80 % man durchaus zufrieden sein kann – und dass nach 21 Epochen keine nennenswerte Verbesserung mehr eintritt. Interpretation: Entweder braucht es mehr Daten oder Änderungen in der Datenaufbereitung/Architektur, um die Kurve weiter nach oben zu schieben.
Praxis-Hinweis: Sample Rate und Kanäle
Für die Inferenz ist das Audio-Frontend entscheidend. Das gezeigte Modell erwartet eine Abtastrate von 8.000 Hz. Wer ein Audio mit abweichender Samplingrate hineinschiebt, darf sich nicht wundern, wenn die Erkennung kippt. Ebenso sind Länge und Kanalzahl zu beachten. Das Frontend sollte konsequent auf das Trainingsformat normieren.
Speichern und Deployen: TorchScript, eval() und kleine Modelle
Nach dem Training folgt der Übergang ins Deployment. Hasenleithner empfiehlt TorchScript, um das Modell zu exportieren und später in Anwendungen zu laden. Wichtig ist der Moduswechsel:
- Vor der Inferenz
model.eval()aufrufen, damit Dropout und Batch-Normalization so wirken, wie es für die Nutzung (nicht das Training) gedacht ist. - Mit TorchScript speichern, um das Modell stabil in produktionsnahe Umgebungen zu bringen. In dieser Form ist es nicht mehr zur weiteren Feinjustierung gedacht – es dient der robusten Ausführung.
Die Größenordnung ist bemerkenswert: Das resultierende Modell hat etwa 138 KB und rund 26.000 Parameter – winzig im Vergleich zu großen Sprachmodellen. Zum Vergleich nannte Hasenleithner das „Whisper tiny“-Modell mit 39 Millionen Parametern und einer geschätzten Größe „zwei bis drei Gigabyte“. Genau diese Asymmetrie macht das Speech-Commands-Modell attraktiv für Edge-nahe oder latenzkritische Szenarien.
Die Inferenz-Pipeline: vom WAV zum Label-String
Der Ablauf von der Aufnahme bis zur Vorhersage folgt einem soliden Muster:
- Waveform laden (TorchAudio übernimmt das IO)
- Waveform in einen Tensor transformieren
- Optional: auf das gewünschte Device bewegen (CPU oder GPU)
- Für das Modell passend „unsqueezen“ (Batch-Dimension o. ä.)
- Vorwärtsdurchlauf: Das Modell liefert eine Wahrscheinlichkeitsverteilung über alle Klassen
- Den wahrscheinlichsten Index bestimmen (Top-1)
- Index-zu-Label-Abbildung anwenden und den String zurückgeben
Hasenleithner beschreibt diesen Weg als Herzstück ihrer Flask-Demo. Ein labels-Array hält die Zuordnung von Indizes zu Wörtern, eine Hilfsmethode ermittelt den Top-Index, und die finale Ausgabe ist eine menschenlesbare Zeichenkette für die Visualisierung.
Live-Demo mit Flask: simpel, zweckmäßig, erkennt Befehle
Für die Demo hat Hasenleithner eine kleine Flask-Anwendung gebaut. Die Oberfläche ist bewusst minimal. Wichtiger ist die Funktion: Die App nimmt Ton auf, leitet ihn durchs Modell und zeigt den erkannten Befehl an.
In der Session testet sie mehrere Beispiele:
- „cat“ – korrekt erkannt
- „backward“ – korrekt erkannt
- „one“ – korrekt erkannt
- „Sabine“ – nicht in der Klassenliste; das Modell gibt die „beste“ Annäherung zurück
Auch hier wieder der Praxisbezug: Nicht jeder Input ist abgedeckt. Das Modell liefert dann einen plausiblen, aber nicht notwendigerweise semantisch korrekten Klassenvorschlag aus dem bekannten Wortschatz. Für produktive Systeme könnte man eine Unknown/Reject-Strategie ergänzen – der Talk bleibt jedoch beim gezeigten Tut-Umfang.
Lokales Setup: Anaconda, TorchAudio und robuste IO
In ihrem Code verwendet Hasenleithner TorchAudio konsequent, um IO und Formatdetails zu kapseln. Das spart Zeit, vermeidet Fehler und konzentriert die Logik auf das Wesentliche: Laden, Transformieren, Vorhersagen. Sie betont nochmals den Vorteil von Anaconda, gerade wenn lokal auf GPU trainiert wurde und die Umgebung sauber getrennt bleiben soll.
Lektionen für Engineering-Teams
Aus dem Talk lassen sich mehrere handfeste Lehren ziehen:
- Kleine Modelle sind mächtiger, als man denkt: 138 KB, ~26k Parameter und trotzdem ~85 % Genauigkeit nach 21 Epochen – das reicht für viele Befehls-Use-Cases.
- Datenformat ist alles: Wer das Modell mit falscher Samplingrate (hier: 8 kHz) oder falscher Kanalzahl füttert, verschenkt Performance oder bricht die Inferenz.
- Balancierte Datensätze zahlen sich aus: Speech Commands verteilt seine Klassen gut, was das Training stabilisiert.
- Training hat natürliche Plateaus: Ab einem Punkt wird’s nicht besser – dann sind Daten, Features oder Architekturen die Stellhebel, nicht einfach „mehr Epochen“.
- Produktionsreife erfordert Modusdisziplin:
eval()vor Inferenz, Dropout/BatchNorm richtig behandeln, TorchScript für stabile Deployments. - Lokale GPU-Setups brauchen Pflege: Anaconda minimiert Risiko, Colab senkt Hürden und vermeidet Treiberfallen.
Von der Demo zur Praxis: Was wir angewandten Teams empfehlen
Ohne über den Vortrag hinaus zu spekulieren, ergeben sich klare Handlungsempfehlungen für ähnliche Vorhaben:
- End-to-End-Denken: Bereits beim Datensatz die spätere Inferenz bedenken (Samplingrate, Kanäle, Längen). Das reduziert Friktion im Deployment erheblich.
- Tooling konsequent nutzen: TorchAudio übernimmt IO und grundlegende Signalaufbereitung. Das macht die Codebasis schlanker und wartbarer.
- Evaluationswege klären: Eine einfache Top-1-Logik reicht für Demos. Für kritische Systeme lohnt sich ein Schwellenwert oder eine Unknown-Klasse.
- Modelllebenszyklus planen: Wenn TorchScript der Zielpfad ist, die nachträgliche Anpassbarkeit sauber kommunizieren – das exportierte Artefakt ist für Ausführung, nicht für weiteres Feintuning.
Zentrale Zitate/Paraphrasen aus der Session
- Zur Motivation: 28 % der 112-Anrufenden hatten laut 2011er Bericht Sprachprobleme – EENA rief zu KI-Projekten für Erkennung, Identifikation, Transkription, Übersetzung und Triage auf.
- Zu PyTorch/TorchAudio: Offene Bibliotheken, die Tensors/Netze und Audio-IO/Signalverarbeitung plus Datensätze kombinieren – das Speech-Commands-Set stammt direkt von TorchAudio.
- Zum Training: „Nach 21 Epochen bereits ~85 % Genauigkeit“ – schnell, solide, für das Setup bemerkenswert.
- Zum Deployment: Mit TorchScript exportieren,
eval()aktivieren, Dropout/BatchNorm korrekt behandeln. Das Modell ist dann für die Nutzung gedacht, nicht für weiteres Training. - Zu Größenordnungen: ~138 KB Modell, ~26k Parameter. Im Vergleich nannte sie „Whisper tiny“ mit 39 Mio. Parametern und geschätzten „zwei bis drei GB“.
Fazit: „From Sound to Sense“ als Blaupause für schlanke, integrierbare ML-Bausteine
Der Talk „From Sound to Sense“ von Sabine Hasenleithner (eurofunk Kappacher GmbH) zeigt, wie man mit wenig Ballast ein praxistaugliches Audiosystem aufsetzt – vom Datensatz über das Training bis zur Inferenz in einer kleinen Web-App. Die Kernbotschaft: Wenn das Problem gut geschnitten ist (kurze Befehle, klar definierte Klassen), liefern kleine, gut trainierte Modelle erstaunlich zuverlässige Ergebnisse. Für Leitstellen, in denen Geschwindigkeit, Robustheit und Integrationstauglichkeit zählen, ist das genau der richtige Ansatz.
Wer PyTorch und TorchAudio noch nicht in dieser Klarheit verknüpft hat, findet in diesem Walkthrough eine Lernkurve mit unmittelbarem Payoff: balancierte Daten, sauberes Audio-Frontend, reproduzierbares Training, diszipliniertes Deployment – und am Ende ein Modell, das tut, was es soll.
Weitere Tech Talks
eurofunk Kappacher GmbH Effortless Versioning
Stefan Höller von eurofunk Kappacher zeigt in seinem devjobs.at TechTalk, wie das Unternehmen die Versionsverwaltung bei langen Produktzyklen mithilfe von Semantic Release gestaltet hat.
Jetzt anseheneurofunk Kappacher GmbH Application Load Testing with k6
Daniel Knittl-Frank von eurofunk Kappacher spricht in seinem devjobs.at TechTalk darüber, wie die hohen Performance Anforderungen der im Unternehmen entwickelten Software erfüllt werden.
Jetzt anseheneurofunk Kappacher GmbH Cypress Component Tests
Patrick Pichler von eurofunk Kappacher demonstriert in seinem devjobs.at TechTalk die Herangehensweise des Teams, wie sie Component Tests mit cypress durchführen.
Jetzt ansehen
Weitere Tech Lead Stories
eurofunk Kappacher GmbH Thomas Ronacher, Head of Technical Support bei eurofunk Kappacher
Thomas Ronacher von eurofunk Kappacher spricht im Interview über die Struktur des Teams, die verwendeten Technologien und wie der Bewerbungs- und Onboardingprozess abläuft.
Jetzt anseheneurofunk Kappacher GmbH Johanna Blum, Release Train Engineer bei eurofunk Kappacher
Johanna Blum von eurofunk Kappacher beleuchtet im Interview die Teamkultur, die wichtigsten Technologien im Einsatz und die Besonderheiten des Recruiting-Prozesses.
Jetzt ansehen
Weitere Dev Stories
eurofunk Kappacher GmbH Viktoria Haselsteiner, Scrum Master bei eurofunk Kappacher
Viktoria Haselsteiner von eurofunk Kappacher spricht im Interview über ihren Einstieg in die Welt von Scrum, welche Fähigkeiten sie dabei als besonders hilfreich erlebt hat und worauf es ihrer Meinung nach in der täglichen Arbeit wirklich ankommt.
Jetzt anseheneurofunk Kappacher GmbH Maximilian Spiesmaier, IT Security Consultant bei eurofunk Kappacher
Maximilian Spiesmaier von eurofunk Kappacher teilt im Interview seine Erfahrungen aus der IT Security, welche Herausforderungen er im Arbeitsalltag meistert und wie man am besten in den Beruf startet.
Jetzt anseheneurofunk Kappacher GmbH Valentin Zintl, Junior Development Engineer bei eurofunk Kappacher
Valentin Zintl von eurofunk Kappacher erzählt im Interview über seinen Karriereweg, welche Aufgaben ihn täglich erwarten und welche Fähigkeiten besonders für den Einstieg wichtig sind.
Jetzt anseheneurofunk Kappacher GmbH Johannes Festi, Trainee Software Development bei eurofunk Kappacher
Johannes Festi von eurofunk Kappacher gibt im Interview Einblicke in den Arbeitsalltag als Software Development Trainee, wie er dazu gekommen ist und was seiner Ansicht nach wichtig für den Einstieg ist.
Jetzt ansehen