Методика тестирования 2019.06
Представляю вашему вниманию подробности методики тестирования, используемой для сравнения качества кодеков.
Общее описание процесса
Эталонный трек — трек, выбранный для тестирования наборов настроек. Это оригинальный трек в формате WAV в хорошем качестве.
- Строится спектрограмма эталонного трека
- Эталонный трек кодируется с выбранными настройками
- Закодированный результат декодируется обратно в WAV-файл
- Строится спектрограмма декодированного файла
- Спектрограммы эталона и закодированного файла считываются и сравниваются
Построение спектрограммы
Для построения спектрограммы применяется утилита Sox со следующими ключами:
-n spectrogram -r -m -x 5000 -y 257
Значения спектрограммы представляют собой 8-битные числа. Такая квантизация хорошо экономит память и в то же время даёт достаточно точности, чтобы сравнивать значения.
Пример спектрограммы
Сравнение спектрограмм
Одним из наиболее важных вопросов в новой методике является непосредственно принцип сравнения спектрограмм. Результатом я хотел получить усреднённый во всему файлу спектр искажений. Искажения представляют собой процентное соотношение изменения к теоретически максимально возможному изменению. Например, если эталонное значение спектрограммы в определённой точке 120, а кодированной спектрограммы 117, то уровень искажения вычисляется следующим образом:
| 120 - 117 | / 255 ≈ 1.18%
где 255 — максимальное значение для 8-битного беззнакового целого числа.
При таком подходе к сравнению для получения искажения в 100%, мы должны иметь закодированное значение в 255, а эталонное 0. Этот случай скорее всего невозможен на практике, иначе можно было бы говорить о явном дефекте в кодировщике или декодировщике. Поэтому в реальных условиях одни из наихудших уровней искажений будут порядка 20-30%.
В какой-то момент хотелось сделать показатель искажений динамическим, в зависимости от текущего значения. Чтобы, например, при эталонном значении 120 и кодированном значении 0 получалось бы 100% искажений, что, согласитесь, тоже имеет свою логику. Но это приводило к усложнению нормализации и, как следствие, к ухудшению дифференциации результатов различных кодеков и настроек.
Недостатки методики
Этот способ не даёт главного ответа на вопрос: является ли кодирование с выбранными параметрами прозрачным? С трудом могу себе представить автоматизацию ABX-тестов, разве что посредством обучения нейронных сетей. Но, тем не менее, метод вполне пригоден для сравнения форматов и реализаций кодеков между собой.
Комментарии