Что бы вы ни делали, вам сначала нужно будет декодировать MP3 в данные PCM. Есть ряд сторонних библиотек, которые могут сделать это для вас. Затем вам нужно проанализировать данные PCM и выполнить некоторую обработку сигналов на них.
Автоматическая генерация реалистичных данных синхронизации по губам из аудио - очень сложная проблема, и вы не должны пытаться ее решить. Мне нравится ваша идея просто основывать его на объеме. Один из способов вычисления текущей громкости состоит в том, чтобы использовать скользящее окно некоторого размера (например, 1/16 секунды) и вычислить среднюю мощность в звуковой волне по этому окну. То есть в кадре T вы вычисляете среднюю мощность по кадрам [T-N, T], где N - количество кадров в вашем окне.
Благодаря теореме Парсеваля мы можем легко вычислить мощность в волне без необходимости принимать преобразование Фурье или что-либо более сложное - средняя мощность - это просто сумма квадратов значений PCM в окно, разделенное на количество кадров в окне. Затем вы можете преобразовать мощность в децибел рейтинг, разделив ее на некоторую базовую мощность (для простоты это может быть 1), взяв логарифм и умножив на 10.