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