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:

Testare Piper

Passaggi per provarlo:

  1. Crea un nuovo file:

    cd ~/pidog/examples
    sudo nano test_tts_piper.py
    
  2. Copia il codice di esempio qui sotto nel file. Premi Ctrl+X, poi Y e infine Enter per 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.

  3. Esegui il programma:

    sudo python3 test_tts_piper.py
    
  4. 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

  1. Vai a OpenAI Platform ed effettua il login. Nella pagina API keys, clicca su Create new secret key.

    ../_images/llm_openai_create.png
  2. Compila i dettagli (Owner, Name, Project e permessi se necessario), poi clicca su Create secret key.

    ../_images/llm_openai_create_confirm.png
  3. Una volta creata la chiave, copiala subito — non sarà più visibile. Se la perdi, dovrai generarne una nuova.

    ../_images/llm_openai_copy.png
  4. Nella cartella del tuo progetto (per esempio: /pidog/examples), crea un file chiamato secret.py:

    cd ~/pidog/examples
    sudo nano secret.py
    
  5. 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

  1. Crea un nuovo file:

    cd ~/pidog/examples
    sudo nano test_tts_openai.py
    
  2. Copia il codice di esempio qui sotto. Premi Ctrl+X, poi Y e infine Enter per 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.")
    
  3. Esegui il programma:

    sudo python3 test_tts_openai.py
    
  4. Dovresti sentire il Pidog dire:

    Hello! I'm OpenAI TTS.


Risoluzione dei problemi

  • No module named “secret”

    Questo significa che secret.py non si trova nella stessa cartella del tuo file Python. Sposta secret.py nella 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/voices
      
    • Controlla 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 sudo se l’ambiente lo richiede:

      sudo python3 test_tts_piper.py
      

Confronto tra motori TTS

Confronto funzionalità: Espeak vs Pico2Wave vs Piper vs OpenAI 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 .onnx + .onnx.json

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