Nota
Ciao! Benvenuto nella Community di appassionati di Raspberry Pi, Arduino e ESP32 di SunFounder su Facebook! Approfondisci il mondo di Raspberry Pi, Arduino ed ESP32 insieme ad altri entusiasti.
Perché unirti?
Supporto Esperto: Risolvi problemi post-vendita e supera le sfide tecniche con l’aiuto del nostro team e della comunità.
Impara e Condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.
Anteprime Esclusive: Accedi in anticipo agli annunci dei nuovi prodotti e scopri in anteprima le novità.
Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni e Concorsi Festivi: Partecipa a concorsi e promozioni speciali durante le festività.
👉 Sei pronto a esplorare e creare con noi? Clicca su [here] e unisciti oggi stesso!
15. TTS con Piper e OpenAI
Nella lezione precedente abbiamo provato due motori TTS integrati in Raspberry Pi (Espeak e Pico2Wave). Ora esploriamo due opzioni molto più potenti: Piper (offline, basato su reti neurali) e OpenAI TTS (online, basato su cloud).
Piper: un motore TTS locale che funziona offline su Raspberry Pi.
OpenAI TTS: un servizio online che fornisce voci molto naturali e simili a quelle umane.
Prima di iniziare
Assicurati di aver completato:
Installare tutti i moduli (Importante) — Installa i moduli
robot-hat,vilib,pidoge poi esegui lo scripti2samp.sh.
Testare Piper
Passaggi per provarlo:
Crea un nuovo file:
cd ~/pidog/examples sudo nano test_tts_piper.py
Copia il codice di esempio qui sotto nel file. Premi
Ctrl+X, poiYe infineEnterper salvare ed uscire.from pidog.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 presente) tts.set_model("en_US-amy-low") # Pronuncia un messaggio tts.say("Hello! I'm Piper TTS.")
available_countrys(): mostra le lingue supportate.available_models(): elenca i modelli disponibili per una lingua.set_model(): imposta il modello vocale (lo scarica automaticamente se mancante).say(): converte il testo in voce e lo riproduce.
Esegui il programma:
sudo python3 test_tts_piper.py
La prima volta che lo esegui, il modello vocale selezionato verrà scaricato automaticamente.
Dovresti sentire il Pidog dire:
Hello! I'm Piper TTS.Puoi cambiare modello linguistico chiamando
set_model()con un nome diverso.
Testare OpenAI TTS
Ottieni e salva la tua Chiave API
Vai a OpenAI Platform ed effettua il login. Nella pagina API keys, clicca su Create new secret key.
Compila i dettagli (Owner, Name, Project e permessi se necessario), poi clicca su Create secret key.
Una volta creata la chiave, copiala subito — non sarà più visibile. Se la perdi, dovrai generarne una nuova.
Nella cartella del tuo progetto (per esempio:
/pidog/examples), crea un file chiamatosecret.py:cd ~/pidog/examples sudo nano secret.py
Incolla la chiave nel file:
# secret.py # Conserva qui le chiavi segrete. Non aggiungere mai questo file a Git. OPENAI_API_KEY = "sk-xxx"
Scrivi ed esegui un programma di test
Crea un nuovo file:
cd ~/pidog/examples sudo nano test_tts_openai.py
Copia il codice di esempio qui sotto. Premi
Ctrl+X, poiYe infineEnterper salvare ed uscire.from pidog.tts import OpenAI_TTS from secret import OPENAI_API_KEY # oppure usa la versione try/except mostrata sopra # Inizializza OpenAI TTS tts = OpenAI_TTS(api_key=OPENAI_API_KEY) tts.set_model('gpt-4o-mini-tts') # modello TTS a bassa latenza tts.set_voice('alloy') # scegli una voce # Saluto veloce (verifica funzionamento) tts.say("Hello! I'm OpenAI TTS.")
Esegui il programma:
sudo python3 test_tts_openai.py
Dovresti sentire il Pidog dire:
Hello! I'm OpenAI TTS.
Risoluzione dei problemi
No module named “secret”
Questo 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 ~/pidog/examples # Assicurati di vedere sia: secret.py che il tuo file .py
OpenAI: Invalid API key / 401
Controlla di aver incollato la chiave completa (inizia con
sk-) e che non ci siano spazi o ritorni a capo extra.Assicurati che il codice la importi correttamente:
from secret import OPENAI_API_KEY
Conferma che la tua Raspberry Pi abbia accesso a Internet (prova con
ping api.openai.com).
OpenAI: Quota exceeded / billing error
Potresti dover aggiungere un metodo di pagamento o aumentare la quota nel pannello OpenAI.
Riprova dopo aver risolto il problema di account/fatturazione.
Piper: tts.say() viene eseguito ma non si sente nulla
Assicurati che un modello vocale sia effettivamente presente:
ls ~/.local/share/piper/voicesControlla che il nome del modello nel codice sia scritto correttamente:
tts.set_model("en_US-amy-low")
Verifica il dispositivo di uscita audio/volume sulla tua Raspberry Pi (
alsamixer) e che gli altoparlanti siano collegati e accesi.
Errori ALSA / dispositivi audio (es. “Audio device busy” o “No such file or directory”)
Chiudi altri programmi che stanno usando l’audio.
Riavvia la Raspberry Pi se il dispositivo rimane occupato.
Seleziona il dispositivo corretto nelle impostazioni audio di Raspberry Pi OS (HDMI o jack cuffie).
Permission denied durante l’esecuzione di Python
Prova ad eseguire con
sudose l’ambiente lo richiede:sudo python3 test_tts_piper.py
Confronto tra motori TTS
Voce |
Espeak |
Pico2Wave |
Piper |
OpenAI TTS |
|---|---|---|---|---|
Dove gira |
Integrato su Raspberry Pi (offline) |
Integrato su Raspberry Pi (offline) |
Raspberry Pi / PC (offline, richiede modello) |
Cloud (online, richiede API key) |
Qualità vocale |
Robotica |
Più naturale di Espeak |
Naturale (neural TTS) |
Molto naturale / simile a voce umana |
Controlli |
Velocità, tono, volume |
Controlli limitati |
Scelta tra diverse voci/modelli |
Scelta di modelli e voci |
Lingue |
Molte (qualità variabile) |
Set limitato |
Molte lingue e voci disponibili |
Migliore in inglese (altre lingue variano) |
Latenza / velocità |
Molto veloce |
Veloce |
Tempo reale su Pi 4/5 con modelli “low” |
Dipende dalla rete (solitamente bassa) |
Configurazione |
Minima |
Minima |
Download dei modelli |
Creazione API key, installazione client |
Migliore per |
Test rapidi, prompt semplici |
Voce offline leggermente migliore |
Progetti locali con buona qualità |
Massima qualità, opzioni vocali avanzate |