15.02.2013 Aufrufe

Laborübung Spracherkennung

Laborübung Spracherkennung

Laborübung Spracherkennung

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Laborübung</strong> <strong>Spracherkennung</strong><br />

In dieser <strong>Laborübung</strong> sollen Sie mit einem einfachen Spracherkenner experimentieren, der<br />

zwischen den Wörtern ” Ja“ und ” Nein“ unterscheiden kann. Der Erkenner arbeitet wie viele<br />

industriell eingesetzte Systeme mit statistischer Modellierung durch Hidden Markov Modelle<br />

(HMM). In der <strong>Laborübung</strong> werden Sie einige Experimente mit selbst aufgenommener<br />

Sprache durchführen.<br />

Lesen Sie die Aufgabenstellung vor Ihrer Übung durch. Aufgabe 1 sollte<br />

schon vor der Übung von jedem Teilnehmer bearbeitet und handschriftlich<br />

gelöst werden. Für eine erfolgreiche Teilnahme muß ein Versuchsprotokoll<br />

angefertigt werden, es genügt eine handschriftliche Ausführung, die während<br />

des Versuchs erstellt werden kann.<br />

Inhaltsverzeichnis<br />

1 Einführung 1<br />

2 Hidden Markov Modelle 4<br />

3 Problemstellung der <strong>Laborübung</strong> 7<br />

4 Aufgaben 8<br />

1 Einführung<br />

In der maschinellen <strong>Spracherkennung</strong> möchte man algorithmisch aus einem gegebenen<br />

Sprachsignal die vom Sprecher produzierten Laute, Wörter oder Sätze erkennen. Mögliche<br />

Anwendungsgebiete für die <strong>Spracherkennung</strong> sind unter anderem die Steuerung von Maschinen<br />

durch Sprache (z. B. Autotelefon: Herstellen einer Verbindung durch Sprachkommandos),<br />

die hörende Schreibmaschine (z. B. DragonDictate, VoiceType), Dialogsysteme mit<br />

