How Apple Music Maps Audio to Lyrics — The Engineering Behind Real-Time Lyric Sync

від

у

Як Apple Music відображає аудіо на тексти — інженерія синхронізації тексту в реальному часі
https://ift.tt/wdi6jqO

Apple Music-поєднані з текстами функція синхронізації здається майже магічною: слова з’являються у точному такті з музикою, збільшуються за розміром залежно від емоційного навантаження слів, плавно зникають із кожним рядком. За цим гладким досвідом стоїть ретельно багатошарова технічна архітектура, яка поєднує стандарти метаданих, обробку сигналів та точну анімацію. Ось як це фактично працює.

Основи: формати таймштампів для лірики
Основа будь-якої системи синхронізації тексту — це відремаркований за часом текст — простий текстовий документ, що додає часовий код до кожного елемента лірики. Apple Music використовує два формати:

LRC (Line-synced): найстаріший і найпростіший формат. Кожному рядку надається один часовий штамп — момент, коли він повинен з’явитися. Це «синхронізація на рівні рядка».

[00:12.45] Midnight rain falls on the window
[00:15.80] I can hear the thunder calling

TTML (Timed Text Markup Language): XML-стандарт W3C, який здатний до часових міток на рівні слів і навіть складів. Це те, що забезпечує режим караоке «слово-за-словом», запроваджений в iOS 16. Кожен <span> може мати власні атрибути begin та end аж до мілісекунд.

<p begin="00:12.450" end="00:15.800">
  <span begin="00:12.450" end="00:13.200">Midnight</span>
  <span begin="00:13.200" end="00:13.600">rain</span>
  <span begin="00:13.600" end="00:14.100">falls</span>
</p>

Ці файли частково створюються людиною (для високопрофільних релізів), частково — автоматизованими конвеєрами прив’язки. Ймовірно, Apple використовує поєднання власних інструментів та сторонніх постачальників, таких як LyricFind або Musixmatch, які мають великі каталоги синхронізованих текстів.

Зумовлена синхронізація: як генеруються часові мітки
Для сервісів, що автоматично генерують часові мітки слів, основна технологія — прив’язка примусова (forced alignment) — техніка зі сфери автоматичного розпізнавання мови (ASR).

Процес складається з трьох кроків:

1. Отримати текст лірики. Текст відомий (від лейбла або сервісу текстів). Це «примусовий» етап — на відміну від ASR, де потрібно розпізнати мову, слова вже надані. Система лише має визначити, коли кожне слово з’являється.

2. Згенерувати послідовність фонем. Текст конвертують у послідовність фонем (базових звукових одиниць) за допомогою словника вимови або нейронної мережі текст-у-фонему (G2P). «Midnight» стає /M IH1 D N AY2 T/.

3. Відповідність фонем аудіо за допомогою прихованої марковської моделі (HMM) або нейронної мережі на основі CTC. Акустичні ознаки аудіо (зазвичай коефіцієнти МФКК, або MFCC, або лог-мел-спектрограми) зіставляють із очікуваною послідовністю фонем за допомогою динамічного програмування (зокрема, алгоритм Вітбері). Результат — точне співвіднесення кожної фонеми — а отже, кожного слова — із стартовим та кінцевим таймшотом у мілісекундах.

Сучасні системи, такі як Montreal Forced Aligner (MFA) або нейронні підходи з використанням wav2vec 2.0 або Whisper з примусовим декодуванням, можуть досягати точності вирівнювання на рівні слів приблизно 30–50 мс на чистому студійному аудіо.

Аудіоклок: підтримання синхронізації під час відтворення
Створення точних часових міток офлайн — це лише половина проблеми. У момент відтворення застосунок повинен з високою точністю відстежувати поточне положення відтворення та запускати події лірики точно в потрібний момент.

Apple Music використовує AVFoundation та AVPlayer, який забезпечує поточний час через CMTime — структурa, що зберігає час як раціональне число (значення/крихітности часу), щоб уникати дрейфу з плаваючою точкою на тривалих відрізках. Програма реєструє периодичні спостерігачі часу, які спрацьовують через визначений інтервал (наприклад, кожні 50 мс), та спостерігачі меж времени, що спрацьовують на конкретних заздалегідь зареєстрованих таймштампах.

Підхід спостерігача меж времени ідеальний для лірики: ви попередньо реєструєте кожен таймштамп лірики перед початком відтворення. Система викликає зворотний виклик на кожному з них, ініціюючи переход UI з мінімальною затримкою.

