Na, hat schon jemand was im Keller ?
Also ich bin dabei Teile für einen Prototypen zu bestellen. Folgende Designmerkmale habe ich für mich aufgestellt:
- Vollständige Konfiguration der Sprachausgabe über eine SD-Card
- Sprachsamples sind auf der SD-Card durch den User austausch- bzw. ergänzbar ( andere Sprache , z.B. deutsch, englisch , Mundarten, weiblich/männlich )
- Hohe Samplequalität: wahrscheinlich 22kHz Rate, 16Bit Auflösung (davon werden 12 Bit wieder gegeben ), PCM codiert , d.h. Frequenzen bis 11kHz können wieder gegeben werden. Sprache geht bis ca. 8kHz.
- 2 Eingänge für die Steuerung der Sprachausgabe ( z.B. kontinuierlich an/aus, On-Demand - z.B. über Knüppelschalter zu bedienen )
- 1 Eingang um durch Modellspeicher zu wechseln
- Modellspeicher haben eine gesprochene Nummer oder gesprochenen Name zur Identifikation
- Auswertung der Datenausgabe an die JetiBox (32 ASCII Zeichen = 1 Muster)
- max. 50 unterschiedliche Muster pro Modell die erkannt werden können
- pro Muster ein eigener Ablauf der Sprachausgabe
- mehrere Stellen für Zahlenausgabe in einem Muster möglich
- Muster können Alarme oder Informationen definieren
- Der Anschluss einer JetiBox ist Voraussetzung, da man sonst nicht weiß auf welche Informationen die Sprachausgabe achten soll. Eine aktive Steuerung von Sensoren würde den Rahmen sprengen, vielleicht später mal.
Der Ablauf der Spracherkennung erfolgt mehrstufig:
1. Stufe
Selektion des Modellspeichers. Das ist notwendig, wenn man z.B. mehrere MUIs für unterschiedliche Modelle hat und sich Alarme definiert hat. Die Alarmschwellen werden definiert und mit dem Display Inhalt verglichen.
2. Stufe
Die Hardware liest die Muster eines Modellspeichers ins RAM und vergleicht sie mit den Display-Inhalten der JetiBox. Passt Muster und Display übereinander, wird die Musterdefinition gelesen.
3. Stufe
Je nach Definition und Schalterstellung wird entschieden ob eine Sprachausgabe stattfindet.
4. Stufe
Der Displayinhalt wird zerlegt und in feste Bestandteile (Text) und variable Bestandteile (Messwerte / Zahlen) aufgeteilt. Feste Teile werden von der SD-Card wieder gegeben, variabel aus verschiedenen festen Teilen zusammen gesetzt und dann ausgegeben.
Zahlen sind dabei das Kernproblem, da sie gebildet werden müssen. Ansonsten braucht man für alle möglichen Kombinationen eigene Samples.
In Deutsch:
1="Eins",..., 9="Neun", 10="Zehn", 11="Elf" (1 Wort),12="Zwölf" (1 Wort) aber 21="Ein-und-Zwanzig" (3 Wörter) und 22="Zwei-und-Zwanzig" (3 Wörter)
In Englisch:
1="One",..., 9="Nine", 10="Ten", 11="Eleven" (1 Wort),12="Twelve" (1 Wort) aber 21="Twenty One" (2 Wörter) und 22="Twenty Two" (2 Wörter)
Kommen Kommas dazu ( 2,1 m Steigen ) , wird's nochmal komplizierter, ist aber lösbar.
Die Sprachausgabe ignoriert während der Ausgabe eingehende Daten um eine hohe Qualität zu erreichen. Dazu werden die Sprachdaten in Blöcken wechselweise in zwei Buffer ins RAM gelesen. Während der eine Buffer ausgegeben wird, wird der zweite vorbereitet und von der SD-Card gefüllt.
5. Stufe
Die Muster werden wieder ins RAM geladen und das Spiel geht von vorne los.
Als Hardware habe ich einen ATMega328 , einen 12 Bit DAC und einen Verstärker vorgesehen, dazu natürlich eine SD-Card.
Die Konfiguration erfolgt am PC - dort kann man dann auch seine Modellspeicher benennen ( Micro sollte man haben ) oder für eigene/neue Sensoren eigene Sprachausgaben definieren. Dadurch ist es absolut zukunftssicher und lässt sich an jeden neuen Sensor anpassen. Ich kann mir auch eine Community für den Austausch der Sprachdefinitionen vorstellen. Da kein aktiver Eingriff ins System erfolgt, kann die Schaltung parallel zu jeder JetiBox angeschlossen werden.
Zum Vario:
Mit der beschriebenen Methode können Messwerte ausgegeben werden.
Einen Varioton zu erzeugen leistet es nicht, denn der müsste auf den Messwert für steigen/sinken reagieren und dazu passend eine Frequenz berechnen - d.h. man muss es programmieren. Eine Definition und das Abspielen vorgefertigter Samples reicht dafür nicht. Das wäre ein "Nice-to-Have", mir geht es eher um die Sensorik.
Z.B. ließe sich so auch ein mehrstufiges Alarmkonzept umsetzen. "Du hast 2.000mAh verbraucht, Du musst gleich landen" als erster Hinweis, wenn ein MUI bei 2.000mAh angekommen ist. In einem zweiten Muster könnte man "2.500mAh verbraucht, Du musst SOFORT landen" ausgeben.
Soweit zur Theorie, die Umsetzung wird sicher eine Weile dauern, vor allem weil auch eine PC Software benötigt wird um es komfortabel zu machen.