Entwicklung und Verifikation einer Sprachverarbeitung für das autonome Logistik-Fahrzeug ALF
Autoren: Dittmann, H.
Betreuer: Prof. Dr.-Ing. Mirek Göbel
Art: Masterarbeit
Projektlaufzeit: 04/2020 - 10/2020
Einleitung
Das autonome Logistik-Fahrzeug (ALF) ist ein Transportfahrzeug und dient als Versuchsplattform für die Entwicklung autonomer Fahrfunktionen. Das Ziel ist die automatisierte Abwicklung von Logistikprozessen an dem Standort der Hochschule Bochum. Das ALF stellt die Grundlage für verschiedene Projekte in den Bereichen des autonomen Fahrens, künstlicher Intelligenz, Model-Based Design sowie dem Model-Based Systems Engineering.
Bisherige Arbeiten am autonomen-Logistik-Fahrzeug
Das Fahrzeug wurde im Rahmen der Masterarbeit Entwicklung und Verifikation eines autonomen Logistik-Fahrzeugs von M.Sc. Dennis Hotze, M.Sc. Dominik Eickmann und Prof. Dr. Ing. Arno Bergmann an der Hochschule Bochum in Kooperation mit der Smart Mechatronics GmbH entwickelt. Nach der Entwicklung wurde in der Bachelorarbeit Implementierung einer Schlupfregelung per Model-Based Design sowie einer SLAM-Kartografierung für ein autonomes Logistik-Fahrzeug eine Driftkompensation und das Abfahren einer definierten Trajektorie bei gleichzeitiger Kartografierung der Umgebung integriert. Damit wurde die Einbindung autonomer Fahrfunktionen ermöglicht. Die vorangegangenen Arbeiten dienen als Grundlage dieses Projektes. In der Bachelorarbeit wurde das Robot Operating System (ROS) als Framework zum Datenaustausch zwischen verschiedenen Softwareartefakten eingeführt.
Motivation und Aufgabenstellung
Parallel zu der Entwicklung der Sprachverarbeitung, wurde ein Zustandsautomat entwickelt. Dieser dient zur Verwaltung von verschiedenen Betriebsmodi des Fahrzeugs, die aus der Entwicklungshistorie entstanden sind. Die Betriebsmodi behandeln verschiedene autonome Fahrfunktionen des Roboters. Die Sprachverarbeitung dient im Wesentlichen der Bereitstellung von Transitionsbedingungen für den genannten Automaten durch Sprachbefehle. Der Aufruf dieser Betriebsmodi erfolgt bisher durch Eingaben in der Eingabeaufforderung des im ALF integrierten Linux-Systems. Dabei müssen für jeden Modus verschiedene Eingaben in der Konsole getätigt werden. Der Zustandsautomat und die Steuerung dessen mit der Sprachverarbeitung vereinfachen das Anwählen dieser Betriebsmodi, da Sprachbefehle diese manuellen Eingaben ersetzen. Für diese Funktion ist es nicht notwendig, Sprache beliebigen Inhalts zu erkennen. Hinsichtlich der Aufgaben am ALF reicht ein begrenztes Vokabular, da die Anzahl der Tätigkeiten und Sprachbefehle begrenzt ist. Das Ziel ist es, dem ALF eine Interpretation von Sätzen mit definiertem abgegrenzten Inhalt (zum Beispiel "Drive to location laboratory" oder "Start to localize yourself in known environment" etc.) zu ermöglichen.
Umsetzung
Einordnung in die bestehende Systemarchitektur
Für eine Konzeptionierung wurde die Sprachverarbeitung in das bestehende System eingeordnet. Die Einordnung der Sprachverarbeitung erfolgt mithilfe der Umfeldmodellierung aus der "Conceptual design specification technique for the engineering of complex Systems“ (CONSENS). Das Verfahren dient der Modellierung von Umfeld- und Wirkstrukturen von mechatronischen Systemen und stellt eine Methode des Model Based Systems Engineering dar. Die Einordnung in das bestehende System basiert auf der Modellierung der erwähnten Bachelorarbeit. Der Informationsfluss zwischen verschiedenen Elementen wird mit Strichpunktlinien gekennzeichnet. Eine besondere Bedeutung bekommt der Informationsfluss zu dem Umfeldelement Zustandsautomat, dieser beinhaltet die Transitionsbedingungen, um die Betriebsmodi des ALF zu steuern. Die einzelnen Elemente stellen verschiedene Softwareartefakte dar. Der Framework ROS wird angewendet, um einen Datenaustausch zwischen diesen, sowie die Integration hochautomatisierter Fahrfunktionen zu ermöglichen. Die Wirkstruktur des Elements ALF wurde um den Sprachverarbeitungsprozess ergänzt, sowie in einer Wirkstruktur modelliert. Diese zeigt den Prozess des gesamten Sprachverarbeitungssystems. Dabei wird ein Audiosignal mit der vorhandenen Kinect-Sensorik aufgenommen und durch die Spracherkennungtranskribiert. Das resultierende Transkript wird einer Schlagworterkennung sowie Sprachklassifizierung unterzogen. Die Sprachsynthese gibt über den Lautsprecher des Systems entsprechende Statusinformationen an das Umfeld aus. Zur Umsetzung der entwickelten Wirkstrukturen werden verschiedene Entwicklungsumgebungen, Spracherkennungssysteme und Sprachklassifikatoren eingesetzt. Neben ROS wurden PyCharm mit der Programmiersprache Python sowie Tensorflow und Keras eingesetzt.
Automatische Spracherkennung
Die Spracherkennung verarbeitet eine Tonspur zu einem Transkript, zu diesem Zweck ist eine Sprachaufnahme von Nöten. Die Tonspur wird mit einem Mikrofon der vorhandenen Kinect-Sensorik aufgenommen und in das ROS-Netzwerk veröffentlicht. Ein Spracherkennungssystem abonniert und transkribiert nachfolgend die Sprachaufnahme und stellt das Transkript ebenfalls in dem Netzwerk bereit. Der Ausgangspunkt einer automatischen Spracherkennung, ist ein analoges Sprachsignal. Im Hinblick auf eine automatische Spracherkennung liegen zwei große Prinzipien zugrunde, die Merkmalsextraktion und Klassifikation eben jener. Die signifikanten Spracheigenschaften spiegeln sich am besten im Frequenzbereich wider und werden aus einem analogen Signal entsprechend transformiert. Ein solches Signal unterzieht sich einer Kurzzeitspektralanalyse. Dadurch entsteht ein kontinuierlicher Fluss von Merkmalsvektoren eines definierten Zeitausschnitts. Der Übergang von Zeit- in den Frequenzbereich erfolgt mittels der Diskreten Fourier-Transformation (DFT). Demnach wird das Sprachsignal in mehrere Datensequenzen zerlegt, bei der eine Sequenz die extrahierten Merkmale enthält. Die so gewonnenen Spektren beinhalten die Sprachmerkmale. Diese dienen zum Beispiel als Eingangsvektoren für ein klassifizierendes neuronales Netzwerk. Dadurch ist es möglich, den Frames einzelne Phoneme oder ganze Wörter aus dem antrainierten Vokabular zuzuordnen. Die einzelnen Zeitausschnitte ermöglichen anhand der Merkmale demnach eine Klassifizierung. Finden als Klassen zum Beispiel die verschiedenen Buchstaben des Alphabets Verwendung, so entsteht aus dem Sprachsignal ein Transkript. Als Spracherkennungssysteme werden in dieser Arbeit die offline Softwarelösungen DeepSpeech (DS), Espnet sowie Pocketsphinx (PS) eingesetzt und bezüglich eines bedienungsorientierten Vokabulars evaluiert. Die ausgewählten Softwarelösungen bieten Python Bibliotheken und ermöglichen dadurch die Integration in das Fahrzeug. Des Weiteren wird der Online-Dienst von IBM-Watson genutzt, um die Ergebnisse mit einem Cloud Computing-Dienst zu vergleichen.
Sprachklassifikation
Um eine Sprachverarbeitung in einem technischen System umzusetzen, muss aus dem Transkript eine Handlung erkannt werden. In dieser Arbeit wurden Transkripte kategorisiert, diese werden auch als Hypothesen der tatsächlich eingesprochenen Wortgruppe bezeichnet. Diese Klassifikation dient als Transitionsbedingung für den erwähnten Zustandsautomaten. Zu Beginn der Textklassifizierung mithilfe von Algorithmen des maschinellen Lernens steht erneut das Extrahieren von Merkmalen. Entsprechende Algorithmen können nicht mit den rohen Textdaten eine Klassifizierungsaufgabe lösen. Vielmehr ist eine numerische Darstellung von Wörtern, Sätzen oder ganzen Texten nötig. Möglichkeiten zur Umsetzung der numerischen Darstellung von Transkripten sind das One-Hot Encoding oder das Word Embedding. Für die Sprachklassifikatoren werden neuronale Netzwerke eingesetzt. Diese dienen als Klassifikator und erkennen Handlungen aus dem Transkript und ordnet diesen Wahrscheinlichkeiten zu. Die grundlegenden Tätigkeiten des Fahrzeugs wie zum Beispiel Fahren, Lokalisieren oder Warten bleiben dabei immer gleich. Ziele und Gegenstände können sich aber laufend ändern, sodass Textabgleichverfahren zur Erkennung von Objekten und Positionen genutzt werden. Demnach definiert sich die Menge der zu kategorisierenden Klassen zu:
Die Elemente der Menge stellen eine numerische Codierung der Kategorien dar. Dabei stehen die Elemente für Handlungen respektive Tätigkeiten des Fahrzeugs, während die Klasse lediglich eine Ausschussklasse ist. Die Ausgangswerte der verwendeten neuronalen Netze sind als diskrete Wahrscheinlichkeitsverteilung über die verschiedenen Kategorien interpretierbar. Dies tritt auf, wenn eine Transformation des Ausgangsvektors eines Netzes mit der sogenannten Softmax-Funktion zu stattfindet.
Darüber hinaus findet eine Zuweisung zwischen den numerischen Codierungen der Klassen und den tatsächlichen Handlungen des Fahrzeugs statt. Diese Klassen gelten als potenzielle Transitionsbedingungen für den erwähnten Zustandsautomaten. Um das beschriebene Ziel, Sätzen mit bedienungsorientierten Inhalt die Klassen aus Tabelle zuzuweisen, werden dafür unterschiedliche Netzwerkschichten kombiniert. Ein rekurrentes neuronales Netzwerk mit Embedding-Schicht findet Anwendung, da Wortgruppen als in Abhängigkeit stehende Datensequenzen betrachtet werden können. Weiterhin wird ein vorwärtspropagierendes neuronales Netzwerk mit One-Hot Encoding, sowie ein Vorwärtspropagierendes neuronales Netzwerk mit Embedding Schicht verwendet. Die Embedding-Schicht basiert dabei auf dem Word Embedding. Die Flatten-Schicht konkateniert die einzelnen Komponenten, sodass eine reellwertige vektorielle Darstellung eines gesamten Satzes entsteht. Speichert man die Resultate nach der Flatten-Schicht und wendet eine Hauptkomponentenanalyse an, so entstehen, je nach Trainingszustand des Netzwerkes, Bereiche in dem die Bedeutungen verschiedenster transkribierter Wortgruppen in die eingeführten Kategorien eingeordent werden können.
Evaluation
Metriken und Datensatz
Da für die Sprachklassifikation neuronale Netze eingesetzt werden, sind diese vor einer erfolgreichen Klassifikation zu trainieren. Dabei führt das ALF eine Interpretation von Sätzen mit bedienungsorientiertem Inhalt durch. Diese Sätze respektive Wortgruppen werden hinsichtlich der eingeführten Kategorien klassifiziert. Hinsichtlich der Lösung dieses spezifischen Ziels, wird ein eigener, auf das Problem angepasster Datensatz beziehungsweise Textkorpus der Form
Dieser repräsentiert eine Menge aus 462 Grundwahrheiten mit einer zugehörigen Kategorie . Aus den erstellten Grundwahrheiten entsteht das bedienungsorientierte Vokabular. Der Datensatz wird anschließend in einen Trainings- und Validierungsdatensatz aufgeteilt. Dies erfolgt durch eine zufällige Auswahl der darin enthaltenden Grundwahrheiten samt zugehöriger Klassen. Dadurch werden entwicklungsbedingte Häufungen von bestimmten Wortgruppen beziehungsweise Sätzen in einen der beiden resultierenden Datensätze vermieden. Das Verhältnis der Teilung beträgt drei zu eins. Daraus resultiert der Trainingsdatensatz 346 Wortgruppen, sowie der Validierungsdatensatz mit 116. Die Evaluation ausschließlich mit dem Validierungsdatensatz würde nur den Prozess der Sprachklassifikation bewerten. Die gesamte Sprachverarbeitung besteht, jedoch aus mehreren Schritten. Darüber hinaus steht die Klassifikation in Abhängigkeit zum Transkript. Das Evaluieren nur mit dem Validierungsdatensatz, lässt die genannte Abhängigkeit außer Acht, da eine Hypothese in nahezu jedem Vorgang mit auftretender Wortfehlerrate zu klassifizieren ist.
Mithilfe der angelegten Datensätze werden Audiodateien aufgenommen.
Darauf befinden sich Tonaufnahmen mit Sätzen aus der zugehörigen Datenmenge,
welche von unterschiedlichen Sprechern aufgenommen wurden. Die Sprecher waren
in diesem Fall 24 synthetische Stimmen, welche sich in Akzent und Qualität unterschieden. Weiterhin sprechen 12 Probanden 10 zufällig ausgewählte Sätze des gesamten Datensatzes ein. Die drei offline Spracherkennungssysteme erzeugen anhand des Trainingdatensatzes
Hypothesen H, welche zusammen mit den Grundwahrheiten des Datensatzes zum Trainieren der Netzwerke genutzt werden. Die Gesamtanzahl der Trainingssätze betrug daher . Mithilfe des Validierungsdatensatz und der aller vier verwendete Spracherkennungssysteme werden Hypothesen erzeugt, die als Testsätze genutzt werden. Daraus entsteht die Gesamtanzahl der zu überprüfenden Sätze. Die zu den Hypothesen zugehörigen Klassen wurden dabei im Transkriptionsprozess der Spracherkennungssysteme gespeichert. Die Sätze zur Validierung werden aus dem Validierungsdatensatz entnommen. Das Training der Netzwerke erfolgte mit 200 Lernepochen und einer Batch Size von 50. Nach jeder Lernepoche fand eine Kalkulation der Genauigkeiten statt.
Ergebnisse am Testdatensatz
Verifikation des Datensatzes
Fazit und Ausblick
→ zurück zum Hauptartikel: Studentische Arbeiten