PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grundlagen Sprachausgabe



Manf
16.02.2004, 22:14
Sprachausgabe

Motivation
Solange der Roboter noch am Computer hängt und alles zurückmelden kann, hat man eine leistungsfähige Schnittstelle. Für den nächsten Schritt, die Loslösung vom PC, haben die meisten Steuerungen dann eine LCD Anzeige, um über die LEDs hinaus auch komplexere Nachrichten ausgeben zu können.
Wenn der Roboter dann aber unter dem Tisch hindurchfährt, unter dem Bett sauber macht, oder auch gerade im Nachbarraum ist, dann erfährt man nichts über seinen Zustand, seine Sorgen über Orientierung und seinen Batteriezustand.
Als ein Mitglied des sozialen Umfeldes sollte auch “er“ Freude zu Ausdruck bringen, Stolz über eine getane Arbeit, um mit einer frischen Akkuladung belohnt werden zu können. Er sollte stöhnen, fluchen, jammern oder einfach aus dem Leben erzählen wenn nichts besonderes vorliegt.
So ungefähr hat es mir ein Tüftler geschildert, der seinen Roboter mit Sprachausgebe ausgrüstet hatte (vor 20 Jahren). Damals war das etwas für Spezialisten und in meinen Augen ein echter “overkill“. Der Roboter damals hat im wesentlichen nur zwei verschiede Sätze vor sich hin gesagt, mit denen er seinen Betriebszustand angezeigt hat.

Grundlegendes Prinzip
Ich habe mich daran erinnert als ich eine LCD Anzeige an die C-Control angeschlosen habe, mit der Codierung der Zeichen, die ohne Termial Treiber etwas umständlich ist. Ich dachte, daß wenn ich für jedes Zeichen den Ascii code ausrechne, dann kann ich auch für Ziffern und Zeichen den Platz in deinem sequenziellen Wave file angeben, das beispielsweise alle Ziffern und ein paar Kurzmeldungen enthält.
Ein solches Wave file kann dann in einem (*acht) EPROM abgelegt sein (nicht üblich) und bei 128k byte mit 8kHz clock Sprachelemente mit in Summe 16 Sekunden Dauer enthalten. Diese Sprachelemente können dann durch Setzen eines HW Zählers leicht über eine Basisadresse ausgewählt und durch Hochzählen der Speicheradresse um die Dauer des Sprachsegments, über einen A/D Wandler an einen Lautsprecher ausgegeben werden.
Das funktioniert wirklich und die Sprachsegmente können mit Soundeditoren leicht zusammengestelt werden. Zu Übertragung des Wave files in das Eprom sollte man ein einfaches Programmiergerät nehmen. Meines läßt sich nicht mehr am XP Rechner betreiben und so war es der größte Aufwand, die Daten über eine C-Control ins EPROM zu schaffen. Es waren im Test nur 4 Sekunden Text aber eine lange Übergabezeit über die serielle Schittstelle.

Realisierung
Die Aufgabe läßt sich aber viel eleganter lösen. Der Sprachspeicherbaustein ROM-Corder ISD 1416 speichert 16 Sekunden Sprache in einem (Analogwert) EPROM. Eine vielleicht etwas lustige Technik mit dem analogen EPROM, aber wie er das macht ist nicht so wichtig. Interessanter ist schon, daß der ROM Corder von Conrad als Bausatz angeboten wird, komplett mit Mikophon, Lautsprecher und Tasten, in der angebotenen Ausführung allerdings nur für eine Sprachsequenz.
In der angebotenen Ausführung drückt man beispielsweise für 16 Sekunden die Aufnahmetaste und nimmt die zusammengstellten Sprachsegmente vom Computer einfach über Microphon auf. Dann kann man sie entweder (edge triggered) komplett vorspielen, oder (level triggered) solange vorspielen wie man die entsprechende Taste gedrückt hält. Intern im Baustein gibt es ein 100ms Raster mit 160 Elementar- Soundabschnitten, zusammen 16 sec.
Der ganze Clou ist nun die Adressierung des Startpunktes. In der Platine des Conrad Bausatzes, das war für mich der einfachste Weg, trennt man die Adresspins des Bausteins von Masse ab (1/10 Zoll eine Aufgabe fast für Anfänger), und verbindet sie mit mit 8 Portleitungen zur Festlegung der Startadresse. (Bei gröberem Raster z.B. 400ms kann man auch die 2 LSBs auf Masse lassen. ) Eine weitere Leitung schließt (man über Schottky Diode entkoppelt, um die Funktion der Taste zu erhalten) an den “level triggered“ play Eingang des ROM Corders an und kann die Dauer der Sprachsegmentausgabe im 100 ms Raster leicht in Basic angeben.
Man kann dann Sprachsequenzen komponieren die beipielsweise die Ziffern 0 bis 9 mit je 400ms und noch ein paar Größen und Einheiten enthalten, um sich Meßwerte ausgeben zu lassen.

Ausblick
Um auf den Anfang zurückzukommen: Man sollte eigentlich emotionalere Meldungen einprogrammieren wie:
“Bei der Spannung kannst Du Deinen Staub selber wegsaugen“,
“Ich weiß nicht mehr wo ich schon war, aber es wäre überall nötig“,
“Ich möchte mir noch ein spannendes Netzteil anschauen“,
“Unsere Gewerkschaft sagt, wir erhalten ab nächsten Monat Zusatzakkus“

Nein!, der Ausblick ist noch zu sehr im Spannungsfeld Mensch Maschine gehalten, viel entspannter wird der Umgang sein wie:
“Das Badezimmer mache ich morgen, ich treffe mich noch mit der Kaffemaschine.“

Aber ernsthaft: Ein unbedeutendes “Tum- ti- tum- ti- tum“ ist wichtig, um den Gemütszustand erkennen zu lassen.
Nicht immer gleich ein “To be is to do.“ oder “To do ist to be“ sondern viel mehr auch “to- be- do- be- do“.

Manfred


https://www.roboternetz.de/bilder/sprachausgabe.gif