Programando um Vocoder


11

Quero programar meu próprio sintetizador de vocoder como "Songify", mas não consigo encontrar um simples algoritmo de vocoder. Talvez você possa explicar ou dizer onde procurar informações sobre como o vocoder funciona.


3
O DAFX de Udo Zölzer et al. Possui um vocoder de fase simples com algum código MATLAB.
Phonon

1
Verifique o Melodify SDK , ele faz a mesma coisa e a demonstração está disponível.
Danijel 28/11

Respostas:


18

Receio que todas as respostas aqui sejam irrelevantes para a pergunta. O que é chamado de vocoder no mundo da produção musical tem pouco a ver com o vocoder de fase usado no processamento de sinais. Para piorar a situação, o aplicativo Songify mencionado na postagem original não é um exemplo de vocoder. Vamos resolver isso!

1. Vocoder de fase

O vocoder de fase referenciado pelas outras respostas é uma técnica de processamento de sinal que pode ser usada para realizar modificações no tempo / tom dos sinais (alongamento do tempo, deslocamento do tom), calculando uma representação do sinal no tempo (frequência de curto prazo) , ou STFT) e, em seguida, inserindo / removendo os quadros de sinal e mantendo a coerência das informações da fase. Sua relação com a voz é apenas histórica e atualmente é usada para alteração de pitch e alongamento de tempo em hardware / software de áudio de gama baixa. O RubberBand é um exemplo de biblioteca de alteração de tempo / afinação de código-fonte C ++ baseada em um codificador de fase.

2. Vocoder

Quando as pessoas no campo da produção musical se referem a um Vocoder, elas se referem a um dispositivo que extrai o envelope espectral de um sinal (geralmente voz, chamado modulador) e filtra um outro sinal (geralmente uma textura sintética rica, chamada de transportadora) com um filtro cuja resposta é o envelope espectral extraído. Para um exemplo de som resultante, ouça 0:23 no Kraftwerk Trans Europe Express ou no Project The Raven , de Alan Parsons, nos primeiros segundos. O efeito resultante é um timbre de voz aplicado à melodia ou acordes tocados pelo sinal de portadora, dando a sensação de que uma voz é falada através de um sintetizador.

Sendo o vocoder originalmente um dispositivo analógico, ele foi implementado com dois bancos de uma dúzia ou mais de filtros de banda com alto Q. O sinal do modulador é enviado através do primeiro banco de filtros e a amplitude de todos os sinais de sub-banda é rastreada com um matriz de seguidores de envelope. Paralelamente, o sinal da operadora é enviado através de outro banco de filtros. Cada sub-banda é amplificada (com um VCA) com os ganhos dados pelos seguidores do envelope. Se você lê analógico, pode ver os esquemas de um canal de vocoder aqui , do Vocoder vivo de Jurgen Haible- em cima do filtro de sinal do modulador, na parte inferior, o filtro transportador e o VCA. As implementações de software de vocoders ficam perto disso, simplesmente porque os produtores de música esperam que os vocoders soem como os dispositivos analógicos clássicos! Mas se você não quer fidelidade aos dispositivos "antigos" e quer algo mais barato que 40 biquads, outra maneira de obter o mesmo resultado é estimar um filtro de todos os pólos (da ordem de 8 a 20, dependendo da distância que você deseja para chegar à voz original) a partir do sinal do modulador (modelagem AR); e depois aplique esse filtro ao transportador. O problema típico aqui é que você precisará atualizar seus coeficientes de filtro a cada quadro de 20 ms ou mais; então você precisa de uma representação do filtro de todos os pólos que lida com atualizações de coeficientes bem abruptas.

3. Ajuste automático e remapeamento de afinação

O que o Songify faz é o seguinte: extraia a prosódia (contorno do tom) da voz gravada e altere-a para que o contorno do tom resultante corresponda à melodia alvo. Isso é um pouco semelhante ao que o autoajuste faz, com a diferença de que o autoajuste "arredonda" o tom em direção ao semitom musicalmente mais próximo, enquanto o Songify apenas pressiona um valor-alvo.

Os algoritmos em ação aqui são muito diferentes dos alongamentos de tempo com mudança de tom tradicional, porque o sinal de voz é monofônico e se encaixa bem no modelo de filtro de fonte. Abordagens como TD-PSOLA (Pitch-Synchronous-Overlap-Add) no domínio do tempo são muito mais eficientes, tanto computacionalmente quanto em termos de qualidade, para alterar de forma transparente o tom de voz do que algoritmos genéricos de alongamento de tempo (geralmente feitos com vocodificadores de fase). ) Eles são usados, por exemplo, na síntese de fala para alterar a prosódia de uma sentença sintetizada - não muito diferente do Songify! O autoajuste também se baseia em tais métodos no domínio do tempo (detectando ciclos completos da forma de onda de entrada e reamostrando-os).

Ilustração PSOLA



2

Aqui está um link para pseudo-código no Mathworks.

Aqui está um link para uma descrição do algoritmo em DSP Dimensions.

Uma bandeja FFT tem uma frequência central. Qualquer sinusóide nessa freqüência exata do compartimento terá a mesma fase com referência a 2 pontos de referência compensados ​​com exatamente 1 quadro FFT distante ou com uma fase delta que pode ser calculada para 2 pontos de referência ou 2 quadros FFT a alguma distância arbitrária (talvez sobreposição) . A idéia básica de um vocoder de fase é ajustar levemente cada frequência do compartimento da FFT para uma frequência próxima, para que um senoide nessa frequência corresponda à fase detectada nos pontos de referência de 2 quadros de deslocamento da FFT, se as frequências centrais do compartimento da FFT não o fizerem.

Essas frequências ajustadas podem então ser usadas para uma ressíntese granular de uma forma de onda que exibe mais continuidade através de quadros ressintetizados, mesmo se a sequência original de espectros for dimensionada nos domínios de frequência ou tempo. Essas frequências de deslocamento também podem ser usadas para estimativa de frequência ou como parte de um método de estimativa de pitch. Com a estimativa de tom mais a ressíntese do som, é possível ouvir um som em um tom e empurrá-lo para algo que soa quase o mesmo, exceto em outro tom.


2

O artigo a seguir descreve um vocoder de fase baseado em transformação de Fourier (STFT) de curto período de tempo, bem como uma técnica de sobreposição síncrona de adição (PSOLA) para lidar com modificações de tempo e tom de sinais de áudio:

Moulines, E. & Laroche, J.
" Técnicas não paramétricas para modificação da fala em escala de tom e escala de tempo ",
Speech Communication, 1995.
(algumas versões em PDF estão disponíveis nos links do google scholar )

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.