Nota

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 [qui] e unisciti subito!

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

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

Nota

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.

#!/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?

  1. Due motori TTS disponibili

    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.

  2. Scelta del motore e del modello

    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

  3. Creazione dell’istanza TTS

    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.

  4. Il ciclo di input

    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.

  5. Contrasto con STT

    Questa lezione è il complemento di 15. STT (Speech-to-Text). Insieme, STT (riconoscimento vocale) e TTS (sintesi vocale) formano le due metà di input e output di un’interfaccia vocale per PiCrawler.