.. note:: 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 [|link_sf_facebook|] y únete hoy mismo. .. _py_tts: 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** .. raw:: html .. code-block:: 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** .. note:: 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. .. raw:: html .. code-block:: python #!/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?** #. Dos motores TTS disponibles .. code-block:: python 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. #. Eligiendo el motor y el modelo .. code-block:: python 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 |link_piper_voice|) #. Creando la instancia TTS .. code-block:: python 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. #. El bucle de entrada .. code-block:: python 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. #. Contraste con STT Esta lección es el complemento de :ref:`py_stt`. 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.