PSOLA ou WSOLA são melhores para alongamento / afinação vocal?
Estou procurando implementar um algoritmo de modificação de pitch no domínio do tempo, como PSOLA (Pitch Synchronous Overlap and Add) ou WSOLA (Waveform Similarity Overlap and Add).
No momento estou usando PSOLA, mas me parece que WSOLA seria mais robusto para sinais polifônicos com formas de onda complexas, enquanto PSOLA funciona melhor com sinais monofônicos, como vocais. Acho que poderia ser melhor ficar à prova de futuro usando WSOLA, embora eu esteja interessado apenas em sinais monofônicos por enquanto.
Estou me perguntando se há alguma desvantagem em usar WSOLA em oposição ao PSOLA.
Parece que ambas as técnicas funcionam de maneira semelhante, ambas identificando a repetição dentro da forma de onda, embora WSOLA não necessariamente bloqueie a fundamental. O bloqueio fundamental torna o PSOLA superior para vocais?
Para ser mais preciso, estou tentando descobrir as vantagens e desvantagens de WSOLA versus PSOLA para as seguintes tarefas:
- Correção de tom
- Correção de tempo
- Correção de Formante
Respostas
Para ser mais preciso, estou tentando descobrir as vantagens e desvantagens de WSOLA versus PSOLA para as seguintes tarefas:
Correção de tom:
- PSOLA - Vantagens você pode alterar o pitch diretamente baseado na taxa de espaçamento entre os grãos, manter os formantes intactos ... para alterar o pitch você não precisa de escala de tempo e depois reamostrar.
- PSOLA - Desvantagem você precisa de um detector de pitch super potente
- WSOLA - Desvantagem WSOLA não é um algoritmo de Pitch Shift, WSOLA é um algoritmo de Escala de Tempo, para mudar o tom será necessário escala de tempo e eles serão reamostrados, os formantes serão perdidos, então talvez você precise apenas de um tipo de autocorrelação para encontrar lugares agradáveis para fatiar, por isso não é o mesmo que informações de pitch, se você estiver construindo uma correção automática de pitch, uma autocorrelação básica não fornecerá as informações de pitch corretas.
- WSOLA - uma das vantagens aqui é que não depende do pitch para cortar, apenas fatia na melhor correspondência de similaridade, lembre-se de que é apenas um algoritmo de escala de tempo, você precisará fazer uma nova amostra para alterar o pitch
Correção de tempo:
Para escala de tempo, acho que o WSOLA tem a melhor vantagem aqui ou algum TDHS
algoritmo baseado, simh, você pode usar PSOLA para dimensionar o tempo e aplicar a mudança de tom juntos, apenas a mudança de tom ou apenas a escala de tempo, mas se você está apenas dimensionando o tempo, WSOLA é inteligente escolha, não há necessidade de construir um Ultra Pitch Detector em WSOLA, apenas uma semelhança de forma de onda resolverá seu problema (AutoCorrelação pode resolver ...)
Correção de Formante:
- PSOLA - por padrão os formantes serão intocáveis, mas você também pode deformar os formantes, é incrível no PSOLA ...
- WSOLA - depois que a escala de tempo e a reamostragem de seus formantes serão perdidos e para obter os formantes originais, você precisará obter os formantes no envelope espectral do sinal original e aplicá-los no sinal Pitch Shifted, você pode fazer isso usando um filtro passa-baixo em o espectral, use uma seleção de pico e interpole ou use um cepstrum para obter o envelope ...
Eu sei que o PSOLA é infinitamente mais complexo, mas eu considero esse algoritmo muito bom, se você tiver um PitchTrack decente ele vai te dar uma grande versatilidade
Acho que você está certo de que WSOLA é melhor para polifônicos, mas ainda há falhas nesse método. A razão pela qual é um pouco melhor é porque o algoritmo de detecção de inclinação está procurando apenas bons deslocamentos de emenda. Se estiver a uma oitava de distância, isso não o prejudicará tanto porque a emenda ainda está boa. No entanto, se a afinação for deslocada em um acorde não harmônico de notas (digamos, um acorde diminuto), não haverá bons deslocamentos de junção, então você acaba escolhendo aquele que é menos ruim.
Agora o PSOLA exige saber exatamente que os erros de afinação e oitava soarão como erros de oitava. Mas esse é o método de mudança de tom que você deseja para vocais e o papel que estou apontando explica o porquê.
Mas a escala de tempo não é exatamente uma mudança de tom. Quando escalar o tempo de qualquer coisa, incluindo vocais, não use PSOLA. Use WSOLA ou um método de domínio de frequência como um vocoder de fase.