LINUX.ORG.RU

Как сравнить звуковые файлы?

 ,


0

1

Есть 2 файла MP3. Вроде бы, в них одно и то же, но как узнать точно? Размер отличается на несколько процентов. Если запустить их одновременно в MPV, заметно отставание одного от другого, но если один немного сдвинуть по времени в Audacity, совпадут очень хорошо.

Если бы это были картинки JPEG, я бы вычел одну из другой, и смотрел, останется ли что-то заметное. А как вычесть звук? Файлы не настолько совпадают, чтобы можно было инвертировать один в Audacity и вычесть. Можно ли вычесть Фурье-образы, и какая программа так умеет?

Или как лучше вычесть один звуковой файл из другого?

★★★★★
Ответ на: комментарий от question4

Как в Audacity двигать без мыши? Руки трясутся, не попадаю.

Не знаю, я мышью двигаю. Попробуй просто ещё сильнее приблизить — будет проще попасть.

С картинками хорошо видно, какова невязка и куда и на сколько двигать. Как визуализировать для звука?

Ну так тебе Audacity или любая аналогичная прога прекрасно всё визуализирует, не?

Ну типа вот для примера я взял FLAC и MP3 одного и того же трека. Находишь визуально похожее (хоть и не идентичное) и совмещаешь, чтобы конкретный пик на одной дорожке оказался под таким же пиком другой. Можно выделить, если глаз косит. Ну как-то так: https://i.postimg.cc/byzbj7Qn/2026-05-06T11-04-22.png.

CrX ★★★★★
()
Ответ на: комментарий от question4

Можно ли как-то преобразовать, чтобы убрать такой сдвиг?

Если ты уверен что там одинаковая музыка то можешь просто нормализовать по расстоянию между пиками.

Если там одна мелодия но в разном исполнении то сложнее. Понадобится тулза чтобы автоматически порезать по тактам для выравнивания темпа.

ya-betmen ★★★★★
()
Ответ на: комментарий от question4

каждый звук можно разложить в ряд Фурье, т.е. набор синусоид.
похожесть звука будет четко видна на графике АЧХ - амплитудно-частотной-характеристики.
если форма графика (огибающая онного графика) спектра/АЧХ двух фреймов мп3 одинакова - то значит и фреймы содержат в себе одинаковый звук. анализируя АЧХ фреймов двух потоков музыки можно вычислить насколько они сдвинуты друг от друга, с точность в длительность фрейма.

мда, получился ответ математика :) «Ваш ответ, по-видимому, точный и полный, но для меня совершенно бесполезный» :)

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 2)
Ответ на: комментарий от Skullnet

Вы не понимаете как сжимает MP3

Лол, я как раз прекрасно понимаю, и могу прочитать лекцию рисуя все мелом у доски, по каждому этапу работы MP3. Так что в этом алгоритме мешает наложить и сравнивать, посвети же меня?

И да, я это лично, сам делал много раз. MP3 файлы брал, выравнивал руками, вычитал, анализировал разницу. Давай расскажи мне, какие с этим проблемы, я хорошо так посмеюсь.

James_Holden ★★★★★
()

Спектральный анализ уже обсудили, да и автор про него написал.

Я бы ещё корреляционный попробовал. ВКФ от этих двух файлов взять. Правда, если они ещё и частотой дискретизации отличаются, даже чуть-чуть – получится лажа.

hobbit ★★★★★
()
Ответ на: комментарий от James_Holden

И да, я это лично, сам делал много раз.

Утилиты для сравнения сам писал или что-то готовое брал? В любом случае было бы интересно потыкать.

hobbit ★★★★★
()
Ответ на: комментарий от James_Holden

Так что в этом алгоритме мешает наложить и сравнивать, посвети же меня?

Тем что MP3 концептуально - «консерва». В аудио инженерии и при создании музыки MP3 не используют, а используют wav, flac и так далее.

И да, я это лично, сам делал много раз. MP3 файлы брал, выравнивал руками, вычитал, анализировал разницу.

Ну и как, нормально вычиталось после ручной правки? У меня в файле появились спайки, которые при вычитании вызывали треск. При этом сигнал вычитался правильно, условный вокал нормально вырезался. Программно как будешь файлы сравнивать, когда руками правишь длину файла интуитивно?

