.. note:: Ciao, benvenuto nella Community SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Esplora a fondo Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati. **Perché unirti a noi?** - **Supporto esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra community e del nostro team. - **Impara e condividi**: Scambia suggerimenti e tutorial per migliorare le tue competenze. - **Anteprime esclusive**: Accedi in anteprima agli annunci di nuovi prodotti. - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni festive e giveaway**: Partecipa a concorsi e promozioni speciali. 👉 Sei pronto a esplorare e creare con noi? Clicca [|link_sf_facebook|] e unisciti subito! .. _py_tts: 16. TTS (Text-to-Speech) ============================================== Questo esempio mostra come utilizzare il modulo TTS (Text-to-Speech) per far parlare PiCrawler. Supporta due motori: **Piper** (TTS neurale di alta qualità) e **Espeak** (TTS classico leggero). Digita un testo qualsiasi e il robot lo leggerà ad alta voce. **Esegui il codice** .. raw:: html .. code-block:: cd ~/picrawler/examples sudo python3 16_tts.py Dopo aver eseguito il programma, vengono visualizzati il tipo di motore e il modello. Digita una frase qualsiasi e premi **Invio** — il robot la pronuncia. Digita ``quit`` per uscire, o premi **Ctrl+C**. **Codice** .. note:: Puoi **Modificare/Reimpostare/Copiare/Eseguire/Fermare** il codice qui sotto. Ma prima, devi andare nel percorso del codice sorgente come ``picrawler\examples``. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l'effetto. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from robot_hat.tts import Piper, Espeak # Demo Text-to-Speech con il modulo TTS di robot_hat # Ctrl+C per uscire # Imposta USE_PIPER=True per TTS neurale di alta qualità (Piper), False per Espeak USE_PIPER = True # Modello Piper: "en_US-ryan-low" (inglese), "zh_CN-huayan-x_low" (cinese) # Per l'italiano: vedi |link_piper_voice| TTS_MODEL = "en_US-ryan-low" def main(): print("=== Demo PiCrawler Text-to-Speech ===") if USE_PIPER: print(f"Motore: Piper ({TTS_MODEL})") tts = Piper(model=TTS_MODEL) else: print("Motore: Espeak") tts = Espeak() print("Digita il testo da pronunciare, o 'quit' per uscire") print() try: while True: text = input("Testo da pronunciare: ").strip() if text.lower() == 'quit': break if text: print(f"Pronunciando: {text}") tts.say(text) except KeyboardInterrupt: print("\nUscita...") if __name__ == "__main__": main() **Come funziona?** #. Due motori TTS disponibili .. code-block:: python from robot_hat.tts import Piper, Espeak Il pacchetto ``robot_hat`` fornisce due motori TTS: - **Piper**: Un motore basato su rete neurale che produce una voce naturale di alta qualità. Richiede un file di modello vocale. - **Espeak**: Un motore leggero basato su regole che funziona con risorse minime. #. Scelta del motore e del modello .. code-block:: python USE_PIPER = True TTS_MODEL = "en_US-ryan-low" Imposta ``USE_PIPER`` su ``True`` per Piper o ``False`` per Espeak. Quando usi Piper, ``TTS_MODEL`` seleziona la voce. Modelli comuni: - ``"en_US-ryan-low"`` — Voce maschile inglese americano - ``"zh_CN-huayan-x_low"`` — Voce femminile cinese #. Creazione dell'istanza TTS .. code-block:: python if USE_PIPER: tts = Piper(model=TTS_MODEL) else: tts = Espeak() In base al flag ``USE_PIPER``, viene istanziato il motore appropriato. Entrambi i motori condividono la stessa interfaccia ``say()``, quindi cambiare motore non richiede altre modifiche al codice. #. Il ciclo di input .. code-block:: python while True: text = input("Testo da pronunciare: ").strip() if text.lower() == 'quit': break if text: print(f"Pronunciando: {text}") tts.say(text) Il programma ti chiede di inserire del testo: - Digita una frase qualsiasi e premi **Invio** per far parlare il robot. - Digita ``quit`` per uscire dal ciclo. - Premi **Ctrl+C** in qualsiasi momento per interrompere. #. Contrasto con STT Questa lezione è il complemento di :ref:`py_stt`. Insieme, STT (riconoscimento vocale) e TTS (sintesi vocale) formano le due metà di input e output di un'interfaccia vocale per PiCrawler.