Skip to Content

Tutorial sul modulo Gravity Text-to-Speech

Tutorial sul modulo Gravity Text-to-Speech

Il Gravity Text-to-Speech Module V2 è una scheda compatta per sintesi vocale di DFRobot che permette agli sviluppatori di convertire facilmente testo in parlato udibile in inglese o cinese. Dotato di un altoparlante integrato e supportando comunicazioni sia I2C che UART, il modulo offre una soluzione plug-and-play per progetti che richiedono output vocale.

In questo tutorial, ti guideremo attraverso tutto ciò che serve per iniziare, dal cablaggio e l’installazione della libreria fino al codice di esempio.

Componenti necessari

Per questo tutorial ti servirà il Gravity Text-to-Speech Module. Puoi acquistarlo, ad esempio, da DFRobot. Assicurati però di prendere la versione V2.x.

Gravity Text-to-Speech Module

Arduino

Arduino Uno

USB Data Sync cable Arduino

USB Cable for Arduino UNO

Dupont wire set

Dupont Wire Set

Half_breadboard56a

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 del Gravity Text-to-Speech Module

Il Gravity Text-to-Speech Module V2 è progettato per fornire sintesi vocale con requisiti hardware esterni minimi. Supporta sia l’inglese che il cinese e può mescolare entrambe le lingue in un unico output. La scheda include un altoparlante integrato, quindi non è necessario un amplificatore audio o altoparlante esterno per un’uscita vocale di base.

Gravity Text-to-Speech Module V2.0 (source)

La comunicazione con un controller host (come Arduino, ESP32, Raspberry Pi o altre piattaforme microcontrollore popolari) può avvenire tramite I2C o UART. L’interfaccia I2C del modulo ha un indirizzo fisso (0x40).

Il modulo accetta una tensione di alimentazione da 3,3 V a 5 V, rendendolo compatibile con la maggior parte delle schede microcontrollore comuni. La corrente operativa tipica è inferiore a 50 mA, mantenendo il consumo energetico gestibile per progetti alimentati a batteria.

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.

Specifiche tecniche

La tabella seguente riassume le specifiche tecniche del Gravity Text-to-Speech Module V2.0:

ParametroSpecifiche
Nome prodottoGravity: Text to Speech Module V2.0 (DFR0760)
Lingue supportateInglese e cinese (supporta sintesi multilingue)
Interfacce di comunicazioneI2C (indirizzo 0x40), UART
Tensione di alimentazione3,3 V a 5,0 V
Corrente operativa tipica< 50 mA
Temperatura di esercizio–40 °C a +85 °C
Uscita audioAltoparlante integrato a bordo
Configurazione vocaleVelocità, volume, tono e tipo di voce regolabili tramite identificatori di controllo incorporati
DimensioniCirca 42 mm × 32 mm
Tipo di interfacciaConnettore Gravity a 4 pin (VCC, GND, SDA/RX, SCL/TX)
Miglioramenti della versione del moduloMaggiore chiarezza del parlato e riduzione degli errori di pronuncia rispetto alla V1

Installare la libreria DFRobot_SpeechSynthesis_V2

Prima di poter usare il Gravity Text-to-Speech Module, devi prima installare la libreria DFRobot_SpeechSynthesis_V2 di DFRobot. Vai su github repo e clicca sul pulsante verde “<> Code” e poi su “Download ZIP”:

Questo scaricherà la libreria come file zip chiamato “DFRobot_SpeechSynthesis_V2-main.zip” sul tuo computer.

Apri quindi l’IDE Arduino e vai su “Sketch -> Include Library -> Add .ZIP Library …” come mostrato di seguito:

Infine, seleziona il file “DFRobot_SpeechSynthesis_V2-main.zip” quando richiesto e installa la libreria.

Collegare il Gravity Text-to-Speech Module ad Arduino

Collegare il Gravity Text-to-Speech Module a un Arduino o a un ESP32 è semplice. Inizia collegando il GND di Arduino al pin GND del modulo vocale. Poi collega il pin VCC all’uscita 3,3V o 5V di Arduino. Infine, collega SCL a C/R e SDA a D/T come mostrato di seguito:

Connecting Gravity Text to Speech Modul to Arduino UNO
Collegamento del Gravity Text-to-Speech Module ad Arduino UNO

Nota che puoi anche collegare il modulo vocale tramite l’interfaccia UART. Tuttavia, la comunicazione I2C è più veloce e libera l’interfaccia seriale.

