Математическое сравнение

Список разделов Ogg Vorbis Ogg Vorbis

Описание: Обсуждение всех вопросов касательно Ogg Vorbis

Сообщение #1 VEG » 11.05.2006, 16:59

Около года назад я занимался математическим сравнением различных кодеков аудио. Специально для этих целей писал программу, которая сама ищет смещение (для наибольшего совпадения двух потоков аудио), создает файл с удаленными кодером частотами. Было очень интересно слушать не сам закодированный файл, а именно то, что было удалено кодером, разницу между файлами. Плюс давалась средняя оценка разницы между файлами.
Правда, в среде любителей музыки это считается чуть ли не самыи глупым поступком. Я поэтому здесь и не писал об этом.
moozooh:Как сравнивал я: сжимал файл в MP3, потом разжимал его сначала одним декодером, затем вторым. Потом у одной из волн инвертировал фазу, совмещал их с точностью до одного сэмпла (чтобы пики поглотили пики, а впадины поглотили впадины) и на выходе получал чистую математическую разницу, не зависящую ни от моего слуха, ни от моего зрения.
Какие преимущества у этого вида тестирования?
1. Оно настолько объективное, насколько это возможно для данной области.
2. Его невозможно ничем испортить, т.к. проводимая над волнами операция — простое сложение. Тут захочешь — не испортишь. Все редакторы, которые могут это делать, сделают это одинаково вне зависимости от того, присутствуют ли в них космические технологии или трёхглазая яичница-мутант из 28-го измерения.
3. На выходе мы получаем дельта-файл, который можно выложить на всеобщее обозрение в качестве доказательства.
Недостаток один — много геморроя с обрезкой файлов, полученных при неточном определении (точнее, его полном отсутствии) задержки и паддинга кодировщика, прописанных лэймом в хедере.
Вот Вам, к примеру, дельта-файл вангелисовского Kinematic, полученный от вычитания фубаровского выходного потока из потока Winamp 2.91 с дефолтным декодером:
http://s5.11mbit.in/1PiAlqw77i23Hs34It4Do2dMx3HschI77io2dNxhmsy9It4iJP8j8dEy/p5cv6bhI
Послушайте и отпишите свои впечатления, буду рад их прочитать.
Раз эту операцию кто-то делает вручную - может стоит все же выложить эту программу? Количество лишних семплов она определяет точно, с высчитыванием разницы и так все ясно.
Единственное, что я ее писал для 16 битного RAW потока. Проблема легко решается при помощи простого bat файла :)
Последний раз редактировалось VEG 13.05.2006, 10:12, всего редактировалось 1 раз.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 40
С нами: 18 лет 5 месяцев

Сообщение #2 CMEPTb » 12.05.2006, 00:06

Выложи. Я бы побаловался с ней.
CMEPTb
Аватара
Откуда: Москва
Репутация: 8
С нами: 18 лет

Сообщение #3 moozooh » 12.05.2006, 23:22

Да, было бы полезно иметь такую программку на всякий случай, а то Фубаром я могу декодировать MP3 либо через MAD, либо через mpglib. Хотелось бы иметь возможность сравнивать выходные потоки и других декодеров, не прибегая к излишним сложностям поиска нужных сэмплов в разрешении 1:1.
moozooh
Репутация: 0
С нами: 18 лет

Сообщение #4 VEG » 16.05.2006, 18:18

Sound Comparator
http://vorbis.org.ru/files/sndcmp.exe (40кб.)
Это, можно сказать, глубокая бета:) Писалось для себя и под тот материал, на котором я проводил тесты. На данный момент дописать нету времени. Поэтому отсюда несколько ограничений:
На входе и выходе только 16bit signed little-endian RAW файл объемом не менее 16кб. Из WAV файла RAW легко можно получить при помощи, например, flac.exe - сперва сожмете, потом разожмете :) Все можно организовать BAT файлами. Например, этот:
Код: Выделить всё
flac --force --decode --force-raw-format --endian=little --sign=signed --output-name=sndsrc.raw %1
flac --force --decode --force-raw-format --endian=little --sign=signed --output-name=snddst.raw %2
sndcmp sndsrc.raw snddst.raw sndout.raw
flac -f --force-raw-format --endian=little --channels=2 --bps=16 --sample-rate=44100 --sign=signed --output-name=%3
На вход подается 2 flac файла - оригинал и декодированный после lossy вариант. Третий файл - это flac, куда запишется разница.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 40
С нами: 18 лет 5 месяцев


Вернуться в Ogg Vorbis



cron