Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf ·...

105
Fakultät für Elektrotechnik und Informatik Angewandte Informatik Forschungszentrum für Servicerobotik Spracheingabe und Sprachausgabe für mobile Serviceroboter Bachelorarbeit zur Erlangung des akademischen Grades ‚Bachelor of Science‘ – B.Sc von Julian Hochstetter 01. Oktober 2008 – 31. Dezember 2008 1. Betreuer: Prof. Dr. rer. nat., Dipl. Phys. Wolfgang Ertel 2. Betreuer: Prof. Klemens Ehret

Transcript of Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf ·...

Page 1: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

Fakultät für Elektrotechnik und InformatikAngewandte Informatik

Forschungszentrum für Servicerobotik

Spracheingabe und Sprachausgabefür mobile Serviceroboter

Bachelorarbeit zur Erlangung des akademischen Grades‚Bachelor of Science‘ – B.Sc

von

Julian Hochstetter

01. Oktober 2008 – 31. Dezember 2008

1. Betreuer: Prof. Dr. rer. nat., Dipl. Phys. Wolfgang Ertel2. Betreuer: Prof. Klemens Ehret

Page 2: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem
Page 3: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

Abstract

Speech recognition and speech synthesisfor mobile service robotsThis bachelor thesis created the opportunity to do speech recognition andsynthesized speech output in a most easy and user-friendly way summarisedup in only one program. This purpose was reached by the application ofmature and reliable software in each case for speech recognition, languagemodel generation and speech synthesis. One task was connecting these threesoftware components by a graphical user interface, which allows the user toadd self-defined phonetic inputs to the language model and by adding morevoice recordings to extend this model so that the detection rate rise up to anoptimal recognition rate.

Zusammenfassung

Spracheingabe und Sprachausgabefür mobile ServiceroboterIm Rahmen dieser Bachelor-Abschlussarbeit wurde die Möglichkeit geschaffen,auf möglichst einfache und dadurch benutzerfreundliche Weise sowohl Spra-cherkennung als auch Sprachausgabe zusammengefasst in einem Programmdurchzuführen. Dieses Ziel wurde durch den Einsatz ausgereifter und zuverläs-siger Software jeweils für Spracherkennung, Sprachmodellgenerierung undSprachausgabe erreicht. Eine Aufgabe war, diese drei Softwarekomponentendurch eine grafische Bedienoberfläche zu verbinden, die es dem Benutzererlaubt, selbst definierte Spracheingaben zu dem Sprachmodell hinzuzufügenund dieses durch weitere Sprachaufnahmen für eine optimale Erkennungsratezu erweitern.

Page 4: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

Julian HochstetterSchützenstrasse 5535398 Gießen

Hiermit erkläre ich eidesstattlich, dass ich die von mir vorgelegte Arbeit in dervorgegebenen Zeit vom 01.08.2008 - 31.12.2008 selbständig verfasst habe,dass ich die verwendeten Quellen, Internet-Quellen und Hilfsmittel vollständigangegeben habe und dass ich die Stellen der Arbeit – einschließlich Tabellen,Karten und Abbildungen –, die anderen Werken oder dem Internet im Wortlautoder dem Sinn nach entnommen sind, auf jeden Fall unter Angabe der Quelleals Entlehnung kenntlich gemacht habe.

Weingarten, den 31. Dezember 2008

Julian Hochstetter

Page 5: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

Danksagung

Hiermit möchte ich mich bei meinem Betreuer Professor Dr. Wolfgang Ertelfür seine stets großzügige Unterstützung und wertvolle Betreuung währendder gesamten Zeit bedanken. Als verantwortlicher Teamleiter des Robocupund ZAFH Labors der Hochschule Ravensburg-Weingarten hat er mir dieseinteressante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht.

Auch bei meinem Zweitgutachter Professor Klemens Ehret möchte ich michherzlich für seinen konstruktiven Beitrag für die Gestaltung der grafischenBedienoberfläche bedanken.

Des weiteren gilt mein Dank allen Mitgliedern der Robocup-Arbeitsgruppe.

All denen, die diese Arbeit Korrektur gelesen haben und wertvolle Hinweisebeigesteuert haben, spreche ich ebenfalls besonderen Dank aus.

Zuletzt möchte ich mich auch bei meiner Freundin, meiner Familie und allmeinen Freunden bedanken, die mir während dieser Arbeit verständnisvoll undunterstützend zur Seite standen.

Page 6: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

Inhaltsverzeichnis

1 Einführung 111.1 Motivation, Zielsetzung und Beitrag . . . . . . . . . . . . . . . . . 111.2 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.3 Schwierigkeiten der menschlichen Sprache . . . . . . . . . . . . 121.4 Aufbau und Kapitelübersicht . . . . . . . . . . . . . . . . . . . . . 13

2 Die Spracherkennung 152.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.2 Die Möglichkeiten der Spracherkennung . . . . . . . . . . . . . . 18

2.2.1 Als Hilfe für behinderte Menschen . . . . . . . . . . . . . 182.2.2 In der Industrie . . . . . . . . . . . . . . . . . . . . . . . . 182.2.3 Im Alltag . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.2.4 Im Multimediabereich . . . . . . . . . . . . . . . . . . . . 192.2.5 In der Medizin . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.3 Übersetzender Sprachcomputer . . . . . . . . . . . . . . . . . . . 202.4 Herausforderung der Spracherkennung . . . . . . . . . . . . . . 212.5 Der Mustervergleich . . . . . . . . . . . . . . . . . . . . . . . . . 22

3 Sprachsynthese 253.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.2 Die Möglichkeiten der Sprachsynthese . . . . . . . . . . . . . . . 26

3.2.1 Einsatz im Multimediabereich . . . . . . . . . . . . . . . . 263.2.2 Einsatz für behinderte Menschen . . . . . . . . . . . . . . 273.2.3 Einsatz als Kontrollwerkzeug . . . . . . . . . . . . . . . . 27

3.3 Der Aufbau eines Sprachsynthese-Systems . . . . . . . . . . . . 273.3.1 NLP (Natural Language Processing) . . . . . . . . . . . . 273.3.2 DSP (Digital Speech Processing) . . . . . . . . . . . . . . 28

6

Page 7: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

4 Software für Spracherkennung 294.1 Kommerzielle Systeme . . . . . . . . . . . . . . . . . . . . . . . . 30

4.1.1 IBM ViaVoice . . . . . . . . . . . . . . . . . . . . . . . . . 304.1.2 Philips FreeSpeech und Philips SpeechMagic . . . . . . . 314.1.3 Dragon NaturallySpeaking . . . . . . . . . . . . . . . . . . 31

4.2 Open-Source Systeme . . . . . . . . . . . . . . . . . . . . . . . . 334.2.1 CMU Sphinx . . . . . . . . . . . . . . . . . . . . . . . . . 334.2.2 Julius und das HTK Toolkit . . . . . . . . . . . . . . . . . . 34

5 Software für Sprachsynthese 375.1 Kommerzielle Systeme . . . . . . . . . . . . . . . . . . . . . . . . 37

5.1.1 AT&T Natural Voices SDK . . . . . . . . . . . . . . . . . . 375.1.2 FonixTalk 6.1 SDK . . . . . . . . . . . . . . . . . . . . . . 37

5.2 Open-Source Systeme . . . . . . . . . . . . . . . . . . . . . . . . 385.2.1 MBROLA . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.2.2 BOSS - Bonn Open Synthesis System . . . . . . . . . . . 385.2.3 FreeTTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.2.4 Festival und Festival Lite (Flite) . . . . . . . . . . . . . . . 395.2.5 eSpeak . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6 Das Sprachmodell 416.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416.2 Lautschrift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416.3 Phonem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436.4 Bi- und Triphone . . . . . . . . . . . . . . . . . . . . . . . . . . . 456.5 Prosodie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456.6 Akustikmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476.7 Wörterbuch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.8 Julius Vokabular . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.9 Julius Grammatik . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.10 Trainingsdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

7 Eingesetzte Komponenten 537.1 C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537.2 Qt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537.3 Advanced Linux Sound Architecture . . . . . . . . . . . . . . . . 547.4 Julius, HTK und eSpeak . . . . . . . . . . . . . . . . . . . . . . . 54

7.4.1 Installation von eSpeak . . . . . . . . . . . . . . . . . . . 55

Page 8: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

7.5 Simon Listens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557.5.1 Installation von HTK . . . . . . . . . . . . . . . . . . . . . 567.5.2 Installation von Julius . . . . . . . . . . . . . . . . . . . . . 567.5.3 Installation von Simon . . . . . . . . . . . . . . . . . . . . 56

7.6 Julius Control Center . . . . . . . . . . . . . . . . . . . . . . . . . 57

8 Das Julius Control Center 598.1 Die GUI - MainWindow . . . . . . . . . . . . . . . . . . . . . . . . 608.2 Die Verwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

8.2.1 TrainingView . . . . . . . . . . . . . . . . . . . . . . . . . 618.2.2 WordManager . . . . . . . . . . . . . . . . . . . . . . . . . 628.2.3 GrammarManager . . . . . . . . . . . . . . . . . . . . . . 638.2.4 SampleManager . . . . . . . . . . . . . . . . . . . . . . . 648.2.5 ModelManager . . . . . . . . . . . . . . . . . . . . . . . . 65

8.3 AddWordWizard . . . . . . . . . . . . . . . . . . . . . . . . . . . 668.4 Der Server - JuliusServer . . . . . . . . . . . . . . . . . . . . . . 67

8.4.1 Der Clientsocket . . . . . . . . . . . . . . . . . . . . . . . 678.4.2 Das JuliusProtocol . . . . . . . . . . . . . . . . . . . . . . 68

8.5 Der Spracherkenner - JuliusControl . . . . . . . . . . . . . . . . . 698.6 Der Synthesizer - Speaker . . . . . . . . . . . . . . . . . . . . . . 708.7 Die Soundausgabe - SoundOutput . . . . . . . . . . . . . . . . . 718.8 WavRecorder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728.9 Die Mikrofonregelung - MicControl . . . . . . . . . . . . . . . . . 738.10 Einstellungen dauerhaft speichern - Settings . . . . . . . . . . . 748.11 Weitere Dokumentation . . . . . . . . . . . . . . . . . . . . . . . 748.12 Die Benutzung des Programms . . . . . . . . . . . . . . . . . . . 75

8.12.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . 758.12.2 Spracherkennung . . . . . . . . . . . . . . . . . . . . . . . 768.12.3 Training - Sprachmodell . . . . . . . . . . . . . . . . . . . 778.12.4 Training - Akustikmodell . . . . . . . . . . . . . . . . . . . 788.12.5 Training - Grammatik . . . . . . . . . . . . . . . . . . . . . 798.12.6 Training - Wort hinzufügen . . . . . . . . . . . . . . . . . . 818.12.7 Sprachausgabe . . . . . . . . . . . . . . . . . . . . . . . . 868.12.8 Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . 87

9 Schlussbetrachtung 88

Page 9: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

Anhang 92A Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . 92B Tabellenverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . 97C Abbildungsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . 98D Abkürzungsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . 100E Quellcode Verzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . 102F Beispieldaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

Page 10: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem
Page 11: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

1 Einführung

1.1 Motivation, Zielsetzung und Beitrag

Das Ziel dieser Bachelorarbeit ist es, für das Robocup Labor und die For-schungsgruppe AMSER (Autonome mobile Serviceroboter) der HochschuleRavensburg-Weingarten ein System zur Spracheingabe und Sprachausgabezu entwickeln.

Abbildung 1.1: Pioneer P3-AT Roboter mit Katana Arm

Einerseits soll es möglich sein, einem Roboter mitder Stimme des Bedienenden Befehle zu erteilenund anderseits soll der Roboter dem Menschenverbale Mitteilungen wie z.B. Statusmeldungenmachen können.An der Hochschule wird eine universell einsetz-bare Teaching-Box entwickelt, diese soll es in Zu-kunft ermöglichen, dass Serviceroboter ihr Verhal-ten selbst erlernen. Die in dieser Arbeit entwickelteSprachsteuerung soll als weiteres Element in dieTeaching-Box einfließen und es so ermöglichen,den Roboter bei seinem Lernvorgang mit der Stim-me aktiv zu unterstützen, indem z.B. gesagt wird,ob die ausgeführte Handlung richtig oder falschwar Zum Einsatz soll etablierte, gut funktionierende Software kommen.Eine große Rolle dabei spielt, dass das System unter Linux lauffähig sein muss,da die gesamte Entwicklung des Roboters mit dem Betriebssystem Linux statt-findet.Während des Studiums habe ich bereits eine Projektarbeit im Labor für Robotergemacht, welche dazu beigetragen hat, mich für dieses Thema zu begeistern.Ich wollte unbedingt einen weiteren Beitrag für das Labor leisten, aus diesemGrund habe ich zusammen mit Professor Dr. Ertel nach einem passendemThema gesucht.

11

Page 12: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

1.2. EINLEITUNG KAPITEL 1. EINFÜHRUNG

Im Laufe der Entwicklung des Programms haben sich folgende Ziele herausge-bildet:

• Sprecherunabhängige Spracherkennung

• Die sichere Einzelworterkennung hat gegenüber der FließtexterkennnungVorrang

• Die Echtzeitanforderung muss eingehalten werden und die Ressourcen-last darf nicht zu hoch sein

• Gut zu verstehende Sprachausgabe, die jedoch nicht zwingend natürlichklingen muss

• Vollständige Kompatibilität zu Linux

• Die Möglichkeit zu schaffen, das Programm fernzusteuern bzw Informatio-nen mit einem fremden Programm auszutauschen

Die Möglichkeiten des Betriebssystems Linux sind einfach unglaublich, dies hatmich schon sehr früh fasziniert und gefesselt. Da die Sprachsteuerung in naherZukunft eine immer wichtigere Rolle spielen wird, ist dies eine gute Möglichkeit,sich jetzt mit dem Thema zu befassen.

1.2 Einleitung

Die Sprache hat sich als Kommunikationsmittel über sehr lange Zeit hin alsKulturgut entwickelt. Sprache hat für den Mensch nicht nur eine Bedeutung alsInformationsträger, ich betrachte sie jedoch im Zusammenhang meiner Arbeitausschließlich im Hinblick auf eine mögliche Verwendung in der Kommunikationmit Computern. Im Besonderen wird die Problematik der Übertragbarkeit vongeschriebenem Wort zu klingendem Wort und der umgekehrte Vorgang unter-sucht. Durch Spracherkennung, Sprachsynthese und Sprachsteuerung bietensich Innovationen auf dem Gebiet der Angewandten Informatik. Statt manuellerBedieung wird es so möglich, mit verbalen Informationen, Anweisungen oderKontrollen und Feedbacks zu arbeiten.

1.3 Schwierigkeiten der menschlichen Sprache

Für das Projekt Spracherkennung-Sprachausgabe wird es sich zeigen, aufwelche Weise die menschliche Sprache interaktiv durch den Computer genutzt

12

Page 13: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 1. EINFÜHRUNG 1.4. AUFBAU UND KAPITELÜBERSICHT

werden kann. Menschliche Sprache vollzieht sich in ihrer Art als sehr komplexerVorgang und unterscheidet sich als lebendig und sich weiterentwickelnt vonden sogennanten Computersprachen. Die Programmiersprache C z.B. besitzteindeutige, genaue, festgelegte Regeln, deshalb werden Programmiersprachenauch als formale Sprachen bezeichnet, sie haben eine beschränkte, genauAnzahl an Wörtern und eine ebenso festgelegte Grammatik. [Hrom07]Menschliche Sprache hingegen kennt Mehrdeutigkeiten, und mehrdeutige Wor-te können nur im Kontext verstanden werden, wie Präpositionen, z.B. „vor“, diesowohl räumliche als auch zeitliche Angaben machen. [Dude08]Zudem kann Sprache im Dialekt individuell sein, was in der Kommunikationunter Menschen für das Verständnis weniger Bedeutung hat. Da ein Spracher-kennungssystem jedoch mit einer Art Mustervergleich arbeitet, sollte der Inputder eingegebenen Datenbank des Wörterbuchs möglichst genau entsprechen.

1.4 Aufbau und Kapitelübersicht

• Das Ziel der Installation einer Spracherkennung und einer Sprachsynthesemacht es für diese Arbeit erforderlich, sich zunächst einen Überblickdarüber zu verschaffen, was Spracherkennung- und synthese bedeutet.Hierzu wird jeweils eine Einführung in die Geschichte der Entwicklung unddie möglichen Einsatzgebietete in Kürze vorgstellt.

• Nachdem die Funktionsweise der Systeme Sprache-zu-Text und Text-zu-Sprache bearbeitet ist, wende ich mich dem Thema der Software fürSpracherkennung und Sprachsynthese zu, im die für das Projekt optimaleherauszufinden.

• Ein weiteres Kapitel widmet sich der Zusammenstellung aller Benutzer-daten, dem sogenannten Sprachmodell. Es wird aus der allgemeinenLinguistik das Teilgebiet der Phonologie herangezogen. Ausßerdem wirddas für das Projekt genutzte Wörterbuch und die Spracherkennungssoft-ware und die eingesetzte Technik der Hidden Markov Modelle vorgestellt.

• In einem weiteren Abschnitt werden die verwendeten Systemkomponen-ten vorgstellt.

• Schließlich wird das Julius Control Center, des im Rahmen dieser Arbeitentstandenen Programms in der Nutzung dargestellt.

13

Page 14: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

1.4. AUFBAU UND KAPITELÜBERSICHT KAPITEL 1. EINFÜHRUNG

14

Page 15: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

2 Die Spracherkennung

2.1 Einleitung

Die automatische Spracherkennung hat eine über fünfzigjährige Forschungs-geschichte hinter sich, schon in den 60er Jahren des 20. Jahrhunderts wares möglich, Einzelwörter maschinell zu erkennen. Es wurden Filter eingesetzt,um die spektralen Eigenschaften der menschlichen Sprache zu gewinnen. Diedaruch erhaltenen Muster wurden mit gespeicherten Mustern verglichen. Schondamals wurde eine Erkennungsrate von bis zu 90% erreicht. [RJ04]

Abbildung 2.1: Spektrogram einer 9-Kanal Filterbankanalyse des Wortes„three“ und zwei mal des Wortes „eight“. Es ist deutlich zu sehen, dassdie zwei Wörter von „eight“ ihrer Struktur nach ähnlich sind, abgesehenvon der viel kürzeren Lücke und dem längeren Burst für [t] bei der unterenÄußerung. Aus [Holm91]

15

Page 16: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

2.1. EINLEITUNG KAPITEL 2. DIE SPRACHERKENNUNG

Einige Jahre später wurde die Technik der dynamischen Programmierungentdeckt. Diese Technik beruht auf dem Verfahren der nichtlinearen zeitlichenAnpassung, auch DTW(Dynamic T ime Warping) genannt.

Abbildung 2.2: Verlauf eines DP(Dynamische Programmierung) Pfadeszwischen zwei Äußerungen des Wortes „eight“. Eine zeitliche Verschie-bung wird nicht bestraft und die Pfadsuche in den einzelnen Punkten istbegrenzt(„pruning“). Der optimale Pfad (dicke Linie) wurde durch Rückver-folgung ausgehend von der rechten oberen Ecke gewonnen.Aus [Holm91]

Bei diesem Verfahren wurde versucht, durch dynamische Programmierungeinen Pfad von der linken unteren Ecke zur rechten oberen Ecke zu finden.Umso gerader der Verlauf ist, desto geringer ist der Abstand der beiden Muster,also desto ähnlicher sind die Muster sich. [Zink97]

