Qual metodologia usar para discriminação de diferentes tons (musicais?)

12

Estou tentando pesquisar e descobrir a melhor forma de atacar esse problema. Ele abrange o processamento de música, processamento de imagens e processamento de sinais, e, portanto, existem inúmeras maneiras de analisar isso. Eu queria perguntar sobre as melhores maneiras de abordá-lo, já que o que pode parecer complexo no domínio puro sig-proc pode ser simples (e já resolvido) por pessoas que fazem processamento de imagem ou música. De qualquer forma, o problema é o seguinte:insira a descrição da imagem aqui

Se você perdoa minha mão desenhando o problema, podemos ver o seguinte:

Na figura acima, tenho 3 tipos diferentes de sinais. O primeiro é um pulso que meio que 'aumenta' a frequência de a f 4 e depois se repete. Tem uma duração de pulso específica e um tempo de repetição de pulso específico.f1f4

O segundo existe apenas em , mas possui um comprimento de pulso mais curto e uma frequência de repetição de pulso mais rápida.f1

Finalmente, o terceiro é simplesmente um tom em .f1

O problema é: de que maneira eu abordo esse problema, para que eu possa escrever um classificador que possa discriminar entre o sinal 1, o sinal 2 e o sinal 3. Ou seja, se você alimentá-lo com um dos sinais, deve poder dizer que esse sinal é assim e assim. Qual melhor classificador me daria uma matriz de confusão diagonal?

Algum contexto adicional e o que tenho pensado até agora:

Como eu disse, isso abrange vários campos. Eu queria saber quais metodologias já poderiam existir antes de me sentar e entrar em guerra com isso. Não quero inventar inadvertidamente a roda. Aqui estão alguns pensamentos que tive olhando de diferentes pontos de vista.

Ponto de vista do processamento de sinais: uma coisa que eu observei foi fazer uma análise cepstral e, possivelmente, usar a largura de banda Gabor do cepstrum para discriminar o sinal 3 do outro 2 e medir o pico mais alto do cepstrum para discriminar o sinal. 1 do sinal-2. Essa é a minha solução atual de processamento de sinais.

Ponto de vista do processamento de imagens: Aqui estou pensando, pois, de fato, posso criar imagens vis-à-vis os espectrogramas; talvez eu possa aproveitar algo desse campo? Eu não estou intimamente familiarizado com esta parte, mas que tal detectar uma 'linha' usando a Transformação de Hough e, de alguma forma, 'contar' as linhas (e se elas não forem linhas e bolhas?) E partir daí? É claro que em qualquer momento em que tomo um espectrograma, todos os pulsos que você vê podem ser alterados ao longo do eixo do tempo, o que importa? Não tenho certeza...

Ponto de vista do processamento de música: Um subconjunto de processamento de sinal, com certeza, mas me ocorre que o sinal-1 tem uma certa qualidade, talvez repetitiva (musical?), Que as pessoas no processo de música veem o tempo todo e já resolveram o problema. talvez instrumentos discriminatórios? Não tenho certeza, mas o pensamento me ocorreu. Talvez esse ponto de vista seja a melhor maneira de analisá-lo, pegando um pedaço do domínio do tempo e provocando essas taxas escalonadas? Mais uma vez, este não é o meu campo, mas suspeito fortemente que isso já tenha sido visto antes ... podemos ver os três sinais como tipos diferentes de instrumentos musicais?

Devo também acrescentar que tenho uma quantidade decente de dados de treinamento, portanto, talvez o uso de alguns desses métodos possa me permitir fazer uma extração de recursos com os quais posso utilizar o K-Nearest Neighbor , mas isso é apenas um pensamento.

De qualquer forma, é aqui que estou, qualquer ajuda é apreciada.

Obrigado!

