Что лучше: PSOLA или WSOLA для растяжки / перенастройки вокала?
Я хочу реализовать алгоритм изменения высоты тона во временной области, такой как PSOLA (синхронное перекрытие и добавление высоты тона) или WSOLA (перекрытие и добавление подобия формы волны).
На данный момент я использую PSOLA, но мне кажется, что WSOLA будет более устойчивым к полифоническим сигналам со сложной формой волны, тогда как PSOLA лучше работает с монофоническими сигналами, такими как вокал. Я считаю, что с помощью WSOLA было бы лучше ориентироваться на будущее, хотя сейчас меня интересуют только монофонические сигналы.
Мне интересно, есть ли какие-либо недостатки в использовании WSOLA по сравнению с PSOLA.
Кажется, что оба метода работают одинаково, оба идентифицируют повторение в форме волны, хотя WSOLA не обязательно привязан к основному. Делает ли фундаментальная блокировка PSOLA лучше для вокала?
Если быть более точным, я пытаюсь понять преимущества и недостатки WSOLA vs PSOLA для следующих задач:
- Коррекция высоты тона
- Коррекция времени
- Формантная коррекция
Ответы
Если быть более точным, я пытаюсь понять преимущества и недостатки WSOLA vs PSOLA для следующих задач:
Коррекция высоты звука:
- PSOLA - Преимущества: вы можете изменять высоту тона непосредственно в интервале скоростей между зернами, сохранять форманты нетронутыми ... чтобы изменить высоту тона, вам не нужна шкала времени, и выполнить повторную выборку после.
- PSOLA - Недостаток: нужен ли вам сверхмощный детектор высоты тона
- WSOLA - Недостаток WSOLA - это не один алгоритм Pitch Shift, WSOLA - это один алгоритм временной шкалы, для изменения высоты звука потребуется шкала времени и их повторная выборка, форманты будут потеряны, поэтому вам, возможно, понадобится один вид автокорреляции, чтобы найти хорошие места для нарезки, поэтому это не то же самое, что информация о высоте тона, если вы строите автоматическую коррекцию высоты звука, одна базовая автокорреляция не даст вам правильную информацию о высоте.
- WSOLA - одно из преимуществ здесь заключается в том, что он не зависит от высоты тона для среза, просто срезайте схожесть с наилучшим совпадением, помните, что это всего лишь алгоритм шкалы времени, вам потребуется повторная выборка для изменения высоты тона
Коррекция времени:
Что касается шкалы времени, я думаю, что WSOLA имеет лучшее преимущество здесь или какой-либо TDHS
основанный на ней алгоритм, да, вы можете использовать PSOLA для временной шкалы и применять сдвиг высоты тона вместе, просто сдвиг высоты тона или просто шкалу времени, но если вы просто масштабируете время, WSOLA - один из умных выбор, нет необходимости создавать детектор Ultra Pitch в WSOLA, только одна форма волны, подобным образом, решит вашу проблему (AutoCorrelation может решить ...)
Формантная коррекция:
- PSOLA - форманты по умолчанию будут неприкосновенными, но форманты можно и деформировать, в PSOLA это потрясающе ...
- WSOLA - после временной шкалы и повторной выборки ваши форманты будут потеряны, и для получения исходных формант вам нужно будет получить форманты в спектральной огибающей из исходного сигнала и применить их к сигналу со сдвигом высоты тона, вы можете сделать это с помощью фильтра нижних частот в спектрального, используйте пиковую съемку и интерполируйте или используйте кепстр, чтобы получить огибающую ...
Я знаю, что PSOLA бесконечно сложнее, но я считаю этот алгоритм действительно отличным, если у вас есть приличный PitchTrack, он даст вам большую универсальность.
Я думаю, вы правы, что WSOLA лучше для полифонии, но в этом методе все еще есть глюки. Причина, по которой это немного лучше, заключается в том, что алгоритм определения шага ищет только хорошие смещения стыка. Если это на октаву меньше, это не повредит вам так сильно, потому что соединение все еще хорошее. Однако, если сдвиг высоты тона негармонического аккорда нот (скажем, уменьшенного аккорда), тогда не будет хороших смещений сращивания, поэтому вы в конечном итоге выберете тот, который наименее плох.
Теперь PSOLA требует точного знания высоты звука, и октавные ошибки будут звучать как октавные ошибки. Но именно такой метод изменения высоты звука вам нужен для вокала, и статья, на которую я указываю, объясняет, почему.
Но масштабирование по времени - это не совсем сдвиг высоты тона. При масштабировании чего-либо, включая вокал, не используйте PSOLA. Используйте либо WSOLA, либо метод частотной области, например фазовый вокодер.