fábio goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 shazam ... medida mais fina de distância...

42
Estratégias de alinhamento para consulta cantarolada Fábio Goródscy Texto apresentado ao Instituto de Matemática e Estatística da Universidade de São Paulo para exame de qualificação de Mestre em Ciências Programa: Ciência da Computação Orientador: Prof. Dr. Marcelo Gomes de Queiroz Durante o desenvolvimento deste trabalho o autor recebeu auxílio financeiro da CNPq São Paulo, Agosto de 2017

Upload: dinhtu

Post on 10-Mar-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Estratégias de alinhamento para consulta cantarolada

Fábio Goródscy

Texto apresentadoao

Instituto de Matemática e Estatísticada

Universidade de São Paulopara

exame de qualificaçãode

Mestre em Ciências

Programa: Ciência da ComputaçãoOrientador: Prof. Dr. Marcelo Gomes de Queiroz

Durante o desenvolvimento deste trabalho o autor recebeu auxílio financeiro da CNPq

São Paulo, Agosto de 2017

Page 2: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Estratégias de alinhamento para consulta cantarolada

Esta é a versão original da dissertação elaborada pelocandidato Fábio Goródscy, tal como

submetida à Comissão Julgadora.

Page 3: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Sumário

Lista de Abreviaturas v

Lista de Figuras vii

Lista de Tabelas ix

1 Introdução 11.1 Buscas através de áudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 Audio fingerprinting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.2 Detecção de versão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.1.3 Consultas cantaroladas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Web Audio API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Sobre este trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3.2 Contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3.3 Organização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Conceitos 52.1 Representações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.1.1 Áudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.1.2 MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2 Comparação de sequências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.1 Dynamic Time Warping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2.2 Alinhamento inexato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.3 Métricas de Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3.1 Precision e recall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3.2 Mean Reciprocal Rank (MRR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.4 Trabalhos relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.4.1 Follow That Tune . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.4.2 Tararira . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.4.3 Shazam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.4.4 Echoprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.5 Web Audio API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

iii

Page 4: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

3 Experimentos preliminares 233.1 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.1.1 Banco de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.1.2 Extração de características . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.1.3 Alinhamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.4 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.5 Estrutura do código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.2 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4 Próximos passos 29

Referências Bibliográficas 31

Page 5: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Lista de Abreviaturas

QBH Busca com consulta cantarolada (Query By Humming)DTW Dynamic Time WarpingMRR Mean Reciprocal RankIOI Inter Onset IntervalIOIR Inter Onset Interval RatioMIDI Musical Instrument Digital InterfaceMIR Recuperação de informação musical (Musical Information Retrieval)FFT Transformada rápida de Fourier (Fast Fourier Transform)

v

Page 6: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o
Page 7: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Lista de Figuras

1.1 Interface da versão do aplicativo Shazam para Android. . . . . . . . . . . . . . . . . 11.2 Interface da versão do aplicativo SoundHound para Android. . . . . . . . . . . . . . . 21.3 Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.1 Esquema de processamento para buscas com áudio . . . . . . . . . . . . . . . . . . . 52.2 130 amostras da gravação de um assovio. Taxa de amostragem: 44100Hz, totalizando

cerca de 3 milissegundos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 260 amostras da gravação a 44100Hz de um E5 (659.255Hz) no violão. A frequência

fundamental aparece a cada 44100659.255 ≈ 67 amostras. . . . . . . . . . . . . . . . . . . . 7

2.4 F0 extraída com Melodia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.5 Representações de alturas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.6 Representação de intervalos e durações. . . . . . . . . . . . . . . . . . . . . . . . . . 102.7 Matriz D quando produzida a partir de uma música comparada a si mesma. . . . . . 12

3.1 Esquema do protótipo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.2 Recall em função do α e β sob diferentes transcrições. . . . . . . . . . . . . . . . . . 253.3 Recall em função do Z e δ sob transcrições do ASyMuT. . . . . . . . . . . . . . . . . 25

vii

Page 8: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o
Page 9: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Lista de Tabelas

2.1 Lista de eventos midi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2 Ilustração de matriz D considerando X ∈ R5, Y ∈ R6, X = (4, 10, 2, 3, 5), Y =

(2, 10, 5, 9, 5, 5) e d(u, v) = ||u− v||. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Ilustração da computação de C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.4 Ilustração da computação de C, com f(xn) = 0, considerando X = (4, 10, 2, 3, 5) e

Y = (2, 10, 5, 9, 5, 5). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.5 Ilustração da computação de C. f(xn) = 0.5xn, α = 2, β = 1. . . . . . . . . . . . . . 152.6 Conjuntos usados nas definições de precision e recall . . . . . . . . . . . . . . . . . . 16

3.1 Valores de recall, MRR e posição média para diferentes configurações dos algoritmosde transcrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.2 Valores de recall, MRR e posição média para diferentes representações das melodias . 263.3 Comparação de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.1 Cronograma do projeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

ix

Page 10: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o
Page 11: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Capítulo 1

Introdução

Nesse trabalho serão explorados os conceitos e métodos associados ao problema de buscar mú-sicas usando microfone através de interfaces web. As seções a seguir fornecerão os contextos dasbuscas de músicas através de consultas de áudio e de uma API específica para processamento deáudio em navegadores web, a Web Audio API.

1.1 Buscas através de áudio

Um sistema de busca através de áudio recebe sinais como entrada e fornece como respostainformações a respeito de uma ou mais músicas relacionadas. Comumente associado a tarefas derecuperação de informação musical, toma formas diferentes de acordo com o foco da aplicação. Deacordo com a relação entre a entrada e o dado buscado utilizam-se estratégias diversas, como noscasos das consultas baseadas em audio fingerprinting (seção 1.1.1), das consultas com versões (seção1.1.2) e por fim das consultas cantaroladas (seção 1.1.3). Serão ressaltadas diferenças a respeito dasinterfaces das plataformas apresentadas, visto que há uma variedade de exemplos, cada qual comsua própria solução.

1.1.1 Audio fingerprinting

O modelo mais desenvolvido comercialmente é o denominado audio fingerprinting, onde o ar-quivo de entrada possui uma versão ruidosa de uma gravação musical a respeito da qual o sistemadeve retornar informações. Esse modelo é explorado por sistemas como:

Shazam1: Utiliza picos espectrais para identificar univocamente arquivos de áudio (Wang, 2003).Sua interface é feita por aplicativos para dispositivos móveis, como visto na figura 1.1; não háversão web nem para desktops.

Figura 1.1: Interface da versão do aplicativo Shazam para Android.

1

Page 12: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Echoprint2: Utiliza bancos de filtros para analisar onsets independentes em bandas de frequências(Ellis et al., 2011). Foi desenvolvido para dar suporte a outras aplicações e, portanto, nãopossui interface gráfica, mas é simples de executar lotes de consultas por linha de comando.

Representações únicas são utilizadas para as músicas neste problema. Isso significa que, quantomais informações do dado original forem utilizadas para computar similaridades, mais preciso ficao resultado. Por outro lado, a necessidade de ressaltar o conteúdo de interesse no áudio, eliminandosons do ambiente que não pertencem a gravação original da música, assim como a necessidade daescalabilidade, faz-se necessário reduzir informações tentando manter características importantesde gravações. Senão, seria possível apenas comparar diretamente o sinal de áudio, e claramente nãoé uma abordagem útil.

1.1.2 Detecção de versão

Em detecção de versão, a gravação de entrada também é uma versão ruidosa de alguma música,porém as músicas retornadas podem ter um grau de similaridade relativo, de modo a abrangerversões diferentes de uma mesma música. Usualmente são extraídas características mais genéricasdo que as utilizadas no audio fingerprinting, que são posteriormente comparadas através de medidasde similaridade mais flexíveis. Diversas referências abordam tal situação(Chen, 2016; Ellis e Cotton,2007; Julià, 2007; Tralie e Bendich, 2015).

1.1.3 Consultas cantaroladas

Outra faceta de buscas com arquivos de áudio é a busca com consulta cantarolada, onde oarquivo de entrada é uma versão vocalizada (que não necessariamente tem todas as características)da música que o sistema deve retornar. Esse paradigma é explorado por aplicações como:

SoundHound3: Plataforma popular atualmente para consultas cantaroladas. Inicialmente criadacom o nome Midomi, utiliza informação de consultas como parte do banco de dados, usandoda hipótese de que as consultas são variações das gravações originais do banco de dados.Possui interface web (usando Adobe Flash Player), aplicativos móveis como o da figura 1.2 eversão para Windows.

Figura 1.2: Interface da versão do aplicativo SoundHound para Android.

Tunebot : Realiza segmentação de notas e compara através de edit distance as versões completasdo banco de dados com as versões cantaroladas, e também compara versões cantaroladas entresi (Cartwright e Pardo, 2012).

Tararira: Utiliza processo adaptativo para ajuste do banco de dados à medida que novas consultassão enviadas (López et al., 2004). Possui uma interface GTK2 para Linux, vista na figura 1.3.

Page 13: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Hum-a-song : Também baseada em segmentação, mas compara características extraídas atravésde um algoritmo de alinhamento de subsequências tolerante a imprecisões (Kotsifakos et al.,2012). Possui uma interface em Matlab, vista na figura 1.3.

(a) Interface do Tararira.(b) Interface do Hum-a-song.

Figura 1.3: Interfaces.

Follow That Tune: O alinhamento é realizado diretamente em vetores de alturas, mas para con-tornar problemas de imprecisão da consulta, por falha no tom cantado, utiliza uma estratégiade aproximar recursivamente o conteúdo da consulta ao conteúdo do banco de dados (Stasiak,2014).

Grande parte das imprecisões que fazem parte dessas consultas ocorrem não apenas por falhas dousuário/cantor, mas também porque o ambiente não será seguramente livre de ruído. A segmentaçãoem notas também não gera resultados precisos o suficiente para comparação com transcrições dosbancos de dados. Essas imprecisões são fonte da maioria das dificuldades encontradas neste domínio.

1.2 Web Audio API

Na última seção foram vistos diversos exemplos de plataformas para buscas através de áudio.Nesta seção abordaremos a Web Audio API, que será utilizada como ferramenta para criaçãode interface durante este trabalho. Web Audio API é uma API para processamento de áudio naweb introduzida em 2011, compatível com a maioria dos navegadores modernos, independente deplataforma e tipo de dispositivo. Possui ferramentas para captura, leitura e processamento de áudioe sua alta portabilidade permite a uma interface web utilizar essas ferramentas em um grandenúmero de dispositivos.

Alguns exemplos de aplicações usando Web Audio API são o doodle de aniversário de OskarFischinger4 e a aplicação de treinamento técnico-auditivo5. Há ainda uma infinidade de aplicaçõesque podem ser vistas no Web Audio Weekly6 e projetos no estado-da-arte usando esta API podemser encontrados na Web Audio Conference7, que se encontra em sua terceira edição. Entre oselementos que essa API fornece estão filtros passa-alta e passa-baixa, reverberador, controle deganho, compressor, oscilador e várias ferramentas para processamentos de baixo nível. Além disso,ele possui elementos para decodificação de áudio permitindo o carregamento de arquivos que podemser processados em conjunto com outros elementos presentes. Tem fácil integração com a leitura

4https://www.google.com/doodles/oskar-fischingers-117th-birthday5http://webtet.net/, acompanha livro Audio Production and Critical Listening de Jason Corey.6http://www.webaudioweekly.com7http://wac.eecs.qmul.ac.uk/

Page 14: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

de microfone, assim como permite o envio de mensagens MIDI ou do tipo pub/sub, usado pelasbibliotecas PubNub, Peer.js e Faye.

Parte do material que será usado neste trabalho parte de estudos sobre Web Audio que vemsendo feitos desde Abril de 20168. O principal resultado artístico desse trabalho com Web Audio atéo momento é um sistema de chat musical, Banda Aberta, desenvolvido no âmbito do NuSom - Núcleode Pesquisas em Sonologia da USP, tendo como coautora a doutoranda da Escola ade Comunicaçãoe Artes da USP Ariane Stolfi. Foi feito para ser apresentado como performance artística ondeparticipantes podem interagir com o chat apresentado em um projetor, através de seus tablets,celulares ou computadores, sendo que suas mensagens são convertidas em sons sintetizados. Issogera uma área sonora controlada unicamente pelos participantes, que não necessariamente conhecemo ambiente e os métodos de síntese. No link9 há uma versão online do sistema que pode ser utilizadapara trocar mensagens a qualquer momento e para ouvir os sons que são sintetizados com o WebAudio API. Todo o código do Banda Aberta está disponível no Github10.

1.3 Sobre este trabalho

1.3.1 Objetivo

O objetivo geral deste trabalho é estudar estratégias para buscas em bancos de dados musicaisutilizando como consulta o áudio obtido através de microfone. Assim sendo, através de uma aborda-gem experimental, diferentes cenários serão avaliados de forma sistemática a fim de especificar como,onde e quão bem as técnicas de comparação de características de arquivos de áudio conseguem seraplicadas nessas buscas. Como estudo de caso, gravações que possuem uma única voz cantada dobanco de dados MIR-QBSH (Jang, 2009) foram usadas em um experimento preliminar. Há diversosproblemas associados a tal tarefa, desde a dificuldade de definição clara e geral do que se espera queseja comparado entre os arquivos musicais, até como lidar com as imprecisões geradas pela formade obtenção de características de gravações. Esses problemas serão detalhados no capítulo 2.

1.3.2 Contribuições

Como contribuição primária do trabalho considera-se o desenvolvimento de: 1. uma biblio-teca para alinhamento de áudio, com implementações de técnicas como DTW (Müller, 2015) eSMBGT (Kotsifakos et al., 2011); 2. um sistema de consultas no banco de dados MIR-QBSH. Comocontribuição secundária inclui-se a análise cuidadosa de situações em que características extraídasde áudio, como padrões de F0, e algoritmos de alinhamento de sequências, como DTW e SMBGT,alteram resultados de consultas cantaroladas, relativamente às métricas clássicas em recuperaçãode informação como recall e MRR, bem como em relação aos tempos de execução de consultas.

1.3.3 Organização

No capítulo 2 revisaremos técnicas e conceitos que serão necessários para abordar problemasrelacionados aos temas deste trabalho. No capítulo 3 apresentaremos experimentos preliminarescom avaliações do que foi observado. No capítulo 4 proporemos futuros experimentos e avaliações.

8https://www.ime.usp.br/˜fabiog/webaudio/9https://www.ime.usp.br/ fabiog/banda/

10https://github.com/fabiogoro/banda

Page 15: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Capítulo 2

Conceitos

O foco principal deste capítulo é demonstrar conceitos fundamentais que são utilizados embusca com consultas cantaroladas, ainda que possuam outras aplicações. A imagem 2.1 descreveum esquema para um sistema de consultas cantaroladas. Neste capítulo a seção 2.1 trata de repre-sentações digitais que são comumente utilizadas para armazenar informação de músicas, o que éútil para o que está em (a) na figura 2.1. Em 2.2 são apresentadas duas técnicas para alinhamento,representado em (b) na figura 2.1. Por fim, a seção 2.3 lista métricas para avaliação dos resultadosretornados automaticamente.

Figura 2.1: Esquema de processamento para buscas com áudio

2.1 Representações

Nesta seção são mostradas representações utilizadas para música. Todas as representações apre-sentadas são amplamente discutidas na literatura (Collins, 2010; Moore, 1990; Müller, 2015; Roads,1996). Uma descrição precisa de sons musicais e objetos sonoros dialoga com processos psicoacús-ticos complexos e foge ao escopo desse texto, sendo que o leitor pode encontrar ampla discussãodesenvolvida por diversos autores (Bregman, 1994; Schaeffer, 1967). Na seção 2.1.1 são discutidasas representações de variações de pressão de ar produzida por fontes sonoras que são registradas no

5

Page 16: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

que é conhecido como sinal de áudio. A seção 2.1.2 trata de um conjunto de instruções MIDI quecorresponde a um exemplo do que se denomina de representação simbólica.

2.1.1 Áudio

Ondas sonoras são funções de pressão do ar em relação ao tempo, e sinais de áudio uma possívelrepresentação de tais funções. A figura 2.2 mostra um exemplo de sinal de áudio obtido atravésde um microfone. Quando lidamos com o domínio digital, um sinal de áudio é uma sequênciade números Y = (y0, y1, . . . , yN−2, yN−1), N ∈ N, onde cada elemento da sequência é associado àamplitude do sinal em um dado momento. A taxa de amostragem define a relação entre o índice dasamostras e o tempo em segundos, restringindo também o tipo de onda que pode ser representada(ao definir a mais rápida oscilação que pode ser armazenada).

Figura 2.2: 130 amostras da gravação de um assovio. Taxa de amostragem: 44100Hz, totalizando cerca de3 milissegundos.

Com o uso de sinais de áudio se torna possível representar fielmente características sonoras quedificilmente estariam especificadas em uma representação compacta, como minúsculas variações dedinâmica e tonalidade. Infelizmente, muitas características essenciais na descrição de músicas (comoem qual instante um som teve início dentro da gravação, o que o causou, ou quantos sons estãosobrepostos num trecho do sinal) são difíceis de se obter neste tipo de representação, por não seremdadas de forma explícita.

A análise de sinais de áudio pode expor características que não estão representadas explicita-mente. A transformada de Fourier, por exemplo, pode ser utilizada para representar ondas sonorascomo combinações de componentes senoidais, o que se aproxima da forma como nosso ouvido re-age a informações sonoras complexas. Em um contexto digital, a transformada de Fourier consegueaproximar os componentes senoidais presentes na gravação, mas há um limite de resolução de tempoe frequência, sendo que quanto melhor a resolução em tempo, menor a resolução em frequência.Limitações como essa são a principal razão da dificuldade de extração de características diretamenteem áudio.

Frequência fundamental (F0)

Alguns sinais de áudio podem ser descritos como uma combinação de componentes senoidaiscom frequências múltiplas de uma mesma frequência fundamental (o que se denomina uma sérieharmônica), caracterizando um sinal periódico como nas figuras 2.2 e 2.3. O mecanismo de produçãoda voz humana produz séries harmônicas, assim como diversos instrumentos musicais. É comumassociar esses sons à sua frequência fundamental F0, que é aquela que repete seu padrão maislentamente, ou seja, a componente mais grave da série harmônica.

Vários métodos foram propostos para obter a partir de um sinal de áudio uma sequência P =(p0, p1, . . . , pN−2, pN−1), N ∈ N, onde cada elemento é a estimativa de F0 em determinado trecho dagravação. Em (Mitre e Queiroz, 2005), submúltiplos da frequência com maior energia no espectro

Page 17: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Figura 2.3: 260 amostras da gravação a 44100Hz de um E5 (659.255Hz) no violão. A frequência funda-mental aparece a cada 44100

659.255 ≈ 67 amostras.

de magnitude são candidatos a F0 e uma função de proeminência é descrita para seleção do valor deF0. Para tal, um espectrograma é calculado sobre o sinal a ser analisado, com tamanho de janela ehop size passado como parâmetro. Para cada quadro do espectrograma, picos de máximo local sãoencontrados para determinar possíveis parciais. O candidato natural para F0 é o parcial de maioramplitude e será referenciado como f∗. Depois, um conjunto de outros candidatos a F0 é definido

F =(f∗

1,f∗2, . . . ,

f∗N − 1

,f∗N

), N ∈ N

Sendo que N define a menor frequência de F0 detectável. É definido um vetor H[n][i] então, que con-tém a frequência e a magnitude do harmônico i para um candidato a F0 n. A função de proeminênciaé definida como

P (n) =I∑i=1

H[n][i]mag ∗Ψ(i)

Onde Ψ(i) é um fator de ponderação que diminui quanto maior o i. São criados candidatos comP(n) acima de um limiar e por fim, considerando apenas os H[n][i] que satisfizeram a condiçãoanterior,

χ(n) =

∑Ii=1H[n][i]mag ∗Ψ(i)∑I

i=1 Ψ(i)

ϕ = arg max χ(n)

Sendo ϕ a frequência fundamental associada ao quadro que está sendo processado.Outro algoritmo proposto para tratar sinais polifônicos, Melodia (Salamon e Gómez, 2012), se

caracteriza pela localização de picos em janelas de espectro e candidatos de F0 recebem valoresde saliência de forma bastante semelhante ao anterior. O passo de seleção de F0 em cada quadro,porém, envolve rastreamento de contornos melódicos, o que significa que o algoritmo considera aevolução do F0 no tempo para definir se há realmente um instrumento harmônico no sinal. Comoexemplo, a figura 2.4 traz um resultado de transcrição de melodia aplicado a um sinal cantaroladoda música "Old MacDonald Had a Farm".

Classes de nota

Notas1 que tenham frequências fundamentais relacionadas através de potências de 2 são perce-bidas de forma muito similar, o que faz com que tais notas sejam perceptualmente agrupadas em

1O termo “nota” é muito frequentemente usado em música para designar um evento sonoro com altura musi-cal definida, que pode ser representado simplificadamente através de 4 parâmetros principais: altura musical e/oufrequência fundamental, intensidade e/ou amplitude, duração e nome do instrumento musical utilizado na produçãodo evento.

Page 18: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

(a) F0 em notas MIDI. (b) F0 em classes de notas.

Figura 2.4: F0 extraída com Melodia.

uma mesma classe de nota. Por exemplo, dois sons harmônicos, um com 110Hz de F0 e outro com220Hz, são percebidos como se correspondessem à mesma nota, exceto por uma diferença de umaoitava2.

Em particular, a série harmônica do segundo som, correspondente às frequências da forma k×220(com k ∈ N), estão todas contidas na série harmônica do primeiro (frequências da forma l × 110,com l ∈ N).

A noção de oitava está presente na construção da maioria das escalas musicais; na música ociden-tal é comum o uso da escala do temperamento igual, que divide a oitava em 12 passos multiplicativosiguais, criando passos intermediários com relação de 2

112 entre as frequências adjacentes na escala,

chamado de semitom. Por razões históricas usa-se um sistema de 7 letras acrescido de acidentes,por exemplo A, A#, B, C, C#, D, D#, E, F, F#, G e G# para as notas entre 110 Hz e 2

1112 × 110

(note que o próximo passo de 2112 levaria à frequência de 220 Hz que recebe também o nome de A).

Pela construção dessa escala, duas notas com frequências A e B distam log2(BA ) ∗ 12 semitons,

e notas correspondentes a uma mesma classe de nota distam algum múltiplo de 12 semitons. Outramedida mais fina de distância entre notas utilizada frequentemente é o cent, que corresponde aum centésimo de semitom ou equivalentemente à razão 211200; por essa definição um semitomcompreende 100 cents e uma oitava compreende 1200 cents.

2.1.2 MIDI

MIDI foi originalmente desenhado como protocolo padrão de comunicação para instrumentosdigitais mas acabou se tornando popular como uma forma de representação simbólica. Apesar dasdiversas limitações que impõe, existe um grande número de obras transcritas em formato MIDI elivremente disponíveis na web. MIDI é composto por eventos que traduzem, por exemplo, o apertarde uma tecla: para tal, o evento deve armazenar informações como o número da tecla apertada e aintensidade com que a tecla foi apertada. Esses eventos podem ser armazenados em uma lista cominformação temporal correspondente, e assim podem ser posteriormente utilizados para controlarum dispositivo de síntese. Um exemplo de lista de eventos pode ser vista na tabela 2.1. Os camposimportantes para este trabalho em um evento MIDI são o início de evento, o tipo de evento, a notae a intensidade. Um evento Note_on_c indica que a nota começou no tempo correspondente e coma intensidade informada. O Note_off_c desliga uma nota que estava sendo tocada. O campo nota éum número inteiro entre 0 e 127, que por padrão se traduz nas notas de C0 a G9; em particular, esseparâmetro não permite representar frequências que caem fora da escala do temperamento igual.

Apesar de sua estrutura bastante simplificada, listas de eventos MIDI conseguem representarpeças musicais com informações suficientes para serem reconhecidas, porém, quando são automati-camente executadas por instrumentos digitais, dificilmente vão soar como a peça original. Por outrolado, MIDI pode armazenar longas sequências de instruções de forma muito eficiente, o que a torna

2O nome dado ao intervalo musical entre duas frequências da forma F e 2×F , ou equivalentemente, à razão entrefrequências 2 : 1.

Page 19: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Faixa Início Tipo Canal Nota Intensidade1 0 Note_on_c 0 60 1001 15 Note_off_c 0 60 01 15 Note_on_c 0 55 1001 20 Note_off_c 0 55 01 20 Note_on_c 0 57 1001 25 Note_off_c 0 57 0

Tabela 2.1: Lista de eventos midi.

muito eficiente (em comparação com áudio) em contextos de indexação e busca.

Visualizações sobre MIDI

Outras visualizações podem ser obtidas a partir da listas de notas MIDI. Algo semelhante arepresentação de F0 pode ser obtido facilmente apenas tomando-se a sequência

P = (p0, p1, . . . , pT−2, pT−1), T ∈ N (2.1)

onde T representa o último valor de tempo, em ticks, e cada elemento é a nota ativa naquelemomento, como na figura 2.5.

(a) Em notas MIDI. (b) Em classes de notas.

Figura 2.5: Representações de alturas.

De forma semelhante, é possível tomar o vetor de F0 e subtrair o valor da nota MIDI em instantesconsecutivos como sendo

I = (p1 − p0, p2 − p1, . . . , pT−2 − pT−3, pT−1 − pT−2) (2.2)

o que resulta no valor do intervalo, ou seja, quantos semitons foram percorridos em uma mudançade nota. O módulo 12 do valor do intervalo pode ser utilizado para considerar classes de notas,fazendo com que da nota 60 para a nota 61 haja o mesmo intervalo que da nota 60 para a nota 73,visto que 72 possui a mesma classe de nota que 60. Essa representação mantém noção de duraçõestemporais, mas também pode ser de interesse ignorar a duração e utilizar outras formas de obteressa informação. Para tal, pode-se considerar eventos MIDI consecutivos e calcular o intervalo entreeventos. De forma que

J = (q1 − q0, q2 − q1, . . . , qN−2 − qN−3, qN−1 − qN−2), N ∈ N (2.3)

Page 20: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

onde N é o número de eventos MIDI note_on e qn é a nota que foi ativada em tal evento comn ∈ [0, N − 1]. A figura 2.6a representa a sequência de intervalos que desconsidera o tempo e nãofaz módulo 12.

Também, um vetor de durações pode ser calculado tendo o valor de tempo tn, n ∈ [0, N − 1] decada evento MIDI e, de forma semelhante à equação 2.3, definindo um vetor de durações.

IOI = (i0, i1, . . . , iN−3, iN−2) = (t1 − t0, t2 − t1, . . . , tN−2 − tN−3, tN−1 − tN−2), N ∈ N (2.4)

Esse tipo de duração pode não ser a mais adequada para avaliar o curso de uma música, vistoque o tempo de execução de uma peça altera pouco a identidade da mesma, mas gera valorescompletamente diferentes para durações. Algo que se comporta de forma semelhante independentedo tempo de execução é a razão entre durações.

IOIR = (i1/i0, i2/i1, . . . , iN−4/iN−3, iN−3/iN−2) (2.5)

Como os valores de duração são sempre positivos, os elementos de IOIR sempre são positivos ein ≤ in−1 ⇒ IOIR ∈ [0, 1], in > in−1 ⇒ IOIR > 1. Pode ser interessante manter os valorescentrados em 0, fazendo com que valores negativos indiquem uma redução na duração e positivosum incremento, para tal podemos tirar o logaritmo na base 2 dos elementos de IOIR na equação2.5.

logIOIR = (log2(i1/i0), log2(i2/i1), . . . , log2(iN−4/iN−3), log2(iN−3/iN−2)) (2.6)

A base do logaritmo poderia ser outra, mas a base 2 aproxima os valores do logIOIR dos valoresobtidos na representação de intervalos, e isso é interessante para legibilidade e visualização. A figura2.6b mostra o logIOIR da sequência vista em 2.5.

(a) Representação de intervalos. (b) Representação de durações.

Figura 2.6: Representação de intervalos e durações.

2.2 Comparação de sequências

Vetores de F0 ou trechos de áudio são sequências, mais precisamente, são séries temporais.Sejam X ∈ RN , Y ∈ RM , N ∈ N,M ∈ N séries temporais arbitrárias e considere uma funçãoc : RN × RM 7→ R tal que c(X,Y ) representa uma medida de comparação entre as séries X e Y.Normalmente teremos restrições sobre os valores da função c, mas elas dependem exclusivamenteda aplicação; uma restrição comum é a desigualdade triangular, c(X,Z) ≤ c(X,Y ) + c(Z, Y ), que éválida quando c representa algum tipo de distância. Tais medidas de comparação entre sequênciassão usadas em uma vasta quantidade de algoritmos propostos para um grande número de aplicaçõesespecíficas, como por exemplo os algoritmos de Viterbi e LCSS (Maier, 1978), o DTW (White, 1978)

Page 21: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

que é discutido na seção 2.2.1 e por fim o SMBGT (Kotsifakos et al., 2011), discutido na seção 2.2.2.Os algoritmos escolhidos para discussão são comumente utilizados para alinhamento de descritoresde áudio.

2.2.1 Dynamic Time Warping

O objetivo da DTW é comparar duas séries temporais; aqui essa técnica será utilizada paraalinhar consultas cantaroladas, mas poderia ser utilizada para sincronizar sequências de qualquerespécie, sejam sinais discretos, cadeias de caracteres ou informações climáticas. Para a aplicaçãoda DTW é necessária a definição de uma função de similaridade entre cada um dos elementos deX = (x0, x1, . . . , xN−1) e de Y = (y0, y1, . . . , yM−1). Especificamente, é necessária uma funçãod : F × F 7→ R, considerando que xn, ym ∈ F , sendo F ⊆ CK um espaço de características deinteresse da aplicação. Exemplos de espaços F são aqueles definidos pela transformada de Fouriersobre sinais de áudio, os definidos por vetores de F0, como apresentados na seção 2.1, ou até mesmoo que gera sinais de áudio. Definições comuns para a função d são a distância euclidiana

d(u, v) = ||u− v||

e o valor absoluto do produto interno

d(u, v) =

∣∣∣∣∣K−1∑i=0

uivi

∣∣∣∣∣A função d aplicada às séries X e Y pode ser representada em uma matriz D, que associará

cada par de índices (n,m) o valor de d(xn, ym), o que é ilustrado na tabela 2.2 abaixo através deum exemplo numérico.

ym\xn 4 10 2 3 5

2 2 8 0 1 310 6 0 8 7 55 1 5 3 2 09 5 1 7 6 45 1 5 3 2 05 1 5 3 2 0

Tabela 2.2: Ilustração de matriz D considerando X ∈ R5, Y ∈ R6, X = (4, 10, 2, 3, 5), Y = (2, 10, 5, 9, 5, 5)e d(u, v) = ||u− v||.

Valores baixos indicam que as sequências são similares naquele par de índices, e a tarefa doDTW é percorrer a matriz D entre os índices (0,0) e (N-1,M-1) fazendo um caminho que acumulea menor soma possível das medidas de similaridade. Para um exemplo mais prático, pode-se ver nafigura 2.7 como se comporta a função matriz D no caso da comparação de uma sequência consigoprópria, gerada a partir de uma música, considerando como características os cromagramas, que sãovetores em R12, e tomando a função de similaridade dada pelo valor absoluto do produto interno. Oproduto interno gera valores altos em pares com alta similaridade. Podemos observar que a faixa devalores onde elementos com mesmo índice são comparados (na diagonal, que neste caso correspondeexatamente ao mesmo elemento nas duas sequências) possuem valores altos. É possível observaroutras faixas diagonais que aparecem, sugerindo que a música repita certos padrões ao longo dotempo.

A partir das sequências X e Y e da matriz D, define-se um caminho em D como uma sequênciaP = (p0, p1, . . . , pL−2, pL−1), onde cada elemento é uma dupla pl = (nl,ml) que representa a posiçãonl em X e ml em Y. Algumas regras alteram o comportamento do caminho, como as fronteirasiniciais e finais (que são definidas como (0,0) e (N-1,M-1) quando a intenção é comparar apenas as

Page 22: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Figura 2.7: Matriz D quando produzida a partir de uma música comparada a si mesma.

sequências inteiras) e a restrição dos tipos de passo, por exemplo pl − pl−1 ∈ {(1, 0), (0, 1), (1, 1)}para l ∈ [1 : L − 1] para indicar que o caminho deve usar exclusivamente passos na vertical,horizontal e diagonal, respectivamente.

A fim de se computar o melhor alinhamento entre X e Y define-se a função cP (X,Y ) paracálculo do custo acumulado associado a um caminho P de tamanho L, dada por

cP (X,Y ) =L−1∑l=0

D(nl,ml),

ou seja, a soma das medidas de similaridade das posições na matriz que o caminho percorre. Umaforma de obter o caminho ótimo seria o cálculo de c(X,Y) para todas os caminhos possíveis P, umalgoritmo de força bruta que tem custo exponencial no tamanho das sequências; mas esse problemade otimização pode ser resolvido por um algoritmo de programação dinâmica de complexidadeO(MN). A idéia da programação dinâmica é uma estratégia de divisão e conquista que exploraa relação entre o valor ótimo do problema original e de subproblemas, permitindo a solução doproblema utilizando recursão.

No caso da DTW, o algoritmo se baseia na definição de uma matriz C(n,m) de tamanho N×Mque representa o custo ótimo do subproblema de alinhar as sequências parciaisXn = (x0, x1, . . . , xn)e de Y m = (y0, y0, . . . , ym), sendo definida recursivamente por:

C(n, 0) =n∑i=0

D(i, 0) para n ∈ [0 : N − 1], (2.7)

C(0,m) =

m∑i=0

D(0, i) para m ∈ [0 : M − 1], (2.8)

C(n,m) = D(n,m) +min{C(n− 1,m− 1), C(n− 1,m), C(n,m− 1)} para n,m > 0. (2.9)

onde a equação 2.9 considera que os passos estão definidos para o conjunto {(1,0),(0,1),(1,1)}, edeve ser adaptada para outros contextos com passos diferentes. A demonstração da otimalidadedessa estratégia pode ser encontrada por exemplo em (Müller, 2015).

As equações (2.7) e (2.8) inicializam a recursão, e a computação segue com o cálculo de (2.9)que pode ser feito numa varredura por linhas ou por colunas da matriz C. No último passo, quandon = N − 1 e m = M − 1, o alinhamento ótimo terá valor associado DTW(X,Y ) = C(n,m).Os pares associados ao caminho P ótimo podem ser obtidos por backtracking a partir da posição

Page 23: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

(n,m) da matriz, considerando em cada aplicação da equação (2.9) qual dos termos realizou omínimo correspondente.

Caso o interesse seja apenas obter o resultado de DTW(X,Y ), seria possível armazenar apenasa coluna/linha anterior na varredura correspondente. Isso reduz o requisito de armazenamento deO(NM) para O(N) (ou O(M)). Ainda assim, o processamento de (2.9) é realizado (N −1)(M −1)vezes, e portanto a complexidade de computação será O(NM).

Utilizando a matriz D do exemplo da tabela 2.2 e as equações 2.7,2.8 e 2.9, calculamos a tabela2.3, que mostra na parte inferior a matriz C com o resultado do DTW na posição (4,5) com valorótimo de alinhamento 11.

D x0 = 4 x1 = 10 x2 = 2 x3 = 3 x4 = 5

y0 = 2 2 8 0 1 3y1 = 10 6 0 8 7 5y2 = 5 1 5 3 2 0y3 = 9 5 1 7 6 4y4 = 5 1 5 3 2 0y5 = 5 1 5 3 2 0

(a) Matriz D.C x0 = 4 x1 = 10 x2 = 2 x3 = 3 x4 = 5

y0 = 2 2 (2+8)=10 (10+0)=10 (10+1)=11 (11+3)=14y1 = 10 (2+6)=8 (min{2,10,8}+0)=2 (min{10,10,2}+8)=10 . . . . . .y2 = 5 (8+1)=9 (min{8,2,9}+5)=7 (min{2,10,7}+3)=5 . . . . . .

y3 = 9 (9+5)=14...

.... . .

y4 = 5 (14+1)=15...

...

y5 = 5 (15+1)=16...

.... . .

(b) Cálculo passo-a-passo.C x0 = 4 x1 = 10 x2 = 2 x3 = 3 x4 = 5

y0 = 2 2 10 10 11 14y1 = 10 8 2 10 17 16y2 = 5 9 7 5 7 7y3 = 9 14 8 12 13 11y4 = 5 15 13 11 13 11y5 = 5 16 18 14 13 11

(c) Matriz resultante C.

Tabela 2.3: Ilustração da computação de C.

2.2.2 Alinhamento inexato

Nesta seção discutiremos o algoritmo SMBGT (Kotsifakos et al., 2011) para alinhamento ine-xato de subsequências que foi proposto especificamente para aplicações de recuperação musical, maspor se tratar de um algoritmo genérico de comparação de subsequências, também é aplicável a outrasáreas. A ideia do alinhamento inexato é comparar subsequências de X = (x0, x1, . . . , xN−2, xN−1)e Y = (y0, y1, . . . , yN−2, yN−1); especificamente, uma subsequência de X tem a forma X ′ = X[t0 :t1] = (xt0 , . . . , xt1), onde t0 < t1. A inexatidão no alinhamento prevê que divergências entre as duassequências não gerem falsos negativos, visto que no domínio de aplicação dificilmente a consultagravada será precisamente igual à representação contida no banco de dados. Para tal, a estraté-gia utilizada é permitir subsequências que têm lacunas na faixa de índices (e.g. a subsequência(x2, x3, x6, x7) tem uma lacuna pois os índice 4 e 5 estão ausentes). Uma estratégia secundáriaé permitir tolerância para medidas de similaridade entre elementos, de forma que xn ≈f(xn) ym

Page 24: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

denota que xn e ym têm aproximadamente o mesmo valor, com uma tolerância definida em funçãode xn. Para oferecer controle sobre a tolerância de erros, fatores α e β são definidos para limitar otamanho das lacunas em X e Y, respectivamente.

Será definida uma matriz C(n,m) de tamanho (N + 1)× (M + 1) por recursão:

C(n, 0) = 0, C(0,m) = 0, (2.10)

C(n,m) =

{C(n− 1,m− 1) + 1, se xn−1 ≈f(xn−1) ym−1max{C(n− 1,m), C(n,m− 1)}, caso contrário (2.11)

Para a computação da matriz C(m,n), a equação 2.10 inicializa a recursão, que se segue atravésdo cálculo de 2.11 numa varredura por linhas ou por colunas da matriz. A matriz C(m,n) associadaao exemplo anterior está ilustrada na tabela 2.4, considerando f(xn) = 0 para n ∈ [0, N − 1].

C n=0 x0 = 4 x1 = 10 x2 = 2 x3 = 3 x4 = 5

m = 0 0 0 0 0 0 0y0 = 2 0 0 0 1 1 1y1 = 10 0 0 1 1 1 1y2 = 5 0 0 0 1 1 2y3 = 9 0 0 0 1 1 2y4 = 5 0 0 0 1 1 2y5 = 5 0 0 0 1 1 2

Tabela 2.4: Ilustração da computação de C, com f(xn) = 0, considerando X = (4, 10, 2, 3, 5) e Y =(2, 10, 5, 9, 5, 5).

Para implementar a restrição associada a α e β, é necessário armazenar separadamente os valoresde índice onde xn−1 ≈f(xn−1) ym−1 em vetores Lx (de tamanho N) e Ly (de tamanho M) e adicionaruma condição em 2.11, produzindo a seguinte atualização:

C(n,m) =

C(n− 1,m− 1) + 1, se xn−1 ≈f(xn−1) ym−10, se n− Lx(n) > α e m− Ly(m) > βC(n,m− 1), se n− Lx(n) > αC(n− 1,m), se m− Ly(m) > βmax{C(n− 1,m), C(n,m− 1)}, caso contrário

(2.12)

Por fim, temos que

SMBGT (X,Y ) = max{C(m,n) para n ∈ [0 : N + 1],m ∈ [0 : M + 1]}

A matriz C(m,n) do exemplo anterior com f(xn) = 0.5xn, α = 2 e β = 1 está ilustradana tabela 2.5. Os valores que aparecem na tabela indicam o tamanho da subsequência que estásendo comparada até o momento. Um valor alto mostra que o tamanho da subsequência está seaproximando de N (valor máximo obtenível), e se uma subsequência grande consegue ser alinhada aY, então temos um bom alinhamento, pois ambas tem muitos elementos semelhantes (xn−1 ≈f(xn−1)

ym−1).Mais detalhes sobre o SMBGT podem ser encontrados em (Kotsifakos et al., 2011).

2.3 Métricas de Avaliação

Foram descritas na seção anterior maneiras de calcular características que permitem uma com-paração, através de medidas de similaridade, entre sequências. No entanto essas medidas não criam

Page 25: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

C n=0 x0 = 4 x1 = 10 x2 = 2 x3 = 3 x4 = 5

m = 0 0 0 0 0 0 0y0 = 2 0 0 0 1 1 1y1 = 10 0 0 1 1 1 1y2 = 5 0 1 1 1 1 2y3 = 9 0 0 2 2 2 2y4 = 5 0 1 1 2 2 3y5 = 5 0 1 2 2 2 3

Tabela 2.5: Ilustração da computação de C. f(xn) = 0.5xn, α = 2, β = 1.

significado sem um contexto de aplicação e, mesmo definindo-se esse contexto, não discutimos aindaformas de avaliar se tais algoritmos estão realmente satisfazendo as necessidades descritas pelo con-texto de aplicação. Para a busca cantarolada normalmente será avaliado se o sistema está de fatoidentificando a música que foi cantada. Especificamente, a partir de uma gravação cantada quetem intenção de representar a música X, uma forma simples de avaliar a resposta do sistema se-ria: se respondeu X, funciona, caso contrário não funciona. Diferentemente de muitos problemasem recuperação de informação musical, esse tipo de avaliação bastante simples e aparentementenão problemática não representa uma abordagem perfeita, já que é difícil saber de antemão, porexemplo, se a música cantada é de fato reconhecível mesmo por avaliadores humanos, ainda quese conheça a intenção do interlocutor de cantar a música X. Para efeito de simplificação, nesse es-tudo será considerado que todas as gravações fornecidas são gravações reconhecíveis, e discutiremostécnicas para automação do cálculo da proximidade dos resultados estimados com os resultados dereferência. Serão discutidas as métricas de precision e recall (seção 2.3.1) e mean reciprocal rank(seção 2.3.2), medidas comuns para avaliações em recuperação de informação musical.

2.3.1 Precision e recall

As medidas de precision e recall são originalmente definidas num contexto de rotulação, ondehá duas classes de elementos, positivos e negativos, e um mecanismo de rotulação que pretendeproduzir os rótulos corretos. De forma direta, precision pode ser caracterizada como a fração de ele-mentos rotulados corretamente como positivos dentre todos os elementos rotulados como positivos,e recall como a fração dos elementos rotulados corretamente como positivos dentre todos os ele-mentos verdadeiramente positivos. No caso de um algoritmo que produz respostas a uma consulta,consideramos dentre um conjunto de respostas possíveis P um conjunto R que indica as respostasde referência e um conjunto E que contém as respostas estimadas. O conjunto de respostas em Pque não estão em R será denotado por R’, e analogamente as respostas em P que não estão emE serão denotadas por E’. O conjunto E ∩ R será denotado como VP, os verdadeiros positivos, onúmero de elementos em VP será denotado #VP. Similarmente E ∩ R′ = FP representa os falsospositivos, E′ ∩ R = FN os falsos negativos e E′ ∩ R′ = V N os verdadeiros negativos, conforme atabela 2.6. Por fim, definem-se as medidas de precision e recall como

precision =|E ∩R||E|

=#V P

#V P + #FP, e

recall =|E ∩R||R|

=#V P

#V P + #FN.

Observe que essas medidas estão sempre dentro do intervalo [0, 1], já que nas duas métricas oconjunto no numerador é subconjunto daquele do denominador. Considera-se nos dois casos que 1é o melhor valor possível (caso E=R), e valores próximos de 1 indicam que E e R possuem muitoselementos em comum.

Como exemplo diretamente relacionado à consulta cantarolada, tome uma lista de músicas

Page 26: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

ReferênciaPositivo (R) Negativo (R’)

Estimado Positivo (E) Verdadeiro positivo (VP) Falso positivo (FP)Negativo (E’) Falso negativo (FN) Verdadeiro negativo (VN)

Tabela 2.6: Conjuntos usados nas definições de precision e recall

M = (M1,M2,M3,M4,M5) e uma lista de consultas C = (C1, C2, C3, C4, C5). O conjunto derespostas possíveis P será a coleção de todos os pares de itens em M e C:

P = {(Ci,Mj) | i = 1, . . . , 5, j = 1, . . . , 5}.

Considere que o conjunto de referência é

R = {(C1,M1), (C2,M2), (C3,M3), (C4,M4), (C5,M5)},

o que indica que cada consulta Ci estava associada à música Mi de mesmo índice.Considere agora que o sistema de busca devolva o seguinte conjunto estimado:

E = {(C1,M1), (C1,M2), (C2,M4), (C2,M5), (C3,M1), (C3,M3), (C4,M3), (C4,M4), (C5,M4), (C5,M5)}

onde a cada consulta o sistema produz duas alternativas de músicas possíveis (resposta do tipo "top2"). O conjunto de verdadeiros positivos nesse caso será

V P = E ∩R = {(C1,M1), (C3,M3), (C4,M4), (C5,M5)},

e então temosprecision =

|E ∩R||E|

=4

10= 0.4 e

recall =|E ∩R||R|

=4

5= 0.8

Podemos notar um comportamento padrão em sistemas de busca: quanto maior o número deelementos retornados na busca, menor será a medida de precision, pois a busca produzirá resultadosindesejados. No exemplo anterior, em que o sistema sempre devolve duas alternativas para cadaconsulta, a medida de precision já está de antemão limitada ao valor máximo 0.5 (já que E terá odobro do tamanho de R). Analogamente, a medida de recall será beneficiada por um número grandede itens retornados, sendo que, no exemplo mostrado, a utilização de respostas top 5 resultaria emrecall = 1 para qualquer o processamento que tivesse sido feito, pois nesse caso R ⊆ E e portantoE ∩R = R.

2.3.2 Mean Reciprocal Rank (MRR)

O mean reciprocal rank é uma métrica utilizada quando há uma lista de resultados ordenadose se quer avaliar a posição em que respostas corretas aparecem. A ideia dessa medida é ofereceruma informação complementar ao precision, pois em consultas com N respostas o precision estarálimitado a priori em 1

N como visto no último exemplo (ou seja, essa métrica se torna menos relevantequanto maior for o número de respostas que o sistema fornece). Reciprocal rank significa literalmenteo inverso da posição em que aparece o resultado,

RRi =1

ranki,

Page 27: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

de onde se obtém a expressão do mean reciprocal rank como a média desses valores inversos deposição para um conjunto de consultas C:

MRR =1

|C|

|C|−1∑i=0

1

ranki.

Note que isso corresponde exatamente ao inverso da média harmônica das posições das respostascorretas; em particular MRR ∈ (0, 1] e quanto mais próximas da primeira posição estiverem asrespostas corretas, mais próximo de 1 será o valor do MRR. Como exemplo simples, pensando emum conjunto com 5 consultas C que devolvem múltiplas respostas, e onde os resultados corretosaparecem respectivamente nas posições rank = (2, 4, 4, 10, 1), essas consultas possuem

MRR =12 + 1

4 + 14 + 1

10 + 11

5= 0.42,

de onde a média harmônica das posições corretas pode ser obtida como MRR−1 = 2.38. Sabe-seentretanto que a média harmônica tende a se aproximar dos valores mais baixos da coleção, sendomenor do que as médias geométrica e aritmética, e por isso essa posição média deve ser interpretadacom cautela (no exemplo anterior apenas 2 das 5 consultas estão entre as “2.38 primeiras posições”).

2.4 Trabalhos relacionados

Nesta seção serão descritos mais rigorosamente alguns dos trabalhos citados na seção 1.1.3. Nemtodos utilizam as mesmas técnicas e conceitos enfocados neste trabalho, mas por atuarem sobre omesmo problema torna-se importante dar atenção às dificuldades e soluções encontradas neles.

2.4.1 Follow That Tune

A solução proposta em (Stasiak, 2014) utiliza DTW em vetores de pitch. O foco desse artigo éo problema do alinhamento no caso do canto estar em um tom diferente do que está no template,que é a versão que está no banco de dados. São apresentadas soluções como subtração da médiado pitch de cada elemento do vetor de pitch (Jeon W., 2011), o que pode não ser eficaz quandoapenas parte da gravação é cantada. Outra solução comentada é a que já foi apresentada, ondevalores consecutivos são subtraídos, tendo assim uma representação de intervalos, é apontada umadificuldade enfrentada por essa abordagem, que tem dificuldade de representar transições de notasque ocorrem em diversos quadros, o que é bastante comum de ocorrer, principalmente em vetorestranscritos automaticamente. É citada uma solução de força bruta, repetindo o procedimento dealinhamento para transposições do vetor de pitch, e colocado que seu ponto fraco é a complexidadecomputacional desnecessariamente aumentada. Por fim, a solução explorada no artigo é um modeloiterativo que aproxima gradualmente o tom da consulta do tom do template.

Antes do alinhamento é feito um pré-processamento simples sobre os vetores de pitch, quelogo após tem seus elementos subtraídos da diferença da média de elementos iniciais dos doisvetores. Considerando Q = (q0, q1, . . . , qN−1) o vetor referente a consulta, sendo N seu tamanho eT = (t0, t1, . . . , tM−1) o vetor do template, com tamanho M. O valor que será subtraído de todos oselementos de Q é

t =q2 + q3

2− t2 + t3

2

Depois Q é recalculadoQ∗ = (q0 − t, q1 − t, . . . , qN−1 − t)

Esse passo tem a intenção de colocar o elemento inicial no tom correto, e tenta aproximar o restodos elementos. Porém ainda é necessário corrigir variações que ocorram no percurso do alinhamento.Isso é feito com a utilização de um parâmetro α ∈ (0, 1] que quanto maior mais rápido aproxima

Page 28: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Q∗ do tom de T. α é atualizado a cada passo do cálculo da matriz C no DTW, de forma que oselementos de Q∗ e T correspondentes a posição atual são subtraídos e somados de 1−α

α , sendo

1

α= q∗(i)− t(j) +

1− αα

e o novo valor de α é somado ao q∗(i) para gerar o valor com tom corrigido de Q∗.

q̂i = q∗(i) + α

Os resultados obtidos usando a correção de tom são comparados com um método que usa DTWdiretamente nos vetores. Encontra-se uma melhora substancial.

2.4.2 Tararira

Em (López et al., 2004), é proposto um método de combinação entre busca sobre vetores depitch e comparação de notas transcritas. O método da seção 2.4.1 utiliza vetores de pitch e o que éutilizado no protótipo produzido neste trabalho (ver em 3) utiliza notas transcritas. É citado comodesvantagem do método de transcrever notas os erros decorrentes desta abordagem, que prejudicamo desempenho do sistema. Entretanto, a respeito de vetores de pitch é comentado sobre a dificuldadede se trabalhar com sequências maiores, o que é natural quando se usa esse tipo de abordagem, eque pode levar ao aumento do tempo de processamento.

Para combinar os dois métodos, o modelo propõe filtrar resultados comparação de notas trans-critas como um primeiro passo, assim minimizando o efeito de transcrições incorretas, já que serãopermitidos um número grande de resultados. O segundo passo é o que utiliza da comparação devetores de pitch, sendo que será executado apenas sobre os resultados da primeira etapa, fazendoassim que esse passo (mais custoso) seja executado em número menor de resultados.

O algoritmo apresentado começa por definir o vetor de pitch, ou contorno melódico, como échamado na descrição. A técnica utilizada é uma variação da autocorrelação do sinal, ou seja, sãoprocurados picos na função que compara o sinal com versões atrasadas dele mesmo, pois espera-seque haja um pico no atraso onde o sinal se repete. Tendo o contorno melódico, o algoritmo procuraapós por eventos de início de nota para segmentar o sinal. A principal técnica utilizada procuraderivadas relativas em bandas de frequência. O sinal passa por um banco de filtros com 6 bandas,gerando 6 novos sinais com uma faixa de frequências limitadas. Para cada faixa, é calculado aenvoltória de amplitude, que é utilizada para determinar, através de picos em sua derivada, pontosde inicio de nota. A derivada é multiplicada pelo inverso do envelope da amplitude, fazendo comque locais onde a amplitude seja próxima de zero tenham valores maiores pois isso caracterizamelhor os inícios de nota. Ainda assim, alguns processamentos posteriores validam os inícios denotas identificados, rejeitando aqueles que aparecem em posições que não tenham uma variaçãode amplitude maior que um limiar escolhido. Por fim, algumas notas são acrescentadas apenasverificando mudanças no vetor de contorno melódico.

A sequência de notas transcritas é codificada como sequência de intervalos e de IOIR. A com-paração é feita sobre elas, considerando a distância de edição (edit distance) que é 0 quando assequências são iguais e aumenta conforme mais modificações são necessárias para torná-las iguais.A primeira filtragem é feita sobre o valor obtido pela distância de edição, mantendo apenas aquelesresultados que tenham obtido pontuação baixa neste índice. Além de filtrar os resultados, tambémsão identificados trechos dos templates que provavelmente representem a consulta. Esses trechosentão são utilizados para gerar subsequências dos contornos melódicos do template com mesmotamanho da sequência de contorno melódico da consulta. Assim, a consulta é comparada com es-ses trechos através de DTW e os valores obtidos nessa comparação são utilizados para definir aordenação dos resultados que são retornados.

Page 29: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

2.4.3 Shazam

Uma solução rápida de busca em grandes bancos de áudio é apresentada por (Wang, 2003).A principal intenção é representar sinais de áudio de forma única e simples, permitindo assimcomparação de baixo custo entre eles. Também, com a representação espera-se robustez contraalgumas degradações, como compressão com perdas do sinal (lossy, como no MP3) e a mistura dosinal com ruído branco ou outro tipo de informação que altera significativamente o conteúdo masnão remove o conteúdo original.

A ideia para tentar cumprir tais requisitos parte do espectrograma gerado a partir do sinalcom um hop size baixo, como pulando 1 amostra entre cada espectro gerado. O espectrogramaentão é simplificado localizando picos em pequenas áreas de tempo por frequência. O tamanhoda área de localização de picos pode ser modificada para aumentar ou diminuir a esparsidade danova representação, quanto maior a área mais difícil de um pico ser encontrado (pois esta sendocomparado com mais valores), e assim mais esparso se torna. Pular apenas 1 amostra no cálculo doespectrograma pode ajudar no caso do sinal a ser comparado estar deslocado no tempo.

A representação de picos é capaz de compactar o sinal de áudio complexo e ainda mantémcaracterísticas que são suficientes para identificar a música. Porém a busca direta utilizando apenasa representação de picos ainda pode não ser tão eficiente quanto necessário em uma aplicaçãocomercial. A solução proposta é armazenar as representações em listas invertidas. Porém, a listainvertida criada a partir da representação de picos com tempo e frequência não é suficiente parareduzir a complexidade do problema.

Finalmente, a representação utilizada que consegue bom desempenho sem perda de representa-bilidade do sinal através do hash considera pares de picos espectrais. Cada um dos picos encontradosno sinal é associado a um grupo de outros picos em uma área definida por um fator de fan-out.A modificação dessa área altera simultaneamente e inversamente a complexidade e a precisão doalgoritmo.

2.4.4 Echoprint

Esta é uma solução de código aberto para o mesmo problema do Shazam(Ellis et al., 2011).Neste, é definido um hash simplificando o sinal, mas ao invés de utilizar picos encontrados varrendotodo o espectro, são consideradas bandas de frequência, usando um banco de filtros de 8 bandas.Cada uma das bandas é processada por um algoritmo adaptativo que encontra onsets, comparandoa intensidade do sinal com um limiar que decai exponencialmente. Para tentar manter taxa de 1onset por segundo, o decaimento do limiar é atualizado de acordo com o tempo que levou parase encontrar cada onset, quando o IOI cai, o limiar é reduzido, e caso o contrário, é aumentado.Com onsets detectados em todas as bandas por toda a gravação, são usados IOI entre onsetsconsecutivos para gerar o hash. Mais precisamente, 6 IOIs são calculados, considerando o onsetatual e os 4 próximos. Então para cada uma das 8 bandas, 6 onsets são calculados. Os IOIs sãoquantizados, com uma taxa de 23.2ms, e isso faz com que existam 1/0.0232 possíveis valores deIOI, que podem ser representados com 6 bits. O hash utiliza um par de IOI e o índice da bandade frequência (representado em 3 bits) o que totaliza 15 bits por hash. Então considerando a taxaobjetivo de 1 onset por segundo, cada segundo é codificado em 48 hashes x 15 bits = 720 bits, taxade bits muito inferior a um sinal comum de áudio, e que mantém características únicas do sinalpara poder ser comparado de forma rápida com outros sinais.

Para efetuar a busca de forma eficiente, os hashes são organizados em uma lista invertida.Para evitar viés inserido por múltiplos alinhamentos possíveis em músicas longas, todos os hashessão separados em trechos de no máximo 60 segundos com intersecções de 30 segundos entre si. Osresultados são ordenados por aqueles que tiveram melhores valores de alinhamento dos hashes, e, nocaso de algum ser significativamente maior que o restante, este é retornado como resposta correta.

Page 30: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

2.5 Web Audio API

Nesta seção será detalhada a Web Audio API e seus componentes de forma a permitir ao leitorcompreensão e uso da API para tarefas básicas de processamento de áudio.

A API é composta por pequenos módulos que podem ser conectados entre si para criar cadeiasde processamento de áudio. Para utilizar a API, o primeiro passo em um código Javascript é acriação de um AudioContext. Esse objeto é responsável por criar todos os outros elementos e sóestará disponível caso o navegador suporte o uso de Web Audio. Uma forma de evitar problemasde compatibilidade é checar a disponibilidade dele, e, em caso negativo, não utilizar a API. OAudioContext também é responsável por fazer a saída do som, através do seu atributo destination,que pode ser conectado por outros módulos.

O objeto Oscillator repete uma forma de onda periodicamente. Ele possui formas predefinidas,como senoide, dente-de-serra, triangular e quadrada, porém também possibilita a definição de umaforma particular através de sua função setPeriodicWave(). Um exemplo simples de seu uso podeser visto no código 2.1, onde um AudioContext é instanciado, um Oscillator criado com frequência440, forma de onda senoidal, e então conectado à saída de áudio.

1 audio_context = new (window . AudioContext | | window . webkitAudioContext ) ( ) ;2 o s c i l l a t o r = audio_context . c r e a t eO s c i l l a t o r ( ) ;34 o s c i l l a t o r . type = ’ s i n ’ ;5 o s c i l l a t o r . f requency . va lue = 440 ;6 o s c i l l a t o r . s t a r t ( ) ;78 o s c i l l a t o r . connect ( audio_context . d e s t i n a t i on ) ;

Código 2.1: Exemplo de uso do Oscillator.

O objeto Gain permite alterar a intensidade de um fluxo de áudio. Para modificar a intensidadedeve-se alterar o atributo value deste objeto. Também é possível utilizar as funções exponential-RampToValueAtTime() ou linearRampToValueAtTime() para determinar uma mudança linear ouexponencial da intensidade ao longo de um intervalo de tempo. O código 2.2 mostra um exemplode envelope adsr (ataque, decaimento, sustentação e soltura, na sigla em inglês) sendo criado comuso do nó Gain. Ele foi criado como uma função, que recebe um nó do tipo Gain, que tem fluxode áudio controlado segundo um envelope definido pelos parâmetros de tempo de ataque, pico deamplitude (que ocorre ao fim do ataque), tempo de decaimento, tempo de sustentação, amplitudede sustentação (que ocorre a partir do instante de início da sustentação) e o tempo de soltura.

1 func t i on adsr ( node ,A, amplitude_maxima ,D, S , amplitude_sustento ,R) {2 var i n i c i o = audio_context . currentTime ;3 node . ga in . linearRampToValueAtTime ( 0 . 0 , i n i c i o ) ;4 node . ga in . linearRampToValueAtTime ( amplitude_maxima , i n i c i o+A) ;5 node . ga in . linearRampToValueAtTime ( amplitude_sustento , i n i c i o+A+D) ;6 node . ga in . linearRampToValueAtTime ( amplitude_sustento , i n i c i o+A+D+S) ;7 node . ga in . linearRampToValueAtTime ( 0 . 0 , i n i c i o+A+D+S+R) ;8 }

Código 2.2: Exemplo de uso do Gain.

O objeto BiquadFilter permite o uso de uma variedade de filtros sobre um fluxo de áudio.Dentre os tipos estão o filtro passa-baixa, passa-alta, passa-banda, rejeita-banda e passa-tudo.Para esses filtros o parâmetro frequency determina a frequência de corte ou central, Q determinao comportamento do decaimento do filtro. Outros filtros que estão implementados são lowshelf,highshelf e peaking, que permitem definir qual é o comportamento da área filtrada, através doparâmetro gain, podendo ser uma atenuação assim como uma amplificação. O código 2.3 mostra acriação de um BiquadFilter do tipo passa-alta com frequência de corte em 200Hz. O resultado dafiltragem é conectado à saída de áudio.

Page 31: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

O objeto BufferSource permite o preenchimento de um AudioBufferSource no parâmetro bufferque pode ser reproduzido. O AudioBufferSource pode ser preenchido com conteúdos de um arquivocarregado através de uma XMLHttpRequest e decodificados através da função do AudioContext de-codeAudioData. Mas também, podem ser preenchidos através de amostras definidas por uma funçãoescolhida e escrita no Javascript. Como exemplo, ele poderia ser preenchido com amostras aleató-rias com a função Math.random(), criando assim ruído branco. O código 2.3 cria um BufferSourcepreenchido com ruído branco que é conectado a um filtro.

1 f i l t e r = audio_context . c r e a t eB iquadF i l t e r ( ) ;2 f i l t e r . type = ’ h ighpass ’ ;3 f i l t e r . f r equency . va lue = 200 ;4 f i l t e r . connect ( audio_context . d e s t i n a t i on ) ;56 SR = audio_context . sampleRate ;7 no i s eBu f f e r = audio_context . c r e a t eBu f f e r (1 , 4∗SR, SR) ,8 output = no i s eBu f f e r . getChannelData (0 ) ;9 for ( var i = 0 ; i < 4∗SR; i++) {

10 output [ i ] = Math . random ( ) ∗ 2 − 1 ;11 }1213 node = audio_context . c r ea t eBu f f e rSour c e ( ) ;14 node . bu f f e r = no i s eBu f f e r ;15 node . s t a r t (0 ) ;16 node . connect ( f i l t e r ) ;

Código 2.3: Exemplo de uso do BiquadFilter e BufferSource.

O objeto Analyser permite acesso a informação amostral de um fluxo de áudio. É possível leras amostras em bytes ou floats. Também, permite obter as informações no domínio da frequência,obtidas pela magnitude da transformada de Fourier, e seus coeficientes podem ser lidos como bytesou floats. O parâmetro fftSize define o tamanho de janela utilizado no cálculo da transformada. Oconteúdo é lido a partir de um vetor, mas pode ser usado em conjunto com um objeto html canvaspara visualizar este conteúdo. O código 2.4 mostra um exemplo simples de obtenção de um vetorcom os valores de magnitude dos componentes do espectro.

1 ana ly s e r = audio_context . c r ea teAna ly se r ( ) ;2 ana ly s e r . f f t S i z e = 2048 ;3 espectro_magnitude = new Uint8Array ( ana ly s e r . frequencyBinCount ) ;4 ana ly s e r . getByteFrequencyData ( espectro_magnitude ) ;

Código 2.4: Exemplo de uso do Analyser.

O objeto MediaStreamSource permite obter o fluxo de entrada de um dispositivo de captura deáudio a partir do getUserMedia do navegador. No momento, este objeto não é compatível com muitasplataformas, mas funciona bem em navegadores para desktops. O código 2.5 mostra o processo paracriação do MediaStreamSource.

1 nav igator . getUserMedia ({ audio : true , v ideo : fa l se } , func t i on ( stream ) {2 microfone = audio_context . createMediaStreamSource ( stream ) ;3 } , f unc t i on ( e ) {4 conso l e . l og ( ’Nao f o i p o s s i v e l obter microfone . ’ ) ;5 }) ;

Código 2.5: Exemplo de uso do MediaStreamSource.

O objeto Convolver permite realizar convolução linear sobre o fluxo de áudio tomando comoparâmetro buffer o sinal que é usado como resposta impulsiva.

O objeto Delay gera uma versão atrasada do fluxo de áudio.

Page 32: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

O objeto DynamicsCompressor comprime o sinal de entrada em sua amplitude, para evitar queocorra clipping, como no caso onde sinais somados extrapolam o limite de amplitude esperado pelaaplicação.

O objeto WaveShaper define pelo parâmetro curve uma curva de distorção para criar efeitos nosinal de entrada.

O objeto Panner simula o comportamento de movimento espacial do sinal.O objeto ScriptProcessor, assim como o Analyser permite acesso do conteúdo do sinal, porém

apenas no domínio temporal. Sua utilidade está no fato de possuir um outputBuffer que pode serexplorado e definido, seja através de algum método de síntese escolhido, ou por um processamentosobre o sinal que foi obtido no inputBuffer. Para utilizar este objeto é necessário definir a sua funçãode processamento com seu parâmetro onaudioprocess.

Page 33: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Capítulo 3

Experimentos preliminares

3.1 Descrição

O experimento realizado com intuito de avaliar a viabilidade da produção de um sistema deconsultas cantaroladas consiste em um protótipo com:

biblioteca de Query-By-Humming (QBH), utilizando linguagem C, que implementa a técnicade alinhamento de sequências SMBGT. A escolha da linguagem C para este componente vemda necessidade de rápida execução em um lote de tarefas simples para a comparação desequências.

interface para biblioteca, utilizando Python, que permite a leitura de lotes de arquivos de con-sulta e de banco de dados para avaliação de estatísticas do sistema. A escolha da linguagemPython foi feita por facilitar entrada e saída de diversas fontes de dados e pela facilidade deprocessamento de áudio com a biblioteca Librosa1.

Um sistema de QBH deve receber gravações de consultas cantaroladas e produzir uma lista commúsicas selecionadas a partir de um banco de dados. Como o intuito desse experimento é avaliar ocomportamento do protótipo em um lote de gravações, o sistema deve ser capaz de ler lotes e gerarestatísticas como MRR e recall. Os componentes do sistema estão descritos nas seções seguintes ese relacionam conforme a figura 3.1.

3.1.1 Banco de dados

O banco de dados que foi escolhido para testes em lote é utilizado na competição anual deQBH do MIREX (Music Information Retrieval Evaluation eXchange). Ele é composto por 4431consultas cantaroladas em formato WAV, gravadas por 195 pessoas diferentes ao longo de 7 anos.Cada consulta se refere a uma entre 48 músicas em formato MIDI que compõem o banco de dados deconsulta contendo 8522 arquivos MIDI da coleção ESSEN2. As músicas no banco de dados possuemum único canal que contém uma única nota ativa em cada instante, ou seja, são arquivos MIDImonofônicos.

3.1.2 Extração de características

As consultas são preparadas através de extração de F0 seguido por transcrição para MIDI. Esseprocesso é realizado pelo Melodia usando um script3 fornecido pelo autor do Melodia. Como alter-nativa, esse processo também foi feito com o sistema ASyMuT4 desenvolvido no IME/USP. Comoos dois algoritmos são bastante sensíveis à configuração de seus parâmetros (tamanho de janela, hop

1https://librosa.github.io/2http://www.esac-data.org/3https://github.com/justinsalamon/audio_to_midi_melodia4https://github.com/adrianomitre/asymut

23

Page 34: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Figura 3.1: Esquema do protótipo.

size, duração mínima de notas), foram criadas diversas listas contendo consultas transcritas paraMIDI, usando cada um dos algoritmos com várias configurações de parâmetros.

Os arquivos MIDI do banco de dados e das consultas transcritas são então processados paragerar características como a representação intervalar (como a da Figura 2.6, à esquerda). Essascaracterísticas são utilizadas para o alinhamento descrito na próxima seção.

3.1.3 Alinhamento

O algoritmo utilizado para alinhamento foi o SMBGT (seção 2.2.2). Cada uma das consultasserá alinhada a todos os arquivos do banco, o que irá resultar em 8522 valores de alinhamento, deonde selecionamos os 10 maiores para produzir a resposta à consulta. Logicamente espera-se que amúsica procurada esteja entre estas 10 respostas, preferencialmente em uma das primeiras posições,sendo que as métricas descritas na seção 2.3 servirão para quantificar o sucesso do método. Ao todo,o SMGBT possui 4 parâmetros: α e β representam o número de elementos que podem ser puladosnas sequências que estão sendo comparadas, Z altera a função que define a aproximação permitidaentre elementos das sequências (de forma que f(xn) = Zxn), e δ determina o número de buracoscom tamanho máximo α ou β, limitando a distância entre o índice inicial e final da sequência.

3.1.4 Avaliação

Para a avaliação quantitativa dessa metodologia na base de dados utilizada, utilizamos as mé-tricas de recall e MRR. Após obter a lista com os 10 melhores resultados, verifica-se a presença(ou não) na lista da música que se esperava encontrar, e em caso positivo a posição em que elase encontra. O recall pode ser interpretado como a média do número de vezes em que a músicaapareceu na lista, e o inverso do MRR pode ser interpretado como a média harmônica das posiçõesem que a música correta apareceu na lista.

O algoritmo de transcrição faz grande diferença no resultado final. É o passo mais custosoutilizado no sistema, sendo que o Melodia leva dezenas de horas para transcrever todo o banco deconsultas. Portanto, foram definidos alguns valores para os parâmetros de cada algoritmo, esperandocobrir boa parte do espaço de transcrições criados por eles. Resultados de recall, MRR e posição

Page 35: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

média para diferentes configurações dos algoritmos de transcrição são vistos na tabela 3.1.

Algoritmo Configuração Recall MRR posição médiaMin. dur. Smooth

Melodia

0.1 0.0 0.04 0.02 38.520.05 0.0 0.32 0.23 4.350.01 0.0 0.04 0.01 80.950.001 1.0 0.06 0.02 84.01

Tam. Janela Hop Size

ASyMuT

256 64 0.36 0.23 4.38512 64 0.32 0.19 5.13512 128 0.29 0.17 5.88512 256 0.23 0.13 7.611024 256 0.13 0.06 16.51

Tabela 3.1: Valores de recall, MRR e posição média para diferentes configurações dos algoritmos de trans-crição

O algoritmo de alinhamento também influi no resultado do recall : na figura 3.2 temos o resultadoda variação dos parâmetros α e β sob os melhores resultados da tabela 3.1 do ASyMuT e do Melodia.Podemos notar que apesar de mostrar um grande platô de mais alto recall, a variação entre o menore o maior valores é relativamente pequena (0.345 e 0.365 no ASyMuT ou 0.365 e 0.370 no Melodia).Isso indica que poderá ser mais relevante buscar melhorias nos resultados da transcrição do queotimizar os parâmetros de alinhamento. Na figura 3.3 também temos a variação dos parâmetros Ze δ, que reforçam a importância de melhorar o processo de transcrição.

(a) ASyMuT. (b) Melodia.

Figura 3.2: Recall em função do α e β sob diferentes transcrições.

Figura 3.3: Recall em função do Z e δ sob transcrições do ASyMuT.

Outro parâmetro que influir fortemente nas métricas é a representação, ou o tipo de sequênciautilizada para comparação das melodias. Foram testadas sequências com uma e duas dimensões,

Page 36: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

usando combinações de vetores de F0 em notas MIDI e em classes de notas, intervalos considerandoou não classes de notas, IOIR e logIOIR. Os resultados obtidos fixando α, β, Z e δ para diferentescombinações de tipos de sequências estão na tabela 3.2.

Sequência Recall MRR posição médiaIntervalo 0.378 0.23 4.29

Intervalo fmod 12 0.37 0.23 4.33Intervalo mod 12 0.33 0.195 5.11

Intervalo fmod 12 e logIOIR 0.30 0.187 5.34Intervalo e F0 mod 12 0.289 0.19 5.16

Intervalo fmod 12 e F0 mod 12 0.28 0.19 5.23F0 mod 12 e logIOIR 0.209 0.12 8.11

F0 mod 12 0.209 0.12 8.11IOIR 0.167 0.04 23.1

logIOIR 0.129 0.04 23.26F0 0.12 0.02 42.62

Tabela 3.2: Valores de recall, MRR e posição média para diferentes representações das melodias

3.1.5 Estrutura do código

A biblioteca e sua interface estão disponíveis como código aberto no Github5. O código cor-respondente à biblioteca está localizado na pasta lib no repositório. O arquivo qbh.c implementaefetivamente a função smbgt() que será exportada para a interface. O principal parâmetro dessafunção é a sequência que será comparada, que é um vetor de ponto flutuante com tamanho N. Adimensão de cada elemento do vetor é definida por um outro parâmetro, que quando utilizado pelainterface se torna opcional, e por padrão possui duas dimensões, para ser usado da mesma formaque em (Kotsifakos et al., 2011): uma dimensão contém o valor da diferença de notas (intervalo) ea outra dimensão contém a diferença de durações. Outros parâmetros importantes estão explicadosna seção 2.2.2, como por exemplo, o α e β que controlam o tamanho máximo de buracos permitidospara comparação das sequências. Basicamente, a função consiste em um loop que usa a funçãocompare() para definir como montar a matriz C, exigindo o uso da função propagation() quando háfalha ao alinhar elementos. A função update() é utilizada ao fim do cálculo de colunas de C paraatualizar o valor atual do score da comparação. A função reset() checa se houve a quebra do valorde δ, que causa o recálculo de C. O arquivo _qbh.c contém a definição de um módulo Python em Cexpondo a função smbgt() em um módulo chamado qbhlib que pode ser utilizado em Python quandocompilado.

Na pasta raiz, há o arquivo principal qbh.py, um exemplo de como utilizar o módulo qbhlib paracomparar lotes de arquivos csv gerados a partir de MIDI. Os arquivos são lidos usando o scriptmidicsv.py e em seguida iterados para comparação com a qbhlib e por fim a soma de resultadospara gerar as medidas de recall e MRR. O script midicsv.py carrega arquivos csv gerados a partirde MIDI com o programa Midicsv6. Os eventos MIDI são usados para gerar uma lista de vetorescom informações de tempo e nota e um valor binário de liga/desliga. Algumas filtragens podemocorrer na criação dessa lista, como por exemplo eventos com duração menor que um dado limiarpodem ser removidos (isso é interessante para tentar remover eventos que foram criados por falhasna transcrição). Tanto o MIDI gerado pelas transcrições como os MIDI ground-truth do banco dedados possuem apenas um canal MIDI com uma única nota sendo tocada a cada instante, portantoo script midicsv.py força que os eventos apareçam um após o outro de forma que um evento ligaé seguido por um evento desliga da mesma nota. Esta lista de vetores com informações MIDI é

5https://github.com/fabiogoro/qbh6http://www.fourmilab.ch/webtools/midicsv/

Page 37: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

então processada para gerar listas de notas, intervalos, durações e taxas de durações. Qualquer umadas listas geradas pode ser combinada para ser comparada como uma sequência com elementos demúltiplas dimensões. O script setup.py especifica a localização dos arquivos da biblioteca para acompilar e gerar o arquivo que pode ser usado na interface Python. O bash script run.sh executa osetup.py e em seguida executa qbh.py, sendo esse o procedimento padrão para execução do protótipo.

No repositório, arquivos csv são fornecidos como exemplo e estão na pasta bd, sendo que bd/midicontém arquivos de banco de dados e bd/query contém consultas. Os arquivos das consultas sãogerados a partir de arquivos wav; por economia de espaço esses arquivos não estão incluídos norepositório, bem como os programas usados para a cálculo dos csv não estão incluídos, já quetambém possuem código aberto e estão no Github (ASyMuT7 e Audio to MIDI Melodia8).

3.2 Resultados

Foram escritos 39 testes para revelar comportamentos errôneos na biblioteca, portanto noSMBGT, eles verificam desde casos simples como sequências idênticas ou completamente diferen-tes, a casos mais complexos como o comportamento dos parâmetros utilizando arquivos exemplossimples transcritos pelo Melodia e pelo ASyMuT. Todo comportamento errôneo encontrado foicorrigido.

Analisando os resultados demonstrados na seção 3.1.4, os melhores valores encontrados estão de-monstrados na tabela 3.3 e comparados com (Stasiak, 2014). Foram obtidos resultados semelhantescom Melodia e com ASyMuT, mas ambos estão muito aquém do esperado, longe dos valores encon-trados em (Stasiak, 2014) com o mesmo banco de dados. Apesar dessa distância insatisfatória, umbanco de dados que possui 8522 músicas com avaliação de recall feita sobre uma lista de 10 valoresselecionados neste banco, o resultado esperado em 37 porcento dos casos indica que, mesmo nãosendo aquilo que era esperado, existe uma direção correta sendo tomada pelo algoritmo, pois seriamuito fácil que nunca aparecesse o resultado correto na lista (um recall muito baixo). Como vimosna tabela 3.1, a qualidade da transcrição se mostra muito importante para melhorar os resultados,sendo muito mais importante do que os parâmetros do algoritmo de alinhamento. Quanto a temposde execução, a média para tanto o Melodia quanto para o ASyMuT são semelhantes, ficando porvolta de 120 segundos para realizar as 4431 buscas, o que resulta em 0.03 segundos por consulta emum banco com 8522 músicas, encerrando 3 ∗ 10−6 segundos por comparação de música. Os testesforam feitos em um notebook com processador AMD FX-7500 Radeon R7, sendo que consultas sãoexecutadas paralelamente ocupando 8 threads.

Algoritmo Recall MRRSMBGT (Melodia) 0.37 0.25SMBGT (ASyMut) 0.37 0.23

DTW 0.69 0.47DTW + Tune Follower 0.75 0.55

DTW + Tune Follower Adaptativo 0.79 0.66

Tabela 3.3: Comparação de resultados

7https://github.com/adrianomitre/asymut8https://github.com/justinsalamon/audio_to_midi_melodia

Page 38: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o
Page 39: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Capítulo 4

Próximos passos

Considerando todos os sistemas estudados e os resultados obtidos no experimento preliminar,são levantadas questões e pontos de dificuldade comum aos problemas. Este é um ponto de partidapara identificar locais exploráveis para trazer melhorias gerais que possam ser aplicados a esta e aoutras áreas. São então propostos novos experimentos, buscando avaliar as hipóteses originadas apartir das questões.

Questões e hipóteses

Por exemplo, a diferença dos níveis de recall entre os experimentos preliminares e a referência(tabela 3.3), indicam grande espaço de melhoria no paradigma utilizado nesse experimento. Aprincipal hipótese da causa desse baixo desempenho é a falha durante a transcrição da gravaçãodo canto para representação MIDI. Ambos os algoritmos de extração de F0 utilizados possuemimprecisão, que será somada ao erro da transcrição por conta de arredondamentos ou de detecçãode início de nota. O resultado desse processo será usado para comparação de subsequência que,apesar de ser tolerante a erros, fica prejudicado. A abordagem de DTW usada como referência natabela 3.3 não realiza transcrição, apenas extração de F0. A abordagem em (López et al., 2004)utiliza a transcrição apenas para filtragem de resultados, mas possui ainda pós-processamento paraidentificar exatamente similaridades.

Também, o alto custo de processamento da DTW (Kotsifakos et al., 2011; López et al., 2004;Stasiak, 2014), mostra a necessidade de encontrar alternativas ou paliativos para seu uso. Comovisto, uma abordagem interessante é utilizar algum algoritmo anteriormente ao uso da DTW parafiltragem de resultados. Talvez não seja a solução ideal pois poderia interferir nos resultados retor-nados. Outra forma utilizada para reduzir complexidade, comum em casos de grandes bancos dedados, é através de listas invertidas, como em (Ellis et al., 2011; Wang, 2003). Mas a aplicação delistas invertidas, sobre a DTW por si, não é praticável. Possivelmente há alguma forma de alterara DTW para permitir a aplicação de listas invertida e que não foi apresentada em nenhuma dasreferencias estudadas e será avaliado durante este trabalho. A ideia de usar versões transcritas dasconsultas é uma possibilidade para redução do processamento, mas implica em prejuízos de preci-são dos resultados. Ainda assim, pode ser interessante explorar os erros causados por esse tipo deabordagem para avaliar formas de contorná-los.

Um ponto de vista pouco explorado sobre este tipo de aplicação é a experiência do usuário.Muito é dito a respeito de como comparar sequências, tempo de execução, correção de falhas. Parao usuário final, todas essas questões se tornam irrelevantes contanto que ele tenha controle sobrea aplicação, saiba como e quando utilizá-la. Para sustentar essa ideia, pode-se verificar como é ofuncionamento do Shazam(Wang, 2003). Apesar de ser frustrante não receber resultados quando secanta uma música para esse sistema, ele cumpre bem e de forma rápida a função que se propõe.

29

Page 40: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Estrutura do experimento

O experimento completo, além dos módulos já existentes, tem um módulo de servidor web quese conecta com a interface web para permitir que consultas sejam efetuadas a partir de disposi-tivos quaisquer, sem necessidade de instalações complicadas. Assim, espera-se obter avaliações deusuários, além da que é automática sobre o banco de dados de consultas.

Um item necessário para o experimento é a implementação da função DTW para a bibliotecae integração dela no módulo de análise. Isso torna possível avaliar qual é o comportamento destafunção como algoritmo de medição de similaridade. Isso também permite realizar combinações dealgoritmos de alinhamento, como feito no sistema Tararira (López et al., 2004).

Por todo o experimento, novas estatísticas são geradas, indicando ganhos e perdas de desem-penho no sistema. A avaliação dos resultados guiará o enfoque do trabalho, pois, embora hajamhipóteses de bons caminhos a seguir, pode ser verificado que pontos antes encobertos pesem nega-tivamente na execução do sistema.

Cronograma

Portanto o cronograma de trabalho fica definido na tabela 4.1.

função DTW set out nov dez jan fevmódulo servidor web set out nov dez jan fevintegração da DTW set out nov dez jan fev

interface web set out nov dez jan fevrelatório de implementações set out nov dez jan fev

análise de testes set out nov dez jan fevajustes de algoritmos set out nov dez jan fev

relatório de resultados set out nov dez jan fevrelatório de conclusões set out nov dez jan fev

Tabela 4.1: Cronograma do projeto.

Page 41: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Referências Bibliográficas

Bregman(1994) Albert S. Bregman. Auditory Scene Analysis: The Perceptual Organization ofSound. The MIT Press. ISBN 0262521954,9780262521956. Citado na pág. 5

Cartwright e Pardo(2012) M. Cartwright e B. Pardo. Building a music search database usinghuman computation. Citado na pág. 2

Chen(2016) Hai-dong Chen, Ning; Xiao. Similarity fusion scheme for cover song identification.Electronics Letters, 52. doi: 10.1049/el.2015.4013. Citado na pág. 2

Collins(2010) Nick Collins. Introduction to Computer Music. Citado na pág. 5

Ellis e Cotton(2007) Daniel P. W. Ellis e Courtenay Valentine Cotton. The 2007 labrosa coversong detection system. Citado na pág. 2

Ellis et al.(2011) Daniel P. W. Ellis, Brian Whitman e Alastair Porter. Echoprint - an open musicidentification service. Citado na pág. 2, 19, 29

Jang(2009) Roger Jang. Mir-qbsh corpus, 2009. URL http://mirlab.org/dataset/public/mir-qbsh-corpus.rar. Citado na pág. 4

Jeon W.(2011) Ma C. Jeon W. Efficient search of music pitch contours using wavelet transformsand segmented dynamic time warping. Citado na pág. 17

Julià(2007) Joan Serrà Julià. Music similarity based on sequences of descriptors: Tonal featuresapplied to audio cover song identification, 2007. Citado na pág. 2

Kotsifakos et al.(2011) Alexios Kotsifakos, Panagiotis Papapetrou, Jaakko Hollmen e Dimi-trios Gunopulos. A subsequence matching with gaps-range-tolerances framework: A query-by-humming application. Citado na pág. 4, 11, 13, 14, 26, 29

Kotsifakos et al.(2012) Alexios Kotsifakos, Panagiotis Papapetrou, Jaakko Hollmen, DimitriosGunopulos, Vassilis Athitsos e George Kollios. Hum-a-song: A subsequence matching with gaps-range-tolerances query-by-humming system. 5(10). Citado na pág. 3

López et al.(2004) Ernesto López, Martín Rocamora e Gonzalo Sosa. Búsqueda de música portarareo, 2004. Citado na pág. 2, 18, 29, 30

Maier(1978) D. Maier. The complexity of some problems on subsequences and supersequences.Journal of the Association for Computing Machinery. Citado na pág. 10

Mitre e Queiroz(2005) Adriano Mitre e Marcelo Queiroz. Um sistema automático de transcriçãomelódica. Citado na pág. 6

Moore(1990) Richard Moore. Elements of Computer Music. Citado na pág. 5

Müller(2015) Meinard Müller. Fundamentals of Music Processing: Audio, Analysis, Algorithms,Applications. Citado na pág. 4, 5, 12

Roads(1996) Curtis Roads. The Computer Music Tutorial. Citado na pág. 5

31

Page 42: Fábio Goródscy - ime.usp.brfabiog/quali.pdf · 2.4.3 Shazam ... medida mais fina de distância entre notas utilizada frequentemente é o

Salamon e Gómez(2012) J. Salamon e E. Gómez. Melody extraction from polyphonic musicsignals using pitch contour characteristics. IEEE TRANSACTIONS ON AUDIO, SPEECH,AND LANGUAGE PROCESSING. Citado na pág. 7

Schaeffer(1967) Pierre Schaeffer. Solfege de L’Objet Sonore. Citado na pág. 5

Stasiak(2014) Bartłomiej Stasiak. Follow that tune – adaptive approach to dtw-based query-by-humming system. ARCHIVES OF ACOUSTICS, 39(4):467–476. Citado na pág. 3, 17, 27, 29

Tralie e Bendich(2015) Christopher J. Tralie e Paul Bendich. Cover song identification withtimbral shape sequences. Citado na pág. 2

Wang(2003) Avery Li-chun Wang. An industrial-strength audio search algorithm. Citado na pág. 1,19, 29

White(1978) George M. White. Dynamic programming, the viterbi algorithm, and low-cost speechrecognition. Citado na pág. 10