Esempio di codice

Il seguente esempio di codice fa pronunciare al modulo il testo “This is a test”. Imposta anche parametri come volume, velocità e tono dell’output vocale. Dai prima un’occhiata al codice completo e poi entriamo nei dettagli.

#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);
}

Importazioni

All’inizio del programma sono incluse due librerie per fornire l’accesso alle funzioni necessarie. La libreria Wire abilita la comunicazione I2C su schede compatibili Arduino, mentre la libreria DFRobot_SpeechSynthesis_V2 contiene tutte le funzioni per controllare il Gravity Text-to-Speech Module via I2C.

#include "Wire.h"
#include "DFRobot_SpeechSynthesis_V2.h"

Includere queste librerie permette allo sketch di inizializzare il modulo, inviare comandi e configurare i parametri vocali.

Oggetti

Il codice crea un oggetto di sintesi vocale chiamato ss, che rappresenta il modulo Text-to-Speech collegato via I2C. Questo oggetto fornisce metodi come begin, setVolume, setSpeed e speak.

DFRobot_SpeechSynthesis_I2C ss;

Istanziare questo oggetto permette allo sketch di interagire con l’hardware tramite un’API semplice e di alto livello.

Setup

La funzione setup viene eseguita una volta all’accensione o al reset della scheda. Configura il modulo vocale e lo prepara per l’output parlato. La sequenza di inizializzazione inizia chiamando begin, che stabilisce la comunicazione e risveglia il modulo.

ss.begin();

Dopo l’inizializzazione, il programma configura diverse proprietà vocali. La funzione setVolume regola il volume della voce sintetizzata, dove valori più bassi producono un output più silenzioso e valori più alti un parlato più forte.

ss.setVolume(1);

Successivamente, la funzione setSpeed modifica la velocità di pronuncia del modulo. Un valore più alto produce un parlato più veloce, mentre un valore più basso lo rallenta.

ss.setSpeed(4);

Il codice imposta poi il tono, che influisce sull’intonazione e sulla frequenza della voce parlata. Regolare il tono permette di modificare quanto la voce suona alta o bassa. Livelli più bassi suonano anche più robotici.

ss.setTone(6);

Infine, il programma configura la modalità di pronuncia inglese. La libreria offre diverse strategie di pronuncia e selezionare ss.eWord indica al modulo di usare regole di pronuncia a livello di parola.

ss.setEnglishPron(ss.eWord);

Dopo aver applicato queste impostazioni, il modulo è completamente configurato e pronto per sintetizzare la voce.

Loop

La funzione loop viene eseguita continuamente e attiva l’output vocale a intervalli regolari. Ogni ciclo, la funzione speak invia una stringa di testo al modulo, che la converte in parlato udibile.

ss.speak("This is a test");

Poiché la riproduzione vocale non deve essere continua, il programma include un ritardo di dieci secondi per mettere in pausa l’esecuzione. Questo assicura che il messaggio venga pronunciato una sola volta per ciclo.

delay(10000);

Il loop si ripeterà indefinitamente, facendo pronunciare al modulo la stessa frase ogni dieci secondi finché la scheda non viene resettata o spenta.

Conclusioni

In questo tutorial hai imparato come collegare il Gravity Text-to-Speech Module a un Arduino UNO. A differenza dei servizi Text-to-Speech basati su cloud come ElevenLabs, esegue tutta la sintesi localmente sul dispositivo, quindi non richiede connessione internet, evita costi API e offre risposte immediate a bassa latenza.

Il modulo supporta sia inglese che cinese, può mescolare le lingue senza problemi e permette di regolare in tempo reale volume, velocità, tono e pronuncia tramite semplici codici di controllo. Le sue interfacce I2C e UART lo rendono facile da integrare con Arduino, ESP32 e microcontrollori simili.

D’altra parte, la qualità del parlato e del suono non è paragonabile a ElevenLabs, per esempio. Inoltre, il numero di voci è limitato e la voce inglese ha un accento cinese evidente. Tuttavia, se ti serve una soluzione offline e non richiedi un parlato naturale, il Gravity Text-to-Speech Module è un’opzione.

Per soluzioni di speech-to-text e riconoscimento vocale dai un’occhiata ai nostri Getting started with Gravity Voice Recognition Module, al Using the Voice Recognition Module V3 with Arduino e ai Voice control with XIAO-ESP32-S3-Sense and Edge Impulse tutorial.

Buon divertimento con il tinkering ; )