Das Gravity Text-to-Speech Modul V2 ist ein kompaktes Sprachsynthese-Board von DFRobot, das Entwicklern ermöglicht, Text einfach in hörbare Sprache auf Englisch oder Chinesisch umzuwandeln. Ausgestattet mit einem eingebauten Lautsprecher und Unterstützung für sowohl I2C- als auch UART-Kommunikation bietet das Modul eine Plug-and-Play-Lösung für Projekte, die gesprochene Ausgaben benötigen.
In diesem Tutorial führen wir dich durch alles, was du zum Start brauchst – von der Verkabelung und der Installation der Bibliothek bis hin zum Beispielcode.
Benötigte Teile
Für dieses Tutorial benötigst du das Gravity Text-to-Speech Modul. Du kannst es zum Beispiel bei DFRobot erwerben. Achte jedoch darauf, die Version V2.x zu bekommen.
Außerdem brauchst du einen Mikrocontroller. Ich verwende ein Arduino UNO, aber auch andere Arduino- oder ESP32-Boards funktionieren gut. Die einzige Voraussetzung ist die Unterstützung einer I2C- (oder UART-) Schnittstelle.

Gravity Text-to-Speech Modul

Arduino Uno

USB-Kabel für Arduino UNO

Dupont-Kabel-Set

Breadboard
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Hardware des Gravity Text-to-Speech Moduls
Das Gravity Text-to-Speech Modul V2 ist so konzipiert, dass es Sprachsynthese mit minimalem externen Hardwareaufwand ermöglicht. Es unterstützt Englisch und Chinesisch und kann beide Sprachen in einer Ausgabe mischen. Das Board verfügt über einen eingebauten Lautsprecher, sodass für die grundlegende Sprachausgabe kein externer Verstärker oder Lautsprecher benötigt wird.

Die Kommunikation mit einem Host-Controller (wie Arduino, ESP32, Raspberry Pi oder anderen gängigen Mikrocontroller-Plattformen) erfolgt entweder über I2C oder UART. Die I2C-Schnittstelle des Moduls hat eine feste Adresse (0x40).
Das Modul akzeptiert eine Versorgungsspannung im Bereich von 3,3 V bis 5 V, was es mit den meisten gängigen Mikrocontroller-Boards kompatibel macht. Der typische Betriebsstrom liegt unter 50 mA, was den Energieverbrauch für batteriebetriebene Projekte überschaubar hält.
On the software side, the module supports “text control identifiers” embedded inside the text string sent for synthesis. These identifiers allow dynamic configuration of voice parameters such as volume, speed, tone (intonation), and voice-type (speaker voice), giving developers some control over speech characteristics. For example, one can send something like „[v3]Hello [v8]world“ to adjust volume mid-sentence.
Technische Spezifikationen
Die folgende Tabelle fasst die technischen Spezifikationen des Gravity Text-to-Speech Moduls V2.0 zusammen:
| Parameter | Spezifikation |
|---|---|
| Produktname | Gravity: Text to Speech Module V2.0 (DFR0760) |
| Unterstützte Sprachen | Englisch und Chinesisch (unterstützt gemischte Sprachsynthese) |
| Kommunikationsschnittstellen | I2C (Adresse 0x40), UART |
| Versorgungsspannung | 3,3 V bis 5,0 V |
| Typischer Betriebsstrom | < 50 mA |
| Betriebstemperatur | –40 °C bis +85 °C |
| Audioausgang | Integrierter Onboard-Lautsprecher |
| Sprachkonfiguration | Einstellbare Geschwindigkeit, Lautstärke, Tonhöhe und Stimmtyp über eingebettete Steuerkennungen |
| Abmessungen | Ca. 42 mm × 32 mm |
| Schnittstellentyp | Gravity 4-Pin-Anschluss (VCC, GND, SDA/RX, SCL/TX) |
| Verbesserungen der Modulversion | Verbesserte Sprachklarheit und reduzierte Aussprachefehler im Vergleich zu V1 |
Installation der DFRobot_SpeechSynthesis_V2 Bibliothek
Bevor du das Gravity Text-to-Speech Modul verwenden kannst, musst du zuerst die DFRobot_SpeechSynthesis_V2 Bibliothek von DFRobot installieren. Gehe dazu auf die github repo und klicke auf den grünen „<> Code“-Button und dann auf „Download ZIP“:

Dadurch wird die Bibliothek als ZIP-Datei mit dem Namen „DFRobot_SpeechSynthesis_V2-main.zip“ auf deinen Computer heruntergeladen.
Öffne anschließend deine Arduino IDE und gehe zu „Sketch -> Include Library -> Add .ZIP Library …“ wie unten gezeigt:

Wähle schließlich die Datei „DFRobot_SpeechSynthesis_V2-main.zip“ aus, wenn du dazu aufgefordert wirst, und installiere die Bibliothek.
Anschluss des Gravity Text-to-Speech Moduls an Arduino
Der Anschluss des Gravity Text-to-Speech Moduls an ein Arduino oder ESP32 ist einfach. Verbinde zuerst den Ground des Arduino mit dem GND-Pin des Sprachmoduls. Verbinde dann den VCC-Pin mit dem 3,3V- oder 5V-Ausgang des Arduino. Schließlich verbinde SCL mit C/R und SDA mit D/T, wie unten gezeigt:

Beachte, dass du das Sprachmodul auch über die UART Schnittstelle anschließen kannst. Die I2C-Kommunikation ist jedoch schneller und hält die serielle Schnittstelle frei.
Code-Beispiel
Das folgende Code-Beispiel lässt das Modul den Text „This is a test“ aussprechen. Es setzt außerdem Parameter wie Lautstärke, Geschwindigkeit und Tonhöhe der Sprachausgabe. Schau dir zuerst den kompletten Code an, bevor wir ins Detail gehen.
#include "Wire.h"
#include "DFRobot_SpeechSynthesis_V2.h"
DFRobot_SpeechSynthesis_I2C ss;
void setup() {
ss.begin();
ss.setVolume(1);
ss.setSpeed(4);
ss.setTone(6);
ss.setEnglishPron(ss.eWord);
}
void loop() {
ss.speak("This is a test");
delay(10000);
}
Imports
Oben im Programm werden zwei Header-Dateien eingebunden, um Zugriff auf die notwendigen Bibliotheken zu ermöglichen. Die Wire-Bibliothek aktiviert die I2C-Kommunikation auf Arduino-kompatiblen Boards, während die DFRobot_SpeechSynthesis_V2-Bibliothek alle Funktionen enthält, die zur Steuerung des Gravity Text-to-Speech Moduls über I2C erforderlich sind.
#include "Wire.h" #include "DFRobot_SpeechSynthesis_V2.h"
Durch das Einbinden dieser Bibliotheken kann der Sketch das Modul initialisieren, Befehle senden und Sprachparameter konfigurieren.
Objekte
Der Code erstellt ein Sprachsynthese-Objekt namens ss, das das über I2C verbundene Text-to-Speech-Modul repräsentiert. Dieses Objekt stellt Methoden wie begin, setVolume, setSpeed und speak bereit.
DFRobot_SpeechSynthesis_I2C ss;
Die Instanziierung dieses Objekts ermöglicht es dem Sketch, über eine einfache, hochrangige API mit der Hardware zu interagieren.
Setup
Die setup Funktion läuft einmal, wenn das Board eingeschaltet oder zurückgesetzt wird. Sie konfiguriert das Sprachmodul und bereitet es auf die Sprachausgabe vor. Die Initialisierungssequenz beginnt mit dem Aufruf von begin, der die Kommunikation herstellt und das Modul weckt.
ss.begin();
Nach der Initialisierung konfiguriert das Programm mehrere Spracheigenschaften. Die setVolume Funktion passt die Lautstärke der synthetisierten Stimme an, wobei niedrigere Werte eine leisere Ausgabe und höhere Werte eine lautere Sprache erzeugen.
ss.setVolume(1);
Anschließend ändert die setSpeed Funktion die Sprechgeschwindigkeit des Moduls. Ein höherer Wert führt zu schnellerer Sprache, ein niedrigerer Wert verlangsamt sie.
ss.setSpeed(4);
Der Code setzt dann den Ton, der die Tonhöhe und Intonation der gesprochenen Stimme beeinflusst. Die Tonhöhe kann so eingestellt werden, dass die Stimme höher oder tiefer klingt. Niedrigere Werte klingen auch roboterhafter.
ss.setTone(6);
Schließlich konfiguriert das Programm den englischen Aussprachemodus. Die Bibliothek bietet verschiedene Aussprache-Strategien, und die Auswahl von ss.eWord weist das Modul an, Wort-für-Wort-Aussprache-Regeln zu verwenden.
ss.setEnglishPron(ss.eWord);
Nach Anwendung dieser Einstellungen ist das Modul vollständig konfiguriert und bereit zur Sprachsynthese.
Loop
Die loop Funktion läuft kontinuierlich und löst in regelmäßigen Abständen die Sprachausgabe aus. Bei jedem Durchlauf sendet die speak Funktion einen Textstring an das Modul, das diesen dann in hörbare Sprache umwandelt.
ss.speak("This is a test");
Da die Sprachausgabe nicht ständig wiederholt werden soll, enthält das Programm eine Verzögerung, die die Ausführung für zehn Sekunden pausiert. So wird sichergestellt, dass die Nachricht nur einmal pro Zyklus gesprochen wird.
delay(10000);
Die Schleife wiederholt sich unendlich, wodurch das Modul denselben Satz alle zehn Sekunden ausspricht, bis das Board zurückgesetzt oder ausgeschaltet wird.
Fazit
In diesem Tutorial hast du gelernt, wie du das Gravity Text-to-Speech Modul mit einem Arduino UNO verbindest. Im Gegensatz zu cloudbasierten Text-to-Speech-Diensten wie ElevenLabs erfolgt die gesamte Synthese lokal auf dem Gerät, was bedeutet, dass keine Internetverbindung benötigt wird, keine API-Kosten anfallen und sofortige, latenzarme Antworten möglich sind.
Das Modul unterstützt Englisch und Chinesisch, kann Sprachen nahtlos mischen und erlaubt die Echtzeitanpassung von Lautstärke, Geschwindigkeit, Tonhöhe und Aussprache über einfache Steuerbefehle. Die I2C- und UART-Schnittstellen erleichtern die Integration mit Arduino, ESP32 und ähnlichen Mikrocontrollern.
Andererseits ist die Sprach- und Klangqualität nicht so gut wie bei ElevenLabs zum Beispiel. Außerdem ist die Anzahl der Stimmen begrenzt, und die englische Stimme hat einen deutlichen chinesischen Akzent. Wenn du jedoch eine Offline-Lösung brauchst und keine natürlich klingende Sprache erwartest, ist das Gravity Text-to-Speech Modul eine Option.
Für Sprach-zu-Text- und Spracherkennungslösungen schau dir unsere Getting started with Gravity Voice Recognition Module, das Using the Voice Recognition Module V3 with Arduino und die Voice control with XIAO-ESP32-S3-Sense and Edge Impulse Tutorials an.
Viel Spaß beim Tüfteln ; )

