Spracherkennung mit dem Atari, Teil 2

Heute werden dem guten Atari so richtig die Ohren aufgehen, denn es geht voll hinein in die Praxis der Spracherkennung. Stereoanlage einschalten, Mikro einklinken, Sampler anschließen und das neue Zeitalter beginnt.

Bevor wir uns in die Praxis stürzen, schließen wir unseren Ausflug in die Theorie ab. Bei der im letzten Teil angesprochenen »dynamischen Programmierung« (auch »Dynamic Time Warping« = DTW genannt) geht es darum, die unterschiedlich lange Sprechdauer auszugleichen. Die gesampelten Sprachproben werden in »Scheiben« gleicher Dauer aufgeteilt, wodurch natürlich deren Anzahl variiert. Zu jeder Zeitscheibe gehört nun ein Satz von Erkennungsmerkmalen (Merkmalsvektoren). Dieser enthält etwa den Frequenzgang und den Amplitudenverlauf. Der Erkennungsvorgang verlangt, daß das gesprochene Wort mit jedem dem System bekannten Wort verglichen wird.

Um nun eine Wortprobe mit fünf Zeitscheiben mit einem Referenzwort mit sieben Zeitscheiben zu vergleichen, legen wir eine Tabelle mit sieben Spalten und fünf Zeilen an. Die Spalten entsprechen den Merkmalsvektoren des Referenzwortes, die Zeilen denen der Probe. Dabei ist links bzw. unten der erste Vektor und rechts bzw. oben der letzte. Die Einträge der Tabelle sind die Abstände der Vektoren (siehe Bild 1). Beispielsweise ist der Eintrag in der 4. Zeile und 7. Spalte der Abstand zwischen dem 4. Merkmalsvektor der Probe und dem 7. Merkmalsvektor des Referenzwortes.

Zur Überprüfung der Ähnlichkeit der beiden Wörter suchen wir einen zusammenhängenden Pfad von links unten nach rechts oben, dessen Summe über seine Einträge möglichst klein ist. Konkret sieht dies so aus: Man startet links unten in der Tabelle und schaut sich den Eintrag darüber, rechts davon und schräg rechts darüber an. Den Eintrag mit dem kleinsten Wert nimmt man als neuen Startpunkt und fährt solange fort, bis man rechts oben angelangt ist. Dabei fällt auf, daß theoretisch ein Pfad entstehen könnte, der über die rechte untere Ecke geht, also das Ende des Referenzwortes mit dem Anfang der Probe vergleicht. Um solche Fälle auszuschließen, deklariert man solche extremen Tabelleneinträge als ungültig und zwingt somit den Pfad, in der Umgebung der Diagonalen zu bleiben.

Künstliche Neuronale Netze

Einen ganz anderen Weg der Erkennung gehen die sagenumwobenen »Künstlichen Neuronalen Netze« (KNN). Weil das Ganze aber ein Buch für sich ist, soll es hier nur kurz angerissen werden. Neuronale Netze versuchen die Struktur unseres Gehirns nachzuahmen. Das System besteht also aus einer Anzahl von Neuronen, die miteinander verknüpft sind. Jedes Neuron - außer den Eingabeneuronen - bekommt von einem oder mehreren anderen Neuronen Werte übertragen, die es verrechnet. Der errechnete Wert wird an andere Neuronen weitergegeben. Die Ausgangsneuronen geben ihre Werte allerdings nicht weiter. Die Größe des Ausgangswerts entscheidet über die Wahl des erkannten Wortes.

Als Eingangsdaten dienen wieder die üblichen extrahierten Merkmale. Wo ist also der Unterschied zu den konventionellen Systemen? Bei KNNs wird während der Trainingsphase dem System nur mitgeteilt, ob es ein Wort richtig erkannt hat oder nicht. Daraufhin ändert das System selbständig (natürlich anhand vorgegebener Regeln) einige Faktoren der Berechnungsfunktionen seiner Neuronen. Man weiß aber im Prinzip nicht, was und wie das Netz »gelernt« hat. Andere Spracherkennungssysteme arbeiten mit statistischen Verfahren. Wer Näheres hierzu erfahren möchte, sollte einmal einen Blick in [1] werfen.

Der Entscheider

Allen Verfahren gemeinsam ist, daß sie eine »Aussage« über die Ähnlichkeit zwischen der Wortprobe und den bekannten Wörtern liefern. Diese muß der Algorithmus jedoch noch interpretieren, denn auch für ein falsches, unbekanntes Wort oder ein Störgeräusch wird eine solche Aussage getroffen. Ein Entscheider muß also noch beurteilen, ob eventuell nur »Müll« erkannt wurde. Dazu kontrollieren wir, wie eindeutig das Ergebnis ist. Ein zufälliges Störgeräusch wird meistens mehreren Wörtern gleich gut oder schlecht entsprechen. Ebenso aufschlußreich ist allerdings, wie groß die Ähnlichkeit in absoluten Zahlen ist. Wenn beispielsweise die Summe der Merkmalsvektorabstände des erkannten Wortes einen vorher festgelegten Wert übersteigt, dann wird die Wortprobe als »nicht klassifizierbar« zurückgewiesen.

Störverminderung

Ein wichtiger Aspekt beim Praxiseinsatz ist die Störverminderung. Anders als im Labor oder einer ruhigen Computerecke, sind in der Realität oft noch weitere Geräuschquellen vorhanden oder das Sprachsignal wird verzerrt (Telefon). Prinzipbedingt wird zwischen »einkanaligen« und »mehrkanaligen« Störminderungssystemen unterschieden.

Einkanalige Systeme arbeiten mit nur einem Mikrophon; sei es aus Kostengründen oder weil es nicht anders möglich ist (Telefon). Aus diesem Grund versucht die Spracherkennung, das Signal in Sprach- und Störanteil zu zerlegen, um nicht erwünschte Bestandteile zu eliminieren. Ein Ansatz ist, zunächst die Pausen zwischen den Wörtern zu finden, um dann die »Restgeräusche« in diesen Pausen als Störgeräusch zu nehmen. Über eine Zerlegung des Eingangs- und Störsignals in ihre Frequenzanteile Fourier-Tranformation), dämpfen wir die störenden Frequenzen. Dies setzt aber voraus, daß die Störungen sich nicht mit der Zeit ändern.

Das Löschen beliebiger Störungen benötigt ein mehrkanaliges Störverminderungssystem. Neben dem Sprachsignal nimmt man mit den zusätzlichen Mikrofonen die verschiedenen Störgeräusche auf. So muß nur noch die richtige Gewichtung der einzelnen Anteile gefunden werden, um diese aus dem Sprachsignal zu eliminieren.

TASS

TASS steht für »TOS-Automatische-Spracherkennungs-Software« und befindet sich auf der TOS-Diskette dieser Ausgabe. Das Programm benötigt eine Bildschirmauflösung von mindestens 640x400 Punkten und läuft auf allen ST-, STE- oder TT-Modellen. Allerdings brauchen Sie noch einen 8-Bit-Sampler der Firma Galactic (oder kompatible), ein Mikrofon und einen Mikrofonverstärker (Stereoanlage, Mischpult etc.). Nachdem Sie das Mikrofon über den Verstärker an den Sampler angeschlossen haben, starten Sie bitte das Programm.

Wenn Sie sich von der Ernüchterung der kläglichen Menüleiste erholt haben, sollten Sie unter »Arbeit« den Punkt »Lernen/Erkennen ... « wählen. Im anschließenden Dialog wählen Sie den Button »neues Wort« und geben »öffnen« ein. Das eben gewählte Wort erscheint nun links in der Liste, in der 30 Einträge Platz finden.

Am Rand neben den Wörtern steht jeweils eine Zahl, die angibt, wie oft das Wort bereits trainiert wurde (im Augenblick 0-mal). Geben Sie zunächst noch drei weitere Wörter (z.B. Schließen, OK und Abbruch) ein.

Training

Um TASS Wörter beizubringen, klicken Sie mit der Maus eines der Wörter in der Liste an und wählen dann »Lernen«. Die Alertbox zeigt noch einmal, welches Wort trainiert werden soll. Drücken Sie jetzt auf Return und sprechen Sie das Wort aus. Keine Hektik dabei; das Programm löscht Pausen am Anfang und Ende der Aufnahme selbständig.

Nach einer kurzen Auswertungsphase kehrt wieder Ruhe ein. Wenn Sie nicht zu laut oder leise gesprochen haben, ist die Anzahl der Trainingsdurchläufe für dieses Wort um eins erhöht worden. Beim Trainieren sollten Sie darauf achten, daß Sie die Wörter deutlich sprechen, ruhig etwas übertrieben. Wenn Sie alle Wörter mindestens einmal trainiert haben, testen Sie Ihren Lehrling über »Erkennen«.

Nach der Auswertung erscheint nun unten rechts in der Box das Analyse-Ergebnis. Das oberste Wort hat immer 999 oder 1000 Punkte und somit die geringste Abweichung von der Eingabe. Darunter sind die nächstbesten Wörter in der Reihenfolge ihrer Abweichung. Mit dem Button »Wort löschen« eliminieren Sie das selektierte Wort aus der Liste und »Alles löschen« schickt diese komplett ins Nirwana. Der »Analyse«-Button schließlich führt in die Analysebox.

Genaue Analyse

Hier können Sie dem Programm in die Karten schauen. Genau wie vorher gibt es die Möglichkeit, Wörter erkennen zu lassen, allerdings nicht mehr zu trainieren. Dafür sehen Sie aber, wie groß die Abweichung für jedes der fünf Erkennungsmerkmale ist. Außerdem lassen sich hier die Gewichtungen der Merkmale beeinflussen und einzeln an- und ausschalten.

