Fatoração matricial não negativa para separação de áudio - por que funciona?

8

A fatoração de matriz não negativa visa fatorar uma matriz V no produto de duas matrizes, V=WH, Onde W representa um conjunto de vetores de base e Hsuas ativações ou pesos. Aplicado à separação da fonte de áudio,V é o espectrograma (que é conhecido por nós) e W é o espectro não negativo básico, H são suas ativações temporais.

Parece que sou capaz de expressar um espectrograma como uma soma de diferentes caixas de frequência e suas magnitudes - o que ajudaria a filtrar ou separar diferentes arremessos (aparentemente fazendo o trabalho de um filtro passa-banda normal?). Eu não entendo como isso realmente separaria, digamos, um piano e um cantor cantando o mesmo tom ou similar.

Samyukta Ramnath
fonte
para notas musicais com harmônicos, talvez um banco de filtros comb seja melhor do que um banco de filtros passa-banda que sintonizariam apenas o fundamental (ou talvez outro harmônico). o dente de frequência mais baixa dos filtros de pente seria girado para a mesma frequência que os BPFs. portanto, o espectrograma poderia ser considerado a soma de diferentes frequências afinadas com seus harmônicos. haveria alguma sobreposição.
Robert Bristow-johnson

Respostas:

7

Lembre-se de que as colunas de W pode ser visto como vetores "básicos" (ou elementos de um dicionário - os blocos de construção de qualquer sinal) e elementos em cada coluna Hforneça os pesos correspondentes (que variam com o tempo). Isso nos permite decompor o espectrograma com base não apenas em componentes de frequência, mas também em informações de início temporal; portanto, faz mais do que o que um simples filtro passa-banda ou filtro pente faria.

A fatoração matricial não negativa de um espectrograma não separa magicamente um piano e um cantor cantando no mesmo tom. No entanto, fornece uma aproximação útil em termos de uma soma de vetores de base ponderada que (esperançosamente) podem ser divididos em contribuições de diferentes fontes, porque é improvável que cada fonte ocupe exatamente a mesma faixa de frequência exatamente no mesmo instante.

Mais concretamente, vamos V estar M×N, W estar M×K e H estar K×N. Então nós temosM caixas de frequência, N amostras de tempo e Kcomponentes decompostos. E sewi são as colunas de W e hi são as linhas de H nós podemos escrever:

Vi=1KwihiT.
Se sabemos que existem apenas duas fontes na gravação (piano e cantor), podemos tentar dividir suas contribuições escolhendo subconjuntos das colunas de W e subconjunto correspondente das linhas de H. Então seS{1,,K} então a parte contribuída pelo piano pode ser indicada por:
Vpiano=iSwihiT
e a parte contribuída pelo cantor é:
Vsinger=i{1,,K}SwihiT

Na realidade, provavelmente acabaremos com uma decomposição que nunca atinge exatamente essa separação. Ou seja, haveráwique têm contribuições tanto do cantor quanto do piano, dificultando a separação dos dois.

Aqui está um caderno Python mostrando este procedimento para uma mistura de bateria e guitarra: http://nbviewer.jupyter.org/gist/ingle/93de575aac6a4c7fe9ee5f3d5adab98f (ou, se isso não funcionar, aqui: https://gist.github.com / ingle / 93de575aac6a4c7fe9ee5f3d5adab98f )

Observe que o algoritmo NMF gera apenas uma decomposição. Não pode selecionar subconjuntos de{wi}correspondente a cada fonte. No exemplo do Python, há uma etapa manual de descobrir quaiswiO som é mais parecido com a guitarra v / s drum. Pode-se talvez automatizar essa etapa observando que o tamborwi vetores têm mais coisas em frequências mais baixas.

Analisar cada coluna (quadro) do espectrograma usando um banco de filtros passa-banda é outra maneira de decompor o espectrograma. No entanto, observe que a decomposição gerada pelo NMF é baixa, ou seja, parcimoniosa. No exemplo do Python, era muito mais fácil selecionar manualmente subconjuntos de 16 colunas deWcorrespondente às duas fontes. Com um banco de filtros passa-banda, teríamos que girar muito mais botões (# filtros, localizações das faixas-passe para cada quadro) e o número de combinações de parâmetros pode crescer muito rapidamente.

Referências:

https://ccrma.stanford.edu/~njb/teaching/sstutorial/part2.pdf

http://musicinformationretrieval.com/nmf.html

Atul Ingle
fonte
1
Pyhton ligação notebook não está funcionando
soultrane
1
quando o cantor e o piano estão cantando a mesma nota (mesma classe de afinação e mesma oitava), como é que o conjunto S e defina o conjunto correspondente para o cantor (que você está denotando como {1,,K}S) seria diferente?
Robert Bristow-johnson
@ robertbristow-johnson, você está certo - nesse caso, minha descrição não é precisa. No entanto, assumi que é muito improvável que o cantor e o piano estivessem cantando exatamente a mesma nota, exatamente no mesmo instante instantâneo / idêntico. Portanto, há esperança de que possamos dividi-lo em subconjuntos disjuntos. Caso contrário, haveráWEué que terão contribuições de ambas as fontes.
Atul Ingle
@soultrane link corrigido.
Atul Ingle
1
É diferente porque o uso de um banco de filtros passa-banda gera uma decomposição "mais densa", enquanto o NMF fornece uma decomposição "mais esparsa". A decomposição gerada pelo NMF é baixa e parcimoniosa. No exemplo do Python, era muito mais fácil selecionar manualmente subconjuntos de 16 colunas deWcorrespondente às duas fontes. Com um banco de filtros passa-banda, teríamos que girar muito mais botões (# filtros, localizações das faixas-passe para cada quadro) e o número de combinações de parâmetros pode crescer muito rapidamente.
Atul Ingle
0

Objetivo: boa aproximação de separar um cantor de um piano. Agora, algumas considerações sobre os requisitos para uma separação precisa das fontes sonoras, uma vez que é improvável que TODAS as informações de entrada sejam necessárias para fazer uma separação precisa (possivelmente seus "vetores básicos"):
- para cada volume de cada nota do piano, o resultado distribuição de frequência amostrada ao longo do tempo (conforme ataca e desaparece). - para cada nota X volume X fonema dos cantores exprime a distribuição de frequências (e sua variação com vários níveis de vibrato). - para todos os itens acima, o efeito de reverberação deve ser considerado. - a letra da música (para combinar com os fonemas do cantor)

Também existem restrições no domínio do tempo, como cada nota de piano deve começar com o ataque e os efeitos do pedal de sustentação do piano (amortecimento repentino quase simultâneo de notas que estavam "tocando", embora as teclas correspondentes tenham sido liberadas)

Dado o exposto acima, a busca é a soma "melhor ajuste" de um conjunto de espectros de notas de piano e um espectro de fone-volume-fonema de uma única nota do cantor para aproximar o som resultante.

Bgr967dhr
fonte