Я хочу запрограммировать свой собственный синтезатор вокодера, такой как "Songify", но я не могу найти простой алгоритм вокодера. Может быть, вы можете объяснить или сказать, где искать информацию о том, как работает вокодер.
audio
algorithms
voice
Ритис Алекна
источник
источник
Ответы:
Я боюсь, что все ответы здесь не имеют отношения к вопросу. То, что называется вокодером в мире производства музыки, имеет мало общего с фазовым вокодером, используемым при обработке сигналов. Что еще хуже, приложение Songify, на которое ссылается исходное сообщение, не является примером вокодера. Давайте разберемся с этим!
1. Фазовый вокодер
Фазы вокодер ссылается на других ответах представляет собой метод обработки сигналов , который может быть использован для выполнения времени / шаг модификации сигналов (время растяжения, шаг сдвига), путем вычисления частотно-временного представления сигнала (краткосрочное преобразование Фурье или STFT) и затем вставляют / удаляют сигнальные кадры и затем поддерживают согласованность информации о фазе. Его отношение к голосу является только историческим, и в настоящее время оно используется для изменения высоты тона и растяжения времени в низкоуровневом аудиооборудовании / программном обеспечении. RubberBand - это пример библиотеки C ++ с открытым исходным кодом для изменения времени и высоты тона, основанной на фазоводере.
2. Вокодер
Когда люди в области музыкального производства относятся к вокодеру, они относятся к устройству, извлекающему огибающую спектра сигнала (обычно голосового, называемого модулятором), и фильтрующему другой сигнал (обычно богатую текстуру синтезатора, называемую носителем). с фильтром, ответом которого является извлеченная огибающая спектра. Для примера получающегося звука, послушайте 0:23 в Kraftwerk Trans Europe Express или проект Алана Парсонса The Raven с первых секунд. Результирующий эффект представляет собой вокальный тембр, применяемый к мелодии или аккордам, воспроизводимым сигналом-носителем, создавая ощущение, что голос звучит через синтезатор.
Первоначально вокодер являлся аналоговым устройством, он был реализован с двумя банками из дюжины или более полосовых фильтров с высоким Q. Сигнал модулятора посылается через первый банк фильтров, а амплитуда всех сигналов поддиапазона отслеживается с помощью массив конвертов последователей. Параллельно сигнал несущей передается через другой банк фильтров. Каждый поддиапазон усиливается (с помощью VCA) с усилениями, полученными от последователей огибающей. Если вы читаете аналог, вы можете взглянуть на схему канала вокодера здесь , от живого вокодера Юргена Хайбла.- сверху фильтр сигналов модулятора, внизу фильтр несущей и VCA. Программные реализации вокодеров остаются близкими к этому просто потому, что производители музыки ожидают, что вокодеры будут звучать как классические аналоговые устройства! Но если вы не хотите верности «винтажным» устройствам и хотите что-то дешевле, чем 40 биквад, другой способ достичь того же результата - оценить всеполюсный фильтр (порядка 8–20 в зависимости от того, насколько близко вы хотите добраться до оригинального голоса) из модулятора сигнала (AR-моделирование); а затем применить этот фильтр к перевозчику. Типичная проблема здесь заключается в том, что вам нужно будет обновлять коэффициенты фильтра каждые 20 мс или около того; поэтому вам нужно представление всеполюсного фильтра, который хорошо обрабатывает резкие обновления коэффициентов.
3. Автонастройка и переназначение высоты звука
Songify делает следующее: извлекает просодию (контур основного тона) записанного голоса и изменяет его так, чтобы результирующий контур основного тона соответствовал целевой мелодии. Это немного похоже на то, что делает автонастройка, с той разницей, что автонастройка «округляет» высоту звука до ближайшего музыкально точного полутона, тогда как Songify просто толкает его к целевому значению.
Алгоритмы, работающие здесь, очень отличаются от традиционного растяжения времени со смещением высоты тона, потому что речевой сигнал является однотонным и хорошо соответствует модели фильтра источника. Подходы, такие как синхронизация с наложением основного тона во временной области (TD-PSOLA), гораздо более эффективны как в вычислительном отношении, так и с точки зрения качества, для прозрачного изменения высоты голоса, чем общие алгоритмы растяжения во времени (обычно это делается с помощью фазовых вокодеров). ). Они используются, например, в синтезе речи, чтобы изменить прозодию синтезированного предложения - в действительности, в отличие от Songify! Автонастройка также основана на таких методах во временной области (обнаружение полных циклов формы входного сигнала и их повторная дискретизация).
источник
У Дана Эллиса есть несколько очень хороших примеров Matlab на этой странице: http://www.ee.columbia.edu/~dpwe/resources/matlab/pvoc/
источник
Вот одна ссылка на псевдокод в Mathworks.
Вот ссылка на описание алгоритма в DSP Dimensions.
Бин FFT имеет центральную частоту. Любая синусоида на этой частоте дискретизации будет иметь одинаковую фазу со ссылкой на 2 опорные точки, смещенные ровно на 1 кадр FFT, или иметь дельта-фазу, которую можно рассчитать для 2 опорных точек или 2 кадров FFT на некотором произвольном расстоянии друг от друга (возможно, с перекрытием) , Основная идея фазового вокодера состоит в том, чтобы слегка отрегулировать частоту каждой ячейки БПФ на частоте поблизости, чтобы синусоида на этой частоте соответствовала обнаруженной фазе в опорных точках 2 смещенных кадров БПФ, если центральные частоты бина БПФ не совпадают.
Эти скорректированные частоты могут затем использоваться для гранулярного ресинтеза формы волны, которая демонстрирует большую непрерывность в повторно синтезированных кадрах, даже если исходная последовательность спектров масштабируется в частотной или временной областях. Эти частоты смещения также могут использоваться для оценки частоты или как часть способа оценки основного тона. С оценкой основного тона плюс повторным синтезом звука можно было бы взять звук с одной высоты звука и подтолкнуть ресинтез к чему-то, что звучит почти одинаково, за исключением другой высоты звука.
источник
В следующей статье описывается фазовый вокодер, основанный на кратковременном преобразовании Фурье (STFT), а также метод синхронного перекрытия с добавлением основного тона (PSOLA) для изменения временных характеристик и изменения высоты звука аудиосигналов:
Moulines, E. & Laroche, J.
" Непараметрические методы для изменения высоты тона и временной шкалы речи ",
Speech Communication, 1995.
(некоторые версии в формате PDF доступны по ссылкам от Google scholar )
источник