мячин.ком

Pitch Shift. Часть 3. Простейшее решение. Разбиение на частоты.

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

Разделение на частоты.

Поговорим теперь про размер гранул. Допустим, мы растягиваем время. Вот так, алгоритмы с разными размерами гранул будут растягивать импульс:

Если же мы подадим на вход этим алгоритмам непродолжительный звук с некоторой высотой, то увидим, что для данной высоты есть некоторый оптимальный размер гранулы. Слишком маленькие гранулы будут изменять и высоту, а слишком большие гранулы скопируют детали более крупного масштаба:

Проблема в том, что разным диапазонам частот соответствуют разные оптимальные размеры гранул. Поэтому имеет смысл разбиение на частоты и вот такое усовершенствование алгоритма:

Кратномасштабный подход.

Человеческое ухо слышит логарифмически: разница воспринимаемой человеком высоты между звуками с частотами 100 и 120 Гц примерно такая же, как и между 1000 и 1200 Гц. Существует разбиение всех частот на диапазоны, которое принято называть пирамидальным. Оно очень хорошо сочетается с устройством человеческого слуха: диапазоны частот получаются одинаковой логарифмической ширины, а значит одинаково значимы для человеческого уха. С другой стороны, такой подход удобен, поскольку размеры гранул нужно определить только для одной полосы. Переход на другую полосу - это просто масштабирование.

На его основе получаем следующую схему для алгоритма:

Пирамидальные разбиения часто используются в субполосном кодировании. Для реализации этого разбиения можно создать собственный банк фильтров или воспользоваться существующими алгоритмами из теории субполосного кодирования. Например, пирамидой Лапласа.

мячин.ком