Durch dieses Verfahren konnte man bereits bis zu 1000 Einzelwörter mit einerErkennungsrate von bis 100% erkennen. Durch mehrere parallel laufende DTW-Algorithmen erreichte man die Erkennung von Wortketten. [RJ04]

16

Page 17: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 2. DIE SPRACHERKENNUNG 2.1. EINLEITUNG

Abbildung 2.3: Ergebnis des Versuchs, zwei ungleiche Wörter („three“ und„eight“) mit demselben DP-Algorithmus wie in Abb. 2.2 zuzuord-nen [. . . ]. Der mit Kreuzen markierte Verlauf zeigt den stark abweichendenPfad, der sich bei Ausschluss des letzten Frames im Vergleichsmuster alsoptimal erwiesen hätte. Aus [Holm91]

In der Abbildung 2.3 ist ein Negativnbeispiel dargestellt. Hier wurde versucht,zwei ungleiche Muster zu vergleichen.

In den 80er Jahren des 20. Jahrhunderts wurde durch die Technik der Hidden-Markov-Modelle (HMM) die Möglichkeit geschaffen, eine ganz neue Art derSpracherkennung zu ermöglichen. Mit Hilfe dieser statistischen HMM Modelleund stochastischen Sprachmodellen wurde schließlich die Erkennung von konti-nuierlicher Sprache erreicht.Es wurden auch verschiedene Versionen von neuronalen Netzen zur Sprach-erkennung eingesetzt, diese konnten jedoch nicht die Ergebnisse der HMM-Technik erreichen.

17

Page 18: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

2.2. DIE MÖGLICHKEITEN DER SPRACHERKENNUNG KAPITEL 2. DIE SPRACHERKENNUNG

2.2 Die Möglichkeiten der Spracherkennung

Die Sprachsteuerung wird in naher Zukunft immer häufiger anzutreffen sein, ihrkann als zusätzliches Bedienungselement große Bedeutung zukommen.Die intuitive und komfortable Bedienung, die dadurch möglich wird, ist für vieleBereiche von besonderem Interesse. Ein Beispiel für den Einsatz einer solchenBedienung ist das Ziel dieser Arbeit: die Steuerung eines Serviceroboters.Dieser Serviceroboter soll mit der Stimme so zu bedienen sein, dass er Befehleentgegen nehmen kann und diese dann auch entsprechend ausführt.

2.2.1 Als Hilfe für behinderte Menschen

Ein wichtiger Einsatz von Sprachsteuerung kann zur Erleichterung des ge-samten Lebens von körperlich beeinträchtigten Menschen führen. Wenn diemotorische Steuerung erschwert oder ganz unmöglich ist, kann durch einesprachliche Steuerung eine Selbständigkeit in der Nutzung von Geräten wiez.B. Rollstühlen oder auch Computern erreicht werden.

2.2.2 In der Industrie

Aber auch in der Industrie, z.B. der Automobilindustrie kann Sprachsteuerunghilfreich sein. Hier kann mit einer Sprachsteuerung die Sicherheit erhöht wer-den, wenn der Bedienende nicht mehr an Knöpfen steuern oder regeln muss.Zudem können manuelle und verbale Bedienung zeitgleich stattfinden, was denArbeitsprozess optimieren kann.

2.2.3 Im Alltag

Ein weiteres Anwendungsfeld ist das Texterfassen durch Diktiersysteme. Ärt-ze oder Juristen z.B. können von diesen Systemen profitieren, da ein großerTeil der Tätigkeitsdokumentation sprachlich wesentlich schneller und einfacherabzuwickeln ist als durch textverarbeitende Schreibprogramme. Auch das Auto-radio z.B. kann mit der Stimme bedient werden, was zur Sicherheit beim Fahrenbeitragen kann.

18

Page 19: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 2. DIE SPRACHERKENNUNG 2.2. DIE MÖGLICHKEITEN DER SPRACHERKENNUNG

2.2.4 Im Multimediabereich

Spracherkennung ist besonders hilfreich an Stellen, wo der Mensch mit derStimme kommuniziert, z.B. am Telefon. Die Nummer des Gesprächspartnersmuss dann nicht eingegeben werden, sondern das Telefon sucht und wähltautomatisch, wenn man den gewünschten Gesprächspartner nennt.

Mit einer besonderen Form von Spracherkennung ist jeder von uns schoneinmal in Berührung gekommen, mit dem Telefoncomputer einer Hotline. Jedesmoderne Call-Center setzt diese Telefoncomputer ein, um den Anzurufendenan den richtigen Sachbearbeiter durchzustellen.

Viele Banken bieten auch Telefonbanking an. Hier kann der Anrufende Bankge-schäfte am Telefon durchführen. Mittels Stimmmuster-Erkennung könnte sogarder Teilnehmer verifiziert und die Sicherheit erhöht werden.

2.2.5 In der Medizin

Auch im Operationssaal kommen solche Sprachsteuerungen schon zum Einsatz.Wenn der operierende Arzt das Operationsbesteck in der Hand hält, kann ersehr schwer, z.B. den Bildausschnitt seines Mikroskopes verändern oder dieSchärfe nachstellen. Er kann in diesem Moment keinen Hand- oder Fußschalterzum Bedienen des Operationsmikroskopes einsetzen. Die Steuerung mit derSprache vereinfacht auch hier wieder die Arbeit des Benutzers.

19

Page 20: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

2.3. ÜBERSETZENDER SPRACHCOMPUTER KAPITEL 2. DIE SPRACHERKENNUNG

2.3 Übersetzender Sprachcomputer

Das bis heute wohl beeindruckenste Projekt imBereich der Spracherkennung ist das Verbmobil.Ins Leben gerufen wurde das Projekt im Jahr 1993und wurde in 2 Phasen bis ins Jahr 2000 durch-geführt. Das Verbmobil ist eine Software zur Erkennung von Spontansprache,die einzelne Wörter oder Sätze analysiert, übersetzt und letztlich wieder aus-spricht. Es erkennt dabei auch Fehler, Korrekturen und „Ähs„und gibt diesewieder. Das Verbmobil wurde im Rahmen eines Forschungsprojekts des BMBF(Bundesministerium für Bildung und Forschung) in Kooperation mit namhaftenFirmen aus der Industrie entwickelt, insgesamt hatte das Projekt ein Budgetvon 166,7 Millionen DM zur Verfügung. Anwendung findet dieses System z.B.in Tourismusbüros oder Hotels. Der Anrufende kann in seiner Muttersprachemit dem fremdsprachigen Gegenüber kommunizieren. Das Gespräch wird dazuüber einen Sprachserver geleitet, dort werden die Wörter analysiert, zu einemSatz geformt und übersetzt. Damit die Gegenstelle nun die Übersetzung hörenkann, wird diese noch synthetisiert.Dieses beeindruckende Ergebnis ist dadurch möglich, dass die Software eineeinzigartige Prosodieerkennung benutzt. Diese versucht die Satzmelodie zuerkennen und den Bedeutungszusammenhang zu extrahieren. Dieser Schritt isteine Vorstufe des Übersetzens, denn nur so kann gewährleistet werden, dassdie Emotionen und der Inalt der Übersetzung auch richtig sind.Die Wortfehlerrate lag am Schluss einer Übersetzung vom Deutschen in dasEnglische nur noch bei ca. 14%.Mit dem Verbmobil ist es dem DFKI (Deutsches Forschungszentrum für Künstli-che Intelligenz) gelungen, ein interdisziplinäres Leitprojekt ins Leben zu rufen.Aus dem Projekt, welches mittlerweile abgeschlossen ist, gingen 800 wissen-schaftliche Publikationen hervor, zahlreiche Arbeitsplätze entstanden und demProjekt wurde 2001 sogar der Zukunftspreis des Bundespräsidenten verliehen.[Verb00], [Wahl00]

20

Page 21: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 2. DIE SPRACHERKENNUNG 2.4. HERAUSFORDERUNG DER SPRACHERKENNUNG

2.4 Herausforderung der Spracherkennung

In der Spracherkennung wird nach den Anforderungen an die Spracherkennungklassifiziert.Zum einen wird unterschieden ob das System sprecherabhängig oder sprecher-unabhängig arbeiten soll. Mit unterschiedlichen Sprechern zurechtzukommen,ist schon die erste Schwierigkeit für die Spracherkennung.Unterschiedliche Sprecher haben ein sich unterscheidendes Sprechmuster,der eine spricht langsam, klar und deutlich, ein anderer spricht vielleicht vielschneller und undeutlicher. Für uns Menschen ist dies kein sonderlich großesProblem, wir können uns im Hörvständnis auf den Kommunikationspartner undauf schwierige Situationen individuell und spontan einstellen, für den Com-puter ist das allerdings nicht so einfach. Eine weitere Schwierigkeit für dasSystem ist, ob es nur einzelne Wörter, Wortketten oder zusammenhängenden,kontinuierlichen Text erkennen soll.

Aus Kombinationen der oben genannten Schwierigkeiten ergibt sich nun dieAnforderung an das Spracherkennungsprogramm.

Einfach SchwierigSprechweise Einzelne Wörter SätzeWortschatz Kleiner Wortschatz Großer WortschatzBenutzerkreis Sprecherabhängig Sprecherunabhängig

Tabelle 2.1: Anforderungen und Schwierigkeitsgrad an eine Software fürSpracherkennung. Aus [Eule06]

Ein weiterer kritischer Punkt ist die akustische Umgebung. Jedes kleinsteStörgeräusch beeinflusst die Erkennungsrate des Systems. Der Mensch kannim Hörvorgang feinste Differenzierungen aus einem Ganzen selektieren, wirkönnen auf bestimmte Qualitäten fokussieren, z.B. eine Einzelstimme auseinem Stimmengewirr heraushören. Der Computer benötigt jedoch für dieSpracherkennung einen möglichst eindeutigen Input.

21

Page 22: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

2.5. DER MUSTERVERGLEICH KAPITEL 2. DIE SPRACHERKENNUNG

2.5 Der Mustervergleich

Die Spracherkennung kann man mit einem Mustervergleich verdeutlichen.Wenn man die Spracherkennung auf das Erkennen von einzelnen Wörternreduziert, kann man dies folgendermaßen darstellen:Nehmen wir an, es gibt einen Vorrat von N zu erkennenden Wörtern. Wei-ter haben wir zu jedem Wort W1 . . .WN eine Referenz R1 . . .RN . Nun wird einunbekanntes, zu erkennendes Wort Y mit jeder Referenz vergleichen. Dazubenötigen wir die Vergleichsfunktion D. Diese Vergleichsfunktion D misst dieDifferenz, also die Ähnlichkeit der beiden Wörter Y und R.

D(Y,R) > 0 und D(Y,Y) = 0

Im folgenden ist eine Tabelle mit einem Mustervergleich dargestellt.

Wort Muster Abstand DEins R1 2,1234Zwei R2 1,4353Drei R3 1,6532Vier R4 4,3223. . .Neun R9 5,3234

Tabelle 2.2: Beispiel eines Mustervergleichs

In diesem Beispiel findet man bei dem Wort Zwei den kleinsten Abstand zurReferenz. Anhand dieser Feststellung kann davon ausgegangen werden, dasses sich um das gesuchte Wort handelt.Man bemerkt jedoch auch, dass das Wort Drei, auch einen sehr kleinen Werthat. Dies ist abhängig von der großen phonetischen Ähnlichkeit der Wörter Zweiund Drei. Falls das System keine feinere Unterscheidung vornimmt, würde esannehmen, dass der Benutzer zwei gesagt hat.Um die Erkennungswahrscheinlichkeit zu erhöhen, könnte man den zweit-kleinsten Abstand heranziehen. Ist der Abstand zwischen dem kleinsten undzweitkleinsten, hier zwischen Zwei und Drei zu klein, kann man annehmen,dass die erfolgreiche und richtige Erkennung unwahrscheinlich ist, es kannnicht sichergestellt werden, welche Äußerung nun richtig ist. Aus diesem Grundwerden häufig mehrere Vergleichsmuster gespeichert. Hier wird dann die Äuße-rung mit allen gespeicherten Referenzmustern verglichen und die Abstände dergleichen Worte über einen Mittelwert ermittelt.

22

Page 23: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 2. DIE SPRACHERKENNUNG 2.5. DER MUSTERVERGLEICH

Abbildung 2.5: Eine typische Spracherkennung, anhand eines Musterver-gleichs

Das Eingangssignal wird zu allererst digitalisiert und einer kleinen Vorverarbei-tung unterzogen. Bei dem Schritt, die Merkmale (oft engl. features) zu extrahie-ren, werden zuerst die Grenzen der Äußerung ermittelt. Dies geschieht meistensmittels einer einfachen Detektion der Lautstärke. Danach werden blockweisedie Merkmale gewonnen. Dazu wird meistens ein Block mit einer Größe von20ms gewählt und daraus die Merkmale extrahiert und gespeichert, die Blöckeüberlappen sich dabei. Diese gewonnen Merkmale beschreiben die Äußerungmit Informationen, die zur Spracherkennung herangezogen werden. Meistenswerden diese Merkmale mit einer Form der Spektralanalyse gewonnen und ty-pischerweise mit Hilfe der sogenannten Mel-Frequenz-Cepstrum-Koeffizienten(MFCC) gespeichert.

Die vorliegenden Vergleichsmuster werden nun herangezogen, um das aktuellberechnete Muster mit jedem einzelnen Referenzmuster zu vergleichen. Diesewurden ebenfals mit dem oben beschriebenen Verfahren gewonnen und lassensich nun durch einfache Vergleichsmuster miteinander vergleichen. Das ambesten passende Muster gewinnt.

Häufig wird jedoch nicht nur auf die Ähnlichkeit von Äußerungen vertraut, eswerden auch Wahrscheinlichkeiten für das Auftreten von Äußerungen benutzt.Der Extremfall hierbei ist, wenn vorgegebene Grammatiken benutzt werden undso nur bestimmte Wortfolgen erlaubt werden, denn so kann der Wortschatz fürdas zu erwartende Wort erheblich reduziert werden.

23

Page 24: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

2.5. DER MUSTERVERGLEICH KAPITEL 2. DIE SPRACHERKENNUNG

24

Page 25: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

3 Sprachsynthese

3.1 Einleitung

Schon seit der zweiten Hälfte des 18. Jahrhunderts wurde versucht, die mensch-liche Sprache künstlich zu erzeugen. Damals versuchte Wolfgang von Kempelen(23. Januar 1734 - 26. März 1804) eine Maschine zu bauen, die menschlicheSprachlaute erzeugen kann. [Schr93]

Abbildung 3.1: Nachbau der Sprechmaschine von Kempelen

Die Funktionsweise dieser „Sprechmaschine“basiert auf der möglichst natur-getreuen Nachbildung der menschlichen Sprechorgane. Dabei wird die Lungedurch einen Blasebalg und der Mund durch einen Gummitrichter simuliert. Zweizusätzliche kleine Rohre sollten die Nase ersetzen, diese wurden verschlos-sen, außer wenn Nasale oder Nasalvokale hervorgebracht werden sollten.Durch Veränderung der Abdeckung des Gummitrichters ließen sich sowohlunterschiedliche Vokale sowie auch gewisse Konsonanten erzeugen.

In den Anfängen der Computertechnik wurde mittels von Formantsynthetisato-ren die Sprache erzeugt. Diese Technik ist ein analoges Quelle-Filter-Modell.Die Quelle ist ein Signalgenerator, der ein periodisches, impulsförmiges Signalals Eingangssignal für den Filter liefert. Dieser Filter simuliert und modelliert denmenschlichen Vokaltrakt, indem er lautcharakteristische Spektren aufmischt.

25

Page 26: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

3.2. DIE MÖGLICHKEITEN DER SPRACHSYNTHESE KAPITEL 3. SPRACHSYNTHESE

Erst später wurde versucht, eine Verkettung menschlich klingender, natürlicherSprachsignalelemente zu erzeugen. Begonnen wurde mit dem Diphonansatzund später, als die Rechen- und Speicherkapazität zunahm, setzte man aufkorpusbasierte Systeme (engl. unit selection synthesis).Bei korpusbasierten Systemen wird aus einer Datenbank mit vorhandenen For-manten durch spezielle Suchalgorithmen und gewichtete Entscheidungsbäumeeine Reihe möglichst langer, gespeicherter Äußerungen gebildet.

Die Qualität synthetischer Sprache wird durch zwei erhebliche Punkte bestimmt.Zum Einen muss synthetische Sprache gut zu verstehen sein (Verständlichkeit)und zum Anderen muss diese auch angenehm klingen, sie muss natürlichklingen, es darf nicht unangenehm sein, einer künstlichen Sprache zuzuhören.Die Verständlichkeit synthetisch erzeugter Sprache kann inzwischen als sehr guteingestuft werden. Ein immer noch offenes Problem ist jedoch die Natürlichkeitkünstlich erzeugter Sprache.

Ein Teil dieser Arbeit wird sein, existierende Sprachsynthesesysteme für diedeutsche Sprache zu analysieren, eines auszuwählen, um es anschließend alsGegenstück zur Spracherkennung in eine Software zu implementieren, sodassein Dialogsystem entsteht.

3.2 Die Möglichkeiten der Sprachsynthese

3.2.1 Einsatz im Multimediabereich

Auch hier gibt es eine Vielzahl von Einsatzmöglichkeiten, z.B kann man sich einLernsystem für eine Fremdsprache vorstellen, in dem die Software die korrekteAussprache des fremdsprachigen Wortes vorliest.Im Internet ist heute schon sehr häufig die Funktion zu finden, sich z.B. einenArtikel vorlesen lassen zu können.Dienste, die mit sensiblen oder privaten Daten wie Bankkonten in Berührungkommen, können ebenfalls von der Anwendung eines Sprachsynthesesystemsprofitieren.Navigationssysteme können Steckenanweisungen während der Fahrt verbalübermitteln und machen das Kartenlesen überflüssig, was die Sicherheit desAutofahrens erhöht.

26

Page 27: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 3. SPRACHSYNTHESE 3.3. DER AUFBAU EINES SPRACHSYNTHESE-SYSTEMS

3.2.2 Einsatz für behinderte Menschen

Für blinde Menschen kann die Technik der synthetischen Sprache sehr wertvollsein. Da sie keine visuellen Displays benutzen können, müssen sie auf eineBraillezeile zurückgreifen, oder eben eine Software einsetzen, die ihnen denBildschirminhalt akustisch übermitteln kann. Auch Sprechbehinderte oder Taub-stumme profitieren von einem TTS-System (Text to Speech) und können soleichter mit anderen Menschen kommunizieren.

3.2.3 Einsatz als Kontrollwerkzeug

Audiovisuelle Rückmeldungen von kritischen Systemen sind auf jeden Fallimmer dann sehr wertvoll, wenn der agierende Mensch sich auf eine Tätigkeitkonzentrieren muss und keine Zeit findet, Kontrollen durchzuführen. So wirdes in zahlreichen Industriezweigen oder auch z.B. im Cockpit eines FlugzeugsSituationen geben, wo ein Feedback in Form von einem Sprachkommando sehrnützlich sein kann.

3.3 Der Aufbau eines Sprachsynthese-Systems

Sprachsynthese-Systeme bestehen immer aus zwei Komponenten, sie werdenhäufig NLP und DSP genannt.

Abbildung 3.2: Ein typischer Aufbau eines Sprachsynthesesystems

3.3.1 NLP (Natural Language Processing)

