Gladys Music: pedirle a Gladys que reproduzca cualquier canción en cualquier altavoz

¡Hola a todos!

Lo que me gustaría poder hacer, simplemente: « Gladys, pon el álbum de Daft Punk en el salón », o en una escena, « A las 7 h, reproduce mi lista de reproducción matutina en la cocina ». Y que funcione sin importar la fuente de la música (mi Navidrome, Spotify, Plex, una emisora de radio en línea…) y sin importar el altavoz (Sonos, amplificador, Chromecast…).

Hoy en día, todas las piezas existen, pero no se comunican entre sí. De ahí esta propuesta, que por ahora llamo Gladys Music. @pierre-gilles, me gustaría mucho tu opinión antes de seguir adelante.

¿En qué punto estamos?

  • En cuanto a los altavoces, ya hay opciones: Sonos, AirPlay y Google Cast en el núcleo, e integraciones externas para DLNA, amplificadores Denon / Marantz, MusicCast, LinkPlay (WiiM…), Lyrion (Squeezebox), los Echo, VLC…
  • En cuanto a la música, lo mismo: Subsonic / Navidrome, Spotify, Plex, Jellyfin, servidores DLNA, emisoras de radio en línea…
  • Pero entre las dos, nada. Las funcionalidades de música del núcleo saben reproducir, pausar, siguiente, volumen y « reproducir una notificación », pero no « reproducir eso ». Y la IA de Gladys no tiene herramientas para la música: enciende la luz, pero no sabe reproducir un álbum.

Como resultado, cada integración hace lo suyo. Por ejemplo, la de DLNA sabe buscar un álbum en un servidor y reproducirlo en un amplificador, pero solo entre dispositivos DLNA y solo desde una escena. El tema no es nuevo: ya había « Gestión de servicio de música » en 2022.

La propuesta: tres piezas en el núcleo

1. Fuentes de música. Una integración (del núcleo o externa) puede declararse « fuente »: se le da un texto y un tipo (título, álbum, artista, lista de reproducción, radio), y devuelve resultados con su portada y cómo reproducirlos, generalmente una dirección de flujo. Subsonic, Plex, Jellyfin, servidores DLNA o una integración de emisoras de radio en línea encajan naturalmente aquí.

2. Reproductores que saben « reproducir eso ». Una nueva funcionalidad de música, por ejemplo play_media, junto a play_notification que ya sabe reproducir una dirección. El núcleo hace la conexión entre las dos:

  • en el caso general, la fuente proporciona una dirección de flujo, y cualquier reproductor que sepa leer una dirección la reproduce (DLNA, Sonos, AirPlay, Cast…);
  • cuando una fuente solo reproduce en su propio dispositivo (Spotify en sus dispositivos Spotify Connect), el núcleo solo ofrece los reproductores compatibles.

**3. Una sola forma de usarlo, en todas partes:

  • una herramienta de música para la IA: « reproducir qué, dónde » (con una fuente preferida por defecto), más pausa / siguiente / volumen. Es lo que hace que el comando de voz sea natural, desde el micrófono del teléfono en la aplicación;
  • una acción de escena « Reproducir música » con una búsqueda, válida para todas las fuentes y todos los altavoces;
  • un widget « Música »: una búsqueda, una elección de altavoz, y listo.

Para las integraciones externas, bastaría con una declaración adicional en el manifiesto y el SDK (« soy una fuente », « este reproductor sabe reproducir una dirección »). No es necesario instalar un servidor más, a diferencia de Music Assistant en Home Assistant: funcionaría con lo que la gente ya tiene.

Lo que puedo aportar

Si la idea te gusta, puedo:

  • escribir la especificación, siguiendo el modelo de docs/specs/external-integrations;
  • hacer la parte del SDK para las integraciones externas;
  • conectar las primeras fuentes y los primeros reproductores por mi parte (Subsonic, DLNA, una integración de emisoras de radio en línea…) para validar todo;
  • y proponer una PR para el núcleo, si prefieres que me encargue yo en lugar de que lo hagas tú.

Mis preguntas

  1. ¿Te parece que el núcleo es el lugar adecuado, o lo ves de otra manera?
  2. ¿Más bien una nueva funcionalidad play_media, o extender play_notification que ya sabe reproducir una dirección?
  3. En cuanto a la IA: ¿te parece bien una herramienta dedicada a la música, junto a las que ya controlan los dispositivos?
  4. ¿El nombre « Gladys Music » te dice algo, o tienes algo mejor?

Y para los demás: ¿esto se ajusta a sus usos? ¿Qué les faltaría?