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]
2. TTS con Piper e OpenAI
Nella lezione precedente, abbiamo esplorato Espeak e Pico2Wave, due semplici motori TTS offline su Raspberry Pi. Ora facciamo un grande passo avanti e proviamo due opzioni TTS più avanzate che offrono maggiore qualità vocale e più flessibilità:
Piper — un motore TTS veloce basato su reti neurali che funziona completamente offline su Raspberry Pi.
OpenAI TTS — un servizio online che fornisce voci molto naturali e simili a quelle umane, perfetto per un parlato espressivo.
Questi motori faranno sì che il tuo Pironman 5 Pro MAX suoni più realistico e vivo. 🚀
1. Testare Piper
Piper è un motore TTS neurale offline, il che significa che non hai bisogno di una connessione Internet una volta installato il modello. Supporta molteplici lingue e voci, rendendolo un’opzione potente per la sintesi vocale su sistemi embedded.
Eseguire il programma
cd ~/sunfounder-voice-assistant/examples sudo python3 tts_piper.py
La prima volta che lo esegui, il modello vocale selezionato verrà scaricato automaticamente.
Dovresti quindi sentire il Pironman 5 Pro MAX dire:
Hello! I'm Piper TTS.Puoi cambiare voce o lingua chiamando
set_model()con un nome di modello diverso.
Codice
from sunfounder_voice_assistant.tts import Piper
tts = Piper()
# Elenca le lingue supportate
print(tts.available_countrys())
# Elenca i modelli per l'inglese (en_us)
print(tts.available_models('en_us'))
# Imposta un modello vocale (download automatico se non già presente)
tts.set_model("en_US-amy-low")
# Pronuncia qualcosa
tts.say("Hello! I'm Piper TTS.")
Spiegazione del codice:
available_countrys()— Elenca tutte le lingue supportate.available_models()— Elenca i modelli disponibili per una lingua specifica.set_model()— Imposta il modello vocale. Se il modello non è installato, verrà scaricato automaticamente.say()— Converte il testo in parlato e lo riproduce immediatamente.
💡 Suggerimento: Prova diversi modelli per confrontare velocità, chiarezza e accenti. Alcuni modelli sono più leggeri (più veloci), mentre altri hanno una fedeltà maggiore.
2. Testare OpenAI TTS
Ottieni e salva la tua chiave API
Vai su OpenAI Platform e accedi. Nella pagina API keys, clicca su Create new secret key.
Compila i dettagli (Owner, Name, Project, e permessi se necessari), poi clicca su Create secret key.
Una volta creata la chiave, copiala immediatamente — non potrai più vederla. Se la perdi, devi generarne una nuova.
Nella tua cartella di progetto (ad esempio:
/), crea un file chiamatosecret.py:cd ~/sunfounder-voice-assistant/examples sudo nano secret.py
Incolla la tua chiave nel file in questo modo:
# secret.py # Store secrets here. Never commit this file to Git. OPENAI_API_KEY = "sk-xxx"
Eseguire il programma
cd ~/sunfounder-voice-assistant/examples
sudo python3 tts_openai.py
Il programma si connetterà al servizio TTS di OpenAI, e il Pironman 5 Pro MAX parlerà utilizzando un”uscita vocale naturale ed espressiva.
Puoi cambiare stile di voce e aggiungere istruzioni per controllare il tono e l’espressione (es., triste, drammatico, giocoso).
Questo rende OpenAI TTS ideale per robot interattivi, narrazione o assistenti educativi.
Codice
from sunfounder_voice_assistant.tts import OpenAI_TTS
from secret import OPENAI_API_KEY
# Esporta la tua OPENAI_API_KEY prima di eseguire lo script
# export OPENAI_API_KEY="sk-proj-xxxxxx"
tts = OpenAI_TTS(api_key=OPENAI_API_KEY)
# tts.set_model('tts-1')
tts.set_voice('alloy')
tts.set_model('gpt-4o-mini-tts')
msg = "Hello! I'm OpenAI TTS."
print(f"Say: {msg}")
tts.say(msg)
msg = "with instructions, I can say word sadly"
instructions = "say it sadly"
print(f"Say: {msg}, with instructions: '{instructions}'")
tts.say(msg, instructions=instructions)
msg = "or say something dramaticly."
instructions = "say it dramaticly"
print(f"Say: {msg}, with instructions: '{instructions}'")
tts.say(msg, instructions=instructions)
Spiegazione del codice:
OpenAI_TTS()— Inizializza il motore TTS di OpenAI utilizzando la tua chiave API.set_model()— Seleziona il modello TTS (es.,gpt-4o-mini-tts).set_voice()— Sceglie una voce specifica (es.,alloy).say(text)— Converte il testo in parlato e lo riproduce.say(text, instructions=...)— Aggiunge istruzioni di tono espressive, permettendoti di controllare dinamicamente lo stile del parlato.
Esempio:
“say it sadly” → tono morbido ed emotivo
“say it dramatically” → pronuncia audace ed espressiva
“say it excitedly” → tono entusiasta
Risoluzione dei Problemi
Nessun modulo chiamato “secret”
Ciò significa che
secret.pynon si trova nella stessa cartella del tuo file Python. Spostasecret.pynella stessa directory in cui esegui lo script, ad esempio:ls ~/ # Assicurati di vedere entrambi: secret.py e il tuo file .py
OpenAI: Chiave API non valida / 401
Controlla di aver incollato la chiave completa (inizia con
sk-) e che non ci siano spazi o nuove righe extra.Assicurati che il tuo codice la importi correttamente:
from secret import OPENAI_API_KEY
Conferma l’accesso alla rete sul tuo Pi (prova
ping api.openai.com).
OpenAI: Quota superata / errore di fatturazione
Potrebbe essere necessario aggiungere un metodo di pagamento o aumentare la quota nel dashboard OpenAI.
Riprova dopo aver risolto il problema dell’account/fatturazione.
Piper: tts.say() viene eseguito ma nessun suono
Assicurati che un modello vocale sia effettivamente presente:
ls ~/.local/share/piper/voicesConferma che il nome del modello corrisponda esattamente nel codice:
tts.set_model("en_US-amy-low")
Controlla il dispositivo di uscita audio/volume sul tuo Pi (
alsamixer), e che gli altoparlanti siano collegati e accesi.
Errori ALSA / dispositivo audio (es., «Audio device busy» o «No such file or directory»)
Chiudi altri programmi che utilizzano l’audio.
Riavvia il Pi se il dispositivo rimane occupato.
Per l’uscita HDMI vs. jack per cuffie, seleziona il dispositivo corretto nelle impostazioni audio di Raspberry Pi OS.
Permesso negato durante l’esecuzione di Python
Prova con
sudose il tuo ambiente lo richiede:sudo python3 tts_piper.py
Confronto dei Motori TTS
Caratteristica |
Espeak |
Pico2Wave |
Piper |
OpenAI TTS |
|---|---|---|---|---|
Esecuzione su |
Integrato su Raspberry Pi (offline) |
Integrato su Raspberry Pi (offline) |
Raspberry Pi / PC (offline, necessita modello) |
Cloud (online, necessita chiave API) |
Qualità della voce |
Robotica |
Più naturale di Espeak |
Naturale (TTS neurale) |
Molto naturale / simile a quella umana |
Controlli |
Velocità, tono, volume |
Controlli limitati |
Scegli diverse voci/modelli |
Scegli modello e voci |
Lingue |
Molte (qualità variabile) |
Insieme limitato |
Molte voci/lingue disponibili |
Migliore in inglese (le altre variano per disponibilità) |
Latenza / velocità |
Molto veloce |
Veloce |
Tempo reale su Pi 4/5 con modelli «leggeri» |
Dipendente dalla rete (di solito bassa latenza) |
Configurazione |
Minima |
Minima |
Scarica modelli |
Crea chiave API, installa client |
Ideale per |
Test rapidi, prompt semplici |
Voce offline leggermente migliore |
Progetti locali con qualità superiore |
Qualità massima, ricche opzioni vocali |