YAVA - Yet Another Vowel Analyzer
Everybody loves screenshots:
|
|
Training a network |
Classifying a vowel |
(The rest of this page is written in german)
Diese Seite enthält Teile der Unterlagen zu der Projektaufgabe des
"
C++
Programmier-Praktikums" des WS2002/2003. Dabei geht es um die
Erkennung
einzelner Vokale mit Hilfe neuronaler Netzwerke. Die Eingabedaten stehen dabei
als vorverarbeitete Samples zur Verfügung.
Die Gruppe "pedantic" bestand aus Enrico Biermann, Timo Glaser,
Marco Kunze und Sebastian Nowozin.
Das Praktikum war in einzelne Phasen eingeteilt:
Status | Datum | Beschreibung |
abgeschlossen | 1.12.2002 - 15.1.2003 |
Entwicklung der mathematischen Modelle und Algorithmen,
struktureller Aufbau des Projekts |
abgeschlossen | 15.1.2003 - 15.2.2003 |
Implementierung und Testen des Programms |
abgeschlossen | 15.2.2003 - 15.3.2003 |
Dokumentation |
Dokumentation
Es waren in mehreren Phasen unterschiedliche Dokumentationen anzufertigen. Da
wir noch keine Vorlesungen über Softwaredesign oder ähnliche Themen
genossen haben, bitten wir die Form zu entschuldigen :-)
Planungsabgabe
Die Planungsabgabe war die Rohfassung des Designs des gesammten Programms. Es
wurden vier Module ermittelt, die funktional zusammen passen und der grobe
Implementierungspfad wurde aufgezeigt.
planungsabgabe.pdf (300kb),
planungsabgabe.ps.gz (210kb).
Mathematische Ausarbeitung
Die neuronalen Netze, die im Programm verwendet werden basieren auf dem
mehrschichtigen Perzeptron Modell. Die mathematischen Grundlagen und alle
verwendeten Algorithmen werden in diesem Dokument dargestellt. Es bietet aber
auch unabhängig davon einen schnellen Einstieg in neuronale Netze.
neural-network-math.pdf (215kb),
neural-network-math.ps.gz (165kb).
Benutzerhandbuch
Das Benutzerhandbuch (falls jemals irgendjemand ausser uns das Programm
benutzen sollte ;) gibt grob Auskunft über die GUI und ihre
Bedienelemente sowie über die grundlegende Benutzungsweise und die
Prozesse, die der Benutzer kontrollieren kann.
manual.pdf,
manual.ps.gz.
Referenzdokumentation (english)
Die Referenzdokumentation ist in zwei Teile gegliedert: Das "Programmers
Overview" Manual gibt einen groben Einblick in die verwendeten Klassen
und ihre Interaktion untereinander. Bevor der Source geändert wird,
sollte es gelesen werden. Der zweite Teil, das "Programmers Reference
Manual" ist eine Referenz über alle im Programm verwendeten Klassen.
Es wurde automatisch mit Hilfe von
Doxygen aus dem dazu speziell
annotierten Sourcecode generiert, was diesen Teil der Arbeit erleichterte und
teilweise sogar angenehm machte ;-).
overview.pdf (54kb),
overview.ps.gz (54kb).
refman.pdf (620kb),
Online HTML version.
Source
Ursprünglich war es vorgesehen den Source unter der
GNU Public License v2 zu
veröffentlichen. Leider kollidiert dies mit Uni-Interessen, da das
C++-Praktikum auch im nächsten Semester angeboten werden soll und eine
Veröffentlichung nach Tutorenmeinung den Korrekturaufwand erhöhen
würde. Es ist leider nicht möglich, nur die ausführbaren
Programme zu veröffentlichen, da dies gegen die
QT Public License
verstossen würde, an die wir implizit durch Verwendung der
QT GUI
Bibliothek gebunden sind.
Grosse Teile des Sources sind für die weitere Verwendung nicht allzu
interessant (Vokalverarbeitung und GUI sind stark an den Anwendungszweck
gebunden). Andere Teile wiederum, wie etwas das neuronale Netz, wurden extra
sauber und modular implementiert und teilweise auch gut profiled und
optimiert, so das eine Wiederverwendung durchaus Sinn macht.
Nach Rücksprache mit dem Veranstalter des C++ Praktikums sind wir zu
einem Kompromiss gekommen. Die Sourcen des neuronalen Netzwerk Bibliothek
dürfen veröffentlicht werden, die des ganzen Projektes jedoch nicht.
Ich habe die Klassen für das neuronale Netz in eine Bibliothek
zusammengefasst, die seperat verfügbar ist:
libperceptronnetwork.