Programowanie Vocodera


11

Chcę zaprogramować własny syntezator wokodera, taki jak „Songify”, ale nie mogę znaleźć prostego algorytmu wokodera. Może możesz wyjaśnić lub powiedzieć, gdzie szukać informacji na temat działania wokodera.


3
DAFX autorstwa Udo Zölzera i in. Ma prosty wokoder fazowy z pewnym kodem MATLAB.
Phonon

1
Sprawdź Melodify SDK , robi to samo, a wersja próbna jest dostępna.
Danijel

Odpowiedzi:


18

Obawiam się, że wszystkie odpowiedzi tutaj nie mają znaczenia dla pytania. To, co nazywa się wokoderem w świecie produkcji muzycznej, ma niewiele wspólnego z wokoderem fazowym stosowanym w przetwarzaniu sygnału. Co gorsza, aplikacja Songify, do której odwołuje się oryginalny post, nie jest przykładem wokodera. Pozwól nam to rozwiązać!

1. Wokoder fazowy

Wokodera fazy odniesienia w innych odpowiedzi jest technika przetwarzania sygnałów, które mogą być wykorzystane do zmiany czasu / tonu sygnału (, zmiany wysokości tonu w czasie rozciągania) przez obliczanie reprezentacji czasowo-częstotliwościowej sygnału (krótkoterminowej transformacji Fouriera lub STFT), a następnie wstawianie / usuwanie ramek sygnału, a następnie utrzymywanie spójności informacji o fazie. Jego związek z głosem ma charakter historyczny i jest obecnie używany do zmiany wysokości dźwięku i rozciągania czasu w niższym sprzęcie / oprogramowaniu audio. RubberBand jest przykładem biblioteki zmiany czasu / wysokości tonu C ++ typu open source opartej na wokoderze fazowym.

2. Wokoder

Kiedy ludzie w dziedzinie produkcji muzycznej odnoszą się do Vocodera, odnoszą się do urządzenia wydobywającego obwiednię widmową sygnału (zwykle głos, zwany modulatorem) i filtrującego inny sygnał (zwykle bogatą teksturę syntezatora, zwaną nośną) z filtrem, którego odpowiedzią jest wydobyta obwiednia widmowa. Aby uzyskać przykład brzmienia, posłuchaj 0:23 w Kraftwerk Trans Europe Express lub Alana Parsonsa The Raven od kilku pierwszych sekund. Rezultatem jest wokalna barwa zastosowana do melodii lub akordów odtwarzanych przez sygnał nośny, dająca wrażenie, że głos jest wypowiadany przez syntezator.

Wokoder, który pierwotnie był urządzeniem analogowym, został zaimplementowany z dwoma rzędami kilkunastu lub więcej filtrów pasmowoprzepustowych o wysokim Q. Sygnał modulatora jest przesyłany przez pierwszy zestaw filtrów, a amplituda wszystkich sygnałów podpasmowych jest śledzona za pomocą tablica obserwujących koperty. Równolegle sygnał nośny jest wysyłany przez inny zestaw filtrów. Każde podpasmo jest wzmacniane (za pomocą VCA) z zyskami podanymi przez obserwujących obwiednię. Jeśli czytasz analog, możesz rzucić okiem na schematy kanału wokodera tutaj , z żywego Vocodera Jurgena Haible'a- na górze filtr sygnału modulatora, na dole filtr nośny i VCA. Implementacje oprogramowania wokoderów pozostają blisko tego, po prostu dlatego, że producenci muzyczni oczekują, że wokodery będą brzmieć jak klasyczne urządzenia analogowe! Ale jeśli nie chcesz wierności „klasycznym” urządzeniom i chcesz czegoś tańszego niż 40 biquadów, innym sposobem na osiągnięcie tego samego rezultatu jest oszacowanie filtra wielobiegunowego (rzędu 8 do 20 w zależności od tego, jak blisko chcesz dostać się do oryginalnego głosu) z sygnału modulatora (modelowanie AR); a następnie zastosuj ten filtr do przewoźnika. Typowy problem polega na tym, że będziesz musiał aktualizować współczynniki filtra co około 20 ms; więc potrzebujesz reprezentacji filtra wielobiegunowego, który dobrze radzi sobie z nagłymi aktualizacjami współczynników.

