Динамическое искажение времени для сравнения двух аудиозаписей - PullRequest
1 голос
/ 30 января 2010

Я бы хотел использовать Dynamic Time Warping для сравнения двух векторов признаков для двух аудиозаписей (конечно, сначала я делаю всю необходимую предварительную обработку). Моя программа должна выводить сходство двух аудиозаписей в процентах. Например, 100% означает, что две записи полностью идентичны, и чем больше разных записей, тем меньшее число я получаю. Как мне обойти это? DTW дает мне только длину пути или стоимость перехода, и я не знаю, как преобразовать одно из этих чисел в процентное значение.

1 Ответ

5 голосов
/ 08 февраля 2010

Мне не известно ни о каком показателе расстояния между сигналами, который измеряется в процентах. Если есть значение 100%, то должно быть значение 0%. Итак, сначала вы должны спросить себя: что означает 0%?

Для DTW я почти уверен, что нет установленного преобразования минимального расстояния в «процент совпадения». Если необходимо, то вам нужно определить эвристическую величину, которая является функцией минимального расстояния DTW.

РЕДАКТИРОВАТЬ: На самом деле, вы можете определить самое длинное расстояние, если у вас есть две записи конечной длины. Это будет расстояние от пути, который прошел (если смотреть на матрицу затрат) полностью прямо тогда, вниз или прямо вниз, потом вправо. Лучший путь, то есть идеальное совпадение, идет по главной диагонали.

Одна простая идея: если использовать (0,1) (1,0) (1,1) в качестве кандидатов на шаги, вы можете использовать число шагов, выполненных с помощью (0,1) и (1,0), в качестве мера плохости. Эта мера, безусловно, имеет максимум и минимум, поэтому ее можно сопоставить с некоторым желаемым диапазоном, например 0-100%.

...