Nota
Benvenuto nella community Facebook SunFounder Raspberry Pi, Arduino ed ESP32!
Ottieni supporto tecnico e aiuto nella risoluzione dei problemi.
Impara e condividi progetti, suggerimenti e tutorial.
Accedi in anteprima a nuovi prodotti e aggiornamenti.
Goditi sconti esclusivi e omaggi.
👉 Unisciti a noi qui: [here]
1. TTS con Espeak e Pico2Wave
In questa lezione, useremo due motori di sintesi vocale (TTS) integrati su Raspberry Pi — Espeak e Pico2Wave — per far parlare il Pironman 5 Pro MAX.
Questi due motori sono entrambi semplici e funzionano offline, ma hanno un suono molto diverso:
Espeak: molto leggero e veloce, ma la voce è robotica. Puoi regolare velocità, tono e volume.
Pico2Wave: produce una voce più fluida e naturale rispetto a Espeak, ma ha meno opzioni configurabili.
Sentirai la differenza nella qualità della voce e nelle funzionalità.
1. Testare Espeak
Espeak è un motore TTS leggero incluso in Raspberry Pi OS. La sua voce suona robotica, ma è altamente configurabile: puoi regolare volume, tono, velocità e altro.
Eseguire il programma
cd ~/sunfounder-voice-assistant/examples sudo python3 tts_espeak.py
Dovresti sentire il Pironman 5 Pro MAX dire: «Hello! I’m Espeak TTS.»
Prova a modificare i parametri di tuning nel codice per sperimentare come
amp,speed,gapepitchinfluenzano il suono.
Codice
from sunfounder_voice_assistant.tts import Espeak
# Crea un'istanza TTS Espeak
tts = Espeak()
# Imposta l'ampiezza 0-200, default 100
tts.set_amp(200)
# Imposta la velocità 80-260, default 150
tts.set_speed(150)
# Imposta il gap 0-200, default 1
tts.set_gap(1)
# Imposta il tono 0-99, default 80
tts.set_pitch(80)
tts.say("Hello! I'm Espeak TTS.")
Spiegazione del codice:
tts.set_amp()— Controlla il volume (0–200).tts.set_speed()— Regola la velocità di pronuncia (80–260).tts.set_gap()— Imposta il gap tra le parole (0–200).tts.set_pitch()— Imposta il tono (0–99).tts.say()— Converte il testo in parlato e lo riproduce.
💡 Suggerimento: Prova ad aumentare il tono e la velocità per rendere il robot allegro, o diminuirli per renderlo serioso.
2. Testare Pico2Wave
Pico2Wave produce una voce più naturale e simile a quella umana rispetto a Espeak. È molto facile da usare, ma meno flessibile — puoi solo cambiare la lingua, non il tono, la velocità o il volume. Questo rende Pico2Wave un’ottima scelta quando desideri un parlato chiaro e fluido senza troppa configurazione.
Eseguire il programma
cd ~/sunfounder-voice-assistant/examples sudo python3 tts_pico2wave.py
Dovresti sentire il Pironman 5 Pro MAX dire: «Hello! I’m Pico2Wave TTS.»
Prova a cambiare la lingua (ad esempio,
es-ESper lo spagnolo) e ascolta come cambia la voce.
Codice
from sunfounder_voice_assistant.tts import Pico2Wave
# Crea un'istanza TTS Pico2Wave
tts = Pico2Wave()
# Imposta la lingua
tts.set_lang('en-US') # en-US, en-GB, de-DE, es-ES, fr-FR, it-IT
# Saluto rapido (verifica di base)
tts.say("Hello! I'm Pico2Wave TTS.")
Spiegazione del codice:
tts.set_lang()— Imposta la lingua di output per la sintesi vocale.en-US(predefinito)en-GBde-DEes-ESfr-FRit-IT
tts.say()— Converte il testo in parlato e lo riproduce immediatamente.
Risoluzione dei Problemi
Nessun suono durante l’esecuzione di Espeak o Pico2Wave
Controlla che i tuoi altoparlanti/cuffie siano collegati e che il volume non sia disattivato.
Esegui un rapido test nel terminale:
espeak "Hello world" pico2wave -w test.wav "Hello world" && aplay test.wav
Se non senti nulla, il problema è nell’uscita audio, non nel tuo codice Python.
La voce di Espeak suona troppo veloce o troppo robotica
Prova a regolare i parametri nel tuo codice:
tts.set_speed(120) # più lento tts.set_pitch(60) # tono diverso
Permesso negato durante l’esecuzione del codice
Prova a eseguire con
sudo:sudo python3 test_tts_espeak.py
Confronto: Espeak vs Pico2Wave
Caratteristica |
Espeak |
Pico2Wave |
|---|---|---|
Qualità della voce |
Robotica, sintetica |
Più naturale, simile a quella umana |
Lingue |
Inglese predefinito |
Meno, ma quelle comuni |
Regolabile |
Sì (velocità, tono, ecc.) |
No (solo lingua) |
Prestazioni |
Molto veloce, leggero |
Leggermente più lento, più pesante |