.. 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.