// Концептуальний Swift — реєструє зворотний виклик на кожному таймштампі лірики
for lyric in lyrics {
    let time = CMTime(seconds: lyric.startTime, preferredTimescale: 1000)
    player.addBoundaryTimeObserver(forTimes: [NSValue(time: time)], queue: .main) {
        self.highlightLyric(lyric)
    }
}

Також є врахування щодо швидкості відтворення. Якщо користувач перемикає вперед або аудіо буферизується, система повинна повторно синхронізуватися. У ліриках Apple Music перегляд активної лірики повторно обчислює її під час кожного seek події за допомогою бінарного пошуку масиву таймштампів для поточного положення.

Візуальний шар: тон, темп та вага
Тут реалізація Apple Music виходить за межі більшості конкурентів. Анімаційні лірики — це не просто «виділення поточного слова» — вони кодують музичну енергію візуально.

Слово-за-словом розкриття з маскуванням прогресу
Кожне слово не просто вмикається/вимикається. Apple використовує градієнтну маску або анімацію clip-path, що поступово розкриває слово зліва направо по мірі того, як його часовий проміжок минає. Це створює ефект «співаної» появи слова в реальному часі, а не просто його появи.

Техніка: слово має відомий старт та кінець часу. UI обчислює значення progress від 0 до 1 на основі (поточний час - початок слова) / (кінець слова - початок слова). Цей прогрес керує шириною накладу або положенням маски, відкриваючи слово по символу.

<магазин>Поток розміру: вага слова

<серія>Масштаб як емоційна вага
Ліри Apple масштабують рядок залежно від помітності поточного рядка порівняно з сусідніми. Активний рядок більший; попередні зменшуються; майбутні приглушуються. Це досягається за допомогою пружинних масштабних трансформацій (UIViewPropertyAnimator з UISpringTimingParameters), що дає природне, фізичне замикання, а не лінійне згладжування.

Пружинні параметри (відтягнення, почетна швидкість) підібрані так, щоб бути вагомими для повільних пісень і динамічними для швидших композицій. Чи Apple динамічно регулює їх залежно від аналізу темпу аудіо чи використовує зафіксовані параметри на кожен «рівень енергії» — не публічно документовано, але ефект точно відрегульований.

<танок>Уважність темпу: швидкі та повільні рядки
Для швидких лірик (наприклад, реп-куплети) кожне слово має дуже короткий часовий проміжок, тому маска прогресу анімує швидко. Для повільних, тривалих нот — проміжок великий, і маска рухається повільно. Ніякої особливої логіки не потрібно — темп анімації відображає темп музики, автоматично закодований у часових мітках.

Apple також приглушує пройдені рядки та трохи розмиває їх, створюючи ефект глибини різкості, що зосереджує погляд на теперішній момент.

Зв’язок з тактощупом та просторове інтегрування
На підтримуваних пристроях Apple Music додає ще один рівень: відгук тактильних відчуттів у такт з бітами (окремо від лірики, що обумовлений виявленням біту), а на треках з просторовим звуком лірика може бути закріплена у 3D-просторі. Це покращення поверх базової системи синхронізації і не є її основою.

Підсумок: стек
– Рядок лірики: TTML / LRC з мілісекундними часовими мітками
– Генерація часових міток: примусова прив’язка (HMM / CTC-нейронні мережі)
– Синхронізація під час відтворення: AVPlayer, спостерігачі часу на межах та CMTime
– Анімація прогресу слів: нормалізований маскувальний прогрес / clip-path
– Відображення та відчуття: пружинні анімації за допомогою UIViewPropertyAnimator
– Кодування темпу: природно витікає з часових міток на рівні слів

Ключове розуміння полягає в тому, що більшість «інтелекту» закладено заздалегідь у часові мітки. Музично-відтворювальний двигун досить простий: потрібно лише знати поточний час і точково запускати події. Різноманітність досвіду походить із якості даних часових міток та техніки анімації, накладеної зверху.

Застереження: Apple не публічно документувала внутрішню реалізацію системи лірики Apple Music. Ця стаття базується на аналізі спостережуваної поведінки, публічної документації для розробників Apple (AVFoundation, CoreMedia), дослідження зворотного інжинірингу спільнотою та відомих методах у обробці мови та примусовій прив’язці.

HI-FI News
через DEV Community https://dev.to

21 лютого 2026 року, 03:45 PM

February 21, 2026 at 03:45PM


Коментарі

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *