DEV Community

Cover image for Fugleramme: 800 ilustraciones de aves en un marco e-ink con IA local
lu1tr0n
lu1tr0n

Posted on Originally published at elsolitario.org

Fugleramme: 800 ilustraciones de aves en un marco e-ink con IA local

Un Raspberry Pi 5 escucha el canto de los pájaros en un jardín de Bergen, Noruega, y en segundos dibuja al ave real sobre una lámina de historia natural de hace 200 años. Ese es fugleramme, un proyecto de código abierto que ya suma 1.500 estrellas en GitHub.

El marco corre por completo en local: sin nube, sin suscripción, sin arte generado por inteligencia artificial. Cada especie identificada se empareja con una de las más de 800 ilustraciones recortadas a mano de láminas reales del siglo XIX, y el resultado se redibuja en un panel e-ink o en un kiosco web.

TL;DR

  • Fugleramme corre en un Raspberry Pi 5 y muestra aves detectadas por audio en un panel e-ink Inky Impression de 13.3 pulgadas.
  • Usa BirdNET-Go para clasificar el canto de las aves: la IA corre 100% local, sin nube ni servidores externos.
  • El catálogo de arte tiene más de 800 recortes que cubren más de 400 especies de aves.
  • Todas las ilustraciones vienen de láminas reales del siglo XIX; ninguna fue generada por IA.
  • El repositorio en GitHub suma 1.500 estrellas y 35 forks tras 279 commits.
  • Funciona sin el panel e-ink: hay un modo kiosco web en el puerto 8080 para cualquier pantalla.
  • La demo en vivo corre desde una ventana en Bergen, Noruega, en fugleramme.arnegiacomo.dev.
  • El proyecto está en desarrollo temprano: la cobertura de especies es fuerte en Europa y débil en el resto del mundo.

Fugleramme: qué pasó

Fugleramme (del noruego, "marco de pájaros") es un proyecto personal que se volvió viral en GitHub apenas se publicó: el repositorio acumula 1.500 estrellas, 35 forks y 279 commits. La idea es simple de explicar y compleja de ejecutar bien: escuchar los pájaros que cantan en un jardín, identificarlos con IA local y mostrar ese ave real, no un ícono ni una foto genérica, sino una ilustración de historia natural recortada a mano.

El creador tiene su propia instalación corriendo en vivo desde la ventana de su cocina en Bergen, visible en fugleramme.arnegiacomo.dev, mostrando en tiempo real qué aves canta su jardín en ese momento. El propio README lo admite sin rodeos: el proyecto está en desarrollo temprano y hay que esperar algún bug ocasional y bordes sin pulir.

📌 Nota: fugleramme no reemplaza al clasificador de audio. Necesita una instancia de BirdNET-Go corriendo, en el mismo Raspberry Pi o en otra máquina de la red, para recibir las detecciones.

Contexto e historia

La chispa del proyecto fue un póster físico: una lámina del WWF Verdens naturfond ilustrada por Axel Thorenfeldt que el autor tenía colgada en la pared. La idea de convertirlo en algo vivo, que mostrara los pájaros reales del jardín en vez de una selección fija, vino de AvianVisitors, un proyecto que el autor vio en Instagram. La detección de especies por audio corre sobre BirdNET-Go, el motor de clasificación que ya usan varios proyectos de la comunidad de observación de aves casera.

Fugleramme no es el único intento de conectar BirdNET con una pantalla física. El README del proyecto lista explícitamente cuatro proyectos hermanos, aunque aclara que no comparte código ni arte con ninguno de ellos.

Detalles técnicos y rendimiento

El flujo de datos es lineal y minimalista. Un micrófono conectado al Raspberry Pi alimenta a BirdNET-Go, que hace la clasificación de audio. Fugleramme consulta periódicamente la API de BirdNET-Go, cruza cada especie detectada contra su catálogo de ilustraciones, arma una composición con las aves más grandes hacia el centro (ordenadas por masa corporal) y solo redibuja el panel cuando la composición cambia.

El panel solo se redibuja cuando cambian las aves detectadas.

flowchart TD
    A["Micrófono USB"] --> B["BirdNET-Go"]
    B --> C["API REST BirdNET-Go"]
    C --> D["fugleramme"]
    D --> E["Catálogo de ilustraciones"]
    E --> F["Panel e-ink Inky Impression"]
    E --> G["Kiosco web :8080"]
Enter fullscreen mode Exit fullscreen mode

El hardware de referencia es un Raspberry Pi 5, un panel Inky Impression de 13.3 pulgadas (Spectra 6), un micrófono y un marco A4 físico donde se monta todo. El panel e-ink es la experiencia recomendada, pero no es obligatorio: sin él, fugleramme funciona en modo exclusivamente web, mostrando el mismo kiosco por HDMI o desde cualquier dispositivo en la red local.

Esta separación entre detección (BirdNET-Go) y presentación (fugleramme) es la decisión de diseño más relevante: si ya hay una estación BirdNET-Go corriendo en otra máquina, alcanza con apuntar fugleramme a esa API en lugar de instalar un segundo micrófono.

El arte: más de 800 recortes de láminas reales

La mitad del proyecto, según el propio autor, es mostrar ilustraciones de historia natural de dominio público. El catálogo supera los 800 recortes que cubren más de 400 especies, todos tomados de láminas reales y curados a mano para el proyecto. El README es explícito: ninguna ilustración fue generada por un modelo de imagen, aunque algunos recortes sí pasaron por retoque asistido por IA para limpiar bordes.

Cada especie detectada se recorta sin fondo y se ubica sobre una página con textura de papel, con las aves de mayor tamaño hacia el centro según su masa corporal. Un jardín sin detecciones muestra una percha vacía; un jardín activo se llena de siluetas reales, no genéricas.

⚠️ Ojo: la cobertura de especies depende del origen de las láminas. Como son escandinavas, británicas y centroeuropeas, Noruega, Suecia, Dinamarca, Reino Unido y Alemania están bien cubiertos. El resto del mundo, todavía no.

Cómo probarlo

Para desarrollo local, el proyecto usa uv como gestor de entorno de Python y expone un detector falso para no depender de una estación BirdNET-Go real mientras se prueba la interfaz.

Linux y macOS

uv sync
uv run fugleramme-fake-detector &
uv run fugleramme-dev
Enter fullscreen mode Exit fullscreen mode

Windows (PowerShell)

uv sync
Start-Process uv -ArgumentList "run fugleramme-fake-detector"
uv run fugleramme-dev
Enter fullscreen mode Exit fullscreen mode

El primer comando levanta un BirdNET-Go simulado en el puerto 8090; el segundo arranca fugleramme en el puerto 8080 con recarga en caliente. Al abrir http://localhost:8080 debería verse el kiosco respondiendo a detecciones falsas generadas por el simulador.

Para instalar directamente en un Raspberry Pi con el hardware ya montado:

# Raspberry Pi OS (Linux)
curl -fsSL https://raw.githubusercontent.com/arnegiacomo/fugleramme/main/install.sh | bash
Enter fullscreen mode Exit fullscreen mode

El script pregunta dónde vive BirdNET-Go y qué puertos usar, clona el repositorio, instala las dependencias y deja fugleramme corriendo como servicio systemd. El propio proyecto avisa que, en un sistema recién instalado, probablemente haga falta reiniciar una vez.

La alternativa multiplataforma es Docker, igual en Windows, macOS y Linux con Docker Desktop o Docker Engine instalado:

docker run -d -p 8080:8080 -v fugleramme:/data \
  -e FUGLERAMME_DETECTOR_URL=http://birdnet.local:8080 \
  ghcr.io/arnegiacomo/fugleramme
Enter fullscreen mode Exit fullscreen mode

En PowerShell, la misma orden cambia la barra de continuación de línea por el acento grave:

docker run -d -p 8080:8080 -v fugleramme:/data `
  -e FUGLERAMME_DETECTOR_URL=http://birdnet.local:8080 `
  ghcr.io/arnegiacomo/fugleramme
Enter fullscreen mode Exit fullscreen mode

El kiosco web sirve la misma vista que el panel físico, sin necesidad de hardware e-ink.

Si todavía no hay una instancia de BirdNET-Go corriendo, el propio repositorio publica un docker-compose.yml que levanta ambos servicios juntos en una máquina Linux con micrófono USB:

curl -fsSL https://raw.githubusercontent.com/arnegiacomo/fugleramme/main/examples/docker-compose.yml -o docker-compose.yml
docker compose up -d
Enter fullscreen mode Exit fullscreen mode

Para confirmar que quedó activo, hay que visitar http://localhost:8080/admin: ahí se configura qué mostrar y se ve el estado de la conexión con BirdNET-Go. Todo lo que persiste (catálogo descargado, configuración, caché de imágenes) vive en el volumen /data, así que un docker volume inspect fugleramme muestra dónde quedó guardado.

Impacto y análisis

Fugleramme entra a un nicho ya poblado de proyectos que conectan BirdNET con algún tipo de visualización, pero cada uno resuelve la parte del arte de forma distinta:

ProyectoMotor de detecciónTipo de artePlataforma

fuglerammeBirdNET-Go (externo)Recortes reales de láminas del siglo XIXInky e-ink + kiosco web
AvianVisitorsBirdNET-PiIlustraciones generadas por IAMarco físico
inky-bird-frameBirdNETIlustraciones estilo diario de campoPanel Inky
HABirdDashboardBirdNET-GoCollage tipo tarjetaHome Assistant
belkins-birdnetBirdNET-PiIlustraciones estilo kachō-e generadas por IANo especificada

La diferencia que más pesa entre estos proyectos no es técnica: es editorial. Fugleramme apuesta explícitamente por arte de dominio público curado a mano en lugar de generación por IA, algo que su propio README subraya como principio del proyecto. Es una postura poco común en el ecosistema maker actual, donde generar la ilustración con un modelo de difusión suele ser el camino de menor esfuerzo.

Las 1.500 estrellas y 35 forks en apenas 279 commits muestran que el proyecto generó tracción real en la comunidad de electrónica DIY, aunque el propio README pide paciencia: todavía es software en desarrollo temprano.

Qué sigue

El propio mantenedor adelanta que la cobertura de arte se va a ampliar hacia más regiones de Europa y Norteamérica. El proyecto documenta además el proceso de agregar nuevas ilustraciones a mano, así que la expansión depende en parte de que la comunidad done recortes de láminas de otras zonas del mundo.

Como el proyecto está marcado como desarrollo temprano, cabe esperar cambios de API entre versiones y algún bug de borde: todavía no es software para instalar y olvidar.

📖 Resumen en Telegram: Ver resumen

Probalo vos: cloná el repositorio y corré uv sync && uv run fugleramme-dev para ver el kiosco funcionando en el navegador en menos de un minuto, sin tocar hardware.

Preguntas frecuentes

¿Necesito el panel e-ink para usar fugleramme?

No. Sin el panel, fugleramme corre en modo kiosco web: se puede ver por HDMI en cualquier pantalla o abrir desde cualquier dispositivo de la red local.

¿Qué hardware recomienda el proyecto?

Un Raspberry Pi 5, un panel Inky Impression de 13.3 pulgadas (Spectra 6), un micrófono y un marco físico tamaño A4 donde montar todo.

¿Cómo identifica las especies de aves?

No lo hace fugleramme directamente: consulta la API de BirdNET-Go, que es el motor que escucha el micrófono y corre la clasificación de audio con IA local.

¿El arte fue generado por inteligencia artificial?

No. Son recortes de ilustraciones reales de historia natural, en su mayoría del siglo XIX, curados a mano. Según el README, algunos recortes sí fueron retocados con IA para limpiar el fondo, pero ninguna ilustración es generada.

¿Funciona bien fuera de Europa?

Todavía no del todo. Las láminas son de origen escandinavo, británico y centroeuropeo, así que la cobertura de especies es fuerte en esas regiones y débil en el resto del mundo, aunque el proyecto dice estar trabajando en ampliarla.

¿Es gratuito y de código abierto?

Sí. El código está publicado en GitHub bajo la cuenta de arnegiacomo, con instrucciones de instalación tanto para Raspberry Pi como para Docker.

Referencias

📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.

Top comments (0)