Über Pfeiltasten - jeweils links und rechts neben dem Gewichtungsfaktor - verändern Sie bequem die Gewichtungen der einzelnen Merkmale. Anschließend klicken Sie auf den Button »Analyse neu berechnen«. »Länge« ist dabei die gesamte Wortlänge in Bytes. »Amplitude« untersucht den Lautstärkeverlauf anhand der Durchschnittslautstärke jedes Zeitintervalls. Die Anzahl der Intervalle ist fest, die Länge der Intervalle variiert also. Mit »Nulldurchgänge« ermittelt TASS grob den Frequenzverlauf, indem das Programm für jedes Zeitintervall die Anzahl der Bytes pro Nulldurchgang berechnet. »Werteverteilung« zählt, wie oft jede der 128 Lautstärkestufen angenommen wird, »Sprüngeverteilung« stellt fest, wie oft jede der 256 möglichen Differenzen zwischen zwei aufeinanderfolgenden Samplewerten auftritt. Genauere Informationen zu den einzelnen Merkmalen finden Sie im nächsten Kursteil.

Die Parameter

Unter dem Menüpunkt »Arbeit« finden Sie auch den Eintrag »Parameter...«. In der Parameterbox können die wichtigsten Einstellungen verändert werden. Für den Notfall stehen hinter den Editfeldern jeweils die Standardwerte.

»Timerteiler« steuert die Samplingrate und hat damit auch Einfluß auf das Erkennungsmerkmal »Länge«, da dieses in Byte und nicht in Sekunden gespeichert wird. Die Samplefrequenz »f« berechnet sich folgendermaßen: f = 153500Hz/Timerteiler. Standardeinstellung sind hier 7680 Hz, d.h. die zur Spracherkennung relevanten Frequenzen bis 4 kHz bleiben fast komplett berücksichtigt.

Unter »Samplingspeicher« stellen Sie den Samplespeicher für die Aufnahme ein. Wenn Sie diesen Wert durch die Samplefrequenz teilen, erhalten Sie die Sampledauer.

Die Parameter »minimaler« bzw. »maximaler Verstärkungsfaktor« bestimmen, innerhalb welchen Toleranz-bereichs die Durchschnittslautstärke schwanken darf. Das Programm berechnet hierfür zunächst die Durchschnittslautstärke des Samples und daraus den Verstärkungsfaktor, mit dem Sie das Signal optimal aussteuern. Liegt dieser Faktor über oder unter dem maximalen bzw. minimalen Verstärkungsfaktor, ist das Sample zu laut bzw. zu leise. »Anzahl der Zeitintervalle« legt fest, in wieviele Intervalle TASS das Sample zur Bestimmung des Amplituden- bzw. Nulldurchgängeverlaufs zerlegt. Wenn Sie diesen Parameter ändern, löschen Sie damit die aktuelle Wortliste. Umgekehrt verändern Wortlisten mit anderer Intervalzahl diese Einstellung. Die restlichen Parameter erläutern wir Ihnen zusammen mit der Programmierung im nächsten Kursteil. Solange sollten Sie diese unbeachtet lassen.

Speichern und Laden

Über den Menüpunkt »Datei« sichern und laden Sie Wortlisten und deren Parameter. »Analyse-Daten speichern ...« schreibt dabei nur die Wortliste auf Diskette (Endung ».LSN«). Etwaige Abweichungen der Parameter und Gewichtungen von der Standardeinstellung halten Sie mit »Parameter speichern ... « (Endung ».TAS«) fest. Einzige Ausnahme ist der Parameter »Anzahl der Zeitintervalle«, den TASS zusammen mit den Wortlisten speichert.

Damit sind Sie für erste Gehversuche in Richtung Spracherkennung gewappnet. Wenn Sie kurze und ähnlich klingende Wörter vermeiden, sind bei leiser Umgebung Erkennungsraten von über 90% kein Problem. Die Treffsicherheit bei schwierigen Wörtern läßt sich erhöhen, indem das Wort zweimal in die Wortliste aufgenommen wird, jeweils mit leicht unterschiedlicher Aussprache. Eine gute Anzahl von Trainingsdurchläufen ist übrigens drei- bis sechsmal pro Wort. Im nächsten und letzten Kursteil geht es dann hauptsächlich um die konkrete Programmierung von TASS. Viel Spaß beim Experimentieren. (ah)

Literaturhinweis:

[1] Klaus Fellbaum, „Elektronische Sprachverarbeitung“, Franzis /erlag München, ISBN 3-7723-6532-9


Arno Oesterheld
Aus: TOS 02 / 1993, Seite 79

Links

Copyright-Bestimmungen: siehe Über diese Seite