Nota

Hola, ¡bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook! Sumérgete aún más en el mundo de Raspberry Pi, Arduino y ESP32 con otros apasionados.

¿Por qué unirse?

  • Soporte de Expertos: Resuelve problemas post-venta 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 los anuncios de nuevos productos y a vistas previas.

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

  • Promociones y Sorteos Festivos: Participa en sorteos y promociones especiales durante las festividades.

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

15. TTS con Piper y OpenAI

En la lección anterior, probamos dos motores TTS integrados en Raspberry Pi (Espeak y Pico2Wave). Ahora exploraremos dos opciones más potentes: Piper (sin conexión, basado en redes neuronales) y OpenAI TTS (en línea, basado en la nube).

  • Piper: un motor TTS local que funciona sin conexión en Raspberry Pi.

  • OpenAI TTS: un servicio en línea que ofrece voces muy naturales y humanas.

Antes de Comenzar

Asegúrate de haber completado:

Probar Piper

Pasos para probarlo:

  1. Crea un nuevo archivo:

    cd ~/pidog/examples
    sudo nano test_tts_piper.py
    
  2. Copia el siguiente código de ejemplo en el archivo. Presiona Ctrl+X, luego Y y finalmente Enter para guardar y salir.

    from pidog.tts import Piper
    
    tts = Piper()
    
    # Listar idiomas compatibles
    print(tts.available_countrys())
    
    # Listar modelos para inglés (en_us)
    print(tts.available_models('en_us'))
    
    # Establecer un modelo de voz (se descarga automáticamente si no está presente)
    tts.set_model("en_US-amy-low")
    
    # Decir algo
    tts.say("Hello! I'm Piper TTS.")
    
    • available_countrys(): imprime los idiomas compatibles.

    • available_models(): lista los modelos disponibles para ese idioma.

    • set_model(): establece el modelo de voz (se descarga automáticamente si falta).

    • say(): convierte texto en voz y lo reproduce.

  3. Ejecuta el programa:

    sudo python3 test_tts_piper.py
    
  4. La primera vez que lo ejecutes, el modelo de voz seleccionado se descargará automáticamente.

    • Luego deberías escuchar al Pidog decir: Hello! I'm Piper TTS.

    • Puedes cambiar a otro idioma o voz llamando a set_model() con otro nombre.


Probar OpenAI TTS

Obtener y guardar tu Clave API

  1. Ve a OpenAI Platform e inicia sesión. En la página API keys, haz clic en Create new secret key.

    ../_images/llm_openai_create.png
  2. Completa los detalles (propietario, nombre, proyecto y permisos si es necesario), luego haz clic en Create secret key.

    ../_images/llm_openai_create_confirm.png
  3. Una vez creada la clave, cópiala de inmediato — no podrás verla de nuevo. Si la pierdes, deberás generar una nueva.

    ../_images/llm_openai_copy.png
  4. En tu carpeta del proyecto (por ejemplo: /pidog/examples), crea un archivo llamado secret.py:

    cd ~/pidog/examples
    sudo nano secret.py
    
  5. Pega tu clave en el archivo de esta forma:

    # secret.py
    # Guarda las claves aquí. Nunca subas este archivo a Git.
    OPENAI_API_KEY = "sk-xxx"
    

Escribir y ejecutar un programa de prueba

  1. Crea un nuevo archivo:

    cd ~/pidog/examples
    sudo nano test_tts_openai.py
    
  2. Copia el siguiente código de ejemplo en el archivo. Presiona Ctrl+X, luego Y y finalmente Enter para guardar y salir.

    from pidog.tts import OpenAI_TTS
    from secret import OPENAI_API_KEY   # o usa la versión try/except mostrada antes
    
    # Inicializar OpenAI TTS
    tts = OpenAI_TTS(api_key=OPENAI_API_KEY)
    tts.set_model('gpt-4o-mini-tts')  # modelo TTS de baja latencia
    tts.set_voice('alloy')            # selecciona una voz
    
    # Saludo rápido (prueba básica)
    tts.say("Hello! I'm OpenAI TTS.")
    
  3. Ejecuta el programa:

    sudo python3 test_tts_openai.py
    
  4. Deberías escuchar al Pidog decir:

    Hello! I'm OpenAI TTS.


Solución de Problemas

  • No module named “secret”

    Esto significa que secret.py no está en la misma carpeta que tu archivo Python. Mueve secret.py al mismo directorio desde donde ejecutas el script, por ejemplo:

    ls ~/pidog/examples
    # Asegúrate de ver: secret.py y tu archivo .py
    
  • OpenAI: Invalid API key / 401

    • Verifica que hayas pegado toda la clave (comienza con sk-) y que no tenga espacios o saltos de línea extra.

    • Asegúrate de importarla correctamente en tu código:

      from secret import OPENAI_API_KEY
      
    • Confirma que tu Raspberry Pi tenga acceso a internet (prueba con ping api.openai.com).

  • OpenAI: Quota exceeded / billing error

    • Es posible que debas agregar un método de pago o aumentar el límite de uso en tu panel de OpenAI.

    • Intenta nuevamente después de resolver el problema de cuenta/facturación.

  • Piper: tts.say() se ejecuta pero no hay sonido

    • Asegúrate de que el modelo de voz esté realmente presente:

      ls ~/.local/share/piper/voices
      
    • Confirma que el nombre del modelo coincida exactamente en tu código:

      tts.set_model("en_US-amy-low")
      
    • Verifica la salida de audio y volumen en tu Raspberry Pi (alsamixer) y que los altavoces estén conectados y con energía.

  • Errores ALSA / de dispositivo de sonido (por ejemplo, “Audio device busy” o “No such file or directory”)

    • Cierra otros programas que estén usando audio.

    • Reinicia la Raspberry Pi si el dispositivo sigue ocupado.

    • Si estás usando HDMI o la salida de auriculares, selecciona el dispositivo correcto en la configuración de audio de Raspberry Pi OS.

  • Permission denied al ejecutar Python

    • Si tu entorno lo requiere, intenta con sudo:

      sudo python3 test_tts_piper.py
      

Comparación de Motores TTS

Comparación de funciones: Espeak vs Pico2Wave vs Piper vs OpenAI TTS

Elemento

Espeak

Pico2Wave

Piper

OpenAI TTS

Se ejecuta en

Integrado en Raspberry Pi (sin conexión)

Integrado en Raspberry Pi (sin conexión)

Raspberry Pi / PC (sin conexión, necesita modelo)

Nube (en línea, necesita clave API)

Calidad de voz

Robótica

Más natural que Espeak

Natural (TTS neuronal)

Muy natural / similar a humana

Controles

Velocidad, tono, volumen

Controles limitados

Elegir diferentes voces/modelos

Elegir modelo y voces

Idiomas

Muchos (la calidad varía)

Conjunto limitado

Muchos idiomas y voces disponibles

Mejor en inglés (otros dependen de disponibilidad)

Latencia / velocidad

Muy rápida

Rápida

Tiempo real en Pi 4/5 con modelos “low”

Depende de la red (generalmente baja latencia)

Configuración

Mínima

Mínima

Descargar modelos .onnx + .onnx.json

Crear clave API, instalar cliente

Mejor para

Pruebas rápidas, mensajes básicos

Voz offline ligeramente mejor

Proyectos locales con mejor calidad

Máxima calidad y opciones de voz