Кароче, это всё костылизм. Смотрите хотя бы в сторону OGG Vorbis и других форматов, которые не похеривают длину файла.

Skullnet ★★★★★
()
Последнее исправление: Skullnet (всего исправлений: 1)
Ответ на: комментарий от gagarin0

Лучше предложите какое нибудь AI-решение, наверное. Если я не ошибаюсь, то YouTube юзает нейронку для определения copyright-материала.

Skullnet ★★★★★
()
Последнее исправление: Skullnet (всего исправлений: 1)
Ответ на: комментарий от question4

Или только сконвертировать в PCM и перебором искать сдвиг, когда сумма модулей (или квадратов) разностей будет минимальна

this

nionio35
()
Ответ на: комментарий от Skullnet

Кароче, это всё костылизм. Смотрите хотя бы в сторону OGG Vorbis и других форматов, которые не похеривают длину файла.

Это что, мне совет что ли? Так я и не использую mp3, я что, больной?

А vorbis, к твоему сведению, фактически устаревший формат, вместо него теперь opus, который намного более эффективен. Если уж приспичило лосси сжатие зачем-то в 2026. Vorbis это прошлый век, условно аналог mp3 с некоторыми небольшими улучшениями. Старое поколение. Так зачем ты его советуешь, если ты разбираешься? Или не очень разбираешься?

Ну и как, нормально вычиталось после ручной правки?

Конечно, а чего оно не будет вычитаться? Ну ты же знаешь как работает mp3, в отличие от меня, ага, ну и поясни, откуда спайки. Что конкретно в алгоритме mp3 их может порождать. Ты же знаток.

У меня в файле появились спайки, которые при вычитании вызывали треск

Погоди, в каком из хотя бы сотни файлов? Или ты это делал один раз в жизни, а теперь меня лечишь? Это что, шутка?

Давай файлы, вычтем.

James_Holden ★★★★★
()
Ответ на: комментарий от James_Holden

А vorbis, к твоему сведению, фактически устаревший формат, вместо него теперь opus, который намного более эффективен.

opus - это successor vorbis, они придуманы одной и той же компанией. В целом, vorbis ещё актуален для музыки, поэтому его используют до сих пор в играх. Для < 128kbps уже не так актуален.

Если уж приспичило лосси сжатие зачем-то в 2026. Vorbis это прошлый век,

Я тебя удивлю, до сих пор юзают aac и mp3 в 2026. Даже популярные музыкальные сайты.

ну и поясни, откуда спайки

mp3 похеривает длину и темп воспроизведения файла и оно неправильно вычитается. Очевидно же.

Skullnet ★★★★★
()
Последнее исправление: Skullnet (всего исправлений: 1)
Ответ на: комментарий от Skullnet

Длину - да. Темп - ни в коем случае. Что ты такое, черт возьми, пишешь. Mp3 никак не влияет на темп. Инфа 146%.

Mp3 просто добавляет в начале лишнее смещение, особенность реализации алгоритма. Если его отыграть назад, дальше все совпадет.

Ну ты сам задумайся, хоть на секунду, какой абсурд ты утверждаешь. Чего только не прочитаешь на лоре, оказывается кодеки меняют темп! Все в машину

James_Holden ★★★★★
()
Ответ на: комментарий от James_Holden

Mp3 никак не влияет на темп. Инфа 146%.

Ну конечно. Я аудио инженерией много занимался, наверное с потолка говорю.

Файлы MP3 имеют свойственный им временной сдвиг. Независимо от того, какова была исходная частота ударов в минуту (BPM) треков, при воспроизведении файлы MP3 не будут воспроизводиться с идеальной точностью по BPM. Вы бы это знали если бы пытались сводить MP3 с оригинальным аудио.

Если его отыграть назад, дальше все совпадет.

Увы, но нет. Темп тоже приходится крутить, на десятые доли процента даже, чтобы оно совпало.

Skullnet ★★★★★
()
Последнее исправление: Skullnet (всего исправлений: 1)
Ответ на: комментарий от Skullnet

Ты просто бред какой-то несешь, извини. Не влияет на темп и никак не может влиять. Давай пруфы, ссылки, на любую статью или доки, где написано что mp3 меняет bpm. Такого бреда вообще придумать сложно, какой к лешему звукоиженерией ты занимался, если таких вещей не понимаешь. Фантастика

