Hay algunas variaciones para cubrir, incluyendo letras no sincronizadas para completitud:
- no sincronizado vs sincronizado (también llamado sincronizado por tiempo o "Letras en vivo")
- aplicaciones de terceros vs aplicaciones de música específicas de Apple, como iTunes
- archivos MP3 vs contenedores MP4 (M4A es solo audio en MP4)
Letras no sincronizadas
Las letras no sincronizadas son bastante fáciles. Puede utilizar el menú contextual de iTunes / Apple Music => "Obtener información" y pegar un bloque de texto, que para archivos MP3 es una etiqueta ID3 v2.algo (USLT
, que se puede ver en la biblioteca de Python eyeD3 (en contraste con SYLT
para letras sincronizadas)).
- Este
lrcput.py
script muestra cómo utilizar las bibliotecas de Python "eyed3" para archivos MP3, y "mutagen" para incrustarlas en FLAC.
- Los contenedores MP4 se manejan de manera similar, la API de mutagen MP4 es casi idéntica a su API de FLAC.
Aplicaciones de terceros
Para una aplicación de no-Apple, generalmente puedes descargar archivos .lrc para sincronizarlos y nombrarlos de manera similar al archivo de audio, y las aplicaciones los recogerán (ver LRCGET, que utiliza https://lrclib.net/ para obtener letras).
Letras sincronizadas con Apple Music
La prueba con varios archivos MP3 con letras sincronizadas no muestra letras en absoluto en Apple Music (archivos fuente de este blog de 2021). Las letras no sincronizadas se muestran bien. De manera ominosa, los documentos de soporte de Apple mencionan que no tendrás acceso a Letras en vivo sin una suscripción a Apple Music.
Ahora, para la cosa original que estaba intentando hacer, Apple Music + archivos M4A: Apple actualmente utiliza Musixmatch para proporcionar letras sincronizadas, que parece que cualquiera puede enviar letras. Parece que estas se proporcionan en formato TTML, y luego se ponen a disposición de los suscriptores de Apple Music.
Notas técnicas:
Para aplicar letras sincronizadas a tus archivos locales M4A, parece que tendrás que ponerlas en el campo específico de iTunes "\xa9lyr"
(documentos de mutagen), y creo que estos mismos nombres de campos se utilizan en las etiquetas ID3 de MP3, también.
Existe al menos un proyecto de GitHub que puede leer perfiles de contenido (incluidos datos TTML) de Apple Music y de alguna manera los incrusta en tus archivos de audio. Al inspeccionarlo más de cerca, parece que este proyecto está incrustando letras no sincronizadas:
api.api.getInfo()
llama a Apple Music, pasa la respuesta a…
api.parse.parseJson()
, y los datos de letras sincronizadas están en data["relationships"]["lyrics"]["data"][0]["attributes"]["ttml"]
.
- Pero al etiquetar archivos reales,
core.process.tagger.tag()
parece estar extrayendo letras de data["streams"][i]["lyrics"]
.
Incrustar directamente el contenido completo de un archivo .lrc o .ttml con mutagen parece que no funciona. Supongo que para Apple Music, las letras sincronizadas se traen a través de algún canal secundario a través del servicio de suscripción a Apple Music.