YAVA - Yet Another Vowel Analyzer

Everybody loves screenshots:

Screenshot: Training a network Screenshot: Classifying a vowel
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:

StatusDatumBeschreibung
abgeschlossen1.12.2002 - 15.1.2003 Entwicklung der mathematischen Modelle und Algorithmen, struktureller Aufbau des Projekts
abgeschlossen15.1.2003 - 15.2.2003 Implementierung und Testen des Programms
abgeschlossen15.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.


last update: Sun, 02 Mar 2003