• Nenhum resultado encontrado

O Módulo de Previsão de Acordes do sistema de pós-processamento será responsável pela tentativa de identificação de sequências típicas de acordes e de estruturas cíclicas, como refrães, estrofes e seções. Nas próximas seções, detalharemos o desenvolvimento do mesmo.

Identificando Sequências Típicas de Acordes 7.1.

Como já mencionado, em trabalhos anteriores nós obtivemos relevantes resultados no uso de uma rede neural MLP com o algoritmo backpropagation para a realização da tarefa de identificação de sequências típicas de acordes. Neste trabalho original, esta tarefa foi realizada com a aplicação da rede neural como um algoritmo preditor de acordes, que recebia como entrada uma janela de três acordes (compostos pela sua tônica, tipo ou categoria, posição dentro do compasso e duração, informações extraídas diretamente das partituras de cada canção). Neste cenário, a rede neural foi capaz de identificar qual seria o próximo acorde com um percentual de sucesso que chegou ao nível 87% de acertos. Foi utilizado um corpus de 58 canções de jazz, das quais extraímos um conjunto de testes independente formado por 18 canções e sobre o qual o percentual de sucesso de previsão foi encontrado. Durante os treinamentos a prevenção de overfitting foi realizada através de validação cruzada.

A ideia para a nossa proposta atual seria utilizar o mesmo tipo de rede neural MLP a ser treinada com o algoritmo backpropgation para a execução da tarefa de previsão de acordes. Porém, no contexto atual, onde o ambiente é bastante diferente, já que a análise parte de arquivos de canções de áudio e não de dados retirados diretamente de partituras de canções, como ocorreu em nosso trabalho original, tentar utilizar a mesma ideia exigiu, antes de tudo, uma remodelagem dos atributos que deveriam compor cada acorde. Sem poder definir exatamente onde começa e onde termina cada compasso em uma canção analisada a partir de seu arquivo de áudio, não foi possível o uso dos atributos de Posição Dentro do Compasso e Duração que ajudaram a definir a configuração de rede neural que alcançou os melhores resultados na tarefa de previsão de acordes de nosso trabalho anterior. Sem a possibilidade de usar estes atributos, cada acorde passou a ser

codificado apenas com os atributos restantes: a tônica e o seu tipo. Com o redimensionamento dos atributos que definiriam cada acorde, partimos para a sua codificação.

Codificando os Atributos de Entrada da Rede Neural 7.1.1.

Com a definição dos atributos de tônica e tipo de cada acorde como únicos disponíveis para a representação de cada acorde, o passo seguinte seria definir como codificá-los adequadamente para que os mesmos pudessem ser utilizados em um processo de treinamento de uma rede neural do tipo MLP. Para tanto, optamos pela utilização da mesma codificação binária utilizada em nossa pesquisa anterior e que levou a rede neural treinada aos seus melhores resultados (CUNHA, 1999).

Para a definição exata da codificação de cada valor possível de cada atributo, antes de tudo, foi feita uma análise para a identificação de todos os acordes com seus respectivos tipos encontrados no corpus de 180 canções que seriam utilizadas para treinamento e testes. Neste universo foram encontrados 16 tipos de acordes aliados às 12 tônicas existentes (Dó, Dó#, Ré, Re#, Mi,...,Si). Com a definição do domínio dos valores de cada atributo, partimos para a codificação dos mesmos no formato binário utilizado em nossa pesquisa anterior.

Tônica Codificação da Tônica

C ou B# 000000000001 C# ou Db 000000000010 D 000000000100 D# ou Eb 000000001000 E ou Fb 000000010000 E# ou F 000000100000 F# ou Gb 000001000000 G 000010000000 G# ou Ab 000100000000 A 001000000000 A# ou Bb 010000000000 B ou Cb 100000000000

Tabela 7.1 – Tônicas de acordes e suas Codificações

Tipo do Acorde Codificação do Tipo do Acorde Maj 0000000000000001 Min 0000000000000010 Dim 0000000000000100 Aug 0000000000001000 maj7 0000000000010000 min7 0000000000100000 7 0000000001000000 dim7 0000000010000000 hdim7 0000000100000000 minmaj7 0000001000000000 maj6 0000010000000000 min6 0000100000000000 9 0001000000000000 maj9 0010000000000000 min9 0100000000000000 sus4 1000000000000000

Tabela 7.2 - Tipos de Acordes e suas Codificações

Nesta codificação, cada um dos possíveis valores de cada atributo seria definido como um vetor binário com a mesma dimensão do número de valores existentes no domínio do atributo (tônicas = 12, tipos de acordes = 16), e o que identificaria cada possível valor do atributo individualmente seria a posição em que ocorreria no vetor de codificação binária um bit com o valor 1. Todos os demais valores do vetor seriam iguais a zero. Nas Tabelas 7.1 e 7.2 são identificados os valores utilizados para codificar cada tipo de acorde com sua respectiva tônica.

Segundo esta codificação, o acorde “Amin7”, seria traduzido para a seguinte representação “0010000000000000000000100000”, o que significa na prática a definição de que cada acorde seria codificado como um vetor de 28 bits (Figura 7.1).

Figura 7.1 - Codificação com matriz esparsa binária do acorde “Amin7”

Vale ressaltar que para esta pesquisa atual utilizamos uma quantidade de tipos de acordes maior do que em nosso trabalho anterior, onde apenas seis tipos de acordes foram utilizados. Na nossa implementação atual utilizamos dezesseis tipos de acordes para cada uma das doze tônicas possíveis. Este novo cenário também revela uma diferença expressiva entre o ambiente de nossa pesquisa anterior e o ambiente atual.

Com a definição dos atributos que iriam compor cada acorde, bem como de suas codificações, o próximo passo seria a realização de processos de treinamento e testes com a rede neural MLP com o objetivo de verificar o desempenho da mesma no processo de identificação de sequências típicas de acordes, através da realização da previsão de ocorrência das mesmas.

Procedimento Experimental de Treinamento e Testes da Rede Neural 7.1.2.

O primeiro passo para a realização do procedimento experimental foi a definição dos conjuntos de treinamento e testes. O corpus de canções utilizado em

todos os experimentos foi composto por 180 canções dos Beatles. Como todo o procedimento experimental iria exigir duas fases bem distintas, sendo a fase inicial a de treinamento, validação e testes da rede neural para a tarefa de previsão de acordes, e a fase final a de uso desta rede neural já treinada como parte de nosso sistema de pós-processamento, e sendo utilizada para sugerir correções de transcrições, optamos pela seguinte divisão do nosso corpus de canções (Figura 7.2):

 Conjunto A: Composto por 70% das canções, 126 ao todo, escolhidas aleatoriamente a partir do corpus total. Este conjunto seria depois separado em novos subconjuntos de treinamento, validação e testes para a definição da configuração da rede neural ideal;

 Conjunto B; Composto por 30% das canções, 54 ao todo, correspondente ao restante do conjunto total de canções do corpus. Este conjunto seria isolado de todos os experimentos de treinamento, validação e testes da rede neural, e seria utilizado na fase final do procedimento experimental quando a rede neural seria incluída no modelo de pós-processamento para a validação de nossa proposta.

Optamos por este percentual de separação entre estes conjuntos por ser uma prática comum que o conjunto de treinamento fique com um tamanho entre 50% e 80% do conjunto total de dados (KOHAVI, 1995).

Figura 7.2 – Separação do Corpus de 180 canções dos Beatles para o procedimento experimental

70%

30%