Arduino als Sprachsynthesizer

Ab 1978 kamen von Texas Instruments die Reihe der sogenannten LPC-Sprachchips auf den Markt. Unter ihnen war ab 1980 der TMS5220, welcher in vielen Arcade-Spielen zu Einsatz kam.

Soundchip

Verwendete Bauteile

Aufbau

Der Aufbau ist zwar sehr einfach, da nur ein Arduino und ein kleiner Lautsprecher (oder Piezo-Summer) benötigt wird, allerdings ist darauf zu achten, dass der (-)-Anschluss des Lautsprechers mit dem Pin #11 und der (+)-Anschluss mit dem Pin #3 der Arduino Uno verbunden wird.

Aufbau der Schaltung

Alternativ zum kleinen Lautsprecher kann auch ein Kopfhörer oder ein Verstärker mit angeschlossenen Boxen verwendet werden.

Sketches

Die zu Grunde liegende Library ist unter going-digital/Talkie zu finden, wurde aber seit mehr als 8 Jahren nicht mehr gepflegt. Es gibt allerdings eine darauf aufbauende Library unter ArminJo/Talkie, die mit einigen Verbesserungen aufwartet und auch mehr Typen von Mikrocontrollers unterstützt.

Sketch I.

Der erste Sketch benützt die Sprachsamples des Texas Instruments TI99/4A Speech System add-on von 1979. In der Datei src/Vocab_US_TI99.h können alle möglichen Sprachsamples eingesehen werden.

#include <Arduino.h>
#include "Talkie.h"
#include "Vocab_US_TI99.h"

Talkie voice;

void setup()
{
    voice.say(spt_ABOUT);
    voice.say(spt_HUNDRED);
    voice.say(spt_PROBLEMS);
    voice.say(spt_SEE);
    voice.say(spt_GOOD_WORK);
    voice.say(spt_AND);
    voice.say(spt_DOUBLE);
    voice.say(spt_DISKETTE);
    voice.say(spt_ERROR);
}

void loop() {}

So hört sich das Resultat des obigen Sketches an:

Sketch II.

Im zweiten Sketch stammen die Sprachsamples aus den VM61002/3/4/5 ROMs und können der Datei src/Vocab_US_Large.h eingesehen werden.

#include <Arduino.h>
#include "Talkie.h"
#include "Vocab_US_Large.h"

Talkie voice;

void setup()
{
    voice.say(sp2_DANGER);
    voice.say(sp2_DANGER);
    voice.say(sp2_RED);
    voice.say(sp2_ALERT);
    voice.say(sp2_MOTOR);
    voice.say(sp2_IS);
    voice.say(sp2_ON);
    voice.say(sp2_FIRE);
}

void loop() {}

So hört sich das Resultat des obigen Sketches an:

Eigene Samples

Es können auch eigene Samples hergestellt werden. Dazu kann man entweder ptwz/python_wizard oder (unter MacOSX) patrick99e99/BlueWizard verwenden. (Ich habe diese beiden Möglichkeit bisher noch nicht ausprobiert.)

zurück