EDITOS BASEADOS EM COMENTÁRIOS:

  • Sim, , f 2 , f 3 , f 4 são todos conhecidos antecipadamente. (Alguma variação, mas muito pouca. Por exemplo, digamos que f 1 = 400 Khz, mas pode chegar a 401,32 Khz. No entanto, a distância para f 2 é alta, então f 2 pode estar em 500 Khz em comparação.) O sinal 1 sempre pisará nessas 4 frequências conhecidas. O sinal 2 sempre terá 1 frequência.f1f2f3f4f1f2f2

  • As taxas de repetição de pulso e os comprimentos de pulso das três classes de sinais também são todos conhecidos antecipadamente. (Novamente alguma variação, mas muito pouco). Algumas advertências, no entanto, sempre são conhecidas taxas de repetição de pulso e comprimentos de pulso dos sinais 1 e 2, mas são uma faixa. Felizmente, esses intervalos não se sobrepõem.

  • A entrada é uma série temporal contínua que chega em tempo real, mas podemos assumir que os sinais 1, 2 e 3 são mutuamente exclusivos, pois apenas um deles existe a qualquer momento. Também temos muita flexibilidade em quanto tempo você leva para processar a qualquer momento.

  • Os dados podem ser ruidosos, sim, e pode haver tons espúrios, etc., em bandas que não são conhecidas como , f 2 , f 3 , f 4 . Isso é bem possível. No entanto, podemos assumir um SNR de nível médio apenas para "começar" o problema.f1f2f3f4

Spacey
fonte
Qual será a sua opinião? 1 / Um fluxo contínuo no qual você deseja segregar ocorrências do sinal 1/2/3 (segmentação + problema de classificação) ou 2 / amostras individuais com apenas um tipo de sinal que você precisa classificar em categorias 1/2/3? Você descreve várias características dos sinais: PRT do sinal 1; frequência de repetição do sinal 2; frequência do sinal 3; valores de f1 / f2 / f3 / f4. Esses parâmetros são conhecidos antecipadamente ou são variáveis? Finalmente, caso sua entrada tenha várias ocorrências desses sinais para segmentar, qual é a duração típica de um segmento?
Pichenettes
Outra pergunta: a partir dos seus desenhos, parece que você está lidando com tons puros (sem harmônicos e sem ruído). É esse o caso ou os dados são muito mais sujos do que seus desenhos?
Pichenettes
@pichenettes Obrigado, adicionei as informações necessárias em uma edição.
Spacey
Um acompanhamento de seu progresso e soluções para essa pergunta serão apreciadas. A análise depende principalmente da variabilidade temporal dos sons estudados. se forem mais rápidos que uma janela fft, digamos que em 256 amostras você precisará de espectrogramas de alta resolução. Quanto mais preciso o espectrograma, mais você pode ver pequenas informações detalhadas em seus sons. A FFT provavelmente está correta. Depois disso, a questão é simplesmente adicionar operadores lógicos para classificar os sons usando rotinas simples de análise de padrões. analise a duração dos pulsos, a distância entre eles, a natureza cordial do todo, etc.
Com.prehensible
é simples encontrar o harmônico principal apenas verificando o valor de pico de cada linha x e, em seguida, você acaba com um gráfico para analisar usando a programação de análise de assinatura de padrões, que progride da mesma forma como se você estivesse analisando-os em retórica, apenas desenhe regras dos melhores diferenciadores que você usa de maneira consciente ao comparar e classificar as progressões numéricas.
Com.prehensible

Respostas:

7

Passo 1

S(m,k)mk

Passo 2

Para cada quadro STFT, calcule a frequência fundamental dominante usando algo como YIN, juntamente com um indicador de "confiança de tom", como a profundidade do "mergulho" do DMF calculado por YIN.

f(m)mv(m)m

r0

e(m)m

etapa 3

MMM=50

Extraia os seguintes recursos:

  • σf(k)(f(m))m[kM,k+M],v(m)>τ
  • σv(k)(v(m))m[kM,k+M]
  • σe(k)(e(m))m[kM,k+M]

σfσvσe

σfσvσeσfσvσeσfσvσe

Calcule esses três recursos em seus dados de treinamento e treine um classificador bayesiano ingênuo (apenas um monte de distribuições gaussianas). Dependendo da qualidade dos seus dados, você pode até se classificar e usar limites definidos à mão nos recursos, embora eu não recomende isso.

Passo 4

M

Se seus dados e classificador forem bons, você verá algo assim:

1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3

Isso delimita muito bem o horário de início e término e o tipo de cada sinal.

Se seus dados forem barulhentos, deve haver quadros falsos classificados incorretamente:

1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 1, 3, 1, 1, 1, 1, 3, 3, 3, 2, 3, 3, 3

Se você ver muita porcaria como no segundo caso, use um filtro de modo nos dados em bairros de 3 ou 5 detecções; ou use HMMs.

Levar mensagem para casa

O que você deseja basear sua detecção não é um recurso espectral, mas estatísticas temporais agregadas de recursos espectrais sobre janelas que estão na mesma escala das durações do sinal. Esse problema realmente exige um processamento em duas escalas de tempo: o quadro STFT no qual você calcula propriedades de sinal muito locais (amplitude, tom dominante, intensidade do tom) e janelas maiores nas quais você espia a variabilidade temporal dessas propriedades do sinal.

