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?
Dos motores TTS disponibles
from robot_hat.tts import Piper, Espeak
El paquete
robot_hatproporciona 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
USE_PIPER = True TTS_MODEL = "en_US-ryan-low"
Establezca
USE_PIPERenTruepara Piper oFalsepara Espeak. Al usar Piper,TTS_MODELselecciona 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)
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 interfazsay(), por lo que cambiar de motor no requiere otros cambios de código.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
quitpara salir del bucle.Presione Ctrl+C en cualquier momento para interrumpir.
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.