Програмування вокодера


11

Я хочу запрограмувати власний синтезатор вокодера на зразок "Songify", але я не можу знайти простий алгоритм вокодера. Можливо, ви можете пояснити або розповісти, де шукати інформацію про те, як працює вокодер.


3
DAFX від Udo Zölzer та ін. Має простий фазовий вокодер з деяким кодом MATLAB.
Фонон

1
Перевірте Melodify SDK , він робить те ж саме, і демо-пробна версія доступна.
Danijel

Відповіді:


18

Я боюся, що всі відповіді тут не мають значення для питання. Те, що називають вокодером у світі виробництва музики, мало стосується фазового вокодера, який використовується при обробці сигналу. Що ще гірше, додаток Songify, на яке посилається оригінальний пост, не є прикладом вокодера. Давайте розберемося з цим!

1. Фазовий вокодер

Фази вокодер посилається на інших відповідях є метод обробки сигналів , який може бути використаний для виконання часу / крок модифікації сигналів (час розтягування, крок зсуву), шляхом обчислення частотно-часового подання сигналу (короткострокове перетворення Фур'є або STFT), а потім вставляти / видаляти сигнальні кадри та підтримувати когерентність фазової інформації. Його стосунки до голосу є лише історичними, і в даний час він використовується для зміщення висоти та розтягування часу в апаратному / програмному забезпеченні нижчого класу. RubberBand - приклад бібліотеки змін C ++ з відкритим вихідним кодом C ++ на основі фазового вокодера.

2. Вокодер

Коли люди в галузі музичного виробництва посилаються на Vocoder, вони посилаються на пристрій, що витягує спектральну оболонку сигналу (як правило, голос, який називається модулятором), і фільтрує інший сигнал (як правило, насичена текстура синтезатора, який називається носієм) з фільтром, відгуком якого є витягнута спектральна оболонка. Для прикладу звуку, що виходить, прослухайте 0:23 у Kraftwerk Trans Europe Express або в проекті Алана Парсонса « Ворон» за кілька перших секунд. Отриманий ефект - це голосоподібний тембр, застосований до мелодії або акордів, відтворених сигналом носія, що дає відчуття, що голос вимовляється через синтезатор.

Вокодер, який спочатку був аналоговим пристроєм, реалізувався з двома банками з десятка або більше смугових фільтрів з високою Q. Сигнал модулятора надсилається через перший банк фільтрів, а амплітуда всіх сигналів піддіапазону відстежується масив послідовників конвертів. Паралельно сигнал несучої передається через інший банк фільтрів. Кожна піддіапазон посилюється (з VCA) із посиленнями, отриманими послідовниками конвертів. Якщо ви читаєте аналог, ви можете подивитися схеми каналу вокодера тут , від живого вокодера Юргена Хайбле.- зверху фільтр сигналу модулятора, знизу фільтр несучої та VCA. Програмна реалізація вокодерів залишається близько до цього, просто тому, що виробники музики очікують, що вокодери звучать як класичні аналогові пристрої! Але якщо ви не хочете відданості «старовинним» пристроям і хочете чогось дешевшого, ніж 40 біквад, інший спосіб досягти того ж результату - це оцінити повнополюсний фільтр (порядку 8 до 20 залежно від того, наскільки близько ви хочете дістатися до початкового голосу) від сигналу модулятора (AR-моделювання); а потім застосуйте цей фільтр до носія. Типова проблема тут полягає в тому, що вам потрібно буде оновлювати свої коефіцієнти фільтра кожні 20 мс або близько того; тому вам потрібне представлення багатополюсного фільтра, який обробляє добре різкі оновлення коефіцієнтів.

3. Автонастройка та перестановка тону

Що робить Songify, це: витягнути просодію (контур тону) записаного голосу та змінити його так, щоб контур отриманого тону відповідав цільовій мелодії. Це трохи схоже на те, що робить автоматична настройка, з тією різницею, що автоматична настройка «обводить» крок до найближчого музично точного півтону, а Songify просто підсуває його цільовому значенню.

Алгоритми роботи тут сильно відрізняються від традиційних часових розтяжок, що змінюються висотою, тому що голосовий сигнал є монофонічним і добре відповідає моделі фільтра джерела. Такі підходи, як Pitch-Synchronous-Overlap-Add (TD-PSOLA) Time-Domain набагато ефективніші, як обчислювально, так і з точки зору якості, прозоро змінюють висоту голосу, ніж загальні алгоритми розтягування часу (зазвичай це робиться з фазовими вокодерами ). Вони використовуються, наприклад, у синтезі мовлення, щоб змінити просодію синтезованого речення - на відміну від Songify! Автонастройка також ґрунтується на таких методах часової області (виявлення повних циклів форми вхідної хвилі та переупорядкування їх).

Ілюстрація PSOLA



2

Ось одне посилання на псевдо-код у Mathworks.

Ось посилання на опис алгоритму в DSP Dimensions.

FFT бункер має центральну частоту. Будь-який синусоїд на такій точній частоті біна буде мати однакову фазу з посиланням на 2 опорні точки, зміщені рівно на один кадр FFT, або мати фазу дельти, яку можна обчислити для 2 опорних точок або 2 кадрів FFT на деякій довільній відстані (можливо, що перекривається) . Основна ідея фазового вокодера полягає в тому, щоб трохи відрегулювати кожну частоту біт FFT до частоти поблизу, щоб синусоїда на цій частоті відповідала виявленій фазі в опорних точках 2 зміщених кадрів FFT, якщо центральні частоти бін FFT не відповідають.

Ці відрегульовані частоти потім можуть бути використані для зернистого ресинтезу форми хвилі, що демонструє більшу безперервність у ресинтезованих кадрах, навіть якщо початкова послідовність спектрів масштабується в частотних або часових областях. Ці зміщені частоти також можуть використовуватися для оцінки частоти або як частина методу оцінки кроку. Завдяки оцінці тону плюс ресинтезу звуку можна було б отримати звук на одному кроці і підштовхнути ресинтез до чогось, що звучить майже так само, за винятком іншого інтенсивності.


2

Наступна стаття описує фазовий вокодер на основі перетворення Фур'є (STFT), а також техніку синхронного накладення та нахилу тону (PSOLA) для вирішення змін та часу звукових сигналів:

Moulines, E. & Laroche, J.
" Непараметричні прийоми модифікації мовлення в масштабі та часовій шкалі ",
Speech Communication, 1995.
(деякі версії PDF доступні за посиланнями з google вченого )

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.