gesprochener Sprache als Dialogmedium (engl. spoken language dialog system (SLDS), Man<br />

kann <strong>Spracherkennung</strong>ssysteme bezüglich der verwendeten Technologie, des unterstützten<br />

Wortschatzes, der vom Benutzer verlangten Sprechweise, der Sprecherabhängigkeit sowie<br />

der der Erkennung zugrundeliegenden Einheiten unterscheiden.<br />

Technologie Bezüglich der verwendeten Technologie kann man <strong>Spracherkennung</strong>ssysteme<br />

grob zwischen regelbasiert/symbolisch und konnektionistisch unterscheiden. Den konnektionistischen<br />

Verfahren ist gemein, daß sie ihr phonetisches Wissen aus großen Datenmengen<br />

(Trainingsdaten) nahezu selbständig erwerben, während zur Implementierung regelbasierter<br />

Ansätze i.a. phonetisches Expertenwissen aufwendig in ein <strong>Spracherkennung</strong>s-


<strong>Laborübung</strong> <strong>Spracherkennung</strong> 2<br />

system integriert werden muß. In den letzten Jahren haben sich konnektionistische Verfahren<br />

gegenüber regelbasiert/symbolischen Ansätzen durchgesetzt. Die z.Z. am häufigsten<br />

verwendeten konnektionistischen Verfahren sind die Erkennung mit Hilfe von künstlichen<br />

neuronalen Netzen (NN) und die Erkennung, die sich statistischer Modellierung durch sog.<br />

Hidden-Markov-Modelle (HMMs) bedient. In dieser <strong>Laborübung</strong> beschäftigen wir uns mit<br />

einem HMM-basierten Spracherkenner.<br />

Wortschatz Die Anforderungen an den Wortschatz, also die Anzahl der vom <strong>Spracherkennung</strong>ssystem<br />

verarbeitbaren Wörter, sind je nach Anwendungsgebiet sehr unterschiedlich.<br />

Für die Steuerung von Maschinen und sehr einfache Dialogsysteme, etwa ein durch<br />

Sprache steuerbarer Anrufbeantworter, kann ein Wortschatz von 10 – 100 Wörtern ausreichend<br />

sein. Für andere Anwendungen, z.B. Diktiersysteme, ist ein unbeschränkt großer<br />

Wortschatz wünschenswert, damit beispielsweise auch dem System nicht bekannte Eigennamen<br />

verstanden werden. In gängigen Systemen werden Wortschätze im Bereich 1000 –<br />

100000 Wörter verwendet. Manche Systeme können auch mit unbekannten Wörtern umgehen,<br />

indem sie beispielsweise den Benutzer nicht verstandene Wörter buchstabieren lassen.<br />

Mit der Größe des Wortschatzes steigen i.a. die technologischen Anforderungen an ein<br />

<strong>Spracherkennung</strong>ssystem. Es ist einfacher, ein System mit kleinem Wortschatz zu befriedigender<br />

Leistung zu bringen als ein System mit großem Wortschatz. Aus diesem Grund<br />

beschränken wir uns in dieser <strong>Laborübung</strong> auf einen Mini-Spracherkenner, der zwischen<br />

den beiden Wörtern ” Ja“ und ” Nein“ unterscheiden soll.<br />

Sprechweise Besonders bei Dialogsystemen sind natürliche, das heißt einer Mensch-<br />

Mensch Gesprächssituation entsprechende Sprechweisen anzustreben. Diese Sprechweise<br />

wird als kontinuierliche oder verbundene Sprache bezeichnet (z.B. im englischen connected<br />

word recognition = Verbundworterkennung). Aus technologischen Gründen wird manchmal<br />

eine Sprechweise vorgeschrieben, bei der der Sprecher zwischen einzelnen Wörtern<br />

eine kurze Pause (typisch eine zehntel Sekunde) machen muß. Erkenner, die eine solche<br />

Sprechweise voraussetzen, werden Isoliertworterkenner genannt (Beispiele: DragonDictate,<br />

VoiceType). Diese Sprechweise vereinfacht das Erkennungsproblem, zum einen, weil<br />

bei dieser ungewohnten Sprechweise die Wörter meist deutlicher artikuliert werden, und<br />

zum anderen, weil die Grenzen zwischen den Wörtern klar algorithmisch erkannt werden<br />

können und nur noch entschieden werden muß, welches Wort zwischen zwei Pausen gesprochen<br />

wurde. Die Ungewißheit bei den Anfangs- und Endpunkten von Wörtern bei der<br />

Erkennung von verbundener Sprache vergrößert erheblich den zu durchmessenden Suchraum<br />

gegenüber der Isoliertworterkennung. Der größere Suchraum hat i.a. längere Erkennungszeiten<br />

und/oder eine schlechtere Erkennungsleistung zur Folge. Aus diesem Grund<br />

kann man i.a. den Wortschatz eines Isoliertworterkenners größer anlegen als bei Erkennern<br />

für kontinuierlich gesprochene Sprache. In der <strong>Laborübung</strong> wollen wir zunächst den<br />

Ja/Nein–Erkenner als Isoliertworterkenner einsetzen. In Aufgabe 7 und 8 unterstellen wir,<br />

daß das Finden der Pausen bereits erfolgt ist. In Aufgabe 9 erfolgt dann auch das Finden<br />

der Pausen durch den Erkenner. In der Aufgabe 10 schließlich werden Sie den Erkenner als<br />

Verbundworterkenner betreiben.


<strong>Laborübung</strong> <strong>Spracherkennung</strong> 3<br />

Sprecherabhängigkeit Man unterscheidet bei <strong>Spracherkennung</strong>ssystemen zwischen<br />

sprecherabhängigen und sprecherunabhängigen Systemen. Sprecherabhängige Systeme sind<br />

an eine(n) oder wenige Sprecher(innen) angepaßt. Sie erfordern meist eine Trainingsphase,<br />

in der das System sich möglichst gut auf den oder die Sprecher einstellt. Sprecherunabhängige<br />

Systeme sollen sofort von Sprechern benutzbar sein, die das System noch nie<br />

zuvor ” gehört“ hat. I.a. haben sprecherabhängige Systeme einen größeren Wortschatz und<br />

werden in Situationen eingesetzt, bei denen der Benutzer nicht oder nur selten wechselt,<br />

beispielsweise bei Diktiersystemen. Bei SLDSs (spoken language dialog systems) wie der<br />

automatischen Zugauskunft sind Trainingsphasen nicht akzeptabel, deswegen werden hier<br />

sprecherunabhängige Systeme verwandt. Einzelne Systeme verfolgen eine Zwischenstrategie:<br />

sie sind sprecherunabhängig angelegt, können sich aber während des Dialogs auf sprecherspezifische<br />

Eigenheiten einstellen (Sprecheradaption). In der <strong>Laborübung</strong> verwenden<br />

wir sprecherunabhängig trainierte HMMs, so daß die Erkennung für alle Mitglieder Ihrer<br />

Übungsgruppe ohne vorheriges Training der HMMs möglich sein sollte.<br />

Verwendete Einheiten Ein weiteres Unterscheidungsmerkmal bei <strong>Spracherkennung</strong>ssystemen<br />

ist die Granularität der gewählten Einheiten, die bei der Erkennung verwandt<br />

werden. Es gibt im wesentlichen Systeme, die auf der Erkennung von einzelnen Lauten<br />

beruhen und solche, die Wörter als Ganzes erkennen. Die Unterscheidung kann man hier<br />

nicht sehr streng vornehmen, da die meisten Systeme heute eine Mischform beider Ansätze<br />

benutzen. In der gesprochenen Sprache werden Laute in Abhängigkeit von ihrer Umgebung<br />

(also den vorausgehenden und nachfolgenden Lauten) sowie von Betonung, Sprechstil,<br />

Sprechtempo, syntaktischer oder pragmatischer Funktion etc. unterschiedlich realisiert.<br />

Aus diesem Grund ist es sinnvoll, möglichst lange Einheiten, das heißt ganze Äußerungen<br />

oder zumindest ganze Wörter, als kleinste Einheit bei der Erkennung zu verwenden. Dem<br />

gegenüber steht jedoch das Trainingsproblem: für jede zugrundeliegende Einheit müssen<br />

genügend Trainingsbeispiele vorhanden sein. Dies fällt umso leichter, je kleiner die Einheiten<br />

gewählt werden. Aus diesem Grund basieren die meisten Erkennungssysteme auf<br />

Lauten, auch wenn die Erkennung Wortweise oder gar Satzweise abzulaufen scheint. Im<br />

Training werden die Modelle oder Netze für einzelne Laute traininert, die jedoch aus unterschiedlichen<br />

Umgebungen (Wörtern) entnommen sind. Für die Erkennung werden diese<br />

Lauteinheiten dann zu Wortmodellen oder Wortnetzen zusammengefügt. Durch diese Technik<br />

ist es möglich, auch Wörter erkennen zu können, für die gar keine Trainingsbeispiele<br />

vorhanden sind. Andererseits werden in gängigen <strong>Spracherkennung</strong>ssystemen auch größere<br />

Einheiten als Laute verwendet, falls für diese genügend Trainingsmaterial verfügbar ist.<br />

Am häufigsten wird dies bei Funktionswörtern praktiziert, da sie sehr häufig in der Sprache<br />

auftreten und oft stark reduziert sind. Um terminologische Probleme zu vermeiden spricht<br />

man bei der Modellierung auf Lautebene meist nicht von Phonemmodellen, sondern allgemeiner<br />

von Modellen für Wortuntereinheiten, da darunter auch mehrere zu einem Modell<br />

oder Netz zusammengefaßte Phoneme, kleinere Einheiten als Phoneme und sogar ganze<br />

Wörter verstanden werden können.


<strong>Laborübung</strong> <strong>Spracherkennung</strong> 4<br />

2 Hidden Markov Modelle<br />

In diesem Abschnitt wird beschrieben, was Hidden Markov Modelle sind und<br />

wie man sie zur Erkennung einsetzen kann. Dabei werden Konzepte aus der<br />

Wahrscheinlichkeitsrechnung und der Automatentheorie verwendet. Weitere Einzelheiten<br />

finden Sie z.B. in rotschenkel:/usr/local/HTK_V3.1.1/htkbook.{ps,pdf} und<br />

http://htk.eng.cam.ac.uk/ .<br />

Statistische Modellierung und die Regel von Bayes<br />

<strong>Spracherkennung</strong> durch HMMs basiert auf der Idee der statistischen Modellierung. Äußerlich<br />

betrachtet, wollen wir ausgehend von dem Schallereignis die wahrscheinlichste Wortfolge<br />

berechnen. Reduzieren wir zur Illustration das <strong>Spracherkennung</strong>sproblem auf den in<br />

dieser Übung betrachteten Ja/Nein–Erkenner. Die Aufgabenstellung lautet dann: gegeben<br />

die Äußerung O, ist es wahrscheinlicher, daß sie Ja oder daß sie Nein enthält? Diese Frage<br />

ist so direkt nicht einfach zu beantworten. Bei der Statistischen Modellierung wendet<br />

man deshalb einen Trick an, indem man die Aufgabenstellung gewissermaßen umkehrt. Die<br />

Aufgabenstellung im konkreten Fall würde sich dann in zwei Fragen verwandeln: Wenn<br />

wir annehmen es handelt sich um ” Ja“, wie wahrscheinlich ist dann das konkret gemessene<br />

Schallereignis O? Wie wahrscheinlich ist O, wenn wir annehmen, es handelt sich um ” Nein“?<br />

Die beiden Arten, das Erkennungsproblem zu formulieren, stehen in einem mathematischen<br />

Zusammenhang, den die Bayessche Regel beschreibt:<br />

P(Ai|B) = P(Ai)P(B|Ai)<br />

P(B)<br />

Voraussetzung für die Regel von Bayes ist �<br />

i P(Ai) = 1 und ∀i�=jAi ∩ Aj = ∅. Durch<br />

Anwenden der Bayesschen Regel kann man bedingte Wahrscheinlichkeiten ” umdrehen“,<br />

also P(Ai|B) durch P(B|Ai) ausdrücken.<br />

Was bedeutet nun die Formel im Falle unseres Ja/Nein–Erkenners? Da wir zwei Muster<br />

unterscheiden wollen, kann i die Werte 1 und 2 annehmen. Die linke Seite der Gleichung,<br />

P(Ai|B) ist die Größe, die uns eigentlich interessiert. A1 steht für das Ereignis ” Es wurde Ja<br />

gesagt“ bzw. A2 für das Ereignis ” Es wurde Nein gesagt“. B ist das Ereignis, das beschreibt,<br />

daß wir genau das vorliegende Sprachsignal gemessen haben. P(A1|B) beschreibt also die<br />

Wahrscheinlichkeit dafür, das unser gemessenes Sprachsignal ” Ja“ enthält, P(A2|B) die<br />

Wahrscheinlichkeit, daß es ” Nein“ enthält. Die Strategie, die der Erkenner verfolgt, müßte<br />

nun klar sein: Wenn P(A1|B) > P(A2|B), wird ” Ja“ ausgegeben, im anderen Fall ” Nein“.<br />

Die rechte Seite der Gleichung beschreibt, wie wir die beiden Werte ausrechnen können.<br />

P(A1) ist die Wahrscheinlichkeit, daß ” Ja“ gesagt wird, P(A2) ist die Wahrscheinlichkeit,<br />

daß ” Nein“ gesagt wird. Dieser Teil der Formel ist das Sprachmodell, er ist von der konkreten<br />

Äußerung unabhängig. Bei unserem Ja/Nein–Erkenner können wir hier Gleichverteilung<br />

annehmen, das heißt unterstellen, daß unserem Erkenner ” Ja“ genauso häufig wie ” Nein“<br />

zur Erkennung vorgelegt wird, also P(A1) = P(A2) = 1<br />

2 .<br />

Die P(B|Ai) sind das Herzstück der statistischen Modellierung, die Stelle, an der die HMMs<br />

zum Zuge kommen. P(B|A1) ist die Wahrscheinlichkeit, daß sich eine ” Ja“–Äußerung als


<strong>Laborübung</strong> <strong>Spracherkennung</strong> 5<br />

das konkrete, gemessene Sprachsignal manifestiert. Entsprechend ist P(B|A2) die Wahrscheinlichkeit,<br />

daß sich eine ” Nein“–Äußerung als B messen läßt. Wie die Modellierung<br />

funktioniert, wird weiter unten beschrieben werden.<br />

Der Nenner der Formel, P(B), gibt an, wie wahrscheinlich unsere Beobachtung überhaupt<br />

ist. Diese Größe ist nur von der Messung und nicht davon abhängig, ob ” Ja“ oder ” Nein“<br />

geäußert wurde. Da sie für alle Ai gleich ist, und uns nur interessiert, welches P(Ai|B) am<br />

größten ist, wird der Nenner bei Erkennern oft gar nicht berücksichtigt.<br />

Was sind Hidden Markov Modelle?<br />

HMMs sind endliche Automaten, denen zwei stochastische Prozesse unterlegt sind. Wie<br />

wir im vorherigen Abschnitt bereits angesprochen haben, sollen die HMMs modellieren,<br />

wie das Sprachsignal für einen bestimmten Laut, ein bestimmtes Wort oder Satz aussieht.<br />

Man kann sich also vorstellen, das HMM erzeuge dieses Sprachsignal (genauer: daraus<br />

berechnete Merkmalsvektoren). Außerdem soll mit ihnen die Wahrscheinlichkeit für eine<br />

bestimmte Folge von konkret observierten Daten angegeben werden können, also die Wahrscheinlichkeit,<br />

daß ein bestimmtes HMM eine bestimmte Folge von Daten erzeugt hat.<br />

Endlicher Automat (hier: nichtdeterministische Moore-Maschine)<br />

• endlich viele Zustände<br />

• in jeder Zeiteinheit wechselt das System in einen der<br />

möglichen Folgezustände<br />

• gibt das Ausgabezeichen des Zustands aus<br />

Der gezeigte Automat kann z.B. die Ausgaben aaabcc, ac, aaabc oder accc erzeugen.<br />

Markov–Kette oder Markov Modell (auch: zeit- und wertdiskreter stochastischer<br />

Prozeß)<br />

• Wechsel der Zustände erfolgt mit festgelegter Wahrscheinlichkeit<br />

• Bei den Markov–Ketten interessiert man sich u.a. für die<br />

Wahrscheinlichkeit einer bestimmten Abfolge.<br />

Bei der abgebildeten Markov–Kette ergibt sich für die Abfolge aabc die Wahrscheinlichkeit<br />

P(aabc) = 0.3 × 0.6 × 1.0 × 0.7 = 0.126.<br />

a<br />

0.3<br />

a<br />

0.6<br />

0.1<br />

b<br />

b<br />

c<br />

1.0<br />

c<br />

0.7<br />

0.3


<strong>Laborübung</strong> <strong>Spracherkennung</strong> 6<br />

Hidden Markov Modell (hier: mit stetiger Verteilungsdichte als Ausgabe)<br />

• Ausgabe unterliegt ebenfalls dem Zufall<br />

• Statt endlich vieler Ausgabesymbole reellwertige Emissionen<br />

• Ausführungsreihenfolge nicht beobachtbar (d.h. versteckt<br />

= ” hidden“)<br />

Wenn z.B. die Ausgaben der Zustände normalverteilt mit jeweils unterschiedlichem Mittelwert<br />

und Varianz sind, könnte sich dann für eine bestimmte Wertefolge ergeben:<br />

P(133.4,134.6,133.9, 145.7,170.9) = 0.095.<br />

HMMs für die <strong>Spracherkennung</strong><br />

In der <strong>Spracherkennung</strong> wird meist nicht direkt das Sprachsignal (Zeitsignal) als Ausgabe<br />

der HMMs aufgefaßt, sondern daraus berechnete Merkmalsvektoren. Dazu wird für kleine<br />

Ausschnitte aus dem Zeitsignal (typisch 25,6 ms) eine Frequenzanalyse durchgeführt. Diese<br />

Analyse wird mit festem Abstand (typisch 10 ms) wiederholt über das ganze Sprachsignal<br />

immer wieder durchgeführt. Statt der eindimensionalen Wertefolge des Zeitsignals erhält<br />

man dadurch eine Folge von hochdimensionalen Vektoren (typische Dimension 10-40). Die<br />

Idee dabei ist, daß bei den Merkmalsvektoren die Unterschiede zwischen den zu unterscheidenden<br />

Klassen erhöht werden, aber die Unterschiede bei Mustern einer Klasse gegenüber<br />

der Betrachtung des Zeitsignals verringert werden. Gegenüber dem oben gezeigten HMM<br />

ändert sich nicht viel: Es werden eben statt eines einzigen Zufallswertes gleich mehrere<br />

Zufallswerte (Zufallsvektor) ausgegeben.<br />

Zusammenfassung: Allgemeiner Aufbau von HMM–basierten <strong>Spracherkennung</strong>ssystemen<br />

HMM-<strong>Spracherkennung</strong>ssysteme haben meist folgenden Aufbau: Die ankommenden Schallwellen<br />

werden an der Membran eines Mikrophons in elektrische Schwingungen umgewandelt<br />

und anschließend digitalisiert oder liegen bereits in digitalisierter Form vor. Aus dem digitalisierten<br />

Sprachsignal, dem sog. Zeitsignal, werden Merkmalsvektoren berechnet. Für<br />

verschiedene mögliche Wörter oder Wortfolgen wird die Wahrscheinlichkeit dafür errechnet,<br />

daß die vorliegenden Merkmalsvektoren von den Modellen der vom Erkenner in Betracht<br />

gezogenen Wörter erzeugt wurden. Unter Anwendung der Bayesschen Regel kann man errechnen,<br />

welches Modell eines Wortes oder einer Wortfolge am wahrscheinlichsten der Folge<br />

von Merkmalsvektoren entspricht. Die Möglichkeit mit der höchsten Wahrscheinlichkeit<br />

wird als erkanntes Wort bzw. erkannte Wortfolge ausgegeben.<br />

0.3<br />

0.6<br />

0.1<br />

1.0<br />

0.7<br />

0.3


<strong>Laborübung</strong> <strong>Spracherkennung</strong> 7<br />

3 Problemstellung der <strong>Laborübung</strong><br />

In der <strong>Laborübung</strong> sollen Sie mit einem einfachen Spracherkenner experimentieren, der<br />

zwischen den Wörtern ” Ja“ und ” Nein“ unterscheiden kann. Wegen der nur begrenzt zur<br />

Verfügung stehenden Zeit werden Ihnen bereits trainierte HMMs für Wortuntereinheiten<br />

(Phoneme) zur Verfügung gestellt. Diese werden zusammengehängt und ergeben die Modelle<br />

für die beiden zu unterscheidenden Wörter. Da die Erkennung von Sprechpausen<br />

stark abhängig von Hintergrundgeräuschen (v.a. Lüfter der Workstations) ist, sollen Sie<br />

zunächst dieses Hintergrundrauschen aufnehmen und ein Hidden Markov Modell dafür<br />

trainieren. Anschließend werden Sie einige Experimente mit selbst aufgenommener Sprache<br />

durchführen. Es folgt eine Übersicht über die gestellten Aufgaben.<br />

Aufgabe Beschreibung Zeit<br />

1 Bayessche Regel Vorbereitung!<br />

2 Dateien kopieren 10min.<br />

3 Hintergrundgeräusch aufnehmen 10 min.<br />

4 Training Pausenmodell 15 min.<br />

5 hmmlist und net editieren 10 min.<br />

6 Einzelwörter aufnehmen 15 min.<br />

7 Erkennung & Auswertung Einzelwort 25 min.<br />

8 Unbekannte Wörter 30 min.<br />

9 Isoliertworterkenner, Auswertung 30 min.<br />

10 Verbundworterkenner, Auswertung 30 min.<br />

Aufgabe 1 ist unabhängig von den anderen Aufgaben bearbeitbar und die individuell erarbeitete,<br />

handschriftliche Lösung muss mitgebracht werden. Die anderen Aufgaben bauen<br />

aufeinander auf. Die Zeitangaben sind grobe Orientierungshilfen, die individuell verschieden<br />

sein können. Falls Sie an einer Aufgabe allzu lange knobeln müssen, setzen Sie sich mit<br />

Ihrem Betreuer in Verbindung. Für eine erfolgreiche Teilnahme muß ein Versuchsprotokoll<br />

angefertigt werden. Es genügt eine handschriftliche Ausführung, die während des Versuchs<br />

erstellt werden kann.


<strong>Laborübung</strong> <strong>Spracherkennung</strong> 8<br />

4 Aufgaben<br />

Aufgabe 1 Es liegt eine Folge O von Merkmalsvektoren vor, die aus einer Äußerung berechnet<br />

wurde, von der Sie wissen, daß sie entweder die Sequenz Pause-Ja-Pause oder Pause-Nein-Pause<br />

enthalten hat. Es existiert keine zugehörige Sprachdatei, so daß Sie nicht anhören können, welche<br />

der beiden Möglichkeiten gesprochen wurde. Sie können sich jedoch die Wahrscheinlichkeit<br />

P(O|Ja) dafür ausrechnen lassen, daß die Merkmalsvektoren von einem HMM1 für die Sequenz<br />

Pause-Ja-Pause erzeugt wurden, sowie die Wahrscheinlichkeit P(O|Nein), daß die Merkmalsvektoren<br />

von einem HMM2 für die Sequenz Pause-Nein-Pause erzeugt wurden. Wie groß sind<br />

die Wahrscheinlichkeiten P(Ja|O) und P(Nein|O), also die Wahrscheinlichkeiten, daß die<br />

gelöschte Datei Pause-Ja-Pause resp. Pause-Nein-Pause enthielt? Verwenden Sie zur Berechnung<br />

die Bayessche Formel und die Werte P(O|Ja) = 0.23 und P(O|Nein) = 0.84. Für P(O)<br />

können Sie 0.535, für P(Ja) = P(Nein) = 0.5 annehmen.<br />

Aufgabe 2 Loggen Sie sich an einer Unix-Workstation unter dem Account ’Seminar’ ein und<br />

besorgen Sie die für die folgenden Aufgaben nötigen Dateien. Führen Sie dazu die folgenden<br />

Schritte durch:<br />

1. Wechseln Sie nach soseXX und legen Sie dort, falls nicht vorhanden, mit mkdir gruppeN<br />

ein neues Arbeitsverzeichnis an. ’XX’ ist Platzhalter für die Jahreszahl, N ist die Nummer<br />

Ihrer Laborgruppe.<br />

2. Wechseln Sie in das neu angelegte Verzeichnis und kopieren Sie mit dem Befehl<br />

wget http://www.ims.uni-stuttgart.de/~wokurek/laboruebung.tar . die eingepackten<br />

Dateien in dieses Verzeichnis.<br />

3. Entpacken Sie mit dem Befehl tar xf laboruebung.tar die Dateien.<br />

i Nach Eingabe von cd laboruebung und ls sollte sich etwa folgender Bildschirminhalt<br />

ergeben:<br />

seminar@zilpzalp:~/sose98_spracherkennung/Gruppe1/Laboruebung><br />

erkenne* net toolconf/ zeige*<br />

hmm/ nimmauf* train/<br />

hmmlist test/ trainierepause*


<strong>Laborübung</strong> <strong>Spracherkennung</strong> 9<br />

Aufgabe 3 Nehmen Sie das Hintergrundgeräusch an Ihrem<br />

Arbeitsplatz auf. Zur Durchführung der Übung genügt<br />

das kleine Anclips-Mikrophon (s. Bild). Vergewissern Sie<br />

sich, daß das Mikrophon, das Sie benutzen wollen, richtig<br />

angeschlossen ist, und daß die Aussteuerung richtig eingestellt<br />

ist (so wie Sie das in der <strong>Laborübung</strong> Sprachaufnahme<br />

gelernt haben). Die Aussteuerung sollte für die folgenden<br />

Aufnahmen nicht mehr verändert werden müssen. Verwenden<br />

Sie zum Aufnehmen das Shellscript nimmauf. Es fragt<br />

nach einem Dateinamen (ohne die Extension.wav eingeben)<br />

und nimmt für drei Sekunden auf, nachdemOK... erscheint.<br />

Wählen Sie als Namen beispielsweise stilleslabor.<br />

i Sie müßten nun eine Datei mit den aufgenommenen Hintergrundgeräuschen in dem Unterverzeichnis<br />

test haben, die Sie mit aplay test/stilleslabor.wav anhören können.<br />

Als nächstes wird mit den von Ihnen aufgenommenen Hintergrundgeräuschen ein einfaches<br />

HMM trainiert.<br />

Aufgabe 4 Trainieren Sie Ihr Pausenmodell durch Aufruf<br />

des Shellscripts trainierepause. Sie müssen den oben gewählten Namen eingeben, um<br />

mitzuteilen, welche .wav-Datei beim Training verwandt werden soll. Das Script verschiebt<br />

Ihre .wav-Datei in das Unterverzeichnis train, berechnet dort aus der Datei Merkmalsvektoren<br />

und legt ein Labelfile an, das für das Training benötigt wird. Schließlich erzeugt es<br />

ein HMM, das den von Ihnen gewählten Namen hat. Machen Sie für das Versuchsprotokoll<br />

einen Ausdruck des von Ihnen trainierten Modells. (nützliche Kommandos: pr, fold -w70,<br />

lp -d miro, lpq, lprm) Die Modelle sind in dem Unterverzeichnis hmm als einzelne lesbare<br />

Textdateien abgelegt.<br />

i Bei der Verarbeitung wird aus der .wav-Datei eine .sph-Datei generiert. Die Extension<br />

.sph steht für NIST-Sphere-Format und wird im weiteren von den HTK-Tools benötigt.<br />

Eine .sph-Datei kann genauso wie eine wav-Datei mitpadsp /usr/local/ims/bin/wwplay<br />

angehört werden.<br />

Aufgabe 5 Damit der Spracherkenner Ihr neues Modell verwendet, editieren Sie die beiden<br />

Dateien hmmlist und net mit einem Editor Ihrer Wahl (s. <strong>Laborübung</strong> UNIX). Fügen Sie in<br />

der Datei hmmlist an beliebiger Stelle eine Zeile mit dem Namen Ihres Modells hinzu, damit es<br />

ebenfalls eingelesen wird. Ersetzen Sie in der ersten Zeile der Datei net das seitherige Modell<br />

für die Pause, sil, durch den Namen Ihres neuen Modells.<br />

i Die Datei hmmlist beinhaltet eine Liste der vom System eingelesenen HMMs. In jeder<br />

Zeile steht der Name eines Modells, jedes Modell entspricht in etwa einem Phonem. Zudem<br />

sind noch Modelle für Sprechpausen enthalten, nämlich sp und sil. Die Datei net<br />

beschreibt, welche Möglichkeiten der Erkenner berücksichtigen kann. Wir werden uns noch<br />

weiter unten mit der Syntax der Datei net auseinandersetzen.


<strong>Laborübung</strong> <strong>Spracherkennung</strong> 10<br />

Aufgabe 6 Jeder Teilnehmer Ihrer Übungsgruppe soll eine Datei aufnehmen, die einmal ” Ja“<br />

sowie eine Datei, die einmal ” Nein“ enthält. Benutzen Sie dazu wieder das Kommando nimmauf<br />

und verwenden Sie Namen, die Sprecher und Inhalt charakterisieren, z.B. hugoja, hugonein,<br />

emmaja,. ..Sie werden automatisch in dem Unterverzeichnis test abgelegt. Überprüfen Sie<br />

einen Teil der Aufnahmen mit aplay.<br />

i Ein guter Platz für das Mikrophon bei der Aufnahme ist 5–10 cm entfernt schräg vor dem<br />

Mund des Sprechers. Wenn man das Mikrophon gerade vor dem Mund oder tief vor dem<br />

Gesicht hält, passiert es leicht, daß man beim Ausatmen durch Mund oder Nase auf das<br />

Mikrophon bläßt und Störgeräusche erzeugt, die die Erkennung beeinträchtigen können.<br />

Aufgabe 7 Starten Sie die Erkennung Ihrer aufgenommenen Testäußerungen durch Eingabe<br />

von erkenne. Dieses Script codiert die Sprachdaten im Unterverzeichnis test in Merkmalsvektoren<br />

und ruft den Erkenner HVite des HTK–Toolkits auf. Wenn die Erkennung ohne Fehlermeldungen<br />

abgelaufen ist, starten Sie mit zeige das HTK-Visualisierungsprogramm HSLab, das<br />

die aufgenommenen Sprachfiles aus test zusammen mit der vom Erkenner erzeugten Ausgabe<br />

darstellt (s. Abb.). Wieviele Ihrer Aufnahmen wurden richtig erkannt?<br />

Aufgabe 8 Probieren Sie aus, was passiert, wenn Sie etwas anderes als ” Ja“ oder ” Nein“<br />

aufnehmen und erkennen lassen, z.B. ” jein“ oder ” Was?“. Können Sie sich die Ausgabe des<br />

Erkenners erklären?<br />

i Zur Bearbeitung der letzten beiden Aufgaben benötigen Sie nähere Informationen über<br />

den Aufbau der Datei net. Die Datei beschreibt, welche Möglichkeiten vom Erkenner in<br />

Betracht gezogen werden. Die Datei ist im folgenden wiedergegeben (ohne die von Ihnen<br />

in Aufgabe 5 durchzuführenden Änderungen).<br />

$Pause = sil%pause;<br />

$Nein = WD_BEGIN%Nein n aI n WD_END%Nein;<br />

$Ja = WD_BEGIN%Ja j a: WD_END%Ja;<br />

$Wort= $Ja | $Nein;<br />

( $Pause $Wort $Pause )<br />

Die ersten vier Zeilen beschreiben Variablenersetzungen, die jeweils für die darauffolgenden<br />

Zeilen gelten sollen. Die eigentliche Beschreibung der Möglichkeiten, die der Erkenner in<br />

Erwägung ziehen soll, erfolgt in der letzten Zeile. Dort sehen wir, daß die ganze Äußerung<br />

aus drei Untereinheiten zusammengesetzt sein soll, einer Pause, einem Wort und wieder<br />

einer Pause. Das jeweils vorgestellte Dollarzeichen soll bedeuten, daß es sich nicht um<br />

den Namen eines HMMs, sondern um eine Variable handelt, die weiter oben in der Datei<br />

definiert wurde.<br />

Für $Pause gibt es nur eine Ersetzung, hier im abgedruckten Fall wird Pause durch das<br />

HMM mit dem Namen sil ersetzt, bei der Ausgabe wird pause ausgegeben. Wörter ohne<br />

vorgestelltes Dollarzeichen werden also nicht als Variablen sondern als Modellnamen<br />

verstanden, mit einem nachgestellten Prozentzeichen kann man eine vom Modellnamen abweichende<br />

Ausgabe verlangen. Würde die erste Zeile $Pause = sil; lauten, so würde der


<strong>Laborübung</strong> <strong>Spracherkennung</strong> 11<br />

Name des Modells, sil, ausgegeben. Es ist auch möglich, die Ausgabe für bestimmte Modelle<br />

ganz zu unterdrücken, indem man zwei Prozentzeichen hinter den Namen des HMMs<br />

anhängt. Sie werden dennoch bei der Erkennung verwandt, nur wird eben nichts ausgegeben.<br />

Das ist zum Beispiel gerade für Pausenmodelle sinnvoll (hier aber nicht gemacht).<br />

Warum sollte man nun eine Variable für Pause definieren anstatt das Pausenmodell einfach<br />

unten zu benennen, wenn es doch keine Wahlmöglichkeit für den Erkenner gibt? Auf diese<br />

Weise ist es leichter, die Übersicht zu behalten, da man nur an einer Stelle eine Änderung<br />

z.B. des Modellnamens durchführen muß.<br />

Die mittlere Einheit der letzten Zeile ist am interessantesten, denn sie zeigt das Konstrukt<br />

für eine Alternative.$Wort kann ersetzt werden entweder durch$Ja oder$Nein (Zeile 4). Es<br />

ist also möglich, eine Variable selbst wieder durch eine oder mehrere Variablen zu ersetzen,<br />

solange diese bereits definiert sind. Wie Sie sehen können, ist das Zeichen für Alternativen<br />

der senkrechte Strich, |.<br />

Außer Alternativen können auch Wiederholungen definiert werden. Dazu müssen die zu<br />

wiederholenden Einheiten mit bestimmten Klammern zusammengefaßt werden. Alles, was<br />

innerhalb von spitzen Klammern, < und >, steht, kann wiederholt werden, also 1mal oder<br />

2mal oder 3mal usw. direkt hintereinander im zu erkennenden Signal auftauchen. Geschweifte<br />

Klammern, {}, beschreiben 0 oder mehr Wiederholungen, der Inhalt kann also entweder<br />

gar nicht oder 1mal, 2mal usw. im zu erkennenden Signal auftauchen.<br />

Schließlich gibt es noch die Möglichkeit, bestimmte Teile optional zu machen, indem man<br />

diese mit eckigen Klammern, [ und ] umschließt. Diese Teile können also 0 oder 1mal<br />

auftreten.<br />

Runde Klammern () haben nur die Funktion, Bereiche gruppieren zu können. Sie können<br />

verwendet werden, um anzuzeigen, wie weit das Alternativensymbol | wirken soll.<br />

Es bleiben die Zeilen 2 und 3: Sie beschreiben den Aufbau der Wörter ” Ja“ und ” Nein“<br />

durch HMMs für Wortuntereinheiten. Wörter sind durch WD_BEGIN und WD_END Paare<br />

umschlossen (hier wird der auszugebende Name auch jeweils mit einem Prozentzeichen angehängt).<br />

Dazwischen stehen die Modellnamen der Wortuntereinheiten, durch Leerzeichen<br />

getrennt. (Verwenden Sie dafür nicht die Tabulatortaste!)


<strong>Laborübung</strong> <strong>Spracherkennung</strong> 12<br />

Aufgabe 9 Erstellen Sie eine andere Grammatik, die es erlaubt, mehrere aufeinanderfolgende<br />

” Ja“ und Nein“ zu erkennen. Die Grammatik soll Pausen zwischen den Wörtern vorschreiben.<br />

”<br />

Nehmen Sie einige Testäußerungen mit mehreren Ja“ bzw. Nein“ auf, bei denen Sie zwischen<br />

” ”<br />

den Wörtern eine kurze Pause lassen. Lassen Sie Ihre Testsätze erkennen und sehen Sie sich die<br />

Ergebnisse an. Funktioniert die Erkennung auch noch mit den nicht wiederholten Äußerungen?<br />

Wieviele Fehler macht der Erkenner? Können Sie sich die Fehler erklären? Drucken Sie die Datei<br />

net aus für das Protokoll.<br />

Aufgabe 10 Setzen Sie nun den Teil in der Dateinet, der für die Pause zwischen den Wörtern<br />

zuständig ist, in eckige Klammern, um ihn optional zu machen. Notieren Sie diese Änderung in<br />

Ihrem eben erstellten Ausdruck. Nehmen Sie einige verbundene ” Ja“/ ” Nein“–Wiederholungen<br />

auf, also ohne Pausen zwischen den einzelnen Wörtern zu lassen. Lassen Sie den Erkenner erneut<br />

laufen und werten Sie die Ergebnisse mit dieser Grammatik auch in Bezug zur letzten Aufgabe<br />

aus.<br />

Autoren: Stefan Rapp, Marcus Fach, Juni 1998<br />

Neueste Überarbeitung: Wolfgang Wokurek, Juni 2007<br />

Wir freuen uns über studentische Vorschläge, die die Durchführung der <strong>Laborübung</strong> oder das zugehörige<br />

Skript betreffen. Wenn Sie Anregungen oder Kritik äußern wollen, wenden Sie sich bitte an den jeweiligen<br />

Betreuer der Übung oder den Koordinator aller <strong>Laborübung</strong>en, Wolfgang Wokurek, Zimmer 3|17, e-mail<br />

wokurek@ims.uni-stuttgart.de.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!