pichenettes
fonte
Observe que você também pode usar o estilo de reconhecimento de fala se quiser usar HTK ou similares ... Modelo acústico: 4 telefones P1, P2, P3, P4 (tom em f1, tom em f2, tom em f3, tom em f4 ) + 1 símbolo S para silêncio. 1 ou 2 gaussianos por telefone. Modelo de palavra W1 para o sinal 1: (P1 S P2 S P3 S P4 S) +. Modelo de palavra W2 para o sinal 2: (P1 S) +. Modelo de palavra W3 para o sinal 3: (P1) +. Modelo de sentença: (W1 | W2 | W3) *. A única ressalva é que, se você usar uma caixa de ferramentas de reconhecimento de fala, precisará ajustar o front-end de extração de recursos, pois os MFCCs são de baixa resolução e agnósticos de afinação para diferenciar f1 / f2 / f3 / f4.
Pichenettes
@ pichenettes Obrigado pichenettes, essa é uma resposta muito boa - eu tenho alguns acompanhamentos: 1) O que é 'YIN' que você mencionou e o que é 'DMF'? Não consegui encontrar nada sobre eles no google. 2) O que exatamente é 'pitch pitch' como medida? 3) Você mencionou que pode usar a correlação automática para encontrar a confiança de pitch - autocorrelação de quê, o período no domínio do tempo ou o STFT do quadro? (Eu não entendo isso provavelmente porque não sei o que você quer dizer com confiança no tom). (continuação ...)
Spacey
@ pichenettes (continuação) 4) Quanto aos recursos existentes, EXISTA POR JANELA, sim? Então você está computando três padrões por janela, de (neste caso) 101 quadros? Nesse caso, quando chega a hora de treinar, meu 'ponto' 3D foi feito a partir de 3 stds acima de 101 FRAMES, correto? 5) Na sua etapa 4, quando você tem o número 1,1,1,2,2 etc, cada número corresponde à forma como você classificou A janela correta? O primeiro '1' foi a classificação da janela composta pelos quadros -50 a 50, e o segundo '1' a partir da janela composta pelos quadros -49 a 51, correto? (Janela é deslizante por uma moldura de cada vez) ...
Spacey
@ pichenettes 6) Finalmente, eu deveria ter mencionado que isso deve ser usado como um 'alarme', de modo que, se o sinal 1 ou o sinal 2 estiver presente, recebo um alarme tocar, mas nada deve disparar se não há nada lá - não deveria haver um limite a ser correspondido antes mesmo de começar a tentar classificar para que você não obtenha falso-positivo sobre nada? (apenas ruído de fundo, por exemplo). (Estou apenas aprendendo sobre o Naive Bayes Classifier agora, então não sei se é multi-classe). 7) MUITO OBRIGADO PELA MANEIRA E AGRADECIMENTO ANTECIPADO! MIL E UM MELHORES PARA VOCÊ! :-)
Spacey
1
1 / YIN é um algoritmo clássico de detecção de afinação para sinais de voz e música. recherche.ircam.fr/equipes/pcm/cheveign/pss/2002_JASA_YIN.pdf . DMF é a "função de magnitude da diferença", a quantidade calculada por algoritmos como o YIN para estimativa de afinação. 2 / Um algoritmo de detecção de afinação como YIN produzirá a estimativa da frequência fundamental e um "índice de confiança" indicando a probabilidade de a afinação retornada ser a resposta correta. Em sinais ruidosos ou sinais que exibem vários arremessos, isso será baixo; em uma onda senoidal pura, isso será muito alto.
Pichenettes
3

Uma abordagem alternativa poderia ser quatro detectores heterodinos: Multiplique o sinal de entrada por um oscilador local de 4 frequências e passe passa baixo o filtro das saídas resultantes. Cada saída representa uma linha vertical na sua imagem. Você obtém a saída em cada uma das 4 frequências em função do tempo. Com o filtro passa-baixo, você pode discar quanto desvio de frequência você deseja permitir e também a rapidez com que deseja que as saídas mudem, ou seja, com a nitidez das bordas.

Isso funcionará bem, mesmo que o sinal seja bastante barulhento.

Hilmar
fonte
Eu estava pensando sobre esse método - você vê alguma vantagem desse método (mistura e LPF) em trabalhar diretamente no pass-pand usando espectrograma, etc.?
Spacey