Nota

Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook. ¡Explora más a fondo Raspberry Pi, Arduino y ESP32 con otros entusiastas!

¿Por qué unirse?

  • Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Avances exclusivos: Obtén acceso anticipado a anuncios de nuevos productos y vistas previas.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones festivas y sorteos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [aquí] y únete hoy mismo.

16. TTS (Text-to-Speech)

Este ejemplo demuestra cómo usar el módulo TTS (Text-to-Speech) para hacer hablar a PiCrawler. Soporta dos motores: Piper (TTS neuronal de alta calidad) y Espeak (TTS clásico ligero). Escriba cualquier texto y el robot lo leerá en voz alta.

Ejecutar el código

cd ~/picrawler/examples
sudo python3 16_tts.py

Después de ejecutar el programa, se muestran el tipo de motor y el modelo. Escriba cualquier frase y presione Enter — el robot la pronuncia. Escriba quit para salir, o presione Ctrl+C.

Código

Nota

Puede Modificar/Restablecer/Copiar/Ejecutar/Detener el código siguiente. Pero antes, debe ir a la ruta del código fuente como picrawler\examples. Después de modificar el código, puede ejecutarlo directamente para ver el efecto.

#!/usr/bin/env python3
from robot_hat.tts import Piper, Espeak

# Demo Text-to-Speech usando el módulo TTS de robot_hat
# Ctrl+C para salir

# Establecer USE_PIPER=True para TTS neuronal de alta calidad (Piper), False para Espeak
USE_PIPER = True

# Modelo Piper: "en_US-ryan-low" (inglés), "zh_CN-huayan-x_low" (chino)
# Para español: "es_ES-carlfm-x_low" ver |link_piper_voice|
TTS_MODEL = "en_US-ryan-low"

def main():
    print("=== Demo PiCrawler Text-to-Speech ===")

    if USE_PIPER:
        print(f"Motor: Piper ({TTS_MODEL})")
        tts = Piper(model=TTS_MODEL)
    else:
        print("Motor: Espeak")
        tts = Espeak()

    print("Escriba el texto a pronunciar, o 'quit' para salir")
    print()

    try:
        while True:
            text = input("Texto a pronunciar: ").strip()
            if text.lower() == 'quit':
                break
            if text:
                print(f"Pronunciando: {text}")
                tts.say(text)
    except KeyboardInterrupt:
        print("\nSaliendo...")

if __name__ == "__main__":
    main()

¿Cómo funciona?

  1. Dos motores TTS disponibles

    from robot_hat.tts import Piper, Espeak
    

    El paquete robot_hat proporciona dos motores TTS:

    • Piper: Un motor basado en red neuronal que produce voz natural de alta calidad. Requiere un archivo de modelo de voz.

    • Espeak: Un motor ligero basado en reglas que funciona con recursos mínimos.

  2. Eligiendo el motor y el modelo

    USE_PIPER = True
    TTS_MODEL = "en_US-ryan-low"
    

    Establezca USE_PIPER en True para Piper o False para Espeak. Al usar Piper, TTS_MODEL selecciona la voz. Modelos comunes:

    • "en_US-ryan-low" — Voz masculina inglés americano

    • "zh_CN-huayan-x_low" — Voz femenina china

    • "es_ES-carlfm-x_low" — Voz española (ver Voces Piper)

  3. Creando la instancia TTS

    if USE_PIPER:
        tts = Piper(model=TTS_MODEL)
    else:
        tts = Espeak()
    

    Según la bandera USE_PIPER, se instancia el motor apropiado. Ambos motores comparten la misma interfaz say(), por lo que cambiar de motor no requiere otros cambios de código.

  4. El bucle de entrada

    while True:
        text = input("Texto a pronunciar: ").strip()
        if text.lower() == 'quit':
            break
        if text:
            print(f"Pronunciando: {text}")
            tts.say(text)
    

    El programa le solicita texto:

    • Escriba cualquier frase y presione Enter para que el robot hable.

    • Escriba quit para salir del bucle.

    • Presione Ctrl+C en cualquier momento para interrumpir.

  5. Contraste con STT

    Esta lección es el complemento de 15. STT (Speech-to-Text). Juntos, STT (reconocimiento de voz) y TTS (síntesis de voz) forman las mitades de entrada y salida de una interfaz de voz para PiCrawler.