James_Holden ★★★★★
()
Ответ на: комментарий от Skullnet

Давай так - выложи любой трек, который понравится, жмем его сейчас в mp3 и вычитаем из оригинала. Смотрим, как съехал темп.

James_Holden ★★★★★
()
Последнее исправление: James_Holden (всего исправлений: 1)
Ответ на: комментарий от Skullnet

Там речь о сдвиге, а не о смене темпа. Ты минимально понимаешь что делает mp3, или любой кодек вообще, со входным pcm потоком? Есть понятие фрейм, берется количество семплов соответствующее размеру фрейма, и жмется. Потом разжимается в такое же количество семплов при воспроизведении. Это количество не может измениться. Что на входе, то и на выходе.

За исключением крайних фреймов! Если у тебя wav файл входной, не нарезается на целое число фреймов, то mp3 добавляет padding, чтобы уложиться в целое число фреймов. Поэтому, длительность файла меняется.

Обойти это может lame, записывая что и как добалено, потом убирая. То есть lame добавляет специальный заголовок в самый первый фрейм, в нем содержится точное число семплов.

Обрати внимание - все это касается только паддинга. О том, что ТЕМП может меняться, ТЕМП, КАРЛ - вообще речи не идет. Все фреймы кроме крайних, при воспроизведении восстанавливаются в то же число PCM семплов, которое было сначала. И иначе оно работать не может никак, так работают все кодеки. Откуда твое изменение темпа возьмется, это просто дикая околесица.

Ну и да, кстати, еще момент - все критики поганого mp3, не в курсе как работает актуальный lame и что он может, пока не погуглят. Ага.

James_Holden ★★★★★
()
Последнее исправление: James_Holden (всего исправлений: 1)
Ответ на: комментарий от James_Holden

Там речь о сдвиге, а не о смене темпа.

Ну понятно, у MP3 семплы по 1152 байт кажется. Но на практике приходилось корректировать темп аудиосигнала чтобы тот как-то сходился с оригиналом. Я подозреваю, что где-то всё таки есть изменение темпа. Десятая доля процента - для уха не слышно, а сигнал потом на 2-3й минуте расходится.

Skullnet ★★★★★
()
Последнее исправление: Skullnet (всего исправлений: 2)
Ответ на: комментарий от Skullnet

Вот почитал я это всё, подивился, а потом взял riff wave длиной в два часа, да и пожал ее в три mp3-файла с разными настройками.

И не вижу никакой разницы в длине, вот вообще.

В смысле, я теоретически допускаю существование пары кодеков, для которых если одним пожать, а другим разжать, то получится сплющенно или растянуто. Но хз, хз.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 2)
Ответ на: комментарий от thesis

И не вижу никакой разницы в длине, вот вообще.

Уже писал, что в LAME добавляет метаданные для корректировки паддинга. В зависимости от программы и от наличия этих метаданных проблемы может не быть.

Skullnet ★★★★★
()
Последнее исправление: Skullnet (всего исправлений: 1)
Ответ на: комментарий от thesis

Кстати, чтоб два раза не вставать, развернул одну эмпэтришку по фазе и свел с другой (320cbr и 160vbr). Остается довольно много информации, что в принципе ожидаемо.

thesis ★★★★★
()
Ответ на: комментарий от hobbit

Я бы ещё корреляционный попробовал. ВКФ от этих двух файлов взять.

Только не от самих файлов, а от фурье этих файлов. Если один файл «растянут» относительно другого, то на спектрограмме это будет выглядеть просто как смещение всего спектра.

stabilitron
()
Ответ на: комментарий от Skullnet

корректировать темп аудиосигнала чтобы тот как-то сходился с оригиналом

Прям интересно стало, зачем такая настойчивость? Правильно тебе тут толкуют: может немного съехать весь трек из-за набивки, да. Могут транзиенты чуть расплыться, если ты прям какой-то клик до сэмпла хочешь совместить, тоже да. Но.. ТЕМП? Нет, не поменяется. Ты в терминах путаешься или как? Расскажи, что ты имеешь ввиду?

anonymous
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария