Chromagram

Método para obtenção de caracteristicas em um sinal de audio,  robusto e atualmente utilizado em reconhecimento de acordes músicais, reconhecimento de covers e para encontrar similaridade em pedaços de áudios.

Enquanto um spectrograma é capaz de nos mostrar a variação da intensidade, magnitude de um sinal para cada frequencia no decorrer do tempo, o Chromagrama consegue nos informar a distribuição da energia representados por 12 possíveis notas chamadas de escala cromática, comumente  classificados como “c, c#, d, d#, e, f, f#, g, g#, a, a#, b”.

Para conseguir esta informação teremos que reestruturar nosso espectrograma.

Antes de qualquer coisa teremos que efetuar o resample ou downsample do Sinal de áudio, fiz alguns testes usando resample ou seja convertendo qualquer sample rate para 11025 Hz, achei  este processo um pouco lento e então decidi fazer o downsample usando “Decimation” que de quebra já me faz um filtro por Low-pass e anti-aliasing, como o nome já sugere o downsample a grosso modo “joga fora” algumas amostras do sinal, o decimation trabalha usando um fator inteiro, portanto se meu sinal original possui  44100 Hz de sample rate e se preciso que este sinal vá para 11025 Hz de sample rate terei que ter um Fator=4 ou seja 44100/4 = 11025.

Após estes passos poderei  adquirir o espectrograma aplicando 2048 frames, para computar o chromograma precisarei converter o spectrograma  de domínio da freqüência para pitch do domínio, isto é feito aplicando Logarithmic Frequency assim poderemos mapear os 12 elementos de interesse.

E finalmente teremos nosso chromagrama com 12 posições, uma para cada nota no decorrer do tempo…

Escrevi algo conceitual em python deixei o código o mais limpo possível para melhor entendimento, estou plotando os resultados com o matplotlib, importante dizer que o matplotlib não aguenta plotar arrays muito grandes portanto para os meus testes utilizei arquivos de audios pequenos em torno de 30 segundos, seguindo esta linha recortei 28 segundos iniciais da música “Def Leppard – Animal”, e ai esta o resultado do Script.

Image

Source em:

https://github.com/ederwander/Chromagram/blob/master/Chromagram.py

  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: