Repka-Pi 4 incorpora síntesis de voz local con Piper y FastAPI, sin GPU y con arranque automático
Para Repka-Pi 4 se montó un sintetizador de voz local basado en Piper y FastAPI. El sistema funciona sin GPU, acepta solicitudes HTTP de clientes externos…
Procesado por IA desde Habr AI; editado por Hamidun News
Repka-Pi 4 demostró un escenario funcional para síntesis de voz local utilizando el motor de red neuronal Piper. Incluso en una placa única con 2 GB de RAM y sin GPU, la placa puede sintetizar texto vía HTTP, iniciarse automáticamente cuando arranca el sistema y servir dispositivos externos.
Por qué esto es interesante
La historia aquí no es sobre otra API en la nube, sino sobre trasladar TTS directamente a un ordenador local compacto. El autor demuestra que un ordenador de placa única moderno ya puede manejar no solo scripts simples, sino también síntesis de voz en ruso de calidad aceptable. Para escenarios donde la privacidad, la autonomía y el funcionamiento sin internet son importantes, esto es crítico: dispositivos de hogar inteligente, quioscos de voz, juguetes, asistentes locales y plataformas educativas pueden hablar por sí mismos, sin enviar texto a servicios externos.
Es particularmente importante contrastar dos enfoques. eSpeak NG ligero requiere casi ningún recurso e inicia inmediatamente, pero suena demasiado mecánico. Piper, por el contrario, utiliza un modelo de red neuronal en formato ONNX y proporciona una voz mucho más natural incluso sin un acelerador gráfico. Esto hace que Repka-Pi 4 no sea solo una placa para experimentos, sino una base para interfaces reales donde la síntesis debe ser inteligible y tolerable al oído, no solo formalmente funcional.
De qué se compone la solución
El esquema práctico se ensambla a partir de componentes abiertos que se pueden desplegar localmente. Como opción básica, el autor utiliza eSpeak NG, y para sonido de mayor calidad — Piper TTS. Piper se instala a través de un entorno Python, después del cual se carga un modelo de voz en ruso en la placa. Después de eso, la síntesis se puede iniciar desde la línea de comandos o directamente desde Python, pasando texto a una corriente e enviando inmediatamente el audio para reproducción.
"Esta es la voz de un robot de los años 80" — así describe el artículo el resultado de eSpeak NG en comparación con
Piper.
- eSpeak NG — la opción más ligera para placas con restricciones estrictas de recursos.
- Piper TTS — síntesis de red neuronal basada en VITS y ONNX con voz notablemente más natural.
- Servidor FastAPI — interfaz HTTP para clientes externos que envían texto para síntesis.
- Cola e hilo separado — un mecanismo que evita bloquear al cliente hasta que se complete la síntesis.
- Servicio systemd — inicio automático de TTS después de encender la placa.
El artículo analiza por separado dos modos de operación de Piper: a través de grabación de archivo WAV y a través de salida de flujo sin archivo intermedio. La segunda opción es particularmente útil para escenarios embebidos porque elimina operaciones innecesarias de disco y acelera el camino del texto al sonido. El autor también muestra cómo usar aplay y sounddevice, y señala que las advertencias sobre insuficiencia de búfer de audio o la falta de GPU en Repka-Pi 4 no impiden obtener un resultado adecuado para uso práctico.
Cómo funciona el servidor
La parte clave del proyecto es un servidor de síntesis de voz basado en FastAPI. Se ejecuta en la propia Repka-Pi 4, escucha solicitudes HTTP y recibe texto a través de la ruta POST /say. Después de eso, el servidor no hace que el cliente espere hasta que toda la frase sea sintetizada. En su lugar, la tarea se coloca en una cola, y un hilo de fondo separado se encarga de llamar a Piper, ensamblar la corriente PCM y enviar el audio a través de sounddevice. Para sistemas de automatización, esto es más conveniente que una llamada síncrona, que congelaría toda la lógica del dispositivo.
También hay una ruta de servicio GET /status: a través de ella puede verificar si el servidor está libre, si la reproducción está sucediendo en este momento y cuántas tareas ya están en la cola. El modelo se carga una sola vez cuando se inicia la aplicación, por lo que no necesita inicializarse en cada solicitud. Para operación continua, se proporciona un archivo de unidad systemd: inicia el servicio después del arranque del sistema, habilita el reinicio en caso de fallos y permite ver registros a través de journalctl. Según la descripción del autor, el retraso antes de que comience la síntesis es de uno a varios segundos y depende de la longitud del texto.
Qué significa esto
El valor práctico de este caso de uso es que una interfaz de voz local ya no requiere hardware costoso o conectividad constante en la nube. Repka-Pi 4 ya puede usarse en automatizaciones del hogar, terminales, robots y proyectos educativos, y con la aparición de placas más potentes, cabe esperar TTS offline más rápido, una combinación de síntesis con reconocimiento de voz y asistentes en ruso completamente funcionales que trabajen enteramente en el dispositivo. Para el mercado DIY en ruso, este es un raro ejemplo de cómo un stack listo puede transferirse rápidamente de un artículo a un prototipo funcional.
¿Quieres dejar de leer sobre IA y empezar a usarla?
AI News es un feed curado de noticias de IA. Hamidun Academy te enseña a usar la IA en tu trabajo.