Unter NLP versteht man die Transformation von Text in Lautschrift und Prosodie-Beschreibung. Hier wird ein Text als Eingabe aufgefasst, alle Abkürzungenund Zahlen werden aufgelöst und durch Wörter ersetzt. Der so entstandenedurchgängige Text wird nun in Lautschrift konvertiert und es wird versucht,durch zusätzliche Informationen den Rhythmus, die Intonation, die Lautdauerund weitere Parameter zu beschreiben. Hierbei wird versucht, den Sachverhaltzu bestimmen und die Betonung auf bestimmte Teile zu setzen, denn durch dieBetonung wird das Verständnis erheblich bestimmt.

27

Page 28: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

3.3. DER AUFBAU EINES SPRACHSYNTHESE-SYSTEMS KAPITEL 3. SPRACHSYNTHESE

3.3.2 DSP (Digital Speech Processing)

Die DSP Komponente besitzt die Aufgabe den phonetisch beschriebenen Textdes NLP Moduls nun akustisch zu synthetisieren. Dieses DSP Modul arbeitet inder Regel mit einem der drei folgenden Hauptverfahren:

Formant Synthese:Das Sprachsignal wird anhand physikalischer Modelle berechnet. DieseTechnik ist sehr flexibel und hat geringste Ressourcen-Anforderungen.Dieses System benötigt sehr viele komplexe Regeln, welche die Lautegenau beschreiben, in welchem Kontext sie vorkommen und wie dieÜbergänge zu anderen Lauten sind. Dieses Verfahren bringt jedoch einenNachteil mit sich, die so produzierte Sprache klingt nicht sehr natürlich,wodurch die Akzeptanz eines solchen Systems sinkt.

Diphon Synthese:Das Sprachsignal wird durch Verkettung von Diphonen (Nachbarlaut Kom-binationen), die im Vorfeld aufgenommen wurden, erzeugt. Die Prosodie-Anpassung geschieht durch Signal-Manipulation. Die Diphon-Datenbankist eine Sammlung von Diphonen von zerlegten und phonologisch aus-gewogenen Testsätzen, die von einem Sprecher aufgenommen wurden.Eine Diphonsynthese ist somit automatisch personalisiert. Diese Technikbenötigt ebenfalls sehr wenig Ressourcen und eignet sich damit auch fürembedded Anwendungen, klingt jedoch ebenso wie die Formant Synthesenur wenig natürlich.

Non-uniform unit selection:Die Idee von Non-uniform unit selection ist, die Datenbank so zu erweitern,dass ganze Lautketten und sogar ganze, häufig verwendete Wörter inder Datenbank auftauchen. Denn umso weniger Verkettungen benötigtwerden, desto natürlicher klingt die Sprache. Es wird immer der längstevorhandene und prosodisch passende Teil genommen und mit dem nächs-ten verkettet. Falls kein großer Baustein vorhanden ist, wird auf einenkleineren zurückgegriffen und dabei über eine doppelte Kostenfunktionminimiert: die Stücke sollen gut aneinander passen und die Vorgaben derZiel-Prosodie erfüllen. Aufgrund der sehr großen Datenbank war frühernur eine servergestützte Synthese möglich. Inzwischen ist es aber unterden kommerziellen Sprachsynthesesystemen zu einem Quasi-Standardgeworden, da die so produzierte Sprache sehr natürlich klingt.

28

Page 29: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

4 Software für Spracherkennung

In der Betrachtung des Marktes der Spracherkennungssoftware kristallisierensich vier erfolgreiche Systeme heraus:

• IBM ViaVoice basierende Systeme wie Philips FreeSpeech oderVoicePro von linguatec

• Dragon NaturallySpeaking©Version 10 von der Firma Nuance®

• Sphinx von der Carnegie Mellon University, Pittsburgh, Pennsylvania,USA

• Julius des Nagoya Institute of Technology, Nagoya, Japan, in Verbindungmit dem HTK Toolkit der Cambridge University, UK

Sphinx und Julius sind plattformübergreifende Open-Source Lösungen, wel-che sich daher für meine Bachelorarbeit sehr gut eignen. Die beiden kom-merziellen Systeme ViaVoice und Dragon NaturallySpeaking©sind leider reineMicrosoft WindowsTMLösungen, die nur mit erheblichen Aufwand unter Linuxlauffähig werden, indem z.B. Microsoft WindowsTMvirtualisiert, oder wenn Wine,ein WindowsTM-Emulator verwendet wird.

29

Page 30: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

4.1. KOMMERZIELLE SYSTEME KAPITEL 4. SOFTWARE FÜR SPRACHERKENNUNG

4.1 Kommerzielle Systeme

4.1.1 IBM ViaVoice

IBM ViaVoice wird schon seit den frühen 70er Jah-ren entwickelt. [IBMHistory] Schon damals war esdas Ziel, eine Software zu entwickeln, die demAnwender ermöglicht, Geräte mit der Sprache zusteuern.

Erst 1984 wurde aus dem Forschungsprojekt bei IBM die erste Software für denBenutzer vorgestellt. Sie benötigte jedoch noch einen 4341 Mainframe Rechner.

Abbildung 4.2: IBM 4341 Mainframe Rechner mit 233MHz

Bereits wenige Jahre später wurde nicht mehr dieser raumfüllende MainframeRechner benötigt, jetzt konnte die Spracherkennung an jedem Personal Com-puter mit einer besonderen Hardware Adapter Karte durchgeführt werden. Aufdieser Adapter Karte war ein Mikrofoneingang und ein Chip für die Spracher-kennung vorhanden.Mitte der 90er Jahre führte IBM die Software VoiceType für das kürzlich er-schienene Microsoft WindowsTM95 und das hauseigene Betriebssystem OS/2ein. Diese Software wurde bis in das Jahr 2005 weiterentwickelt, es wurdenVersionen für Microsoft WindowsTM, aber auch teilweise kostenpflichtige undproprietäre Versionen für Linux und Apples Mac OS X angeboten.

IBM gab den Vertrieb von ViaVoice ab und veröffentlichte ein SDK (SoftwareDevelopment K it) für Entwickler. Dieses SDK erlaubte es, auf embedded Gerä-ten, wie einem Navigationssystem oder einem Handy Spracherkennung durch-zuführen. Linguatec und Philips haben auf ViaVoice aufgesetzt und eigene

30

Page 31: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 4. SOFTWARE FÜR SPRACHERKENNUNG 4.1. KOMMERZIELLE SYSTEME

Produkte auf den Markt gebracht. Aus ViaVoice ging jedoch leider nie eineaktuelle Spracherkennung für Linux hervor.Heute, im Jahr 2008, muss man, wenn man das Betriebssystem Linux einsetzt,entweder auf Sphinx der Carnegie Mellon University oder auf das HTK Toolkitder Cambridge University zurückgreifen.

4.1.2 Philips FreeSpeech und Philips SpeechMagic

Philips FreeSpeech ist eine umfangreiche Soft-ware im Bereich der Spracherkennung. Sie unter-stützt viele Sprachen und ist zudem mehrbenutzer-fähig. Die Software ermöglicht nach einem kurzemTraining eine genaue Spracherkennung. Des weiteren ist in diese Spracher-kennungssoftware ein Korrekturprogramm integriert, welches das gleichzeitigeKorrigieren eines gerade diktierten Textes möglich macht, indem man mit spezi-ellen Schlüsselwörtern das Programm steuert. Die primäre Zielgruppe dieserSoftware richtet sich vorallem an den Management-Sektor großer Firmen.

4.1.3 Dragon NaturallySpeaking

Dragon NaturallySpeaking©von der FirmaNuance, ist das meist verkaufte Sprach-erkennungsprogramm auf dem Markt. DieBeliebtheit hat mehrere Gründe, Nuance hatdurch Zukäufe, beispielsweise von der Firma ScanSoft, eine Monopolstellungin diesem Marktsektor erreicht. Dragon NaturallySpeaking© funktioniert zudemsehr gut, laut Spezifikation hat das Programm eine Erkennungsrate von biszu 99%, was eine sehr gut trainierte Datenbank voraus setzt. Die Spracher-kennungssoftware von Nuance wird hauptsächlich von Rechtsanwälten undMedizinern verwendet, da Nunace den Wortschatz auf diese Zielgruppe hinoptimiert hat.

Ein besonderes Feature ist die Möglichkeit, während des Diktierens den Satz-bau zu ändern und so den schon gesprochenen Satz zu korrigieren. Es lässtsich mit diesem Programm jedoch nicht nur diktieren, man hat zudem dieMöglichkeit, den Computer selbst durch Sprache zu steuern. Es lassen sichbestimmte Befehle anlernen, die dann bei erfolgreicher Spracherkennung aus-geführt werden, so kann kinderleicht z.B. der Web-Browser mit der Stimme

31

Page 32: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

4.1. KOMMERZIELLE SYSTEME KAPITEL 4. SOFTWARE FÜR SPRACHERKENNUNG

navigiert werden. Das Programm ist leider jedoch nicht unter Linux lauffähig, essetzt zwingend ein aktuelles WindowsTMBetriebssystem vorraus. Auch die 1GBArbeitsspeicher, welche in den benötigten Systemressourcen genannt werden,lassen vermuten, dass das Programm sehr ressourcenintensiv arbeitet.

32

Page 33: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 4. SOFTWARE FÜR SPRACHERKENNUNG 4.2. OPEN-SOURCE SYSTEME

4.2 Open-Source Systeme

4.2.1 CMU Sphinx

Sphinx ist ein Open-Source Softwarepaket derrenommierten, amerikanischen Carnegie MellonUniversity, welches mit der BSD Open-Source Li-zenz vertrieben, oder besser gesagt angeboten wird. Diese Lizenz besagt,dass jeder die Software benutzen und sogar verkaufen darf, es muss jedocherkenntlich gemacht werden, dass es sich um eine Software der CMU handelt.Die Sphinx Software ist ein aus einem DARPA (Defense Advanced ResearchProjects Agency) finanzierten Projekt hervorgegangen. Aktuell wird das Projektan der CMU weiterentwickelt und erhält z.B. von SUN Microsystems Unterstüt-zung. [LHR90] Im Grunde ist Sphinx ein sprecherunabhängiges System zurSpracherkennung mit großem Vokabular, bei dem HMM (Hidden Markov Model-le) zum Einsatz kommen. Eine Besonderheit ist die Möglichkeit zur Erstellungeigener Sprachmodelle. So ist es für den Anwender möglich, ein persönlichesSprach- und Akustikmodel für seine individuelle Sprache und auch für seineindividuelle Stimme zu erstellen.

Derzeit werden zwei unterschiedliche Versionen von Sphinx entwickelt:

• Sphinx 3Diese Version ist für eine höchstmögliche Erkennungsrate ausgelegt. Aller-dings sind die verwendeten Algorithmen so komplex, dass die Erkennung,auch mit aktueller Hardware, nicht in Echtzeit erfolgen kann.

• Sphinx 4Aufgrund der enormen Hardware Anforderungen und der entstandenenUnflexibilität von Sphinx3, wurde die Software in der Version 4 komplettredesigned und in Java neu geschrieben.

Aber auch Sphinx4 ist sehr Ressourcen raubend, einfache Demo Anwendungenbenötigen bereits eine Java Virtual Machine mit 1GB Speicher. Sphinx4 ist aberauch sehr modular aufgebaut, so dass sich Plugins zur Laufzeit einbinden undauch wieder lösen lassen. Durch die Modularität kann man in Zukunft sehrflexibel auf Neuerungen reagieren. [WLK+04]

33

Page 34: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

4.2. OPEN-SOURCE SYSTEME KAPITEL 4. SOFTWARE FÜR SPRACHERKENNUNG

4.2.2 Julius und das HTK Toolkit

Julius

Julius ist eine LVCSR(Large VocabularyContinuous Speech Recognition)-Engine fürDiktate mit einem großen Vokabular. Julius istdafür ausgelegt, aus einem sehr großen VokabularSprache zu erkennen, dabei nicht nur einzelne,sondern auch zusammenhängende Wörter, die zueinem Satz geformt sind. Dies ist ein wichtiger Aspekt, denn so schafft es Julius,die Erkennungsrate zu steigern. Denn durch vorgegebene Satzstrukturenkönnen die möglichen Treffer reduziert werden. Ein großes Vokabular bedeutethier, 60 000 Wörter. Julius schafft es, durch ein 2-schichtiges System inEchtzeit Sprache aus solch einem großen Vokabular zu erkennen.Julius wird seit 1997 ständig weiterentwickelt und von vielen namhaftenOrganisationen unterstützt. Ursprünglich wurde die Software für die JapanischeSprache entwickelt, es hat sich aber gezeigt, dass sich die Software durch ihrevielfältige Unterstützung von Standards, wie HMM Modellen, DFA Grammatikenund N-Gram Modellen auch sehr gut für anders aufgebaute Sprachen eignet.Mit Julius ist es also möglich, anhand eines vorhandenen Sprachmodells dieSprache zu erkennen und das mit unglaublicher Geschwindigkeit und Präzision.[KLTI+04]Wie entsteht jedoch solch ein benötigtes Sprachmodell?Dies geschieht mit Hilfe einer Sammlung von Werkzeugen für Hidden MarkovModelle – dem HTK Toolkit.

HTK Toolkit

Das HTK Toolkit ist eine Sammlung von Werkzeugen zum Erstellen und Modifi-zieren von HMMs. Es kann nicht nur dazu benutzt werden, um Sprachmodellezur Spracherkennung anzufertigen, sondern HTK ist in der Lage jegliche Artvon Modellen zur Mustererkennung, so wie auch die Spracherkennung eineist, zu erstellen. So wird das HTK Toolkit z.B. auch dazu eingesetzt, eine DNA-Sequenzanalyse durchzuführen.Das HTK Toolkit erstellt hier in unserem Fall das Sprachmodell. Eingabe-Datensind zum einen die Sprachaufnahmen für die Referenzmuster, zweitens benö-tigt HTK eine Liste aller in den Mustern vorkommender Phoneme. Als drittes

34

Page 35: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 4. SOFTWARE FÜR SPRACHERKENNUNG 4.2. OPEN-SOURCE SYSTEME

braucht das HTK Toolkit als Input eine Zuordnungstabelle der jeweiligen Wör-tern und Phonemen zu den entsprechenden Sprachaufnahmen. Intern erstelltdas HTK Toolkit noch eine Liste der Triphone. [Youn94]

Beispieldaten sind im Anhang zu finden.

Hidden Markov Modelle

In diesem Abschnitt möchte ich kurz auf die eingesetzte Technik der HiddenMarkov Modelle eingehen und diese anhand eines Beispiels darstellen. DasHidden Markov Model (kurz: HMM), welches nach dem russischen Mathe-matiker Andrej Andrejewitsch Markov benannt, ist eine Darstellungsform, einstatistisches Modell zu repräsentieren.Dieses Modell beschreibt einen der verbreitetsten und auch sichersten Suchal-gorithmen. Der Nachteil bei diesem Algorithmus ist jedoch der hohe Rechenauf-wand. Für einen kompletten Durchlauf eines Wortes mit n Phonemen und derLänge T würde der Rechenaufwand bei 2T 2n liegen. Da selbst bei einer kleinenAnzahl von Werten enorme Rechenzeit benötigt wird, bricht man das Verfahrenvorzeitig ab und setzt spezielle Optimierungsalgorithmen (Viterbi-Algorithmus,Forward-Backward-Algorithmus, Baum-Welch-Optimierungs-Regeln) ein, umdie Verschlechterung des Ergebnisses durch vorzeitigen Abbruch zu eliminieren.Dadurch wird aber eine Echtzeitberechnung erst möglich.

35

Page 36: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

4.2. OPEN-SOURCE SYSTEME KAPITEL 4. SOFTWARE FÜR SPRACHERKENNUNG

In der Spracherkennung wird das gesuchte Wort als eine Markov Kette be-schrieben. Jedes Phonem wird als ein Zustand in der Markov-Kette dargestellt.

Abbildung 4.7: Beispiel einer Markov Kette

In diesem Beispiel sind die Phoneme O, F, E, N, T in einer Markov-Kette dar-gestellt. Die gerichteten Kanten x1...e12 beschreiben die Lautübergänge vondem einen zum nächsten Phonem. In Abbildung 4.7 sind nur für dieses Beispielrelevante Kanten abgebildet, denn eigentlich besitzt jedes Phonem Kanten zujedem Phonem. Die Endzustände y1...y5 beschreiben das erkannte Wort. Indem Beispiel in der Abbildung 4.7 kann das erkannte Wort z.B. „Ofen“ sein, fallsder Endzustand y4 ist, oder es kann auch das Wort „Oft“ sein, falls der Endzu-stand y5 ist. Es könnte passieren, dass der Sprecher das „e“ nicht ausspricht,also „Ofn“ sagt, so wie es umgangssprachlich sehr gern gemacht wird. DasModell würde trotzdem den richtigen Endzustand y4 für das das Wort „Ofen“ er-reichen. Jeder Zustand besitzt auch eine Kante auf sich selbst, so können langausgesprochene Phoneme auch erkannt werden. Wenn der Sprecher das „E“ indie Länge ziehen würde, welches „Ofen“ zu „Ofe:n“ macht, dann wird auchdiese Situation ebenfalls durch dieses Modell abgedeckt und das richtige Wort„Ofen“ erkannt.

Jeder Zustand hat Wahrscheinlichkeiten, in den nächsten Zustand überzugehen.Dabei sind diese gewichtet, z.B. ist die Wahrscheinlichkeit, dass auf ein ‚e‘ ein‚r‘ folgt sehr viel höher, als dass auf ein ‚s‘ ein ‚r‘ folgt.

36

Page 37: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

5 Software für Sprachsynthese

In dieser Arbeit wird das Verwenden des Betriebssystems Linux sowie derOpen-Source Software angestrebt, weshalb in folgender Marktübersicht nurwenig auf proprietäre und – oder auch kommerzielle Software eingegangenwird. In diesem Sektor gibt es für WindowsTMwesentlich mehr Software, freie undgute Produkte für Linux zu finden, ist leider nicht so einfach.

5.1 Kommerzielle Systeme

5.1.1 AT&T Natural Voices SDK

Natural VoicesTMvon AT&T ist ein Text-zu-Sprache Sys-tem. Entstanden ist dieses System aus einem For-schungsprojekt der AT&T Inc. Forschungsabteilung. DieSoftware wirbt damit, das beste Text-zu-Sprache System mit der verständ-lichsten Sprache zu sein. Leider ist das SDK(Software Development K it) nurkommerziell, für $300 zu beziehen.

5.1.2 FonixTalk 6.1 SDK

FonixTalk ist ein mehrsprachiges Text-zu-Sprache Sys-tem, welches kommerziell von fonix®vertrieben wird.Glücklicherweise ist aber ein SDK für Linux verfügbarund könnte somit ideal für das Projekt der Bachelorar-beit verwendet werden.FonixTalk erzeugt sehr natürlich klingende Sprache und das äußerst ressour-censchonend, sodass FonixTalk auch auf embedded Geräten laufen kann, wasfür dieses Projekt sehr nützlich ist. Die Sprachausgabe kann sehr genau be-stimmt werden, es gibt zahlreiche Parameter, z.B. für Pausen oder Emotionen,

37

Page 38: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

5.2. OPEN-SOURCE SYSTEME KAPITEL 5. SOFTWARE FÜR SPRACHSYNTHESE

ebenso können auch Fremdwörter in der richtigen Sprache ausgegeben wer-den, da das System selbsändig zwischen verschiedenen Sprachen wechselnkann.

5.2 Open-Source Systeme

5.2.1 MBROLA

Ein Beispiel für Open-Source Software ist MBROLA(MultiBand Resynthesis Overlap and Add), ein Synthesizer fürmehr als 20 Sprachen. Entwickelt wird das System an derUniversität in Mons, Belgien. Die Software ist proprietär,wirdjedoch kostenlos für nicht kommerzielle Zwecke für sehr viele,auch exotische Plattformen angeboten.

Die Technik hinter MBROLA besteht aus der Verkettung von Diphonen. Jedochist MBROLA nicht ein Text-zu-Sprache System, denn es wird ein Textvorver-arbeiter benötigt. Der Input von MBROLA ist eine Liste von Phonemen mitzusätzlichen Informationen zur Länge der einzelnen Phoneme und eine Be-schreibung der Tonhöhe der Phoneme. Daraus generiert das System eine gutklingende Sprachausgabe.

5.2.2 BOSS - Bonn Open Synthesis System

Das Bonn Open Synthesis System (BOSS) ist ein freiesOpen-Source Sprachsynthese-System. Das BOSS-Systembasiert auf einer Client-Server-Architektur, die von Entwick-lern und Forschern verwendet werden kann, um eigene Text-To-Speech- oder Content-To-Speech-Systeme zu entwickeln.Das BOSS-System verwendet den Non-Uniform-Unit-Selection-Ansatz und istso in der Lage, eine gute Sprachqualität mit hoher Natürlichkeit zu erzielen.

5.2.3 FreeTTS

FreeTTS ist eine in JavaTMgeschriebene Programmbibliothek, die zur Sprach-synthese dient. Wenn jemand eine Sprachausgabe in sein JavaTMProgrammintegrieren möchte, ist FreeTTS die erste Wahl. Auch FreeTTS verfolgt den

38

Page 39: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 5. SOFTWARE FÜR SPRACHSYNTHESE 5.2. OPEN-SOURCE SYSTEME

Ansatz der Diphon Synthese. Da FreeTTS aus dem FestVox Projekt entstand,sind die daraus verfügbaren Sprachen auch hier verwendbar, ebenso könnendie MBROLA Sprachen verwendet werden.

5.2.4 Festival und Festival Lite (Flite)

Festival Speech Synthesis Systems wurde in einem Forschungslabor derEdinburgh University Ende der 90er Jahre entwickelt. Festival ist nicht nur einText-zu-Sprache Synthesizer auf Basis von Diphonen, die durch HTS(HiddenMarkov Model Based Synthesis) zusammengesetzt werden, sondern auch eineSammlung von Werkzeugen, um ein eigenes Sprachpaket zu erstellen. Sokönnte der Computer mit der eigenen Sprache sprechen. Leider ist trotz dieserMöglichkeit keine frei verfügbare deutsche Sprache für Festival verfügbar. FürFestival gibt es eine mächtige C++ Bibliothek und die Möglichkeit, mittels derScriptsprache Scheme während Laufzeit das Stimmbild zu beeinflussen.Flite ist, wie der Name sagt eine light-Version des großen Bruders Festival.Flite ist sehr schneller, reiner Text-zu-Sprache Synthesierer. Flite kann sogarauf embedded Geräten, wie einem Palm, Sprache in Echtzeit synthesieren.

In Kombination mit HTS (HMM-based Speech Synthesis System)ist Flite in der Lage, eine mit einem Hidden Markov Modell trainierteSprachdatenbank zu synthesieren und liefert so eine sehr guteQualität.

5.2.5 eSpeak

eSpeak, der Nachfolger der schon sehr früh entwickeltenSoftware speak, ist ein Open Source Projekt des SoftwareEntwicklers Jonathan Duddington. eSpeak ist ein sehr klei-nes Programm für Sprachsynthese und kommt mit nur ca.700Kb Speicher aus. Das Programm nutzt keine Diphon-Synthese, die aufeiner Datenbank vorhandener Samples basiert, sondern erzeugt das Signalrein durch Signalmodellierung, ähnlich einer Formanten-Synthese. Aus diesemGrund hört sich eSpeak nicht so natürlich und flüssig an, es ist jedoch durchausklar und verständlich. eSpeak stellt zudem eine Bibliothek für C und C++ bereit,um eSpeak in die eigene Software mit einzubauen. Die API dieser Bibliothekist sehr einfach gehalten, trotzdem lassen sich verschiedene Parameter, wiedie Sprache oder auch die Sprechgeschwindigkeit einstellen.

39

Page 40: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

5.2. OPEN-SOURCE SYSTEME KAPITEL 5. SOFTWARE FÜR SPRACHSYNTHESE

40

Page 41: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

6 Das Sprachmodell

6.1 Einleitung

Ein Spracherkennungssystem analysiert den Sprachinput, indem es ihn mitdem Sprachmodell vergleicht. Um beste Ergebnisse zu erhalten, sollte dasSprachmodell eine möglichst genaue Repräsentation der menschlichen Stimmedarstellen. Ein gutes Sprachmodell in Verbindung mit einer schlechten Softwareerzielt trotzdem weitaus bessere Ergebnisse, als ein schlechtes Sprachmodellmit guter Software. Aus diesem Grund sollte natürlich dafür gesorgt werden,dass das Sprachmodell qualitativ möglichst gut ist. Ein Sprachmodell bestehtaus einer Zusammenstellung mehrerer Dateien.

Im folgenden wird ein Überblick der Elemente gegeben, aus denen sich dieDaten der Sprachmodells zusammensetzen.

Ziel des Sprachmodells ist die möglichst genaue Repräsentation der möglichenSatz-Konstrukte auf Laut-Ebene. Wie bereits im Abschitt 2.5 (Mustervergleich)dargestellt, basiert die Spracherkennung auf einer Statistikrechnung. DieseStatistikrechnung vergleicht den aktuellen Input mit einem „Set“ an Daten - demSprachmodell.

6.2 Lautschrift

Ein erster Schritt für ein Sprachmodell kann die Bestimmung der Lautschriftsein, die die Daten der Transkription liefert. Mit der Zeit haben sich unterschied-liche Lautschriftsysteme entwickelt, mit dem Ziel, die Aussprache von Lautenmöglichst exakt zu beschreiben. Lautschriften spielen besonders beim Erlernenvon Fremdsprachen eine große Rolle, aber auch hier in der Computerlinguistikund der Phonetik dienen diese Lautschriftsysteme zum detailierten Beschreibender exakten Aussprache.Es gibt unterschiedliche Lautschriftsysteme. Weltweit wird die sogenannte IPA

41

Page 42: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

6.2. LAUTSCHRIFT KAPITEL 6. DAS SPRACHMODELL

(International Phonetic Alphabet) Notation eingesetzt.Die IPA-Zeichentabelle nutzt Buchstaben des lateinischen und griechischenAlphabets, teilweise in abgewandelter Form und andere Symbole für weitereAussprachedetails. Jedes Zeichen bezeichnet dabei einen Laut oder beschreibteinen bereits angegebenen Laut näher. So finden sich für den Buchstaben Amehrere Lautschriftzeichen, die jeweils einen anderen phonetischen Charakterhaben:

• a offenes, kurzes a, Beispiel Kamm [kham]

• 5 dumpfes, etwas helles a, zwischen a und ae, Beispiel besser ["bEs5]

• A dunkles, langes a, Beispiel Bad [bAt]

• 6 dunkles, gerundetes a, Beispiel engl. flop [fl6p]

• æ offenes, etwas hells a zwischen a und ä, Beispiel engl. axe [æks]

• ã nasaliertes a, Beispiel Orange [o"rã:Z@]

• 2 dunkles, ungerundetes a, Beispiel engl. butter [b2th@]

Unter den Symbolen bedeutet z.B. das Zeichen :, dass das vorangestellteZeichen lang ausgesprochen wird.Die Sonderzeichen dieses IPA-Alphabets sind in dem Unicode-Zeichensatzenthalten. Dies ist ein internationaler Standard für jedes sinntragende Schrift-zeichen. Alle Schrift- oder auch andere Zeichen sind mit UTF-8 codiert. Dies istdie am weitesten verbreitete Methode, Unicode-Schriftzeichen zu speichern.Die IPA-Notation wird vor allem in der Erstellung und Archivierung von Drucker-zeugnissen verwendet.Das HTK Toolkit und somit auch Julius arbeiten aber der ASCII Codierung.Zwischen 1987 und 1989 wurde SAMPA(Speech Assessment MethodsPhonetic Alphabet) entwickelt, um die phonemischen Transkriptionen der of-fiziellen Sprachen der Europäischen Gemeinschaft elektronisch übermittelnund verarbeiten zu können. Das SAMPA Alphabet wurde von dem britischenPhonetiker John C. Wells als Auszug des IPA maschinenlesbar und tastatur-freundlich codiert und kann per 7-Bit ASCII dargestellt werden. 1995 veröffent-lichte John C. Wells die Erweiterung X-SAMPA (Ex tendet Speech AssessmentMethods Phonetic Alphabet), in der alle IPA-Zeichen dargestellt werden kön-nen. X-SAMPA wird seither zunehmend weltweit verwendet, vor allem auch,für Spracheingabe- und Sprachausgabe-Systeme sowie für lexikographischeDatenbanken.

42

Page 43: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 6. DAS SPRACHMODELL 6.3. PHONEM

Der Unterschied von IPA zu X-SAMPA wird an dem Wort „Sprache“deutlich:In der IPA Notation würde so geschrieben werden: S p ö a: x @

In der X-SAMPA Notation folgendermaßen: S p r a: x @

Wenn erforderlich, gibt auch Methoden, diese unterschiedlichen Zeichen vonIPA und X-SAMPA jeweils in das andere Format zu konvertieren. [XSP2IPA],[Wiki]: SAMPA, X-SAMPA, IPA, Liste_der_IPA_Zeichen

6.3 Phonem

So wie der Buchstabe als Zeichen im Schrifttext steht, so werden in der Laut-schrift die einzelnen Phoneme dargestellt. Ein Ziel der Phonologie ist, einInventar der Phoneme und ihrer Varianten einer Sprache zu erstellen. Definiertwird das Phonem als die kleinste, bedeutungsunterscheidende Einheit der Spra-che, es gilt als Abstraktion einer konkreten Lautäußerung. Die Realisierung desPhonems, also das Hörbarmachen, wird Allophon genannt. Für manche Phone-me gibt es Regeln, die durch die Abhängigkeit der Lautumgebung bestimmen,mit welchem Allophon das Phonem hörbar gemacht wird.Beispiel: Das Schriftzeichen ch wird je nach Laut-Kontext mit [C] oder [x] ange-geben. Als Regel: [x] steht nur nach /a/, /o/, /u/, /au/.Zwei Wörter, die sich nur in einem Phonem unterscheiden, nennt man einMinimalpaar (Beispiel: Tanne / Kanne oder Miete / Mine). Phoneme werdenaußerdem eingeteilt in Merkmale wie konsonantisch oder sonorantisch, sieunterscheiden sich in stimmhaften und aspirierten Merkmalen.Verschiede Eigenschaften der Phoneme werden auch durch Merkmale aus derAkustik und der Artikulation bezeichnet. Die Stellung oder die Bewegung derSprachorgane bestimmt die artikulatorischen Eigenschaften der Phoneme. Manunterscheidet:

• Zungenstellung (vorn, neutral, hinten)

• Mundöffnung (offen, halboffen, geschlossen)

• Lippenrundung (gerundet, ungerundet)

• Nasalität (nasal, oral)

• Artikulationsort (labial, inderdental, dental, alveolar, palatal, velar, uvular,laryngal)

• Artikulationsart (Verschluss, Verschluss mit Reibung, Reibung, nasal,lateral, Schwingung)

43

Page 44: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

6.3. PHONEM KAPITEL 6. DAS SPRACHMODELL

• Stimmbeteiligung (stimmhaft, stimmlos)

• Quantität (kurz, lang)

Aus der Formantenstruktur der komlexen Schallwellen ergibt sich eine be-stimmte akustische Phonem-Eigenschaft. (Als Formant wird in der Akustik dieakustische Energie in einem bestimmten Frqeuenzbereich bezeichnet.) DasPhonem /u/ kennzeichnet sich z.B. durch einen niedrigen ersten und einenniedrigen zweiten Formanten.

Wie aus der Abbildung 6.1 zu entnehmen ist, hat das Phonem /u/ durch diebeiden Formantenmerkmale einen dünnen und dunklen Klang. [FIGGEUDO]

Abbildung 6.1: Darstellung zweier Formanten für die Bestimmung akusti-scher Phonemeigenschaften. Aus [FIGGEUDO]

44

Page 45: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 6. DAS SPRACHMODELL 6.4. BI- UND TRIPHONE

6.4 Bi- und Triphone

Da ein Sprachmodell, das nur aus einzelnen Phonemen besteh, noch sehrungenau ist, verwendet man Phonemkombinationen. Jedes Phonem wird jenach vor- und nachfolgendem Phonem anders ausgesprochen. (Das Phonem/m/ im Wort „Mama“ klinkt am Anfang anders als in der Mitte.) Diese verknüpftenInformationen werden als Bi- und Triphone auch in unserem Sprachmodellverwendet. Als Beispiel wieder das Wort Sprache, nun als Triphonkombinationin X-SAMPA Lautschrift:

+-S-p, S-p-r, p-r-a:, r-a:-x, a:-x-@, x-@-*

Durch die fiktiven Phoneme ’+’ und ’*’ an Wortanfang oder -ende wird jedesPhonem zu einem Triphon, einer Kombination aus 3 Phonemen. Wie man er-kennen kann, wird diese Transkription zwar komplexer, versieht aber jeden Lautmit Kontextinformationen. Ein r-a:-x Triphon repräsentiert trotzdem nur den Laut„a:“ und nicht „r a: x“.Durch die erhöhte Laut-Differenzierung steigert wird die Erkennungsrate erheb-lich gesteigert. All diese Informationen werden in dem HMM (H idden MarkovModell) gespeichert.Da theoretisch jedes Phonem an jedes gereiht werden kann, wären extremviele Trainingsdaten notwendig, um alle Kombinationen verlässlich abzudecken.

Deshalb werden Phoneme in Gruppen zusammengefasst. Beispielsweise kön-nen alle nasalen Phoneme gruppiert werden. Dies nennt man „clustering“.Dabei werden die Gruppen der Phoneme von dem HTK Tool HHed zusammen-gefasst und geclustert. [YEG+06]

6.5 Prosodie

Außer den Phonemen ist Prosodie (griechisch: das Hinzugesungene) maßgeb-lich für die Spracherkennung. Die Prosodie stellt die spezifischen sprachlichenEigenschaften wie der Akzent im Silben-, Wort-, Phrasen- und Satzakzenten mitUnterschieden in Lautstärke und / oder Tonhöhe. Auch Intonation, Sprechtempo,Sprechrythmus und -pausen werden durch die Prosodie unterschieden.Die Schriftauszeichnungen wie fett, kursiv, Schriftgröße geben auf ihre Artprosodische Merkmale wieder. So korreliert die Interpunktion mit dem Spreche-rythmus und den Pausen. Z.B. werden Fragezeichen und Rufzeichen so durchdie Intonation markiert, Pausen korrelierern mit Komma oder Punkt.

45

Page 46: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

6.5. PROSODIE KAPITEL 6. DAS SPRACHMODELL

Die Prosodie beinhaltet ebenfalls die Klangfarbe verschiedener Emotionen, siekann personalisierte Merkmale wie Herkunft, Geschlecht, Alter unterscheiden.Mehrdeutigkeiten können ausgelöst werden durch bestimmte Akzentuierung,auch wichtige Informationen werden dadurch hervorgehoben.Prosodische Merkmale haben als Teil der Sprache auch akustisch messba-re Eigenschaften – diese können zu Merkmalen für eine Mustererkennungweiterverarbeitet werden.

Eine durch die Sprachsynthese erzeugte Stimme kann nur natürlich klingen,wenn sie auch prosodische Merkmale beinhaltet.

46

Page 47: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 6. DAS SPRACHMODELL 6.6. AKUSTIKMODELL

6.6 Akustikmodell

Das Akustikmodell repräsentiert für die Spracherkennungssoftware die Stimmedes Menschen. Es stellt den individuellen Klang der aufgenommenen Stimmein den einzelnen Laute dar.Das Akustikmodell wird aus Sprachaufnahmen erstellt, indem es in ein HMMModell konvertiert wird. Dieser Vorgang erfordert mehrere Schritte. Angefangenbei der Filterung der Sprache, wobei die akustischen Grenzen der Äußerungbestimmt werden und eine Konvertierung in eine spektrale Darstellung derAufnahme durchgeführt wird. In einem nächsten Schritt werden die Merkma-le (features) extrahiert und in sogennanten MFCC (Mel F requency CepstralCoefficients) gespeichert. Zum Schluss werden die so gewonnen Daten in einHMM Modell konvertiert.

Als Beispiel hier das Phonem ‚a:‘ aus einem HMM Modell.

~h " a : "

<BEGINHMM>

<NUMSTATES> 5

<STATE> 2

~s "ST_a : _2_1 "

<STATE> 3

~s "ST_a : _3_1 "

<STATE> 4

~s "ST_a : _4_1 "

<TRANSP> 5

0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00

0.000000e+00 8.805916e−01 1.194084e−01 0.000000e+00 0.000000e+00

0.000000e+00 0.000000e+00 8.695422e−01 1.304578e−01 0.000000e+00

0.000000e+00 0.000000e+00 0.000000e+00 7.917601e−01 2.082399e−01

0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00

<ENDHMM>

Für das Sprachmodell wird eine Liste aller Sprachaufnahmen und den darinenthaltenen Worten in der Datei prompts gespeichert. Das Programm selbstspeichert die Sprachaufnahmen mit dem ganzen, absoluten Pfad und den darinenthaltenen Wörtern in der Datei user.samples.

47

Page 48: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

6.7. WÖRTERBUCH KAPITEL 6. DAS SPRACHMODELL

6.7 Wörterbuch

Durch Akustikmodell wird das Spracherkennungssystem an eine bestimmteStimme gebunden. Im weiteren geht es um die Auswahl eines Aussprachewör-terbuchs.Im Rahmen dieses Projektes wurde das BOMP (kurz für „Bonn Machine-Readable Pronunciation Dictionary“) Wörterbuch der Universität Bonn verwen-det. Das BOMP ist ein Aussprachewörterbuch für sehr viele deutsche Wörter,insgesamt ca. 140 000. Das Wörterbuch verwendet die X-SAMPA-Notation, sowie wir es für das HTK Toolkit benötigen.Da das Wörterbuch darf nicht verbreitet werden, muss man es per eMail beider Universität Bonn anfragen, und in der Regel erhält man einen Downloadlink.[BOMP]Das BOMP Wörterbuch enthält neben dem deutschen Wort und der Über-setzung in die Lautschrift für die Aussprache die Kategorie des Wortes, densogenannten Terminal des Wortes. Diese Kategorie gibt an, um welche Wortartes sich handelt, z.B. NOM für Substantiv (Nomen) oder VRB für ein Verb.Die Datei ist wie eine Tabelle aufgebaut und wird auch so gespeichert. Dieeinzelnen Spalten werden mit einem Tabulator (\t) getrennt.

Wort Kategorie Aussprache. . . . . . . . .Sprache NOM Spra:x@Sprachebene NOM ’Spra:x,?e:b@n@Sprachen NOM ’Spra:x@nSprachfamilie NOM ’Spra:xfa,mi:li@Sprachfamilien NOM ’Spra:xfa,mi:li@nSprachlosigkeit NOM ’Spra:x,lo:zICkaItSprachlosigkeiten NOM ’Spra:x,lo:zICkaIt@n. . . . . . . . .

Tabelle 6.1: Aufbau des BOMP Wörterbuchs

Ziel dieser Arbeit ist, es dem Benutzer zu erleichtern, das sehr komplex aufge-baute Sprachmodell selbst zu erstellen. Das Spracherkennungssystem erkennteine Auswahl an Wörtern, alle neuen Wort müssen angelernt werden. DasBOMP Wörterbuch wird nun dazu verwendet, eine Liste an Übersetzungen indie X-SAMPA Lautschrift bereit zu halten. Nun kann der Benutzer auch ohne dieKenntnis der X-SAMPA Lautschrift weitere Wörter auswählen und zum Sprach-modell hinzufügen. Die gewählten Wörter werden in der Datei model.lexiconund in der Datei user.words gespeichert.

48

Page 49: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 6. DAS SPRACHMODELL 6.8. JULIUS VOKABULAR

6.8 Julius Vokabular

Die vom Benutzer aus dem Aussprachewörterbuch gewählten Wörter, odereigens definierte Wörter werden in einem speziellen Format für Julius bzwHTK gespeichert. Das Julius Vokabular wird nicht in Tabellenform gespeichert,vielmehr wird hier eine Liste mit Abschnitten verwendet.Jeder Abschnitt ist durch die Kategorie, bzw Terminal mit führendem %gekennzeichnet, die Sortierung spielt dabei keine Rolle.

% NOMSprache Spra:x@Sprachfamilie ’Spra:xfa,mi:li@. . . . . .% VRBsprechen ’SprE|C@nzeigen ’tsaI|g@n. . . . . .

Tabelle 6.2: Aufbau einer Julius Vokabeldefinition

6.9 Julius Grammatik

Die Julius Grammatik definiert mögliche Wortfolgen in Form ihrer Kategorie.

S:NS_B: Kategorie Kategorie NS_E

Tabelle 6.3: Aufbau einer Julius Grammatikdefinition

Jeder Satz wird mit „S:“eingeleitet. „NS_B“ und „NS_B“ sind zusätzlicheSatzstart- und Satzstop-Kennzeichnungen.So wird aus dem Satz „Das ist ein Test“ folgende Julius Grammatikdefinition:

S:NS_B ART:PRO VRB ART:NUM:QAV:TME NOM NS_E

Tabelle 6.4: Beispiel einer Julius Grammatik Definition

Mehrdeutige Wörter sind durch ein „:“ getrennt.So wird deutlich, dass das Wort „Das“ sowohl ein Artikel (ART), als auch einPronomen (PRO) sein kann. Die Funktionsweise dieser Grammatikverwaltungist im Abschnitt 8.2.3 GrammarManager erklärt.

49

Page 50: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

6.10. TRAININGSDATEN KAPITEL 6. DAS SPRACHMODELL

6.10 Trainingsdaten

Die Trainingsdaten sind RIFF-Wave Aufnahmen mit einer Samplerate von 16kHzund einer Bitrate von 16Bit. Diese Sprachaufnahmen bestimmen die Qualität desSprachmodells. Umso besser diese Aufnahmen sind, desto besser funktioniertdie Spracherkennung.

Es sollten jegliche Hintergrundgeräusche vermieden werden, jede Art vonStörung wie z.B. ein vorbeifahrendes Auto bei offenem Fenster, sollten nicht indiesen Aufnahmen vorkommen. Auch Hall ist nicht erwünscht, die Aufnahmenklingen dann nicht mehr klar und natürlich, und dies hat zur Folge, dass esdie Erkennungsrate des Programms verschlechtert. Auch wenn der Hall in denAufnahmen nicht zu hören ist, ist er trotzdem vorhanden. Hall entsteht, wenn dieSchallwellen von glatten Flächen zurückgeworfen werden. Aus diesem Grundsollte darauf geachtet werden, dass alle großen und glatten Flächen im Raumreduziert werden. Hilfsmittel hierfür sind Teppiche, Vorhänge für die Fenster, dieebenfalls sehr viel Hall erzeugen, und Möbel oder Pflanzen. In jedem Fall mussfür eine schallabsorbierende Oberfläche gesort werden.

Jedoch nicht nur die Räumlichkeit, sondern auch das Mikrofon spielt einesehr große Rolle. Bei Mikrofonen unterscheidet man zwischen gerichtetenund ungerichteten Mikrofonen. Die Richtcharakteristik spielt vor allem bei denHintergrundgeräuschen eine wichtige Rolle.

Abbildung 6.2:Ungerichtetes undgerichtetes Mikrofon

Ungerichtete Mikrofone weisen eine Kugelcharak-teristik auf. Das heißt, sie nehmen den Schall vonallen Seiten gleich stark auf. Nebengeräusche wer-den gleichwertig in die Aufnahme mit aufgenom-men, weshalb diese Mikrofone in der professionel-len Audiotechnik wenig verwendet werden.

Das Richtmikrofon ist ein Mikrofontyp, der Schallaus einer gewissen Richtung viel stärker aufnimmtals Schall aus allen anderen Richtungen. So kanngewährleistet werden, dass in einer Sprachaufnah-me der Sprecher am besten zu hören ist.

50

Page 51: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 6. DAS SPRACHMODELL 6.10. TRAININGSDATEN

Sennheiser Headset

Um nun selbst hochqualitative Sprachaufnahmen durchführen zu können undum auch in Zukunft die Spracherkennung am Roboter machen zu könnenwurde ein passendes Mikrofon gesucht. Die Eigenschaften dieses gesuchtenMikrofons sollten sein, dass es eine gerichtete Charakteristik aufweisen soll, sodass nur wenig Nebengeräusche zu hören sind. Um nun auch gleichzeitig dieSprachausgabe hören zu können schien es sinnvoll, ein Headset zu benutzen.In einem Headset sind Mikrofon und Kopfhörer kombiniert und durch die Form,die ein Headset mit sich bringt, ist das Mikrofon sehr dicht vor dem Mundpositioniert und somit weist es ein wenig den Charakter eines gerichtetenMikrofons auf.

Sennheiser ist ein Produzent von professio-neller Audiotechnik wie Mikrofonen und Kopf-hörer. Durch die langjährige Forschung und Entwicklung von Mikrofonen kannman sich auf die Zuverlässigkeit und die Qualität dieser Produkte verlassen,dies wurde mit dem Kauf eines Headsets bestätigt.

Abbildung 6.4: Verwendetes Sennheiser Mikrofon, PC136

51

Page 52: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

6.10. TRAININGSDATEN KAPITEL 6. DAS SPRACHMODELL

52

Page 53: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

7 Eingesetzte Komponenten

7.1 C++

C++ ist eine höhere Programmiersprache. Da das Team des Labors der Hoch-schule ebenfalls sehr viele Anwendungen mit dieser Sprache entwickelt und ichbereits Erfahrung mit C++ gesammelt habe, entschloss ich mich das Programmmit dieser Sprache zu schreiben. Es gibt jedoch einige weitere Gründe sichfür C++ zu entscheiden, es ist eine sehr weit verbreitete, ausgereifte Program-miersprache mit sehr wenig Overhead. Die Objektorientiertheit dieser Sprachemacht sie zudem sehr Modular

7.2 Qt

Qt©ist ein Toolkit zur Entwicklung mit der Sprache C++. Es hateine sehr simple und konstante API und deckt sehr viele Be-reiche ab. Der Hauptvorteil liegt aber bei der sehr einfachenMöglichkeit der Gestaltung der grafischen Bedienungsober-fläche. Mit Qt lassen sich sehr viele Dinge vereinfachen. Mankann unter anderem sehr einfach Threads, Netzwerkkommu-nikation und Observer Pattern durch Signals und Slots mitLeichtigkeit verwenden.

Der Slogan von Trolltecs Qt©beschreibt das Toolkit treffend:„Code less. Create more.“

Bei dieser Arbeit musste ich mich auf ein etabliertes und frei verfügbaresToolkit verlassen können, so dass ich mich ganz auf die Entwicklung desProgramms konzentrieren konnte, außerdem wird gewährleistet, dass in derweiteren Verwendung und Weiterentwicklung dieses Programms auf die einfa-che Handhabung und die gute Dokumentation von Qt©zurückgegriffen werdenkann.

53

Page 54: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

7.3. ADVANCED LINUX SOUND ARCHITECTURE KAPITEL 7. EINGESETZTE KOMPONENTEN

7.3 Advanced Linux Sound Architecture

ALSA (Advanced Linux Sound Architecture) ist die am wei-testen verbreitete Soundarchitektur für Linux. ALSA stellt da-bei eine Abstraktionsebene zur Hardware dar, die zusätzlichdirekt in den Kernel von Linux integriert ist. Dem Program-mierer werden zahlreiche Schnittstellen zur Soundhardwareangeboten, über die er nicht nur Sound abspielen und aufneh-men, sondern auch z.B. Lautstärke abfragen und einstellenkann.Diese Low-Level API bringt jedoch auch seine Schwierigkeiten mit sich, soerfordern selbst die simpelsten Aufgaben unzählige Methodenaufrufe.

Nach der Prüfung von Phonon, Portaudio und Pulseaudio habe ich mich trotz-dem für ALSA entschieden, da die weite Verbreitung und die Mächtigkeit dieserBibliothek unschlagbar ist.

7.4 Julius, HTK und eSpeak

Da dieses Projekt mit der Sprache C++entwickelt werden sollte war klar, dassSphinx nicht in Frage kommt, da die aktuelle Version 4 von Sphinx mit derSprache Java entwickelt wurde. Als Spracherkennungs-System kommt nunJulius zum Einsatz und mit Hilfe des HTK Toolkits wird das Sprachmodell erstellt,welches Julius für die Erkennung benötigt. Die Erstellung des Sprachmodellsist ein sehr komplexer und aufwendiger Vorgang und mit Simon hatte ich dieMöglichkeit, diesen Schritt extern durchführen zu lassen. So musste ich nur dieInput-Daten vorbereiten und an Simon übergeben und nicht die vielzähligenSchritte zum Sprachmodell selbst durchführen.

Für die Sprachsynthese habe ich mich für eSpeak entschieden. Die leichtzu bedienende Bibliothek hat mich von Anfang an überzeugt und da die Ver-ständlichkeit als Kriterium ausreichend ist und die Natürlichkeit der klingendenSprache in unserem Fall nicht so erheblich ist, konnte auf kommerzielle Software(z.B. Fonix) verzichtet werden.

54

Page 55: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 7. EINGESETZTE KOMPONENTEN 7.5. SIMON LISTENS

7.4.1 Installation von eSpeak

eSpeak kann bei den meisten Linux Distributionen über die Softwareverwaltunginstalliert werden. Falls dies nicht der Fall ist, kann eSpeak auf der Projektseiteauf SourceForge heruntergeladen, entpackt und installiert werden

Prompt

cd /usr/local/srcwget http://dl.sourceforge.net/sourceforge/espeak/espeak-1.40.02-source.zipunzip espeak-1.40.02-source.zipcd espeak-1.40.02-source/src && make && make install

7.5 Simon Listens

Simon Listens ist ein Projekt, welches behinder-ten Menschen den Umgang mit Computern er-leichtern soll. Simon bietet als Spracherkennungs-Suite dem Benutzer die Möglichkeit, sich ein ei-genes Sprachmodell zu erstellen und zu diesesauch zu verwenden. Bedient wird Simon über einesehr einfache grafische Benutzeroberfläche. DerAnwender hat hier die Möglichkeit, Wörterbücher zu importieren, eigene Wörterhinzuzufügen und die Wörter zu trainieren.

Simon fungiert als Vorbild dieser Arbeit, denn beide Projekte haben ein ähn-liches Ziel. Es soll ein Spracherkennungs-Programm mit Hilfe von Julius ent-stehen. Viele der in Simon verfügbaren Features sind auch in diesem Projektwiederzufinden.Dadurch, dass Simon sehr modular aufgebaut ist, hat es eigene Bibliotheken,z.B. zum Erstellen der Sprachmodelle oder zum Anfertigen von Aufnahmen.Durch das Vorhandensein dieser Bibliotheken hatte ich die Möglichkeit, Simonfür das aufwendig zu erstellende Sprachmodell zu nutzen.Der ModelCompilationManager – der Teil von Simon, der das Modell für Juliusgeneriert – wird in diesem Projekt verwendet, um die Wort- und Aufnahmedatenin das HMM Modell zu konvertieren.

Bevor Simon installiert werden kann, müssen das HTK Toolkit und Julius in-stalliert werden, da dies Abhängigkeiten sind, ohne diese Simon nicht gelinktwerden kann.

55

Page 56: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

7.5. SIMON LISTENS KAPITEL 7. EINGESETZTE KOMPONENTEN

7.5.1 Installation von HTK

Wie bemerkt, wird das HTK Toolkit wird zwingend benötigt. Nicht nur Julius nutztes für die Spracherkennung, auch Simon verwendet das Toolkit zum Erstellender Sprachmodelle. Die Installation dieses Toolkits ist denkbar einfach, da eskeine weiteren Abhängigkeiten besitzt, es kann nach einer kurzen Registrierungauf der Homepage, heruntergeladen werden. [HTK]

Prompt

cd /usr/local/srcwget http://htk.eng.cam.ac.uk/ftp/software/HTK-3.4.tar.gzwget http://htk.eng.cam.ac.uk/ftp/software/HTK-samples-3.4.tar.gztar -zxf HTK-3.4.tar.gztar -zxf HTK-samples-3.4.tar.gzcd htk && ./configure && make && make install

7.5.2 Installation von Julius

Die Spracherkennungs-Engine Julius zu installieren, nimmt ein wenig mehr Zeitin Anspruch. Es müssen zuerst einige Abhängigkeiten aufgelöst werden. Juliusbenötigt zum einwandfreien Betrieb neben dem HTK Toolkit einige Bibliothekenund Headerfiles. Diese sind, neben den Betriebssystem gängigen: libiconv,libsndfile und flex.Julius muss mindestens in der Version 4.1.1 installiert werden, diese kürzlicherschienene Version ist auf der Homepage von Julius zu finden. [Julius]

Prompt

cd /usr/local/srcwget http://osdn.dl.sourceforge.jp/julius/36530/julius-4.1.1.tar.gzcd julius4 && ./configure && make && make install

7.5.3 Installation von Simon

Die Quellen von Simon sind frei verfügbar und können von der Projektseite aufSourceForge herunter geladen werden. [Simon]Da Simon sich an dem Entwicklungsstand von KDE Version 4.1 orientiert,müssen viele Komponenten dieser grafischen Benutzeroberfläche für Linuxinstalliert werden. Diese unterscheiden sich je nach Betriebssystem.

56

Page 57: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 7. EINGESETZTE KOMPONENTEN 7.6. JULIUS CONTROL CENTER

Für Ubuntu und andere Debian Derivate können mit folgendem Befehl diefehlenden Pakete nachinstalliert werden:

Prompt

sudo apt-get install \kdebase-bin kdebase-data kdebase-runtime \kdebase-workspace kdelibs-bin kdelibs5 kdelibs5-data kdelibs5-dev \portaudio19-dev libportaudio2

Wenn als Betriebssystem openSUSETM von Novell®eingesetzt wird, muss min-destens die Version openSUSE 11.1 installiert sein, dann sind alle Abhängig-keiten für Simon im Vorraus erfüllt.Als Nutzer von Fedora in der Version 9 hat man die Möglichkeit, passendePakete für KDE 4.1 zu installieren. Falls Version 10 eingesetzt wird, kann mandiesen Schritt überspringen. [FCKDE4]

Für die Installation von Simon läd man die Sourcen von SourceForge herunter,entpackt diese und kompiliert anschließend Simon mit folgenden Befehlen:[Simon]

Prompt

cd /usr/local/srcwget http://dl.sourceforge.net/speech2text/simon-0.2-beta-1-Source.tar.bz2tar -jxf simon-0.2-beta-1-Source.tar.bz2cd simon/simonsource && ./build.sh

7.6 Julius Control Center

Nach der Installation aller benötigten Teile kann nun das Julius Control Centerinstalliert werden. [JCC]

Prompt

cd /usr/local/srcwget http://www.julian-hochstetter.de/jcc/jcc-1.0.tar.bz2tar -jxf jcc-1.0.tar.bz2cd jcc && ./build.sh

Mit diesen Befehlen wird das Archiv, in welchem das Julius Control Centerenthalten ist, heruntergeladen, entpackt und kompiliert. Auch benötigte Skriptefür die Erstellung des Sprachmodells mittels HTK sind enthalten und werdenin das Dateisystem an den entsprechenden Platz installiert. Die ausführbareDatei, also das Programm befindet sich nach dem Kompiliervorgang im Unter-verzeichnis jcc/bin und wird in den $PATH unter /usr/local/bin verlinkt, so dassdas Programm von überall aus gestartet werden kann.

57

Page 58: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

7.6. JULIUS CONTROL CENTER KAPITEL 7. EINGESETZTE KOMPONENTEN

58

Page 59: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8 Das Julius Control Center

Das Julius Control Center ist in erster Linie eine grafische Bedienoberfläche fürJulius – die Spracherkennungs-Software. Neben der Spracherkennung kanndieses Programm auch Sprache ausgeben – synthetisieren.Die Hauptaufgaben dieses Programms sind, dem Benutzer die Möglichkeit zugeben, auf einfache Art und Weise vorhandene Wörter und Sprachaufnahmenzu verwalten und Wörter und Sprachaufnahmen zur „Datenbank“ hinzuzufügen.Die gesammelten Informationen, Sprachaufnahmen, Wörter und Grammatikenwerden dann mit Hilfe von Simon zu einem Sprachmodell umgewandelt. Dasso entstandene Modell benutzt Julius dann für die Spracherkennung.

Für die Sprachausgabe wird mit Hilfe der eSpeak Bibliothek beliebiger Textin Sprache gewandelt. Über das Julius Control Center ist es möglich, vieleParameter der auszugebenden Sprache einzustellen.

Damit das Programm auch mit anderen Programmen kommunizieren kann,gibt es die Möglichkeit, sogar über das Netzwerk das Julius Control Center zusteuern.

Auf den folgenden Seiten werden die Klassen, das Programm und seine Archi-tektur dargestellt.In der sehr ausführlichen DoxyGen Dokumentation sind viele weitere nützli-che Informationen zu finden, dort sind alle Klassen, Methoden und Memberbeschrieben.Für die Weiterentwicklung der Software, die im Rahmen dieser Arbeit entstan-den ist, kann diese Dokumentation neben dieser Arbeit eine weitere Anlaufstellesein. Zu finden ist diese Dokumentation im Verzeichnis doc/ des Hauptverzeich-nisses dieses Programms oder auf der Internetseite dieses Projektes. [JCC]

59

Page 60: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.1. DIE GUI - MAINWINDOW KAPITEL 8. DAS JULIUS CONTROL CENTER

8.1 Die GUI - MainWindow

Der Mainthread, also das Hauptprogramm, ist eine Instanz von MainWindow.Das ist auch der einzige Thread, der auf der GUI (Graphical User Interface)zeichnen darf. Aus diesem Grund müssen alle Interaktionen mit dem Benutzerin dieser Klasse bzw in diesem Thread stattfinden.In dieser Klasse werden auch alle benötigten Objekte erstellt. Dazu gehö-ren nicht nur GUI Elemente, wie z.B. das TrayIcon sondern auch alle ande-ren Objekte, die benötigt werden. Beispiele hierfür sind, der Textsynthesizer(Speaker ) oder der JuliusServer, welcher Clientverbindungen entgegen nimmt.Das TrayIcon wird bei Programmstart erstellt undsorgt dafür, dass das Programm in die Systrayminimiert werden kann. Immer wenn man versucht das Programm über dasX zu schließen, wird es in die Systray minimiert und kann über einen Klickauf das Symbol wieder in den Vordergrund geholt werden. Wenn das Pro-gramm entgültig geschlossen werden soll, muss man über das Menü denPunkt Datei→Beenden anwählen. In MainWindow werden die erzeugten In-stanzen nun mit einem so genannten Signal/Slot Konzept verbunden. Diesrealisiert einen ereignisgesteuerten Programmabfluss zwischen Objekten. Dasursprüngliche Konzept kann man als spezielle Form des Observer Design Pat-tern betrachten.Der Signal/Slot Mechanismus in Qt lässt sich mit den häufig eingesetzten Call-back Funktionen vergleichen. Es gibt einen Sender und ein oder auch mehrereEmpfänger von Nachrichten, möglich ist jedoch auch, dass es einen Empfängergibt, der durch mehrere Sender benachrichtigt wird. Oft werden diese Signaleund Slots eingesetzt, um GUI Elemente miteiner zu verbinden, z.B. wenn einButton gedrückt wird, sodass eine bestimmte Funktion ausgeführt wird.Die meisten Einstellungen und Aktionen werden in der Klasse MainWindowbehandelt. Ausgenommen davon ist die Trainings-Ansicht. Diese Klasse kannman als Erweiterung der MainWindow Klasse sehen, auch wenn sie nicht direktvon dieser abgeleitet ist. Da in dem Teild er Trainings-Ansicht sehr viel Logikgefordert ist, ist diese in einem separaten Teil, dem TrainingView ausgelagert.

60

Page 61: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.2. DIE VERWALTUNG

8.2 Die Verwaltung

Die Verwaltung des Sprachmodells geschieht in 3 Tabs. Jeder Tab repräsentierteine der drei Komponenten des Sprachmodells. Diese sind in den folgendenAbschnitten erläutert.

8.2.1 TrainingView

Die Klasse TrainingView ist so gesehen eine Ergänzung zu MainWindow. AlleInteraktionen mit dem Benutzer in der Ansicht des Trainings- Tabs werden indieser Klasse behandelt.Im Konstruktor der Klasse werden alle benötigten Instanzen erzeugt, wobei alleOperationen auf Dateien über ein globales Semaphor, bzw Mutex abgesichertsind.

GUIReimplementations

Hier wurden GUI Elemente neu definiert. Es war notwendig, eigene Operationenwie z.B. Drag & Drop Aktionen auslösen zu können. So ist es nun möglich,Elemente aus einer Tabelle in eine einzelne Textzeile zu ziehen oder durcheinen Doppelklick diese zu der Textzeile hinzuzufügen. Die erweiterten GUIElemente kommen in der Ansicht der Grammatik und im AddWordWizard zumEinsatz, hier können aus einer Liste Elemente – bzw hier Worte – per Drag &Drop oder per Doppelklick zu einem Satz zusammengesetzt werden.

Abbildung 8.2: Reimplementierung von QTreeWidget und QLineEdit

61

Page 62: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.2. DIE VERWALTUNG KAPITEL 8. DAS JULIUS CONTROL CENTER

8.2.2 WordManager

Abbildung 8.3:Die Klasse WordManager

Die Klasse WordManager ist dafür zuständig, dievom Benutzer gewählten Wörter zu verwalten. DieSingleton-Instanz von WordManager hält zur Lauf-zeit alle Wörter mit ihren dazugehörigen Laut-schrift und Kategorie in einer Liste bereit. Dieseeinzelnen Komponenten sind mit einem Tabula-tor getrennt und können so über Stringfunktionenwie split zerlegt werden. Dieses Format wurdegewählt, da mit dem gleichen Format auch dieDateien gespeichert werden. Der WordManagerspeichert seine Daten in user.words (alle vom Be-nutzer gewählten Wörter) und user.lexicon (dasimportierte Bomp-Wörterbuch). Für die Erstellungdes Sprachmodells hält der WordManager die Dateien model.lexicon und mo-del.voca bereit. Der WordManager hat zudem die Funktion das Wörterbuchdem Benutzer anzubieten. Dies hat den Vorteil, dass der Benutzer nur demWörterbuch unbekannte Wörter selbst in die X-SAMPA Lautschrift übersetzenmuss. Das zu importierende Wörterbuch (BOMP) enthält bereits über 140 000deutsche Wörter. Falls nun aber z.B. ein englisches Wörterbuch eingebundenwerden soll, geschieht dies am besten indem man die Klasse WordManagererweitert.

Codeauszug 8.1: Beispiel von WordManager1 // Erzeugen bzw holen der Instanz von WordManager2 WordManager *wm = WordManager :: theInstance ();3 // Holen des Pointers der benutzerdefinierten Woerter4 QStringList *words = wm->getWords ();5 // Holen des Pointers des Lexikons6 QStringList *lexicon = wm->getLexicon ();7

8 // Neues Wort: Apfel9 QString word = new QString("Apfel\t␣apf@l\t␣NOM");

10

11 if(wm->addWord(word)) {12 // Hinzufuegen des Wortes Apfel war erfolgreich13 // Das Wort ist nicht schon vorhanden.14 }15 wm ->saveWords ();16 // ermitteln der Position des Wortes Apfel in der Liste17 int pos = words ->indexOf(word);18 if(pos != -1 && wm->removeWord(words ->at(pos))) {19 // Entfernen des Wortes Apfel war erfolgreich20 }21 // Loeschen der Instanz wm22 wm ->destroyTheInstance ();

62

Page 63: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.2. DIE VERWALTUNG

8.2.3 GrammarManager

Abbildung 8.4: Die KlasseGrammarManager

Die Klasse GrammarManager ist dafür zustän-dig, die vom Benutzer gewählten Grammatiken zuverwalten. Auch hier kommt wieder die Singleton-Designwahl zum Einsatz um mögliche Doppelin-stanzierungen dieser Klasse zu vermeiden. DerGrammarManager verwaltet alle vom Benutzergewählten Sätze zur Laufzeit in einem speziellenContainer und speichert diese Daten in die Da-tei user.grammar sowie für die Modellerstellungin die Datei model.grammar. Der Benutzer kannhier selbst Satzstrukturen erstellen und muss kei-ne Kenntnis des Terminals des Wortes haben, er kann aus einer Liste allerbekannten Wörter wählen und sich so den gewünschten Satz konstruieren. DieUmsetzung und Konvertierung in das Format für HTK bzw Simon übernimmtder GrammarManager.Durch die Verwendung einer speziellen Liste (QMap<QString, QString>) gibt esdie Möglichkeit Wertepaare unterschiedlichen Typs zu speichern. Die Besonder-heit ist, dass alle Worte einer Kategorie zu finden sind, weitaus interessanterist es aber, ein und das selbe Wort in verschiedenen Kategorien zu speichern.Dies hat den Vorteil, dass nicht mittels einer Stringvergleichsfunktion gearbeitetwerden muss, sondern dass die gewünschten Werte direkt aus dieser Listegeholt werden können. Dies ist besonders bei sehr großen Listen platzsparendund zudem sehr schnell.

Codeauszug 8.2: Beispiel von GrammarManager1 // Erzeugen bzw holen der Instanz von GrammarManager2 GrammarManager *gm = GrammarManager :: theInstance ();3 // Holen des Pointers auf die Saetze4 QStringList *sentences = gm ->getSentences ();5 // Holen der QMap mit der Grammatik6 QMap <QString , QString > *grammar = gm ->getGrammar ();7 // Hole alle Nomen , die GrammarManager kennt.8 QStringList nomen = grammar ->values("NOM");9 // Hole alle Kategorien bzw Terminale , die

GrammarManager zu "Ein" kennt: NOM:NUM:QAN10 QStringList cats = grammar ->keys("Ein");11 if(gm->addGrammarSentence("Nehme␣ein␣Apfel", "VRB␣NUM␣

NOM")) { // Hinzufuegen der Gram. VRB NUM NOM warerfolgreich Der Satz war noch nicht aufgenommen

12 }13 int pos = sentences ->indexOf("Nehme␣ein␣Apfel\tVRB␣NUM␣

NOM");14 if(gm->deleteGrammar(pos) { // Entfernen des Satzes war

erfolgreich15 }

63

Page 64: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.2. DIE VERWALTUNG KAPITEL 8. DAS JULIUS CONTROL CENTER

8.2.4 SampleManager

Abbildung 8.5:Die Klasse SampleManager

Die Klasse SampleManager ist dafür zuständig,die Sprachaufnahmen zu verwalten. Immer wennein neues Wort zum Sprachmodell hinzugefügtwurde, wird die Sprachaufnahme und die dar-in enthalten Wörter an den SampleManagerübergeben (insertSample(QString path, QStringwords)). Die eigentliche Aufgabe des Sample-Managers ist, für das Sprachmodell die Dateiprompts bereit zu halten und die Möglichkeitanzubieten vorhandene Sprachaufnahmen zulöschen.

Codeauszug 8.3: Beispiel von SampleManager1 // Erzeugen bzw holen der Instanz von SampleManager2 SampleManager *sm = SampleManager :: theInstance ();3 // Holen des Pointers auf die Sprachaufnahmen. In

dieser Liste sind die vollstaendigen Pfade zu denWave Aufnahmen gespeichert.

4 QStringList *wavs = sm->getSamples ();5 // Die Aufnahme /tmp/wavRec1.wav , die die Woerter

"Nehme Ein Apfel" enthaelt in die Verwaltungaufnehmen

6 sm ->insertSample("/tmp/wavRec1.wav","Nehme␣Ein␣Apfel");7 // Instanz loeschen und Speicher freigeben8 sm ->destroyTheInstance ();

64

Page 65: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.2. DIE VERWALTUNG

8.2.5 ModelManager

Abbildung 8.6:Die Klasse ModelManager

Die Klasse ModelManager ist dafür zuständig, mitHilfe von Simon und dessen ModelCompilation-Manager das Sprachmodell zu generieren. DerModelManager übergibt alle benötigten Daten undDateien an den ModelCompilationManager undempfängt Statusmeldungen von diesem. Diesegibt er auf der Konsole als Statusmeldung aus,Fehler werden mit einer genauen Fehlerbeschrei-bung in einem Dialog dem Benutzer angezeigt.Ansonsten wird das Sprachmodell erstellt gespei-chert und kann von nun an mit Julius zur Spra-cherkennung eingesetzt werden.

Abbildung 8.7: Detailierter Fehler bei Erstellung des Sprachmodells.Hier: no proto for birn@ was bedeutet, dass keine Sprachaufnahme fürdas Wort „Birne“gefunden wurde.

65

Page 66: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.3. ADDWORDWIZARD KAPITEL 8. DAS JULIUS CONTROL CENTER

8.3 AddWordWizard

Wizards oder Assistenten sind Dialoge, die den Benutzer durch eine bestimmteReihe von Benutzereingaben führen. Der Teil des Programms stellt dem Benut-zer mehrere Wizards zur Verfügung, die an unterschiedlichen Stellen aufgerufenwerden können. Dieser Wizard ist so aufgebaut, dass er unterschiedliche Sei-ten in beliebiger Reihenfolge anzeigen kann und darüber hinaus Informationenüber Seiten hinweg austauschen kann. So kann man z.B. das hinzuzufügendeWort auf der zweiten Seite eingeben und muss es nicht in einer extra Variablespeichern, wenn man es auf der nächsten Seite des Wizards benötigt, sondernkann ganz einfach das GUI Feld in dem das Wort steht abfragen.

In diesem Projekt wird ein Wizard für das Hinzufügen von neuen Wörtern unddas Trainieren der schon vorhandenen Wörter durch neue Sprachaufnahmeneingesetzt. Je nachdem welche Aufgabe der Wizard erledigen soll, ist dieReihenfolge der Seiten anders. Wenn ein schon vorhandenes Wort durchSprachaufnahmen ergänzt werden soll, muss ein Dialog erscheinen, wo das,oder die aufzunehmenden Wörter spezifiert werden und nicht ein Dialog, wodas Wort erneut hinzugefügt wird, so wie es der Fall ist wenn der Dialog überden Standardkonstruktor aufgerufen wird.In diesem Dialog findet das gleiche grafische Element, hier eine Baumstrukturmit Wörtern sortiert nach ihrer Kategorie Anwendung, wie auch in der Ansichtder Grammatik zur Erstellung von Sätzen. Dieses GUI Element wurde schon imAbschnitt 8.2.1 GUIReimplementations erläutert. Durch die Wiederverwendungsolcher GUI Elemente an unterschiedlichen Stellen im Programm kann sich derBenutzer leichter zurecht finden.

66

Page 67: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.4. DER SERVER - JULIUSSERVER

8.4 Der Server - JuliusServer

8.4.1 Der Clientsocket

Das Julius Control Center besitzt eine Socket-Schnittstelle, um mit fremdenProgrammen kommunizieren zu können. So kann man z.B. aus einem anderenProgramm heraus das Julius Control Center dazu veranlassen, einen Text zusynthetisieren, oder z.B. die erkannten Worte in einem anderen Programmzu empfangen, dort auszuwerten und darauf zu reagieren. Die Klasse Julius-Server ist hierfür zuständig. JuliusServer ist von QTcpServer abgeleitet undreimplementiert somit einen einfachen TCP Server. Der Port, an dem die Clientsconnecten können, kann in der grafischen Bedienoberfläche, oder in der Datei/.config/JuliusControlCenter/julian.ini eingestellt werden.In der bisherigen Serverstruktur kann nur ein Client zum Server verbinden, umdies zu erweitern, müsste man einen multithreaded Server implementieren, derbei jedem neuen Verbindungsversuch einen Thread startet und in diesem denClient bedient.Der JuliusServer ist sehr modular aufgebaut, sodass leicht neue Kommandoshinzugefügt werden können, dies ist im Abschnitt JuliusProtocol erklärt.

Für das einfachere Handling habe ich ein Protokoll für die Kommunikationzwischen JuliusServer und dem Client implementiert, das 8.4.2 JuliusProtocol .

Eine Clientanfrage könnte folgendermaßen aussehen:

Codeauszug 8.4: Anfrage von Client an JuliusServer1 output=JuliusProtocol :: IsSpeakerEnabled;2 write(socket , output , sizeof(ouput);3 read(socket , input , sizeof(input));4 if(! strncmp(input , JuliusProtocol ::Okay , 3)) {5 output=JuliusProtocol :: StartStopSpeaker;6 write(socket , output , sizeof(ouput);7 }8 output=JuliusProtocol :: SynthText+"␣Ich␣kann␣sprechen";9 write(socket , output , sizeof(ouput);

In dieser Anfrage stellt der Client, fest ob die Sprachausgabe aktiviert ist,falls nicht, wird sie aktiviert und dann der Satz „Ich kann sprechen“an denJuliusServer geschickt, der den Satz dann synthetisiert und über die Soundkarteausgibt.

67

Page 68: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.4. DER SERVER - JULIUSSERVER KAPITEL 8. DAS JULIUS CONTROL CENTER

8.4.2 Das JuliusProtocol

Das Protokoll ist so aufgebaut, dass eine Integerzahl voransteht, dann ein Whi-tespace kommt und dann ein benutzerdefinierter, zum Kommando passenderText. Bis jetzt sind folgende Kommandos möglich.

Zahl Kommando Parameter BeschreibungKommunikations-Richtung Client =⇒ Server

100 StartStopSpeaker - Startet bzw stopt die Sprach-ausgabe

101 StartStopRecognizer - Startet bzw stopt die Spracher-kennung

102 IsSpeakerEnabled - Fragt, ob die Sprachausgabeaktiviert ist. Antwort ist 200 Trueoder 255 False

103 IsRecognizerEnabled - Fragt, ob die Spracherkennungaktiviert ist. Antwort ist 200 Trueoder 255 False

104 SynthText Text Der Text wird am Server synthe-tisiert

Kommunikations-Richtung Server =⇒ Client105 RecognizedWords Words Meldet dem Client die erkann-

ten WörterKommunikations-Richtung Server⇐⇒ Client

200 True - Statusmeldung für z.B. DieSprachausgabe ist aktiv

201 False - Statusmeldung für z.B. DieSpracherkennung ist nicht aktiv

255 Error - Es ist ein Fehler aufgetreten

Tabelle 8.1: JuliusProtocol

Durch das JuliusProtocol ist es in Zukunft sehr einfach, weitere Befehle zuimplementieren. Dies geschieht, indem man ein neues Kommando in der Da-tei protocol.h definiert und dieses dann in die switch-Umgebung in der DateiJuliusServer einbaut. Für das Kommando Neueskommando könnte es folgen-dermaßen aussehen:

Codeauszug 8.5: Kommandoimplementierung1 case JuliusProtocol :: Neueskommando: {2 // do something ...3 write(socket , output , sizeof(output));4 break;5 }

68

Page 69: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.5. DER SPRACHERKENNER - JULIUSCONTROL

8.5 Der Spracherkenner - JuliusControl

Abbildung 8.8:Die Klasse JuliusControl

Die Klasse JuliusControl ist für das Handling desexternen Programms Julius zuständig. Diese Klas-se erzeugt einen neuen Prozess mit dem Pro-grammnamen des Spracherkenners aus dem Soft-warepacket von Julius. Als Parameter werden ei-nige feste, sich nicht ändernde Einstellungen undPfadangaben für das Sprachmodell übergeben.Wenn man die Spracherkennung aktiviert, wirdüber die Methode JuliusControl::startJulius() derProzess gestartet. Immer wenn der Prozessauf stdout schreibt, wird dieser Output inJuliusControl::processOutput() gelesen und aus-gewertet.Werden in dieser Ausgabe erkannte Wörter und die Wahrscheinlichkeit für dieRichtigkeit dieser erkannten Wörter erkannt, so werden diese mit einem Signalan das Hauptprogramm übermittelt.

69

Page 70: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.6. DER SYNTHESIZER - SPEAKER KAPITEL 8. DAS JULIUS CONTROL CENTER

8.6 Der Synthesizer - Speaker

Abbildung 8.9:Die Klasse Speaker

Der Text, welcher in Sprachausgabe umge-wandelt, also synthetisiert werden soll, wirdin der Klasse Speaker mit Hilfe von der eS-peak Bibliothek synthetisiert.Aus Sicherheitsgründen ist nur eine Instanzmöglich. Dies geschieht mit dem so genann-ten Singleton Design Pattern. Es wird dabeisichergestellt, dass der Konstruktor nur ein-mal aufgerufen wird.In dem Konstruktor der Klasse Speakerwird eine so genannte callback Funkti-on registriert, indem ein Zeiger auf die-se Funktion an die eSpeak Bibliothekübergeben wird. Solche callback Funktio-nen können asynchron aufgerufen werden,d.h dass dies unvorhergesehen geschehenkann. Diese asynchrone callback Funktion(int Speaker::callback_synth) kann von dereSpeak Bibliothek immer dann aufgerufenwerden, wenn neue Audiodaten zum Abholen bereit sind. Die Daten werdendann in einen internen Puffer (wavBuffer ) zwischengespeichert.Die synthetisierten Audiodaten liegen im Rohdaten-Format vor und müssendaher noch in ein gültiges Format eingepackt werden. Am einfachsten geschiehtdas, indem man diese Rohdaten in einen RIFF-Wave Container packt. WenneSpeak mit dem Synthetisieren fertig ist, werden alle Daten aus dem Puffer inder Funktion Speaker::finalizeWave in den RIFF-Wave Container gepackt undnun als gültiges Wave (wavData) an die Soundausgabe gesendet.Die Methode Speaker::synthesize wird genutzt, um einen Text mittels eSpeakzu synthetisieren und anschließend an die Soundausgabe zum Abspielen zusenden.

Codeauszug 8.6: Beispiel von Speaker1 // Erzeugen bzw holen der Instanz von Speaker2 Spreaker *speak = Speaker :: theInstance ();3 // Den Satz "Das ist ein Test" sprechen4 speak ->synthesize("Das␣ist␣ein␣Test");5 // Das Objekt wieder loeschen6 speak ->destroyTheInstance ();

70

Page 71: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.7. DIE SOUNDAUSGABE - SOUNDOUTPUT

8.7 Die Soundausgabe - SoundOutput

Abbildung 8.10:Die Klasse SoundOutput

Die SoundOutput Klasse ist für die Ausga-be von Audiodaten zuständig. Mit Hilfe vonALSA (Advanced Linux Sound Architecture)wird es ermöglicht, Audiodaten an die So-undkarte zu senden.Damit andere Aufgaben nicht blockiert wer-den, während Audiodaten abgespielt werden,läuft die Ausgabe in einem eigenen Thread(SoundOutput::run). Immer wenn Daten imPuffer vorhanden sind, wird der Thread ge-startet, der dann die Daten abarbeitet, indemer alle Daten nacheinander an ALSA über-gibt.Der interne Puffer ist ein Array aus Puffern(QList<QByteArray> buffers), denn es kannsein, dass, während noch Audiodaten abge-spielt werden, schon die nächsten Daten zurwiedergabe bereit sind. Diese werden dannin das Array eingereiht. So können beliebigviele Daten eingereiht und nacheinander ab-gespielt werden.An eine Instanz von SoundOutput könnennicht nur Wave-Daten übergeben werden,es kann durch die Überladung der Funktion SoundOutput::play auch ein Da-teiname angegegeben werden.

Im Beispiel des Codeauszugs 8.3 wird eine Instanz von SoundOutput mit 16kHzund Mono initialisiert und dann werden sowohl Daten als auch ein Dateiname andiese übergeben, wobei Daten und Datei jedoch Daten mit einer Samplerate von16kHz mit einem Kanal(Mono) enthalten müssen. Beide werden nacheinanderabgespielt.

Codeauszug 8.7: Verwendung von Soundoutput1 SoundOutput *output = new SoundOutput("default"

,16000,1);2 output ->setEnabled(true);3 output ->play(data , data ->length ());4 output ->play("/tmp/test.wav");5 delete(output);

71

Page 72: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.8. WAVRECORDER KAPITEL 8. DAS JULIUS CONTROL CENTER

8.8 WavRecorder

Abbildung 8.11:Die Klasse WavRecorder

WavRecorder wird eingesetzt, um über die Sound-karte Audio-Daten aufzunehmen. Die aufgenom-menen Daten werden erst in einem internen Pufferbereit gehalten und auf Wunsch in eine Datei in-klusive Header gespeichert. Die Aufnahme findetin einem eigenen Thread statt und beginnt sobalddieser gestartet wird. Der WavRecorder speichertdie Daten in einem Format, wie es für die Model-lerstellung benötigt wird, in einer Samplerate von16kHz und einer Auflösung von 16Bit.

Da die Aufnahme in einem Puffer gehalten wird,kann dieser bei Nichtgefallen auch vorzeitig ge-löscht werden und die Aufnahme kann erneut vonvorne beginnen. Dies Möglichkeit wurde geschaf-fen, da die Sprachaufnahmen von guter Qualitätsein sollen.

Im unteren Beispiel ist die Verwendung dieser Klasse veranschaulicht.

Codeauszug 8.8: Verwendung von WavRecorder1 // Erzeugen des Recorders2 WavRecorder *rec = new WavRecorder("/tmp/test.wav");3 // Starten des Threads , der die Audiodaten aufnimmt4 rec ->start();5 // 1 Sekunde schlafen um 1 Sekunde aufzunehmen6 sleep (1);7 // Die Aufnahme stoppen8 rec ->stopRecording ();9 // Nun kann die Aufnahme ueberprueft werden indem z.B

10 // mit dem SoundOutput die Aufnahme angehoert wird11 // QBuffer *buf = rec ->getBuffer ();12 // sound ->play(buf , buf ->length ());13 // Speichern der Aufnahme in Datei14 rec ->saveFile ();15 // Oder loeschen des Puffers fuer eine weitere Aufnahme16 rec ->deleteFile ();17 // Loeschen von WavRecorder18 delete(rec);

72

Page 73: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.9. DIE MIKROFONREGELUNG - MICCONTROL

8.9 Die Mikrofonregelung - MicControl

Abbildung 8.12:Die Klasse MicControl

MicControl ermittelt mit Hilfe von ALSA die aktuel-le Mikrofonlautstärke und übermittelt diese an denHauptthread, das Objekt MainWindow. MicControlläuft in einem eigenen Thread, um die grafischeBedienoberfläche nicht zu blockieren. Jedes malwenn von 32 Frames die Durchschnittslaustärkeermittelt wurde, wird diese über das Signal micVo-lume(int) übermittelt. Die floatingpoint Zahl wirdzuvor so konvertiert, dass das Resultat eine Ganz-zahl zwischen 0 und 100 ist.

Eine weitere Aufgabe von MicControl ist, die Laut-stärke des Mikrofons einzustellen. Dazu wird einMixerelement bei ALSA registriert für welches dieLautstärke eingestellt werden kann. Mit den Me-thoden setVolume und getVolume kann die Laut-stärke dann eingestell und abgefragt werden. Daszu regelnde Mikrofon kann im Programm unterEinstellungen gewählt werden. Das gewählte Mi-krofon wird mit Hilfe von Settings dauerhaft gespei-chert, so geht die Wahl bei mehreren vorhandenenMikrofonen nicht verloren.

73

Page 74: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.10. EINSTELLUNGEN DAUERHAFT SPEICHERN - SETTINGS KAPITEL 8. DAS JULIUS CONTROL CENTER

8.10 Einstellungen dauerhaft speichern - Settings

Abbildung 8.13:Die Klasse Settings

Die Klasse Settings speichert z.B. Einstellungendauerhaft auf der Festplatte. So gehen diesebeim Beenden des Programms nicht verlorenund können beim Start ganz einfach geladenwerden. Das Handling ist zudem sehr einfach.Nach der Initialisierung können die Settings imganzen Programm verwendet werden, da dieeigentliche Speicherung (Settings::settings) einstatisches Objekt vom Typ QSettings und somitimmer verfügbar ist.Die Einstellungen werden in der Datei ~/.config/JuliusControlCenter/julian.inigespeichert und bei jedem Schreibzugriff (Settings::set) synchronisiert.

Codeauszug 8.9: Verwendung von Settings1 // Initialisieren der Settings2 Settings :: initSettings ();3

4 // Einstellung speichern. Schluessel ist Einstellungen/Port

5 Settings ::set("Einstellungen/Port", 4446);6

7 // Einstellung von Schluessel Einstellungen/Port laden.8 // Hier int port = 44469 int port = Settings :: getValue("Einstellungen/Port");

8.11 Weitere Dokumentation

Die hier dargestellte Dokumentation der Klassen ist einekleine Einführung darin, z.B. welche Aufgabe die Klasseerfüllt. Dem Projekt liegt eine DoxyGen Dokumentationbei, die alle Elemente und die Klassen selbst beschreiben.

74

Page 75: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.12. DIE BENUTZUNG DES PROGRAMMS

8.12 Die Benutzung des Programms

In diesem Abschnitt werden alle Funktionen des Programms dargestellt.

8.12.1 Allgemeines

Abbildung 8.15: Ansicht des Programms nach dem Start

Menü Einfaches Menü zum Beenden des Programms und zur Ansicht von Hilfeund Programmversion.

Reiter Spracherkennung In dieser Ansicht ist der Spracherkenner zu beob-achten. Es werden Statusmeldungen und erkannte Wörter angezeigt.

Reiter Training In dieser Ansicht kann das Sprachmodell trainiert und erweitertwerden.

Reiter Sprachausgabe In dieser Ansicht werden Einstellungen und Tests zurSprachausgabe eingestellt.

Reiter Einstellungen In dieser Ansicht können allgemeine Einstellungen vor-genommen werden.

75

Page 76: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.12. DIE BENUTZUNG DES PROGRAMMS KAPITEL 8. DAS JULIUS CONTROL CENTER

8.12.2 Spracherkennung

Abbildung 8.16: Ansicht der Spracherkennung

Spracherkenner aktivieren Mit diesem Button kann der Spracherkenner ak-tiviert werden. Erst wenn dies geschehen ist, können auch Wörter überdas Mikrofon erkannt werden.

Sprachausgabe aktivieren Mit diesem Button wird die Sprachausgabe akti-viert.

Statusmeldungen und erkannte Wörter In diesem Textfeld werden erkannteWörter mit der Erkennungsrate bzw Erkennungswahrscheinlichkeit, sowieStatusmeldungen angezeigt.

Aktuelle Mikrofonlautstärke Anhand dieses Fortschrittbalken, kann die Mi-krofonlautstärke erkannt und gegebenfalls angepasst werden.

Einstellen der Mikrofonlautstärke Mit diesem Schieberegler lässt sich dieMikrofonlautstärke einstellen.

Lautstärke in % Die eingestelle Mikrofonlautstärke wird hier angezeigt.

76

Page 77: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.12. DIE BENUTZUNG DES PROGRAMMS

8.12.3 Training - Sprachmodell

Abbildung 8.17: Ansicht von Training - Sprachmodell

Tabelle mit Wort, X-SAMPA und Kategorie In dieser Tabelle werden alleWörter aufgelistet, die erkannt werden sollen. In der Spalte Wort er-scheinen die Einzelwörter in Buchstaben. In der Spalte Lautschrift ist dasWort in der X-SAMPA Notation, und die Spalte Kategorie sagt aus, umwas für eine Wortart es sich handelt.

Wort hinzufügen Mit diesem Button wird ein Dialog zum Hinzufügen von Wör-tern geöffnet. Training - Wort hinzufügen.

Wort löschen Über diesen Button wird das aktuell in der Liste ausgewählteWort ohne Nachfrage gelöscht.

Wörter speichern Nach Ändern der Liste, durch Hinzufügen oder Löschenvon Wörtern muss die Liste manuell gespeichert werden.

Erkennungsdatenbank neu generieren Hier wird der Vorgang, die Erken-nungsdatenbank zu generieren, ausgelöst. Dies sollte immer durchgeführtwerden, wenn neue Wörter oder Aufnahmen hinzufügt wurden.

77

Page 78: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.12. DIE BENUTZUNG DES PROGRAMMS KAPITEL 8. DAS JULIUS CONTROL CENTER

8.12.4 Training - Akustikmodell

Abbildung 8.18: Ansicht von Training - Akustikmodell

Tabelle mit Wave Datei und Wörter In dieser Tabelle sind alle Sprachaufnah-men gelistet. Die erste Spalte gibt den Speicherpfad der Aufnahme an,und die zweite Spalte ist eine Liste von Wörtern, die in der Aufnahmenvorkommen.

Wort trainieren Mit Drücken dieses Knopfes wird ein Dialog geöffnet, umschon vorhandene Wörter zu trainieren, damit die Erkennungsgenauigkeitgesteigert wird. Training - Wort trainieren.

Aufnahmen löschen Mit Drücken dieses Knopfes kann die aktuell ausgewähl-te Sprachaufnahme gelöscht werden.

Liste Speichern Nach Ändern der Liste, durch Löschen oder Hinzufügen vonWörtern muss die Liste manuell gespeichert werden.

Erkennungsdatenbank neu generieren Hier wird der Vorgang, die Erken-nungsdatenbank zu generieren, ausgelöst. Dies sollte immer durchgeführtwerden, wenn neue Wörter oder Aufnahmen hinzufügt wurden.

78

Page 79: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.12. DIE BENUTZUNG DES PROGRAMMS

8.12.5 Training - Grammatik

Abbildung 8.19: Ansicht von Trainging - Grammatik

In dieser Ansicht können Sätze gebildet und gespeichert werden.Die gespeicherten Sätze kann das Spracherkennungprogramm erkennen.Durch Doppelklicken oder per Drag&Drop können Wörter aneinander gereihtund so Sätze gebildet werden.

Filterzeile In diesem Textfeld kann ein Filter zur Suche in der Liste mit vohan-denen Wörtern gesetzt werden.

Liste mit vorhandenen Wörtern In dieser Liste sind alle vorhandenen Wörteraufgelistet. Jedes Wort ist in seiner Kategorie zu finden, unter Alles sindalle Wörter nochmals gelistet.

Zeile für Wörter In diese Zeile werden per Doppelklick oder mit Drag&DropWörter aus der Liste der vorhandenen Wörter in dieser Zeile aneinander

79

Page 80: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.12. DIE BENUTZUNG DES PROGRAMMS KAPITEL 8. DAS JULIUS CONTROL CENTER

gereiht und ein Satz gebildet.

Satz übernehmen Mit diesem Button kann der gebildete Satz in die Liste vongespeicherten Sätzen übernommen werden.

Zurücksetzen Durch Drücken dieses Buttons wird das Textfeld zum Bilden vonSätzen gelöscht.

Liste mit Sätzen In dieser Liste sind alle zu erkennenden Sätz aufgelistet.

Ausgewählten Satz löschen Mit diesem Button kann der aktuell in der Listeausgewählte Satz gelöscht werden.

Liste speichern Hiermit werden Änderungen dauerhaft gespeichert.

Erkennungsdatenbank neu generieren Hier wird der Vorgang, die Erken-nungsdatenbank zu generieren, ausgelöst. Dies sollte immer durchgeführtwerden, wenn neue Wörter oder neue Aufnahmen hinzugekommen sind.

80

Page 81: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.12. DIE BENUTZUNG DES PROGRAMMS

8.12.6 Training - Wort hinzufügen

Training - Wort hinzufügen Teil I

Abbildung 8.20: Dialog, der angezeigt wird, wenn ein Wort hinzugefügtwird.

Wenn ein Wort zur Datenbank hinzuzufügen ist, sodass es in Zukunft durchdas Programm erkannt werden soll, muss man in der Ansicht Training - Sprach-modell auf den Button Wort hinzufügen klicken.

Wenn ein schon vorhandenes Wort trainiert werden soll, um die Erkennungs-genauigkeit zu steigern, wählt man unter Training - Akustikmodell den ButtonWort trainieren.

81

Page 82: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.12. DIE BENUTZUNG DES PROGRAMMS KAPITEL 8. DAS JULIUS CONTROL CENTER

Training - Wort hinzufügen Teil II

Abbildung 8.21: Dialog, der angezeigt wird, wenn ein Wort ausgewähltwerden soll.

In diesem Dialog müssen kann ein Wort ausgewählt werden, welches zumSprachmodell hinzuzufügen ist. Dazu wird das Wort in das oberste Textfeldeingegeben und auf Wort suchen geklickt.Nun erscheint eine Liste mit Vorschlägen zu dem gesuchten Wort.Wenn das Wort ausgewählt ist, kann man auf Weiter klicken um das Wort imfolgenden Dialog zu trainieren.Falls das gewünschte Wort nicht in der Liste vorhanden ist, kann man dasWort selbst spezifizieren. Dazu gibt man das Wort, das Wort in der X-SAMPALautschrift und die Kategorie selbst in die dafür vorgesehenen Textfelder einund bestätigt den Dialog mit Drücken auf Weiter.So kann man einfach, auch fremdsprachige Wörter, zur Datenbank hinzufügen.Meist ist die Lautschrift in der IPA Notation angebeben, deshalb muss man indiesem Dialog auf die X-SAMPA Lautschrift achten. Wie diese unterschiedlicheLautschriften konvertiert werden, ist auf folgender Seite zu finden. [XSP2IPA]

82

Page 83: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.12. DIE BENUTZUNG DES PROGRAMMS

Training - Wort hinzufügen Teil III

Abbildung 8.22: Dialog, der Angezeigt wird, um ein vorhandene Wörter zutrainieren.

Dieser Dialog wid nur angezeigt, wenn man schon vorhandene Wörter erneuttrainieren möchte.Hier kann man aus der Liste mit vorhandenen Wörter per Drag&Drop oder miteinem Doppelklick Wörter in das Textfeld hinzufügen und den so gebildetenSatz im nächsten Dialog aufnehmen.

83

Page 84: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.12. DIE BENUTZUNG DES PROGRAMMS KAPITEL 8. DAS JULIUS CONTROL CENTER

Training - Wort hinzufügen Teil IV

Abbildung 8.23: Dialog zum Aufnehmen der zuvor gewählten Wörter.

Hier kann man die zuvor gewählten Wörter aufnehmen. Dazu muss sicherge-stellt sein, dass das Mikrofon gut eingestellt, d.h. der Pegel richtig ist, sodasskein Rauschen oder eine Übersteureung mit in der Aufnahme zu hören ist. AuchAtem- oder Hintergrundgeräusche sind zu vermeiden.Bereit, klickt man auf Aufnehmen und nachdem die Aufnahme fertig gesprochenist, erneut auf den gleichen Button.

84

Page 85: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.12. DIE BENUTZUNG DES PROGRAMMS

Training - Wort hinzufügen Teil V

Abbildung 8.24: Dialog zum Bestätigen der aufgenommenen Wörter.

Zur Überprüfung kann man nun die erstellte Aufnahme anhöhren. Falls dieAufnahme wiederholen werden soll, da Fehler oder Hintergrundgeräusche zuhören sind, löscht man die erstellte Aufnahme und hat die Möglichkeit, diegewählten Wörter erneut aufzunehmen.Falls man jedoch mit der Aufnahme zufrieden ist, kann dieser Dialog bestätigtund somit die Aufnahme in die Datenbank übernommen werden.

85

Page 86: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.12. DIE BENUTZUNG DES PROGRAMMS KAPITEL 8. DAS JULIUS CONTROL CENTER

8.12.7 Sprachausgabe

Abbildung 8.25:In dieser Ansicht des Programms kann man alle Einstellungen für dieSprachausgabe einstellen.

Ausgabedevice Hier steht der Name der Soundkarte, über welche der synthe-tisierte Text ausgegeben wird.

Ausgabesprache Hier wird die Sprache, in der der Text synthetisiert wird,eingestellt.

Geschwindigkeit Dieser Parameter legt die Sprechgeschwindigkeit fest.

Pitch Dieser Parameter legt die mittlere Tonhöhe fest.

Pitchrange Dieser Parameter legt die Variation der Tonhöhe, also wie weit vonder Standardtonhöhe abgewichen wird fest.

Zwischenraumpause Dieser Parameter bestimmt die Pause in ms, die zwi-schen den Wörtern liegt.

Testsatz sagen Mit diesem Button wird der Text, welcher in der Textbox einge-tragen ist, synthetisiert und ausgegeben.

Werte zurücksetzen Mit diesem Button können alle Einstellungen und auchdie Textbox für den Testsatz zurückgesetzt werden.

86

Page 87: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 8. DAS JULIUS CONTROL CENTER 8.12. DIE BENUTZUNG DES PROGRAMMS

8.12.8 Einstellungen

Abbildung 8.26:Allgemeine Einstellungen, hier werden allgemeine Einstellungen für dasProgramm bestimmt.

Speicherpfad Hier wird der ausgewählte Speicherpfad angezeigt.

Durchsuchen Mit Hilfe dieses Buttons öffnet sich ein Dialog, um den Speicher-ort für alle abgelegten Dateien dieses Programms festzulegen.

Aufnahme Device Falls mehrere Mikrofoneingänge vorhanden sind, kann hierbestimmt werden, mit welchem Eingangsdevice aufgenommen wird.

Server Port Mit dieser Einstellung wird der Port festgelegt, an dem das Pro-gramm für Clients lauscht.

BOMP Lexikon Importieren Mit diesem Button öffnet sich ein Dialog, mit wel-chem das Bomp Lexikon importiert werden kann. In diesem Dialog wirdman dazu aufgefordert, das zuvor heruntergeladene BOMP Lexikon aus-zuwählen. Dieses wird dann in das Programm importiert und kann inZukunft dazu verwendet werden, den Benutzer beim Hinzufügen vonWörtern zu unterstützen.

87

Page 88: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

9 SchlussbetrachtungDas Ziel, eine sprecherunabhägige Spracherkennung für das Robocup Laborund die Forschungsgruppe AMSER der Hochschule Ravensburg-Weingarten zuerstellen, wurde dadurch erreicht, dass jeder Mitarbeiter einen Beitrag für dassprecherunabhägige Sprachmodell leisten kann, indem er eigene, individuelleSprachaufnahmen mit diesem Programm erstellen kann.Es ist jedoch nicht ausgeschlossen, dass wenn das Sprachmodell nur durcheine einzige Stimme trainiert wird, auch andere Personen erfolgreich erkanntwerden. Dies wird besonders der Fall sein, wenn die Ähnlichkeit des Stimmbil-des groß ist.Durch Versuche wurde deutlich, dass die Einzelwortekennung bessere Ergeb-nisse liefert als koninuierlich gesprochene Sprache. Gerade bei der Steuerungeines Roboters ist aber die Erkennungsgenauigkeit ein wichtiger Punkt, da essich oft um kritische Befehle handelt, wie z.B. „Halt!“. Ein mit mehreren Sprach-aufnahmen trainiertes Sprachmodell liefert bei einer Einzelworterkennung eineGenauigkeit von fast 100%.Die nicht so guten Werte der koninuierlich gesprochenen Sprache, also vonganzen Sätzen ist wahrscheinlich auf die Spracherkennungs-Engine Juliuszurückzuführen, die Erkennung wird schon nach einer sehr kurzen Sprechpau-se abgebrochen, so dass die darauf folgenden Wörter einzeln und nicht alszusammenhängender Satz erkannt werden. Durch eine Vielzahl der Einstel-lungsmöglichkeiten von Julius lässt sich dieses Verhalten vielleicht eindämmen.Das Programm arbeitet ungefähr mit der 10x Geschwindigkeit, erfüllt somitwährend der Spracherkennung und der Sprachausgabe die Bedingungen derEchtzeit und arbeitet sehr ressourcenschonend (unter 10% CPU Auslastung).Auch durch die Modularität, die unter anderem die objektorientierte SpracheC++ und das von mir streng eingehaltene, generelle Programmdesign mit sichbringt, können in Zukunft sehr schnell und effizient auch neue Techniken oderz.B. ein fremdsprachiges Wörterbuch in das Programm integriert werden.Wenn das Programm nicht nur in der Teaching-Box zur Unterstützung des Lern-vorgangs eingesetzt wird, sondern direkt in der Software des konditioniertenRoboters Anwendung findet, kann es dazu beitragen, den Serviceroboter auchverbal zu steuern.

88

Page 89: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

89

Page 90: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 9. SCHLUSSBETRACHTUNG

Klassendiagram

90

Page 91: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

KAPITEL 9. SCHLUSSBETRACHTUNG

91

Page 92: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

92

Page 93: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

A Literaturverzeichnis

[Brand08] Markus Brandau, „Implementation of a real-time voice encrypti-on system“, Fachhochschule Köln, Master Thesis, 2008

[Dude08] Langenscheidt Duden - Das Universalwörterbuch, 2008

[Eule06] Stephen Euler, „Grundkurs Spracherkennung“, Vieweg+TeubnerVerlag, Wiesbaden, 2006

[HAH01] Xued01Xuedong Huang, Alex Acero and Hsiao-Wuen Hon,„Spoken Language Processing: A Guide to Theory, Algorithmand System Development“, Prentice Hall PTR, 2001

[Holm91] John N. Holmes, „Sprachsynthese und Spracherkennung“, Ol-denbourg Verlag, München, 1991

[Hrom07] Juraj Hromkovic, „Theoretische Informatik - Formale Sprachen,Berechenbarkeit, Komplexitätstheorie, Algorithmik, Kommunika-tion und Kryptographie“, Vieweg+Teubner Verlag, Wiesbaden,2007

[KLTI+04] Tatsuya Kawahara, Akinobu Lee, Kazuya Takeda, KatsunobuItou and Kiyohiro Shikano, „Recent Progreess of Open-SourceLVCSR engine Julius and Japanese Model repository“, KyotoUniversity, ACCMS, KyoNara Institute of Science and Technolo-gy, Nagoya University, 2004,http://www.ar.media.kyoto-u.ac.jp/EN/bib/intl/KAW-

ICSLP04.pdf

[PK08] Beat Pfister, Tobias Kaufmann, „Sprachverrbeitung - Grundla-gen und Methoden der Sprachsynthese und Spracherkennung“,Springer Verlag, Heidelberg, 2008

[LHR90] K.-F. Lee, H.-W. Hon, and R. Reddy, „An overview of the SPHINXspeech recognition system“, IEEE Trans. ASSP-38, 1990

93

Page 94: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

[RJ04] L. R. Rabiner, B. H. Juang, „Automatic Speech Recognition – ABrief History of the Technology Development“, Georgia Instituteof Technology, Atlanta, Rutgers University and the University ofCalifornia, Santa Barbara, 2004

[Schr93] Manfred Robert Schroeder, „A brief history of synthetic speech“,in: Speech Communication 13, Seite 231–237, Elsevier, 1993

[Schu95] Ernst Günter Schukat-Talamazzini, „Automatische Spracherken-nung. Grundlagen, statistische Modelle und effiziente Algorith-men“, Vieweg+Teubner Verlag, Wiesbaden, 1995

[Spaa04] Mike A. Spaans, „On developing acoustic models using HTK“,Master of Science thesis, Delft University of Technology, 2004

[Suse99] Axel Susen, „Spracherkennung. Kosten, Nutzen, Einsatzmög-lichkeiten“, VDE Verlag, Berlin, 1999

[Vary98] Peter Vary, Ulrich Heute, Wolfgang Hess, „Digitale Sprachsignal-verarbeitung“, Vieweg+Teubner Verlag, Wiesbaden, 1998

[Wahl00] Wolfgang Wahlster, „Verbmobil: Foundations of Speech-to-Speech Translation“, Springer Verlag, Berlin, 2000

[WLK+04] Willie Walker, Paul Lamere, Philip Kwok, Bhiksha Raj, RitaSingh, Evandro Gouvea, Peter Wolf, Joe Woelfel, „Sphinx-4:A Flexible Open Source Framework for Speech Recognition“,SUN Microsystems Inc., 2004,http://research.sun.com/techrep/2004/smli_tr-2004-

139.pdf

[YEG+06] Steve Young, Gunnar Evermann, Mark Gales und andere, „TheHTK Book (for HTK Version 3.4)“, Cambridge University, Engi-neering Department, 2006

[Youn94] Steve Young, „The HTK Hidden Markov Model Toolkit: Designand Philosophy“,Cambridge University, Engineering Department,September, 1994

[Zink97] Prof. Dr. Joachim Zinke, „Verfahren zur Sprechererkennung“,FH Gießen-Friedberg, 1997,http://www.fh-friedberg.de/fachbereiche/e2/telekom-

labor/zinke/digiaudi/diss/node1.htm

94

Page 95: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

Internet Quellen

[BOMP] Bomp Wörterbuch,http://www.ifk.uni-bonn.de/forschung/abteilung-

sprache-und-kommunikation/phonetik/sprachsynthese/

bomp/

[Burk05] Felix Burkhardt, „Deutsche Sprachsynthese“,http://ttssamples.syntheticspeech.de/deutsch

[FIGGEUDO] Udo L. Figge, Vorlesung „Grundlagen der romanischenSprachwissenschaft“http://homepage.ruhr-uni-bochum.de/Udo.L.Figge/texte/

phonem.html

[FCKDE4] KDE Packaging Project for Fedorahttp://kde-redhat.sourceforge.net/

[HTK] HTK Homepagehttp://htk.eng.cam.ac.uk/

[IBMHistory] Historie der Spracherkennungs-Forschung bei IBM,http://www.research.ibm.com/hlt/html/body_history.

html

[JCC] JCC – Julius Control Centerhttp://www.julian-hochstetter.de/jcc/index.html

[Julius] Julius Homepagehttp://julius.sourceforge.jp/en_index.php

[Simon] Simon Projektseite auf SourceForge.nethttp://sourceforge.net/project/speech2text

[SimonL] Simon Listens Homepagehttp://www.simon-listens.org

[Verb00] Verbmobil Homepage,http://verbmobil.dfki.de/

[VoxFor] VoxForge Homepagehttp://www.voxforge.org

95

Page 96: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

[VoxFo+] Ken MacLean, „Create Speaker Dependent Acoustic Model“,http://voxforge.org/home/dev/acousticmodels/linux/

create

[Wiki] Wikipedia Deutschlandhttp://de.wikipedia.org

[XSP2IPA] X-SAMPA zu IPA konvertierenhttp://www.theiling.de/ipa/

96

Page 97: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

B Tabellenverzeichnis

2.1 Anforderungen an die Spracherkennung . . . . . . . . . . . . . . 212.2 Beispiel eines Mustervergleichs . . . . . . . . . . . . . . . . . . . 22

6.1 Aufbau des BOMP Wörterbuchs . . . . . . . . . . . . . . . . . . 486.2 Aufbau einer Julius Vokabeldefinition . . . . . . . . . . . . . . . . 496.3 Aufbau einer Julius Grammatikdefinition . . . . . . . . . . . . . . 496.4 Beispiel einer Julius Grammatik Definition . . . . . . . . . . . . . 49

8.1 JuliusProtocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

F.1 user.words Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . 103F.2 user.lexicon Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . 103F.3 model.lexicon Beispiel . . . . . . . . . . . . . . . . . . . . . . . . 103F.4 model.voca Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . 103F.5 user.grammar Beispiel . . . . . . . . . . . . . . . . . . . . . . . . 104F.6 model.grammar Beispiel . . . . . . . . . . . . . . . . . . . . . . . 104F.7 prompts Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . 104F.8 user.samples Beispiel . . . . . . . . . . . . . . . . . . . . . . . . 104

97

Page 98: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

C Abbildungsverzeichnis

1.1 Pioneer P3-AT Roboter mit Katana Arm . . . . . . . . . . . . . . 11

2.1 Spektrogramm einer 9-Kanal Filterbankanalyse . . . . . . . . . . 152.2 Verlauf eines DP Pfades . . . . . . . . . . . . . . . . . . . . . . . 162.3 Negativbeispiel des DP Versuchs . . . . . . . . . . . . . . . . . . 172.4 DFKI Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.5 Eine typische Spracherkennung, anhand eines Mustervergleichs 23

3.1 Nachbau der Sprechmaschine von Kempelen . . . . . . . . . . . 253.2 Ein typischer Aufbau eines Sprachsynthesesystems . . . . . . . 27

4.1 IBM Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.2 IBM 4341 Mainframe Rechner mit 233MHz . . . . . . . . . . . . 304.3 Philips Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.4 Dragon NaturallySpeaking Logo . . . . . . . . . . . . . . . . . . . 314.5 CMU Sphinx Logo . . . . . . . . . . . . . . . . . . . . . . . . . . 334.6 Julius Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.7 Beispiel einer Markov Kette . . . . . . . . . . . . . . . . . . . . . 36

5.1 AT&T Natural Voices Logo . . . . . . . . . . . . . . . . . . . . . . 375.2 Fonix Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.3 MBROLA Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.4 BOSS Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.5 HTS Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.6 espeak Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.1 Darstellung zweier Formanten . . . . . . . . . . . . . . . . . . . . 446.2 Ungerichtetes und gerichtetes Mikrofon . . . . . . . . . . . . . . 506.3 Sennheiser Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . 516.4 Verwendetes Sennheiser Mikrofon, PC136 . . . . . . . . . . . . . 51

7.1 Trolltec Qt Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537.2 ALSA Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547.3 ALSA Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

98

Page 99: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

8.1 TracIcon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608.2 Reimplementierung von QTreeWidget und QLineEdit . . . . . . . 618.3 Die Klasse WordManager . . . . . . . . . . . . . . . . . . . . . . 628.4 Die Klasse GrammarManager . . . . . . . . . . . . . . . . . . . . 638.5 Die Klasse SampleManager . . . . . . . . . . . . . . . . . . . . . 648.6 Die Klasse ModelManager . . . . . . . . . . . . . . . . . . . . . . 658.7 Detailierter Fehler bei Erstellung des Sprachmodells . . . . . . . 658.8 Die Klasse JuliusControl . . . . . . . . . . . . . . . . . . . . . . . 698.9 Die Klasse Speaker . . . . . . . . . . . . . . . . . . . . . . . . . 708.10 Die Klasse SoundOutput . . . . . . . . . . . . . . . . . . . . . . . 718.11 Die Klasse WavRecorder . . . . . . . . . . . . . . . . . . . . . . 728.12 Die Klasse MicControl . . . . . . . . . . . . . . . . . . . . . . . . 738.13 Die Klasse Settings . . . . . . . . . . . . . . . . . . . . . . . . . . 748.14 DoxyGen Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748.15 Ansicht des Programms . . . . . . . . . . . . . . . . . . . . . . . 758.16 Ansicht der Spracherkennung . . . . . . . . . . . . . . . . . . . . 768.17 Ansicht von Training - Sprachmodell . . . . . . . . . . . . . . . . 778.18 Ansicht von Training - Akustikmodell . . . . . . . . . . . . . . . . 788.19 Ansicht von Trainging - Grammatik . . . . . . . . . . . . . . . . . 798.20 Training - Wort hinzufügen I . . . . . . . . . . . . . . . . . . . . . 818.21 Training - Wort hinzufügen II . . . . . . . . . . . . . . . . . . . . . 828.22 Training - Wort hinzufügen III . . . . . . . . . . . . . . . . . . . . 838.23 Training - Wort hinzufügen IV . . . . . . . . . . . . . . . . . . . . 848.24 Training - Wort hinzufügen V . . . . . . . . . . . . . . . . . . . . . 858.25 Ansicht der Sprachausgabe . . . . . . . . . . . . . . . . . . . . . 868.26 Allgemeine Einstellungen . . . . . . . . . . . . . . . . . . . . . . 87

99

Page 100: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

D Abkürzungsverzeichnis

ALSA Advanced Linux Sound ArchitectureAMSER Autonome mobile ServiceroboterASCII American Standard Code for Information InterchangeASE Automatischr Sprach ErkennungASR Automatic Speech RecognitionBMBF Bundesministerium für Bildung und ForschungBOMP Bonn Machine-Readable Proncunation DictionaryBOSS Bonn Open Synthesis SystemCMU Carnegie Mellon UniversityDARPA Defense Advanced Research Projects AgencyDFA Deterministic Finite AutomationDFKI Deutsches Forschungszentrum für Künstliche IntelligenzDP Dynamische ProgammierungDSP Digital Speech ProcessingDTW Dynamic Time WarpingGUI Graphical User InterfaceHMM Hidden Markov ModelHTK Hidden Markov Model Tool kitHTS HMM Based Speech Synthesis SystemIPA International Phonetic AlphabetKDE K Desktop EnvironmentLVCSR Large Vocabulary Continuous Speech RecognitionMBROLA Multiband Resynthesis Overlap and Add)MFCC Mel Frequency Cepstral CoefficientsN-Gram Folge aus N ZeichenNLP Natural Language ProcessingRIFF-WAVE Resource Interchange File Format WAVESAMPA Speech Assessment Methods Phonetic AlphabetSDK Software Development KitTCP Transmission Control ProtocolTTS Text-to-Speech

100

Page 101: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

UTF Unicode Transformation FormatWAVE Windows Audio Video ExcellenceX-SAMPA Extended Speech Assessment Methods Phonetic Alphabet

101

Page 102: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

E Quellcode Verzeichnis

8.1 Beispiel von WordManager . . . . . . . . . . . . . . . . . . . . . 628.2 Beispiel von GrammarManager . . . . . . . . . . . . . . . . . . . 638.3 Beispiel von SampleManager . . . . . . . . . . . . . . . . . . . . 648.4 Anfrage von Client an JuliusServer . . . . . . . . . . . . . . . . . 678.5 Kommandoimplementierung . . . . . . . . . . . . . . . . . . . . . 688.6 Beispiel von Speaker . . . . . . . . . . . . . . . . . . . . . . . . . 708.7 Verwendung von Soundoutput . . . . . . . . . . . . . . . . . . . 718.8 Verwendung von WavRecorder . . . . . . . . . . . . . . . . . . . 728.9 Verwendung von Settings . . . . . . . . . . . . . . . . . . . . . . 74

102

Page 103: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

F Beispieldaten

WordManager Dateien

Maus maUs NOMComputer kOmpju:t@r NOMÜbung y:bUN NOMTest tEst NOMBuchen bu:x@n VRBBuchen bu:x@n NOM

Tabelle F.1:user.words Beispiel

. . . . . . . . .Maus maUs NOMComputer kOmpju:t@r NOMÜbung y:bUN NOMBuchen bu:x@n VRB:NOM. . . . . . . . .

Tabelle F.2:user.lexicon Beispiel

APFEL [Apfel] apf@lBIRNE [Birne] bIrn@COMPUTER [Computer] kOmpju:t@rMAUS [Maus] maUsSENT-END [] silSENT-START [] silTEST [Test] tEstÜBUNG [Übung] y:bUN

Tabelle F.3:model.lexicon Beispiel

% NS_B<s> sil% NS_E<s> sil% NOMÜbung y:bUNComputer kOmpju:t@rMaus maUs

Tabelle F.4:model.voca Beispiel

103

Page 104: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem

GrammarManager Dateien

Computer NOMMaus NOMTest NOMBuchen NOMBuchen VRBComputer Maus NOM NOM

Tabelle F.5:user.grammar Beispiel

S:NS_B NOM NS_ES:NS_B VRB NS_ES:NS_B NOM NOM NS_ES:NS_B VRB NOM NOM NS_ES:NS_B NOM VRB NOM NS_E

Tabelle F.6:model.grammar Beispiel

SampleManager Dateien

Computer_2008-12-18_15-38-04 COMPUTERMaus_2008-12-18_15-38-20 MAUSComputer_Maus_2008-12-18_15-38-40 COMPUTER MAUSMaus_Computer_2008-12-18_15-38-53 MAUS COMPUTERTest_2008-12-18_15-40-35 TESTÜbung_2008-12-18_15-41-16 ÜBUNGComputer_Maus_Test_Übung_. . . COMPUTER MAUS TEST ÜBUNG

Tabelle F.7: prompts Beispiel

(. . . )/samples/Computer_2008-12-18_15-38-04.wav Computer(. . . )/samples/Maus_2008-12-18_15-38-20.wav Maus(. . . )/samples/Computer_Maus_(. . . ).wav Computer Maus(. . . )/samples/Maus_Computer_(. . . ).wav Maus Computer(. . . )/samples/Test_2008-12-18_15-40-35.wav Test(. . . )/samples/Übung_2008-12-18_15-41-16.wav Übung(. . . )/samples/Computer_Maus_Test_(. . . ).wav Computer Maus Test Übung(. . . )/samples/samples/Computer_Test_(. . . ).wav Computer Test

Tabelle F.8: user.samples Beispiel

104

Page 105: Spracheingabe und Sprachausgabe für einen mobilen ...ertel/da/Bachelorarbeit_Hochstetter.pdf · interessante Bachelorarbeit in der Robocup Arbeitsgruppe ermöglicht. Auch bei meinem