BBC micro:bit #2: Sprachausgabe

Der BBC micro:bit hebt sich vom Arduino und deren Clones in der Programmierung deutlich ab. Wir können zbsp. auch ganz einfach Sprachausgaben an diesem Microcontroller generieren.

Dabei ist die Sprachqualität natürlich etwas eingeschränkt aber es funktioniert schon recht gut.

Was wird benötigt?

Wir benötigen dazu folgende Bauelemente:

  • 1x BBC micro:bit
  • 1x Erweiterungskarte (für den BBC micro:bit)
  • 2x Breadboardkabel, 10cm, männlich – weiblich

Nun gibt es zwei Arten wie wir die Sprachausgabe uns anhören können, einmal mit einem einfachen Piezo Buzzer oder mit einer aktiv Box.

Aufbau mit dem Piezo Buzzer

Möchte man die Schaltung mit einem Piezo Buzzer aufbauen so benötigt man neben die oben genannten Bauteile nur noch zusätzlich einen Piezo Buzzer (im nachfolgenden nur als Buzzer bezeichnet).

Piezo Buzzer
Piezo Buzzer

Einen Buzzer kann man bei ebay.de schon für ca. 3€ erwerben. (Eine große Preisersparnis kann man mit 5er oder 10er Packungen erhalten.)

Schaltung - Erweiterungskarte für den BBC micro:bit mit Piezo Buzzer
Schaltung – Erweiterungskarte für den BBC micro:bit mit Piezo Buzzer

Der Nachteil bei einem Piezo Buzzer ist das dieser sehr leise ist jedoch ist dieser deutlich günstiger und kleiner. 

Aufbau - BBC micro:bit mit Piezo Buzzer
Aufbau – BBC micro:bit mit Piezo Buzzer

Video

In diesem kurzen Video möchte ich aufzeigen wie die Sprachausgabe auf einem Piezo Buzzer klingt.

BBC micro:bit Sprachausgabe mit Piezo Buzzer

 

Aufbau mit einer aktiv Box

Wer etwas mehr Qualität haben möchte der nutzt eine aktiv Box. Diese gibt es schon für wenige Euros im Discounter. Ich nutze für dieses Tutorial die Computerboxen „Logitech  Z213 2.1„.

Um an dem 3,5 Klinkenstecker die Pins 1 und 2 anzuschließen benötigen wir zusätzlich noch 2 Krokodilklemmen, diese gibt es für ca. 6€ in einer 10er Packung auf ebay.de zu kaufen.

Krokodilklemmen
Krokodilklemmen

Mit diesen „Klammern“ können wir nun die beiden Pins 0 & 1 an den 3,5 Klinkenstecker anschließen.

Dazu greifen wir zunächst die Pins von der Erweiterungskarte mit Breadboardkabeln ab und klemmen an diese ein Ende von unseren Krokodilklemmen. Das andere Ende der Krokodilklemmen, klemmen wir an den 3,5 Klinkenstecker hier müssen wir die Spitze und das Ende verbinden.

Anschluss - Krokodilklemmen am 3,5 Klinkenstecker
Anschluss – Krokodilklemmen am 3,5 Klinkenstecker

Wenn wir alles angeschlossen haben dann sollte unserer Aufbau ungefähr so aussehen:

Anschluss - BBC micro:bit an aktiv Boxen
Anschluss – BBC micro:bit an aktiv Boxen

Video

Man hört in dem Video einen deutlichen Unterschied zum einfachen Piezo Buzzer.

BBC micro:bit Sprachausgabe auf einem Aktivlautsprecher

Quellcode

Nachdem ich nun gezeigt habe welche 2 Möglichkeiten es gibt die Schaltung aufzubauen. Müssen wir natürlich zunächst einmal dem BBC micro:bit programmieren. 

Neben der Bibliothek „microbit“, welche die Basisfunktionen für den Microcontroller liefert benötigen wir zusätzlich für unsere Sprachausgabe die Bibliothek „speech“.

Nun können wir in unserer Endlosschleife mit der Funktion „speech.say“ einen einfachen englischen Text ausgeben.

Es werden bisher nur englische Wörter / Sätze unterstützt.

Nach der Sprachausgabe habe ich eine kleine Pause von 2sek. eingefügt.

# Bibliothek mit den Funktionen für den BBC micro:bit
from microbit import *
# Bibliothek mit den Funktionen für die Sprachausgabe
import speech


while True:
    # den Text ausgeben
    speech.say("This is a simple Test.")
    # eine kleine Pause von 2 sek.
    sleep(2000)

manipulieren der Sprachausgabe

Die Sprachausgabe erfolgt wie bereits erwähnt in englischer Sprache, was man jedoch manipulieren kann ist die Geschwindigkeit, die Höhe und die sowie wie diese klingt. Die Klangfarbe lässt sich mit zwei Parametern beeinflussen, jeweils ob man mehr dumpf spricht (wie eine Bauchrednerpuppe) oder sehr aufgeregt.

speed

Die Geschwindigkeit mit welcher der Text wiedergegeben wird. Der minimale Wert von „0“ ist die schnellste Geschwindigkeit und der maximale Wert von „255“ ist der schnellste.

Bei einer Wahl von der Geschwindigkeit hört man nur ein kleines piepen somit bewegt sich meine Auswahl irgendwo in der Mitte.

pitch

Die Höhe der Stimme bestimmt man mit dem Parameter „pitch“. Der minimale Wert von „0“ ist sehr hoch und der maximale Wert von „255“ sehr tief.

throat

Mit dem Parameter „throat“ wird bestimmt wie relaxed oder angespannt die Stimme klingen soll. Der minimale Wert von „0“ klingt sehr entspannt und der maximale Wert von „255“ klingt sehr angespannt.

mouth

Der Parameter „mouth“ manipuliert die Stimme in der Form das beim minimalen Wert von „0“ diese sehr dumpf klingt und beim maximalen Wert von „255“ sehr offen.

Beispiel

Hier nun ein kleines Beispiel mit dem allseits  bekannten Text „Hello World!“.

Wenn der Benutzer auf den Button „A“ klickt dann wird die Funktion „saySomething“ aufgerufen. In dieser Funktion wird nun unser Text als Sprache ausgegeben.

# Bibliothek mit den den Funktionen für den micro:bit
from microbit import *
# Bibliothek für die Sprachausgabe
import speech

# Funktion um einen Text als Sprache auszugeben.
def saySomething():
    speech.say("Hello World!", speed=85, pitch=120, throat=125, mouth=150)

# Endlosschleife
while True:
    # Wenn der Button "A" gedrückt wird dann mache...
    if button_a.is_pressed():
      # Funktion aufrufen
      saySomething()

Für dieses Beispiel wurde am Ende der Endlosschleife kein „sleep“ eingebaut, da diese Funktion eine kleine Pause bewirkt könnte der Microcontroller sonst den Status (Button gedrückt) des Buttons „A“ verpassen bzw. erst etwas später anfangen den Text auszugeben.

Fazit

Mit der Bibliothek „speech“ und einem Aktivlautsprecher kann man sich einfache Texte ausgeben und dem BBC micro:bit etwas „leben“ einhauchen.

Eine ausführliche Dokumentation zu dieser Bibliothek findest du unter https://microbit-micropython.readthedocs.io/en/latest/tutorials/speech.html.
Auf der Webseite wird jedoch hervorgehoben das die Bibliothek „speech“ sich z.Zt. (stand 03.032019) sich im AlphaCode Status befindet, d.h. es wird weiter an dieser Entwickelt aber der aktuelle Stand ist „gut genug“ um veröffentlicht zu werden. 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.