3. Automatyczne dostrajanie i remapowanie wysokości

Songify wykonuje następujące czynności: wyodrębnij prozodię (kontur wysokości dźwięku) nagranego głosu i zmień go tak, aby wynikowy kontur wysokości dźwięku pasował do melodii docelowej. Jest to trochę podobne do tego, co robi automatyczne dostrajanie, z tą różnicą, że automatyczne dostrajanie „zaokrągla” wysokość w kierunku najbliższego muzycznie dokładnego półtonu, podczas gdy Songify po prostu przesuwa wartość docelową.

Algorytmy, które tu działają, bardzo różnią się od tradycyjnego rozciągania czasu z przesunięciem tonu, ponieważ sygnał głosowy jest monofoniczny i dobrze pasuje do modelu filtra źródłowego. Podejścia takie jak Pitch-Time-Domain Synchronous-Overlap-Add (TD-PSOLA) są znacznie bardziej wydajne, zarówno pod względem obliczeniowym, jak i jakościowym, w celu transparentnego zmieniania wysokości głosu niż ogólne algorytmy rozciągania w czasie (zwykle wykonywane za pomocą wokoderów fazowych ). Są one używane na przykład w syntezie mowy do zmiany prozodii zdania syntezowanego - podobnie jak Songify! Automatyczne dostrajanie opiera się również na takich metodach w dziedzinie czasu (wykrywanie pełnych cykli fali wejściowej i ich ponowne próbkowanie).

Ilustracja PSOLA



2

Oto jeden link do pseudokodu w Mathworks.

Oto link opis algorytmu w DSP Dimensions.

Bin FFT ma częstotliwość środkową. Każda sinusoida przy tej dokładnej częstotliwości bin będzie miała tę samą fazę w odniesieniu do 2 punktów odniesienia przesuniętych dokładnie o 1 ramkę FFT od siebie, lub będzie miała fazę delta, którą można obliczyć dla 2 punktów odniesienia lub 2 ramek FFT w pewnej dowolnej odległości (być może nakładających się) . Podstawową ideą wokodera fazowego jest niewielkie dostosowanie każdej częstotliwości bin FFT do częstotliwości w pobliżu, tak aby sinusoid przy tej częstotliwości pasował do wykrytej fazy w punktach odniesienia 2 przesuniętych ramek FFT, jeśli częstotliwości środkowe bin FFT nie.

Te skorygowane częstotliwości można następnie wykorzystać do ziarnistej resyntezy kształtu fali, który wykazuje większą ciągłość w ramkach ponownie zsyntetyzowanych, nawet jeśli pierwotna sekwencja widm jest skalowana w dziedzinie częstotliwości lub czasu. Te częstotliwości przesunięcia można również wykorzystać do oszacowania częstotliwości lub jako część metody oszacowania wysokości tonu. Dzięki oszacowaniu wysokości tonu i resyntezie dźwięku można uzyskać jeden dźwięk i pchnąć resyntezę do czegoś, co brzmi prawie tak samo, z wyjątkiem innego tonu.


2

W poniższym artykule opisano krótkofalowy wokoder fazowy z transformatą Fouriera (STFT), a także technikę synchronicznego nachylenia-dodawania z podziałką (PSOLA) do radzenia sobie z modyfikacjami czasu i wysokości dźwięku sygnałów audio:

Moulines, E. i Laroche, J.
Nieparametryczne techniki modyfikacji mowy w skali wysokości i skali czasowej ”,
Speech Communication, 1995.
(niektóre wersje PDF dostępne w linkach od Google Scholar )

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.