You are on page 1of 83

UNIVERSIDADE DE SO PAULO

ESCOLA DE ENGENHARIA DE SO CARLOS






Sistema para identificao de udio utilizando Linux
embarcado em microcontrolador ARM




Marcos Machado de Abreu
Orientador: Prof. Dr. Evandro Luis Linhari Rodrigues








So Carlos
2012



Marcos Machado de Abreu





Sistema para identificao de udio
utilizando Linux embarcado em
microcontrolador ARM





Trabalho de Concluso de Curso
Apresentado Escola de Engenharia de So Carlos
Universidade de So Paulo

Curso de Engenharia Eltrica com nfase em Eletrnica

ORIENTADOR: Evandro Luis Linhari Rodrigues



So Carlos
2012
















AUTORIZO A REPRODUO E DIVULGAO TOTAL OU PARCIAL DESTE TRABALHO, POR
QUALQUER MEIO CONVENCIONAL OU ELETRNICO, PARA FINS DE ESTUDO E PESQUISA, DESDE
QUE CITADA A FONTE.
Ficha catalogrfica preparada pela Seo de Tratamento
da Informao do Servio de Biblioteca EESC/USP




Machado de Abreu, Marcos
M321s Sistema para identificao de udio utilizando Linux
embarcado em microcontrolador ARM / Marcos Machado de
Abreu; orientador Evandro Luis Linhari Rodrigues. So
Carlos, 2012.


Monografia (Graduao em Engenharia Eltrica com
nfase em Eletrnica) -- Escola de Engenharia de So
Carlos da Universidade de So Paulo, 2012.


1. Linux embarcado. 2. ARM. 3. Processamento de
udio. I. Ttulo.


Dedicatria

Dedico este trabalho aos meus familiares, especialmente meus pais, Nilda e Marcos
que sempre me apoiaram e no mediram esforos para manter meus estudos em So
Carlos e, alm disso, pela compreenso e suporte nas barreiras e desafios superados no
trajeto desta conquista.
Aos meus companheiros de sala que transformaram estes 5 anos em So Carlos uns
dos anos mais felizes e inesquecveis de minha vida. Dentre estes amigos, uma dedicatria
especial para aqueles, os quais que alm da sala de aula convivi e aprendi alm de tudo,
Ivan, Marcelo, Nayra e Rafael.





Agradecimentos

Agradeo primeiramente Deus, por todas as oportunidades e portas que foram
abertas para mim em toda minha vida.
Agradeo aos meus pais, juntamente com minha irm, avos e minha namorada, pelo
apoio nos momentos de indeciso e de superao de desafios.
Agradeo ao meu orientador Evandro, que providenciou ideias e suporte para a
realizao do trabalho, e tambm aos alunos Patrcia e Aliel que gentilmente cederam uma
excelente base para incio do projeto. A todos um sincero obrigado.




Sumrio
1. Introduo ..................................................................................................................... 25
1.1. Objetivo .................................................................................................................... 28
1.2. Estrutura da Monografia ........................................................................................... 29
2. Conceitos e Descrio tcnica ...................................................................................... 31
2.1. Sistemas Embarcados .............................................................................................. 31
2.2. Linux ........................................................................................................................ 32
Rootfilesystem .......................................................................................................... 32
Kernel ....................................................................................................................... 32
2.3. Kit Tiny 6410 Friendly Arm ....................................................................................... 33
3. Descrio do projeto ..................................................................................................... 35
3.1. Website .................................................................................................................... 36
3.2. Banco de dados ....................................................................................................... 37
3.3. Algoritmos de Codificao ........................................................................................ 39
udio Fingerprint ...................................................................................................... 39
Echoprint .................................................................................................................. 41
Chromaprint.............................................................................................................. 44
4. Implementao e Desenvolvimento .............................................................................. 51
4.1. Compilao dos algoritmos ...................................................................................... 51
Echoprint .................................................................................................................. 51
Chromaprint.............................................................................................................. 54
4.2. Instalao e configurao do banco de dados .......................................................... 56
4.3. Desenvolvimento do website .................................................................................... 61
Sistema de Cadastro de usurio............................................................................... 61
Campo de login ........................................................................................................ 63
Alterar senha ............................................................................................................ 63
Administrador ........................................................................................................... 64
Dados ....................................................................................................................... 65
Submeter .................................................................................................................. 65
udio FP .................................................................................................................. 68
4.4. Configuraes adicionais.......................................................................................... 69
5. Resultados e anlises ................................................................................................... 71


6. Consideraes Finais .................................................................................................... 77
Referncias Bibliogrficas .................................................................................................... 78
APNDICE A Imagens do website .................................................................................... 81

Lista de Tabelas

Tabela 1: Comparao entre os algoritmos .............................................................. 48
Tabela 2: Tempo de resposta de cada algoritmo ...................................................... 71
Tabela 3: Tempo de resposta do servidor de cada algoritmo ................................... 72
Tabela 4: Tempo de resposta do site ....................................................................... 73
Tabela 5: Tempo de resposta da submisso de dados ............................................. 75






Lista de Grfico

Grfico 1: Tempo de execuo dos algoritmos x msicas ........................................ 71
Grfico 2: Tempo de resposta do servidor x msicas ............................................... 72
Grfico 3: Tempo de resposta do sistema x Msicas (echoprint) .............................. 74
Grfico 4: Tempo de resposta do sistema x Msicas (chromaprint) .......................... 74






Lista de Figuras

Figura 1: Kit Olimex SAM9 L926, retirado do Manual OLIMEX. ................................ 26
Figura 2: Exemplo de atuao do Kernel em uma mquina. ..................................... 33
Figura 3: Plana Tiny 6410, retirado do MANUAL FriendlyArm Tiny6410 ................... 34
Figura 4: Diagrama das funes do site ................................................................... 35
Figura 5: Layout da pgina principal ......................................................................... 36
Figura 6: Visualizao do banco de dados pelo phpMyAdmin .................................. 38
Figura 7: Deteco de onsets, BELLO et al (2005) ................................................... 42
Figura 8: Sinal nomal e sinal gravado OTA, simulados no Audacity ......................... 43
Figura 9: Fluxograma do funcionamento do Echoprint .............................................. 44
Figura 10: Espectrograma, gerado com base no MANUAL Audacity ........................ 45
Figura 11: : Transformaes e resultado - Chroma features BARTSCH (2005). ....... 46
Figura 12: Janelas do Filtro ...................................................................................... 47
Figura 13: Exemplo chromaprint, retirado da BASE DE DADOS do chromaprint ...... 49
Figura 14: Fluxograma do funcionamento do Chromaprint ....................................... 50
Figura 15: Janela para inserir a senha do mysql ...................................................... 57
Figura 16: Tela de instalao - Configurao do sistema ......................................... 58
Figura 17: Tela para inserir senha do Mysql ............................................................. 59
Figura 18: Tela de incio phpMyAdmin...................................................................... 59
Figura 19: Execuo dos comandos na janela de comando ..................................... 61
Figura 20: Informaes necessrias para o cadastro ............................................... 62
Figura 21: Fluxograma Lgica - do cadastro ............................................................ 62
Figura 22: Questionrio para enviar dados da msica .............................................. 66
Figura 23: Fluxograma do funcionamento da pgina submeter ................................ 67
Figura 24: Layout da pgina udio FP...................................................................... 68
Figura 25: Fluxograma - Pgina udio FP ................................................................ 69
Figura 26: Banco de dados como as msicas enviadas para teste ........................... 76





Lista de Smbolos

ARM Advanced Risc Machine
FP Finger Print
ID Impresso Digital
OTA Over the air
Npk New peak signal
HTTP HyperText Transfer Protocol Secure
SQL Structured Query Language
FLAC Free Lossless Audio Codec




Resumo

Esta monografia visa abordar uma subrea de Sistemas Digitais com franca possibilidade de
crescimento e grande potencial tecnolgico que o trabalho com sistemas embarcados,
Linux embarcado, utilizando microprocessador de arquitetura ARM explorando o ambiente
Web. O hardware e o sistema operacional empregados foram usados para anlise e
codificao de udio (msicas em formato mp3) que, posteriormente, baseado em banco de
dados, permitem a identificao do udio em questo. Foram utilizados dois algoritmos para
a codificao do udio para a realizao de comparaes e discusses a respeito de suas
metodologias e desempenhos. Depois de realizados os ensaios sobre tempo de execuo e
eficincia de resposta, foi possvel observar a superioridade em termos de processamento
obtida pelo Chromaprint sobre o Echoprint. Este projeto disponibiliza uma contribuio em
forma de uma plataforma que se utiliza dos recursos que o ambiente Web oferece, para
aplicao de metodologias de reconhecimento de udio, sem restrio de acesso para
usurios.

Palavras-chave: Linux embarcado, ARM, Processamento de udio.





Abstract

This monograph aims to address a subarea of Digital Systems with clear possibility of
technological growth and great potential for different applications that works with embedded
systems, embedded Linux, using ARM microprocessor architecture exploiting the Web
environment The hardware and operating system employed were used to analysis and
encoding audio (music in mp3 format) that subsequently based on database, allowed the
identification of the audio in question. We used two algorithms for audio encoding to perform
comparisons and discussions about their methodologies and performance. After conducted
the tests on runtime efficiency and response it was observed the superiority in terms of
processing obtained by Chromaprint over the Echoprint algorithm. This project provides a
contribution in terms of a platform that uses the Web environment resources for application
of methodologies for audio recognition, without restricting user access.

Keywords: Embedded Linux, ARM architecture, audio processing.




25


1. Introduo

A evoluo dos computadores o que guia o crescimento das tecnologias existentes
no mundo, desde o surgimento do ENIAC e dos computadores feitos com vlvulas na
dcada de 1950, at os dias atuais com os supercomputadores, automao industrial e
comercial. O avano tecnolgico o que permite a evoluo das outras reas, como a
medicina, biologia, etc, oferecendo equipamentos casa vez mais precisos.
O desenvolvimento no se limita capacidade e velocidade de processamento dos
processadores, mas tambm empurrado pela enorme variedade de componentes e
sistemas existentes no mercado, que so desenvolvidos de acordo com a necessidade dos
consumidores/usurios.
Com a necessidade de desenvolver componentes que conseguissem controlar
mquinas de modo sistemtico distncia, de forma compacta e com objetivos bem
definidos, surgiram os sistemas embarcados na dcada de 1960.
De forma genrica, sistemas embarcados podem ser definidos como sistemas que
contem pelo menos um microprocessador, o qual responsvel por uma atividade
especfica. Apresentam basicamente os mesmos componentes que um PC (processador,
memria, interface, assim por diante), mas diferenciam-se no ponto em que se limitam a
executar bem uma nica tarefa, repetidamente.
O primeiro sistema embarcado a ser produzido e colocado em teste foi o Apollo
Guidance Computer, que foi embutido no projeto Apollo e na poca foi considerado o item
de maior risco no projeto.
Com o tempo, surgiram os primeiros sistemas fabricados em larga produo, que
tambm eram voltados para a rea militar e operavam em funes especficas, como por
exemplo, um computador guia de um mssil americano.
Como o sistema embarcado mostrou-se importante para os projetos militares, no
demorou muito para surgirem as primeiras mquinas comerciais com estes componentes.
Com a diminuio gradual do tamanho dos componentes e de seu valor agregado,
juntamente com o aumento da capacidade de processamento, tornou-se lucrativo inserir
estes componentes nos equipamentos. Alm disso, em muitos casos interessante
substituir componentes analgicos como transistores, resistores e potencimetros, por um
algoritmo executado internamente aos microprocessadores.
Atualmente, a utilizao de sistemas embarcados intensa e de certo modo chega a
superar em nmeros a procura de PC. Muitas vezes compra-se um equipamento sem saber
que o mesmo faz uso da tecnologia e do conceito de sistemas embarcados (equipamentos
26

domsticos, brinquedos). Pode-se verificar hoje os embarcados produzidos em larga escala
para a rea comercial, como, celulares, kits de aprendizado, pagers, mp3/mp4, linha branca,
calculadoras, videogames, etc.
A Figura 1 mostra uma placa de aprendizado (kit de desenvolvimento com ARM9)
com dimenses reduzidas que pode receber sistemas operacionais como Linux e Windows
e assim compor a parte principal de um sistema embarcado.

Figura 1: Kit Olimex SAM9 L926, retirado do Manual OLIMEX.

Como apresentado na Figura 1, alguns destes equipamentos, devido necessidade
ou at mesmo para pesquisas, trabalham com sistema operacional embarcado,
particularmente naquelas solues que necessitam de uma mltiplas interfaces, com o
usurio e/ou com outros sistemas.
O sistema operacional (SO) permite a interatividade entre mquina e usurio, ou
seja, possvel organizar cada processo com uma interface adequada, sincronizando com
os dispositivos de manipulao, teclado, mouse, tela, entre outros dispositivos que
estiverem acoplados ao equipamento.
O SO tem sua histria iniciada na segunda gerao da computao, dcada de
1950, com o surgimento de seu conceito apenas e, a partir daquele momento, vem
crescendo e atualmente apresentam grande nmero e variedade. Esta variedade pode ser
notada facilmente em uma loja de celulares, onde se encontram celulares com o Windows
Mobile, Android, BlackBerry OS, Symbian, iOS, Palm OS, etc.
Essa variedade vem acompanhada de grandes recursos internos, que combinados
com os embarcados adequados, auxiliam no desenvolvimento de novidades tecnolgicas
impulsionando o desenvolvimento e fortalecendo a evoluo da eletrnica digital.
A grande e crescente capacidade de processamento dos microcontroladores
embarcados e tambm da grande variedade e apoio ao usurio fornecido pelos SOs
27

existentes no mercado, abrem portas para o incio de vrias pesquisas realizadas nesta
rea, e seguindo esta linha de sistemas embarcados com sistema operacional que surge o
trabalho aqui apresentado.





28

1.1. Objetivo

O objetivo propor uma plataforma com acesso via Web para reconhecimento de
udio, composta por microcontrolador ARM em ambiente de desenvolvimento Linux, onde o
usurio submete um arquivo ou um trecho de udio e atravs de algoritmos matemticos de
processamento de udio, o mesmo deve ser identificado.


29

1.2. Estrutura da Monografia

A monografia est dividida em 6 captulos, sendo os primeiros captulos dedicados
uma introduo ao assunto e tambm, elaborao de uma descrio dos principais
conceitos e ferramentas utilizadas para o desenvolvimento do projeto em questo. J o
captulo 4 foi elaborado para descrio do desenvolvimento, abrangendo a compilao dos
algoritmos e tambm a elaborao e formatao do website. Os captulos finais so
referentes s anlises dos resultados obtidos e tambm sobre algumas concluses finais
sobre o projeto.



























30


31

2. Conceitos e Descrio tcnica

Neste captulo sero apresentados alguns conceitos que foram de extrema
importncia no desenvolvimento do projeto, junto com o equipamento que foi utilizado para a
elaborao do mesmo.

2.1. Sistemas Embarcados
De forma geral, sistemas embarcados podem ser definidos, segundo CUNHA (2008),
como microprocessadores que realizam uma ou poucas atividades determinadas,
repetidamente, com alta capacidade de processamento, evitando a paralisao ou
ocorrncia de pane no sistema.
Normalmente nestes sistemas, o programa a ser executado armazenado em
memria FLASH ou ROM, de incio j possvel prever uma limitao importante no quesito
memria, diferentemente de um PC onde as informaes podem ser alocadas em disco
rgido. Esta memria de armazenamento no elimina a necessidade da existncia de
memria RAM em um embarcado.
Dependendo de sua finalidade, um sistema embarcado pode ou no apresentar uma
interface com usurio (teclado, mouse, tela, entre outros), pois pode realizar apenas uma ou
poucas operaes simples, por exemplo, disparar um bip quando certo boto for acionado.
Este exemplo de sistema pode no apresentar uma interface por questo de simplicidade e
segurana do projeto, mas os que necessitam de inmeras tarefas, feedbacks, anlise e
alteraes de dados, certamente apresentaro interface que permita a manipulao e
tambm o acompanhamento das variveis existentes no sistema.
Outra vantagem atual a boa variedade de arquiteturas de
microprocessadores/microcontroladores existentes no mercado como ARM, ATMEL, PIC,
PowerPC, entre outras, o que gera uma grande possibilidade de escolha da melhor opo
para cada aplicao.
Neste trabalho optou-se pela utilizao da arquitetura ARM, que foi primeiramente
nominada, baseado em GOMES, LEITE e CAETANO (2005), como Acorn RISC Machine,
quando criada pela empresa Acorn Computers Limited em 1984, mas passou a ser
chamada de Advanced RISC Machine. Esta arquitetura possui processador de 32 bits e
usada em larga escala dentro da eletrnica digital e informtica.
Foi desenvolvida para atender os sistemas educacionais britnicos, mas com o
tempo e seu desempenho, tornou-se o primeiro processador com conjunto reduzido de
informaes (RISC) comercial. Atualmente apresentam caractersticas importantes como
baixo consumo de energia e pouca rea de ocupao de silcio para sua fabricao.
32


2.2. Linux
Linux certamente um dos sistemas operacionais mais difundidos e utilizados no
mundo. Possui caractersticas atraentes para ser empregado em sistemas embarcados,
como, o Kernel (ncleo), que pode ser definido na instalao dependendo da aplicao que
o usurio necessitar. Este sistema foi desenvolvido na dcada de 1990 por Linus Torvalds.
Hoje em dia considerado o mais significativo participante da Linux Foundation, e um
software livre (GPL), que pode ser usado em praticamente qualquer aplicao, e melhor
ainda, pode ser modificado livremente sendo oferecido em verses distribudas com
diferentes licenas.
Atualmente o SO Linux pode ser encontrado em diversas distribuies, as quais
possuem configuraes diferentes (interfaces grficas, acesso ao cdigo fonte, etc), que
podem diferenciar uma distribuio da outra. Cada uma tem suas particularidades que
atendem as necessidades de cada desenvolvedor em especfico. Pode-se citar algumas
distribuies como o Ubuntu, Fedora, Slackware, Kurumim, Debian, entre outros.
Em relao sua estrutura interna, pode-se dizer que o Linux composto
basicamente por 2 sistemas: O Kernel, Rootfilesystem e um programa externo, Bootloader,
responsvel por carregar o Linux na memria.Bootloader
O bootloader, tambm chamado de gerenciador de boot, realiza o boot no sistema,
ou seja, responsvel por carregar o sistema operacional, junto com suas configuraes,
escolhido previamente pelo desenvolvedor. Feito isto, o sistema passa obter o controle
sobre o equipamento.
Este gerenciador no obrigatoriamente um nico programa, podendo ser
encontrado como uma cadeia de programas, e tambm pode ser realizado de maneiras
distintas. Esta variedade de bootloaders e sua flexibilidade chegou um ponto que pode-se
trabalhar mais de um sistema operacional em uma mquina.
Rootfilesystem
Traduzido para o portugus o termo Root Filesystem tem-se "sistema de arquivo
raiz", o que define satisfatoriamente o que realmente este sistema. o sistema
responsvel pela leitura e escrita de arquivos. Todos os arquivos com as configuraes
internas, as bibliotecas, juntamente com os scripts, so armazenados no rootfilesystem.
Kernel
Kernel, ou ncleo, basicamente o centro que gerencia a comunicao entre
usurio, memria, hardware acoplado e barramento de comunicao. Serve de ponte entre
aplicativos e o processamento em nvel de hardware. Na Figura 2 pode-se ter uma ideia da
atuao deste sistema.
33


Figura 2: Exemplo de atuao do Kernel em uma mquina.

2.3. Kit Tiny 6410 Friendly Arm
O kit Tiny 6410 fabricado pela empresa chinesa Friendly Arm, especialista no
projeto de confeco de placas que fazem uso da arquitetura ARM, como a Tiny 210 que
possui core Samsung S5PV210, a Mini 2440, entre outras.
Referente placa utilizada no projeto, Tiny 6410, seguem algumas caractersticas e
informaes:

CPU: Samsung S3C6410A ARM1176JZF-S 533 Mhz.
RAM: 128 MB / 256 MB DDR RAM, 32 Bits.
Flash: 256 MB / 1 GB NAND Flash.
Sada do usurio: 4 LEDs.
Sada e entrada analogical.
Interfaces: USB, SERIAL, LCD, Cmera CMOS, SPI, Tela sensvel ao toque.
Sistemas Operacionais: Windows CE 6, Linux 2.6, Android e XUbunto.
Alimentao: 5 volts.
Boto Reset.
Entrada para acoplar carto SD.
Beeper: PWM Buzzer
RTC: Real time clock, alimentado por baterias

Mais informaes sobre a placa, como desenhos, data sheets dos componentes
existentes, pode ser encontradas no MANUAL FriendlyArm Tiny6410. Na Figura 3 podem
ser vistas algumas das entradas e componentes citados.

34




















Figura 3: Plana Tiny 6410, retirado do MANUAL FriendlyArm Tiny6410
35

3. Descrio do projeto
O kit Tiny 6410, como descrito anteriormente, possui diversas entradas e sadas para
perifricos, porm para a realizao deste trabalho no ser necessrio utilizar todo este
arsenal, apenas foi usada a entrada de cabo ethernet, uma entrada USB para utilizao do
teclado e a tela LCD para visualizao dos comandos/diretrios armazenados no kit.
A entrada de rede, Ethernet (RJ45), importante, pois atravs desta porta que o
webite se manter no ar, dando suporte aos usurios. Em suma, os algoritmos responsveis
pela codificao do udio e os responsveis pela interface grfica do site, esto
armazenados na memria NAND da placa, e so acessados pelos usurios via web no
endereo referente ao protocolo de internet (IP) da placa.
Os algoritmos responsveis pela codificao do udio so considerados o corao
do endereo web, bombeando informaes para que cada subsistema tenha o suporte
necessrio para realizar sua respectiva funo de acordo com o esperado. Se ocorrer algum
imprevisto, os sistemas adjacentes iro falhar exibindo mensagens de notificao. Dentre
estes sistemas, pode-se citar o banco de dados, o de submisso de dados e o
reconhecimento do udio propriamente dito.
Paralelo a todo este processo, existe a etapa de Login/Cadastramento, que deve ser
executada pelo usurio antes de usufruir das atividades que o site possui. Digamos que esta
etapa gera um pouco de segurana, pois se tem o controle dos usurios que enviam os
dados. A Figura 4 exibe um diagrama relacionado ao site, com as etapas que devem ser
seguidas.


Figura 4: Diagrama das funes do site Figura 4: Diagrama das funes do site
36

3.1. Website

Manter o projeto todo em execuo via web, interessante no ponto de disponibilizar
o projeto para consultas de qualquer pessoa e tambm receber informaes que
contribuiro para o crescimento da ideia/projeto em questo.
Como dito anteriormente, o site o meio de comunicao entre o usurio e os
programas, mantendo-os na web podem ser acessados de qualquer lugar e a qualquer
momento e, evidentemente, com a limitao de disponibilidade de acesso internet. Na
Figura 5 tem-se o layout da pgina principal do site.




constitudo de cones os quais so responsveis por iniciar cada um dos
subsistemas envolvidos. Possui 7 links, localizados no canto esquerdo, que representam as
principais atividades executadas pelo site, como pode ser visto na Figura 5, e um link
localizado no canto superior direito, sendo este responsvel por explicar ao usurio como
navegar pela pgina.
Dentre as 7 funes principais e o link adjacente, tem-se:
Login: Responsvel pelo incio da sesso de um usurio j cadastrado.
Cadastro: Arquiva dados das pessoas interessadas em participar do site, e
que ainda no foram cadastradas, ou seja, que estejam realizando o 1
acesso.
Figura 5: Layout da pgina principal
37

Alterar Senha: Caso o usurio necessite de realizar uma alterao de senha,
seja por segurana ou outros motivos. S ser necessrio que saiba a senha
anterior.
Administrador: um campo voltado apenas para o desenvolvedor e/ou
administrador do site. Nele podem ser analisados os dados de restrio de
cada usurio.
Dados: Dentro deste campo possvel analisar todas as msicas
armazenadas dentro do banco de dados.
udio FP: Audio Finger Print o link responsvel pelo reconhecimento de
udio, dentro dele deve-se carregar o arquivo e escolher entre duas opes
de algoritmos.
Instrues: um link que auxilia o usurio a navegar pelo site, contendo
passo a passo o que deve ser feito para cada uma das aplicaes existentes.

Estes itens formam o corpo da pgina na web e do suporte para toda a estrutura do
projeto. Seu desenvolvimento e mtodo de criao sero descritos posteriormente.


3.2. Banco de dados
O banco de dados um sistema de armazenamento de informaes que podem ser
de grande sigilo ou no, mas certamente so de grande importncia para o funcionamento e
consultas futuras. Neste caso, o banco de dados pea fundamental, principalmente, para o
funcionamento do sistema de consulta, fazendo parte do algoritmo de busca interno e
tambm para simples consultas realizadas por usurios.
Pode-se considerar como banco de dados, seguindo MATTOSO (2007), qualquer
forma de armazenamento de dados e informaes interessantes para certa pessoa,
empresa sistema, e at mesmo um arquivo de extenso txt pode funcionar como
armazenamento de dados. Porm, com o intuito de realizar o armazenamento com mais
segurana e tambm organizao, foi utilizado o MySQL, que um sistema de
gerenciamento de banco de dados utilizando a linguagem SQL como interface, e tambm a
ferramenta phpMyAdmin, aplicativo Web que possibilita controlar e manipular o MySQL,
juntamente com suas tabelas e bases de dados.
Com a utilizao do phpMyAdmin a manipulao dos banco de dados se torna muito
mais rpida e prtica, pois possvel ver todo seu contedo com uma interface grfica
extremamente intuitiva em forma de tabelas, como evidenciado na Figura 6.
38

A formatao em formas de tabelas deixam ainda mais intuitiva as buscas que sero
realizadas internamente. Internamente o banco responsvel pelo armazenamento das
informaes referentes s msicas est dividido em 6 colunas, cada uma com informaes
importantes para cada sistema ou algoritmo dentro do projeto, e o banco responsvel pelo
sistema de cadastro/login do site est dividido em duas tabelas, cada uma com 5 colunas de
informaes.



As 6 colunas que formam o banco de dados musical so:
Incremento: apenas um campo para o desenvolvedor, onde se pode
conhecer quantas msicas existem no banco de dados, pois cada vez que
uma adicionada, o campo incremento tem seu valor acrescido de uma
unidade.
Usurio: Toda vez que o site receber algum udio para codificao, ser
armazenado o responsvel, ou seja, o usurio que enviou os dados, assim
tem-se o controle do responsvel por cada informao enviada.
Artista: o cantor/banda da msica enviada
Msica: Nome da msica
Algoritmo: Nome do algoritmo usado para codificar, importante para que
no ocorra confuses no momento de realizar comparaes das impresses
digitais (ID).
Id: So as impresses digitais resultantes da codificao do udio por cada
algoritmo em especfico.
Figura 6: Visualizao do banco de dados pelo phpMyAdmin Figura 6: Visualizao do banco de dados pelo phpMyAdmin
39

E as 5 colunas que completam as tabelas responsvel pelo armazenamento de
usurios so:
Incremento: Tem a mesma funo que anteriormente.
Nome: Nome completo do usurio, enviado e armazenado no momento em
que a pessoa faz seu cadastro no site.
Usurio: Usurio de login para acesso ao site. Ser escolhido pelo usurio
no momento de cadastro; pode ser escolhido qualquer nome que ainda no
tenha sido usado.
Email: Email ativo do usurio; qualquer comunicao entre o administrador e
o usurio ser feita por este email.
Senha: Este campo responsvel pela segurana da conta do usurio,
somente ele e o administrador possuem acesso a este campo.
O armazenamento destas informaes uma etapa muito importante no
desenvolvimento deste projeto. Com o banco de dados de msicas poupa-se tempo de
execuo e com isso tem-se o reconhecimento da msica mais rpido. Alm disso, o ndice
de acerto cresce, pois as informaes armazenadas so fiscalizadas comprovando sua
veracidade.
E o banco de dados de informaes referentes aos usurios, executa um papel de
segurana dentro do site, a partir do momento em que para fazer uso de todas as funes
do site, o usurio deve estar com acesso liberado e, assim, tem-se o administrador tem a
capacidade de analisar as atividades dos usurios.

3.3. Algoritmos de Codificao
Os algoritmos de codificao tem a misso de transformar o udio recebido em um
cdigo, este deve ser robusto e capaz de aumentar a compatibilidade de sinais parecidos e
diminuir para sinais diferentes. Essa compatibilidade ser realizada com comparaes do
cdigo gerado com os que esto armazenados dentro de um banco de dados.
Existem vrios meios de realizar a codificao de certo udio. Aqui ser abordado
um mtodo denominado de udio FingerPrint, baseando-se no GUIA audio fingerprint e
tambm em HAITSMA, KALKER (2002), o qual trabalha gerando uma impresso digital a
partir de um sinal de msica.

udio Fingerprint
Um algoritmo de FingerPrint (FP) robusto, deve levar em conta as caractersticas de
percepo do udio . Quando se tem dois arquivos de udio que so semelhantes para o
ouvido humano, mesmo que seus cdigos binrios sejam diferentes, eles devem possuir
40

impresses digitais semelhantes, logo estas impresses no podem ser sensveis s
pequenas variaes, como uma comparao bit a bit.
Um exemplo de comparao seria a impresso digital humana, que primeiramente
armazenada em um banco de dados e quando foi requisitada novamente apresenta a
correta equivalncia, mesmo com a impresso do sujeito, dono da impresso digital, sujeita
variaes, como manchas e cicatrizes.
Algumas das mais utilizadas tcnicas em impresses digitais so: anlises de
espectro, anlise das bandas e cruzamento de zero.
A utilizao de impresses digitais permite tambm a codificao do udio depois de
passar por uma compresso, o que muito difcil ocorrer se fosse usado o mtodo de
codificao bit a bit. Mesmo podendo causar algumas alteraes no udio original, o FP
capaz de superar estas pequenas alteraes. A compresso do udio um mtodo
utilizado em armazenamento do som, por exemplo, quando for gravar uma msica alocada
no PC em CD.
O sistema pode ser separado em algumas partes, sendo a primeira a obteno e
digitalizao do sinal: determina-se qual o tamanho da amostra necessria para que uma
impresso digital (ID) seja satisfatoriamente gerada. Uma ID satisfatoriamente gerada se
os dados nela contidos puderem ser utilizados para a identificao atravs da ID do sinal
original.
O sinal pode ser obtido "over the air", isto , quando o sinal proveniente de um
microfone ou outro transdutor, gerando algum tipo de rudo e poluindo o sinal armazenado.
Para sistemas "over the air" se exige grande robustez, velocidade de processamento e
ainda que a amostra necessria no seja demasiado grande, pois nesse caso ocorreria
perdas de informaes.
A segunda etapa o processamento do sinal e analise para se gerar a ID, onde
diversas abordagens podem ser utilizadas. Pode-se utilizar transformadas para anlise em
frequncia, bancos de filtros, transformadas Wavelet para anlise em frequncia e tempo e,
tambm, pode-se fazer anlise de entropia, energia, tcnicas de viso computacional e
diversos outros mtodos, todos ainda em estudo. Nos prximos tpicos sero abordados as
duas tcnicas utilizadas no projeto.
A ltima etapa consiste em tomar a ID obtida e compar-la a um banco de dados
com IDs previamente selecionadas associadas aos dados relevantes que se deseja reaver.
Deve-se lembrar, novamente e enfaticamente, que o sistema no uma busca por
"meta-tags" ou comparao bit a bit de dados de udio digitalizado: o sistema de impresso
digital de udio tenta fazer com que o computador "escute", tomando to quanto possvel
parmetros fisiolgicos da audio, os sinais possam associar.
41

Diversas aplicaes podem derivar de um sistema de "Acoustic Fingerprint": de
duplicadores de "playlists", verificao de utilizao de canes com copyright, separao
de msicas em uma "playlist" desorganizada por artista ou estilo, ou simplesmente a
curiosidade ao se escutar uma msica que no se conhece.
Os programas utilizados no presente projeto so algoritmos j disponveis e open
source, eles so responsveis por gerar a impresso digital. So eles: Echoprint e
Chromaprint.

Echoprint
Processamento e manipulao de udio
O Echoprint um algoritmo, processamento baseado em ELLIS et al (2010) e ELLIS,
WHITMAN, PORTER (2011), com cdigo aberto (mais informaes na BASE DE DADOS do
echoprint), ou seja, qualquer pessoa que quiser fazer uso desta ferramenta pode faz-lo,
mas para isto necessrio alterar algumas configuraes e tambm algumas bibliotecas,
porm isto ser discutido posteriormente.
O Echoprint trabalha com velocidade e eficincia gerando 12 hashes, conjunto de
bits, gerados pelo algoritmo responsvel por cifrar dados (geralmente representada na base
hexadecimal), a cada segundo de msica/udio.
Com o intuito de ser robusto s modificaes nos espectros e tambm s variaes
devido ao rudo que pode ser imposto em msicas gravadas over the air, o algoritmo s
leva em considerao o tempo relativo em sucessivos onsets do udio.
Onset pode ser definido, com base em BELLO et al (2005), como o incio de um som,
ou seja, quando o udio apresenta sua primeira nota musical, fazendo com que o espectro
de amplitude caminhe do nvel 0 para seu primeiro pico musical (Figura 7). Obteno de
algoritmos para deteco de onset uma rea prolfica de pesquisa. Diversos mtodos para
anlise vem sendo estudados, desde analise de Fourier, analises em multi resoluo, com
informaes no tempo e frequncia.
A magnitude d o sinal complexo passa-banda, e em cada banda comparado com
um limiar (threshold) exponencialmente em decaimento, e quando este limiar for
ultrapassado o onset gravado. Neste ponto o limiar recebe um novo valor, equivalente a
1,05 x Npk, onde Npk o novo pico de sinal. Um algoritmo adaptativo leva em considerao
os intervalos entre onsets (IOI), e neste caso decai o limiar quando estes intervalos forem
menores e o aumentam caso ocorra o contrrio. A taxa de ocorrncia de reais onsets, no
Echoprint, de 1 onset por segundo por banda.
42


Figura 7: Deteco de onsets, BELLO et al (2005)

A formao de um hash, para identificao do udio, ocorre com a juno de pares
de IOIs consecutivos quantificados em unidades de 23,2 ms. Considerando que no meio do
processo podem ocorrer rudos, considerado como o primeiro onset ele prprio e os 4
prximos, gerando assim uma robustez maior evitando erros. Logo, 6 hashes diferentes (IOI
pares) so criados sucedendo os 4 onsets.
Assim, a taxa global de hash de aproximadamente 8 (bandas) x 1 (onset por
segundo) 6 (hashes por incio) 48 hashes / segundos. Considerando que cada onset
cerca de 1 segundo, o valor quantizado de IOIs 1/.0232 = 43, ou cerca de 5-6 bits, e um
par de onsets constitui cerca de 12 bits de informao. Estes bits combinados com os 3 bits
de ndice da banda geram o hash cru, o qual armazenado dentro do arquivo.





43








No caso de um arquivo gravado over-the-air, em que o sinal est sujeito a rudos,
faz-se o branqueamento antes de passar pelo processo de deteco dos onsets, descrito
acima. O branqueamento do sinal tem por fim tornar o sinal com suas componentes
descorrelacionadas e varincia unitria. Na Figura 8 tem-se dois sinais do mesmo udio,
porm o segundo foi gravado OTA.
Equivalncia entre cdigos e msicas
Depois de realizar todo o procedimento de manipulao responsvel por gerar um
cdigo, pelo o qual a msica poder ser identificada, chega-se no ponto em que esse cdigo
gerado deve ser comparado com outros para obter uma equivalncia. O sistema Echoprint
faz uso de um banco de dados que armazenam o cdigo propriamente dito (ID) e tambm
as informaes denominadas metadatas (artista, lbum e nome da msica).
O procedimento de busca ocorre atravs do Apache Solr, que um servidor de
cdigo aberto e sem custo, que realiza a indexao de contedos e tambm realiza buscas,
podendo ler arquivo de inmeras extenses (.txt, .pdf. docx).
Dentro destes arquivos de armazenamento, cada cdigo de udio dividido em
segmento de 60 segundos, com sees adjacentes sobrepondo-se em 30 segundos
(primeiro segmento 0s at 60s, segundo segmento de 30s at 90s, e assim
sucessivamente), isto feito para eliminar redundncias quando uma msica apresenta
vrias equivalncias.
O servidor retorna as documentaes que apresentam a maioria dos querys gerados
pelo algoritmo, neste caso podem apresentar vrias equivalncias mesmo sendo muito raro.
Para resolver este problema so selecionados os 15 mais parecidos e feito um histograma
para anlise de parentesco, e consequentemente o que possuir um maior grau de igualdade
ser o documento equivalente ao cdigo gerado.
Em caso de ocorrer mais de um documento da mesma msica, ser mantido o que
tiver maior grau de parentesco e os outros sero excludos, este procedimento ajuda a evitar
redundncias e tambm libera espao para armazenamento de msicas diferentes.
Todas estas etapas devem ser seguidas, pois no funcionam de outra maneira e,
tambm pulando alguma etapa, a chance de no ocorrer equivalncia nos cdigos e/ou
Figura 8: Sinal nomal e sinal gravado OTA, simulados no Audacity
44

ocorrer com alguma fonte errada grande. Para exemplificar o funcionamento, tem-se na
Figura 9 um fluxograma de todo o processo.

Figura 9: Fluxograma do funcionamento do Echoprint

Chromaprint
O Chromaprint outro algoritmo open source que est vinculado com o trabalho e foi
selecionado por trabalhar de uma maneira um pouco diferente do Echoprint, mas ainda
fazendo uso do sistema de reconhecimento fingerprint.

45

Processamento e manipulao de udio
O Chromaprint faz grande uso da teoria de Viso Computacional para Identificao
Musical, ou seja, a imagem age como um fator praticamente soberano na identificao do
udio. O processamento deste algoritmo baseado no GUIA CHROMA FEATURES (2004)
e em KE (2005).
Geralmente quando vemos a msica na forma de ondas, Figura 9, porm esta
representao no muito significativa para a anlise em questo, e sendo assim, ser
realizada uma manipulao nestas ondas transformando-as em um espectrograma de
frequncias, Figura 10, que ser fonte de informaes importantes como as alteraes de
intensidades que ocorrem em determinadas frequncias no decorrer do tempo.
Muitos algoritmos de identificao musical trabalham nesta linha, analisando picos
nas imagens, diferenas entre tempo e frequncia, entre outros aspectos. O chromaprint,
por sua vez, procura nesta imagem a formao de notas musicais, e sendo assim, tem-se
12 nmeros binrios que iro representar as 12 notas musicais (D, D#, R, R#, MI, F,
F#, SOL, SOL#, L, L#, S.). Este tipo de informao chamado de caractersticas
Chroma.

Caracterstica Chroma uma representao interessante e poderosa para udio, em
que todo o espectro projetado em 12 caixas que representam os 12 semitons distintos
(ou Chroma) da oitava musical. Uma vez que, na msica, observa-se exatamente uma
oitava acima so percebidas como semelhantes, conhecendo a distribuio de Chroma
pode-se obter informaes teis sobre o udio, e pode at mesmo evidenciar similaridade
musical que no era visvel no espectro original.


Figura 10: Espectrograma, gerado com base no MANUAL Audacity
46


Figura 11: : Transformaes e resultado - Chroma features BARTSCH (2005).


O tratamento do udio como uma imagem, basicamente o ncleo do algoritmo em
questo, pois com o intuito de alcanar um sistema robusto, capaz de identificar sua
identidade a partir de um trecho de udio e tambm encontrar equivalncia correta em meio
a milhes de msicas, o chromaprint faz uso da transformao do sinal de udio para sua
representao em forma de espectrograma de frequncias.
A necessidade desta transformao explicada pelo fato de que o sinal
representado na forma de amplitude x tempo (Figura 9) varia bruscamente quando a msica
estiver sujeita a certos tipos de rudos ou mesmo alteraes ocasionadas por diferentes
meios de gravao.
Esta transformao pode ser obtida com a aplicao da Short Term Fourier
Transform (STFT) (CRESSONI, 2001) ou Transformada de Fourier em tempo curto, que
nada mais do que a Transformada de Fourier (FT), mas em um trecho apenas no sinal.
Aplicando a STFT pode-se obter uma anlise espectral de qualidade, pois a FT no mostra
ocorrncias espectrais. A STFT apresenta um empecilho, pois devido ao seu janelamento
curto causa interferncia no sinal original, mas neste caso como s estamos interessados
em um trecho do sinal, esta interferncia no causar danos no decorrer do algoritmo.
Aps este processo de transformao, de um pedao do udio em uma imagem,
poderia ser realizada a comparao entre a imagem obtida, com um banco de dados e
assim encontrar uma correspondncia, j que nestas imagens pode-se encontrar
47

similaridades e discrepncias em relao s outras, mas uma simples correlao feita desta
maneira levaria um tempo elevado e tambm uma incerteza muito grande. Para resolver
esta situao, a imagem gerada, antes de ser comparada, passar por filtros capazes de
manter a informao relevante e eliminar os rudos.
A classe de filtros utilizada deve ser capaz de evidenciar caractersticas que so
capazes de diferenciar uma imagem da outra. Estas caractersticas so:

Diferena de energia nas bandas de frequncias vizinhas
Diferena de energia atravs do tempo em uma determinada frequncia
Mudanas na frequncia dominante ao longo do tempo
Picos de energia no tempo em frequncia determinada
Picos de energia na frequncia em um tempo determinado

Seguindo estas caractersticas usou-se o filtro Haar waveletlike, Figura 12.













Aps a filtragem da imagem, esta deve passar por um procedimento para que uma
assinatura que a represente seja gerada e, para isso, o chromaprint faz uso de uma maneira
bem simples para obter o udio correspondente.
Equivalncia entre cdigos e msicas
Aps a passagem dos filtros pelas imagens, para se obter o udio correspondente
faz-se apenas uma diferena entre as imagens binrias geradas depois da passagem dos
filtros. Pode-se ver um exemplo na Figura 13 que foi retirado da BASE DE DADOS do
chromaprint.
Figura 12: Janelas do Filtro
Figura 12: Janelas do Filtro
48

Como pode ser observada, a diferena entre a msica Haven gravada de maneiras
diferentes muito pequena, e o mesmo acontece com a msica Under the ice, porm
quando comparadas entre si, Haven e Under the ice, apresentam uma diferena acentuada,
e desta maneira que o algoritmo busca suas equivalncias dentro de seus arquivos.
O servidor do Chromaprint permite o acesso a usurio para busca e submisso de
dados, e procedimento para a realizao de todos os servios online esto descritos passo
a passo na BASE DE DADOS do chrimaprint.
Como feito para o Echoprint, na Figura 14 encontra-se um fluxograma resumindo
todos os passos na execuo do algoritmo em si, feita a descrio de dois poderosos
algoritmos para identificao de udio, importante elaborar uma tabela comparativa sobre
o meio de abordagem, de processamento e tambm de busca entre o Echoprint e o
Chromaprint.

Tabela 1: Comparao entre os algoritmos


Algoritmos Mtodo Processamento Busca
Echoprint Anlise do Sinal Deteco de Onset Formao de histogramas
Chromaprint Anlise de espectrograma Busca por "notas musicais" "Diferena entre imagens"
49


Figura 13: Exemplo chromaprint, retirado da BASE DE DADOS do chromaprint


50


Figura 14: Fluxograma do funcionamento do Chromaprint










51


4. Implementao e Desenvolvimento
Nesta seo sero discutidos todos os passos e algoritmos desenvolvidos para que o
projeto em questo fosse implementado, com todas suas funes em pleno funcionamento
dentro do Kit Tiny6410. Para melhor organizao e mais fcil compreenso, ser abordado
um sistema por vez, assim pode-se detalhar com mais cuidado as implementaes.

4.1. Compilao dos algoritmos
Aqui sero abordadas todas as etapas que foram superadas para a plena execuo
do algoritmo. Ser dividido em duas partes referentes aos dois algoritmos, pois so
processos distintos. Informaes sobre comandos e/ou procedimentos foram tiradas do
FRUM brasileiro de usurios Linux e do GUIA linux.
Echoprint
Primeiramente o pacote, nomeado echoprint-codgen com os algoritmos devem ser
descarregados da BASE DE DADOS do echoprint. Na pasta conter todos os arquivos pr-
compilados, ou seja, ainda no possuem funcionalidade, precisam ser compilados no
computador de uso para formao do arquivo executvel, e assim sero reconhecidos pelo
sistema do computador.
Porm antes de realizar a compilao, importante instalar todas as bibliotecas e
arquivos necessrios para realizar esta ao e tambm para o perfeito funcionamento do
programa. Para a instalao destes arquivos tem-se um comando muito importante
denominado apt-get, que utilizado como gerenciador de pacotes no Ubuntu e em outras
distribuies Linux. Atravs desta ferramenta pode-se fazer atualizao de pacotes (apt-get
update) e tambm realizar o download de arquivos via terminal (apt-get install
nome_arquivo_pacote) e por sua eficincia e simplicidade foi usado para instalao dos
pacotes necessrios.
Para realizao da compilao necessrio que o Kit tenha compiladores das
linguagens em que foram desenvolvidos os algoritmos, no caso C e C++, e com isso
executamos o seguinte comando para pacote de compiladores gcc e g++ (conjunto de
compiladores para linguagens de programao):

# sudo apt-get install gcc g++

O comando sudo importante para executar o comando apt-get como usurio root,
caso contrrio o sistema no permitir que os pacotes sejam instalados.
52

Agora com os compiladores j instalados, pode-se passar para o download das
bibliotecas que fazem parte do algoritmo. No Echoprint so necessrias as seguintes
bibliotecas:
TagLib
Segundo o GUIA TAGLIB, esta biblioteca responsvel pela leitura e manipulao
de caractersticas de vrios formatos populares de udio (mp3, mp4, wav, entre outros),
como sample rate e tamanho de faixa.
Ffmpeg
uma plataforma de computador que grava, converte e cria stream de udio e vdeo
em diversos formatos. Ffmpeg um programa em linha de comando que composto de
uma coleo de software livre e bibliotecas de cdigo aberto. Inclui libavcodec, biblioteca de
codec de udio e vdeo, e libavformat, um multiplexador/demultiplexador de contedo de
udio e vdeo, informaes obtidas no GUIA FFMPEG.
Boost
Com base no GUIA LIBBOOST, uma biblioteca desenvolvida para ser usada em
qualquer projeto e representada por vrias bibliotecas capazes de aumentar a
funcionalidade da linguagem C++ (usada no projeto Echoprint).
Zlib
Baseando-se no GUIA ZLIB, esta biblioteca uma plataforma responsvel pela
compresso de dados.
Logo, para fazer o download destes arquivos, faz-se o uso do comando apt-get,
novamente executando a seguinte linha de comando:

# sudo apt-get install ffmpeg libboost1.42-dev libtag1-dev zlib1g-dev

Se um pacote no for encontrado, pode ser algum nome incorreto, mas se no for
possvel fazer uma busca, pois o arquivo procurado pode estar no sistema com outro nome
(por exemplo a biblioteca TagLib que no sistema est como libtag). Para realizar uma busca
dos pacotes existentes basta executar a seguinte linha de comando:

# sudo apt-cache search taglib

E, como resultado, tem-se todos os pacotes os quais contem taglib em suas
descries, assim analisando as informaes contidas em cada arquivo encontra-se o nome
do arquivo pelo qual estava procurando.
53

Com todas as bibliotecas e tambm os compiladores instalados no kit pode-se
executar a compilao do arquivo. A compilao deste algoritmo ocorre atravs do comando
make na linha de comando. O algoritmo em si , de fato, uma pasta contendo vrias funes
que so chamadas pelo programa principal, e como compilar um a um uma tarefa
trabalhosa, existe o arquivo makefile que responsvel pelas chamadas e compilao geral,
consiste de linhas de dependncias/destino.
Como o makefile j esta presente no pacote do algoritmo descarregado, no
necessrio sua criao, apenas iremos execut-lo com o comando make. O comando make
por sua vez, geralmente vem embutido nos pacotes dos compiladores gcc/g++, mas caso
no venha tem-se a necessidade de busc-lo na internet, assim executa-se os seguintes
instrues na linha de comando:

# sudo apt-get install make Instalao do comando make
# cd /var/www/Echoprint Entrar no diretrio que contm o arquivo makefile
# make Executar o make para compilao dos arquivos

Tudo ocorrendo dentro previsto, ser gerado um arquivo executvel com o nome de
echoprint-codgen, e este o arquivo responsvel pela manipulao e codificao do udio.
Quando executado pedir informaes necessrias para seu funcionamento.
Execuo do arquivo
Existem 2 etapas na execuo do arquivo, sendo a primeira responsvel por gerar os
cdigos e a segunda por realizar a buscar por correspondncia dentro da documentao
armazenada. Os cdigos so gerados a partir da execuo do echoprint-codgen e para sua
execuo necessrio passar 3 informaes, o udio, o tempo de incio e o trecho do udio
que ser abordado. Assim, a instruo executada na linha de comando (./ no incio o
comando usado para executar arquivos):

# ./echoprint-codgen crazy.mp3 30 60 >cdigo.txt


Executando esta linha de comando, o algoritmo ir gerar um arquivo denominado
cdigo. Este arquivo tem extenso .txt e contem informaes sobre o udio em questo
(impresso digital gerada, nome do arquivo, entre outras). Tendo o codigo.txt pode-se
realizar a busca dentro da documentao online do echoprint, e para isso usa-se o seguinte
comando:
54


# curl -F "query=@codigo.txt"
http://developer.echonest.com/api/v4/song/identify?api_key=SUA_SENHA

O comando curl responsvel por obter dados de um servidor fazendo uso de algum
protocolo de comunicao, HTTP, HTTPS, TELNET. Sendo assim ele executa a URL
anexada tendo como entrada o arquivo cdigo.txt. A resposta obtida no terminal com
vrias informaes, se tiver interesse apenas no nome e no artista da msica a resposta
deve ser filtrada, permanecendo apenas as informaes desejadas.

Chromaprint
As ferramentas que auxiliaro nesta etapa, e que j foram usadas anteriormente, no
precisaro de instalao novamente, pode-se citar gcc, g++, apt, make e algumas
bibliotecas que sero discutidas.
Para execuo do chromaprint so necessrias 5 bibliotecas/aplicativos
indispensveis, ffmpeg, fftw, taglib, boost e googletest. Destas cinco, trs j esto instaladas
no kit (ffmpeg, taglib e boost), e assim tem-se que realizar o download dos outros 2
arquivos.

Fftm: Fastest Fourier Transform in the West uma biblioteca para
Transformada de Fourier Discreta computacional.
Googletest: Suporte para executar testes usando a linguagem computacional
C++, retirado do GUIA GOOGLETEST.

Para realizar os downloads basta executar o comando abaixo no terminal, caso no
for encontrado o arquivo, executar uma pesquisa utilizando o apt-cache search como
descrito anteriormente.

# sudo apt-get install fftm googletest

Depois de executar a linha acima o algoritmo est pronto para ser compilado no kit.
Neste caso, existem algumas maneiras distintas para a realizao da compilao e aqui
ser descrito apenas o meio utilizado no projeto.
Ao abrir o pacote Chromaprint notou-se a no existncia de makefiles e sim de
CMakeLists.txt. Estes arquivos possuem um meio de compilao diferente dos makefiles.
De incio deve-se fazer o download do CMake, que um sistema multiplataforma para
55

realizar gerao automatizada. O CMake no gera o software final e sim os arquivos de
gerao padro (makefiles), portanto, o processo de compilao com o CMakeLists possui
duas etapas: a formao dos arquivos de gerao padro e a formao do software
executvel.Antes destes passos importante fazer o download da ferramenta cmake,
depois disto a compilao pode ser feita normalmente, como segue o cdigo abaixo.

# sudo apt-get install cmake
# cd /var/www/chromaprint
# cmake DCMAKE_BUILD_TYPE=Release DBUILD_EXAMPLE=ON .
# make
# sudo make install

Depois da realizao dos comandos citados gerado um arquivo executvel com o
nome de fpcalc responsvel pela formao dos cdigos do udio que sero utilizados para
comparao musical.
Execuo do arquivo
O mesmo comando utilizado para executar o echoprint-codgen usado para o fpcalc
(./), s mudam as entradas necessrias. Para o chormaprint s requisitado o caminho
para o udio que ser codificado, se estiver na mesma pasta que o fpcalc no necessrio
e apenas o nome com extenso j suficiente. Portando o comando de execuo fica da
seguinte maneira:

# ./fpcalc crazy.mp3 >codigo.txt

Assim, teremos o resultado gravado no arquivo codigo.txt, que ser gerado ao
trmino do processamento do algoritmo. Igualmente ao echoprint, este arquivo contm
informaes importantes para a busca ocorrer de maneira eficiente e sem erros.
A busca neste servidor um pouco mais complicada, pois no existe um comando
prprio para sua realizao. O mtodo que o servidor disponibiliza confuso e bem
susceptvel a falhas, pois um mtodo manual. Primeiramente abre-se o arquivo codigo.txt
e copia o campo FINGERPRINT(impresso digital gerada pelo cdigo) e tambm o campo
DURATION(durao do trecho usado na codificao). Estes dados devem completar o link
de acesso ao servidor do chromaprint, como mostrado abaixo:

56

http://api.acoustid.org/v2/lookup?client=8XaBELgH&meta=recordings+releasegr
oups+compress&duration=DURATION&fingerprint=FINGERPRINT

Com a finalidade de eliminar todas estas etapas, foi desenvolvido um algoritmo em
PHP capaz de deixar a execuo automtica, ou seja, ele abrir o arquivo, retirar as
informaes necessrias e executar a seguinte linha de comando:

# curl -G
http://api.acoustid.org/v2/lookup?client=SUA_SENHA"&"meta=recordings"&"dura
tion='.$teste.'"&"fingerprint='.$id.'

Onde $teste e $id so as variveis retiradas do arquivo codigo.txt, desta maneira a
busca por equivalncias torna-se automtica e elimina todas aquelas etapas manuais e que
poderiam causar algum erro.
Aps rodar esta linha, o resultado ser impresso na tela. Existem inmeras
informaes e, novamente, necessrio realizar um filtro na resposta para apenas visualizar
os dados desejveis.

4.2. Instalao e configurao do banco de dados
Em um sistema que faz uso de banco de dados importante, desde o incio, instal-
lo e configur-lo no processador que o prprio ficar armazenado. No projeto em questo, o
banco de dados foi armazenado em um core disponvel no laboratrio lavisim chamado de
opencore, de endereo externo 143.107.235.37. Isto foi feito para aliviar a presso sobre o
kit Tiny6410, pois o banco de dados um arquivo crescente e certamente o computador
est mais preparado, em questo de memria, do que o kit.
Para o sistema do banco de dados funcionar corretamente existem certos pacotes de
devem ser instalados inicialmente. Como o site/acesso ao banco de dados foi elaborado
todo em linguagem PHP o computador deve ter os seguintes pacotes instalados:

Apache2: Servidor WEB, compatvel com o protocolo HTTP. Suas
funcionalidades so mantidas atravs de uma estrutura de mdulos,
permitindo inclusive que o usurio escreva seus prprios mdulos.
Mysql-server: Servidor mysql, foi desenvolvido originalmente para lidar com
bancos de dados muito grandes de maneira muito mais rpida que as
solues existentes e tem sido usado em ambientes de produo de alta
demanda por diversos anos de maneira bem sucedida.
57

Php5: uma linguagem interpretada livre, usada originalmente apenas para
o desenvolvimento de aplicaes presentes e atuantes, capazes de gerar
contedo dinmico na World Wide Web.
Php-mysql: Permite a elaborao de pginas em PHP para gerenciar banco
de dados.

A instalao destes pacotes foi feita com os mesmos comandos utilizados nos
procedimentos anteriores. Desta forma, segue o comando para realizar a instalao destes
pacotes (estes pacotes devem ser instalados tanto no kit quanto no opencore):

# sudo apt-get install php5-mysql php5 mysql-server-5 apache2

No momento em que o mysql estiver sendo instalado ser requisita uma senha
(Figura 15) para o usurio root (administrador) do mysql. Esta senha pode ser escolhida de
acordo com a preferncia do usurio. Logo em seguida aparecer uma tela semelhante da
Figura 15 pedindo uma confirmao de senha.












Depois de concluda a instalao do Mysql possvel conferir se ocorreu tudo
normalmente, bastando abrir o navegador e abrir o endereo http://localhost/. Se aparecer
alguma mensagem do tipo It works! porque no ocorreu erro durante toda a instalao e
o mysql est sendo executado em seu computador.
Finalizada a instalao do mysql junto com os outros pacotes, tem-se que realizar a
instalao da aplicao WEB utilizada para fazer as operaes da administrao do Sistema
Figura 15: Janela para inserir a senha do mysql
58

de Gerenciamento de banco de dados mysql o phpMyAdmin. Sua instalao realizada
normalmente pelo comando abaixo:
# sudo apt-get install phpmyadmin

Durante o processo de instalao do phpMyadmin, aparecero algumas telas e
algumas iro requisitar informaes para a configurao do sistema. Como se pode ver na
Figura 16 iro aparecer algumas perguntas sobre a configurao do sistema, para todas,
tecle ENTER, so configuraes internas do sistema e no temos como alterar isto. Mais a
frente a senha do mysql ser requisitada, sendo assim digite a mesma senha de antes
(Figura 17) e depois confirme. Realizado todo este procedimento pode-se averiguar a
validade em http://localhost/phpmyadmin/ (Figura 18).


Figura 16: Tela de instalao - Configurao do sistema


59


Figura 17: Tela para inserir senha do Mysql
















Neste ponto, o projeto deparou-se com um problema, pois aps todos os passos
descritos ainda assim o sistema no funcionava, ocorriam erros de comunicao e leitura
entre o kit e o opencore, mesmo com o conjunto Mysql/phpMyAdmin funcionando
separadamente.
Aps pesquisas e inmeras tentativas, descobriu-se que os pacotes de php possuem
em seus arquivos de configurao (php.ini) certas diretrizes que permitem ou no a
liberao do sistema mysql, e como default do arquivo o mysql vem bloqueado. Para

Figura 18: Tela de incio phpMyAdmin
60

solucionar isso basta abrir o arquivo php.ini e inserir no cdigo a liberao do mysql
(extension=mysql.so). Este procedimento pode ser feito seguindo o seguinte comando:

# nano /etc/php5/php.ini

O comando nano executa um papel de editor de texto, ou seja, a linha acima abrir
na tela o arquivo php.ini, que estar disponvel para alteraes. Quando abrir o arquivo,
deve-se inserir a linha extension=mysql.so. Aparentemente a situao foi consertada, mas
quando testado o sistema apresentou um erro de permisso, ou seja, o kit tentava acessar o
banco de dados dentro do opencore, porm como no estava autorizado o sistema ficava
travado.
Um meio de permitir o acesso foi estudado e aplicado, o meio consiste em entrar nas
configuraes do mysql localizado no opencore e liberar o acesso para o IP interno do kit
(10.235.0.138 com senha lavisim) diretamente por linha de comando. O procedimento passo
a passo evidenciado em seguida.
O primeiro passo entrar nas configuraes mysql do opencore atravs do
comando:

# mysql u root -p

Para prosseguir ser requisitada a senha do usurio root do mysql, que a mesma
senha escolhida pelo usurio no incio da instalao. A partir do ponto em que a senha for
validada estaremos dentro do sistema mysql que est rodando dentro do opencore, assim
os comandos devem ser usados exatamente na sequncia mostrada abaixo. Uma ilustrao
de todo o processo pode ser vista na Figura 19:

mysql> use mysql
mysql> GRANT ALL ON *.* to root@10.235.0.138 IDENTIFIED BY lavisim;
mysql> FLUSH PRIVILEGES
mysql> EXIT

61


Aps ter feito a liberao de acesso para o kit Tiny6410, o sistema de acesso ao
banco de dados funcionou perfeitamente.

4.3. Desenvolvimento do website
Como dito anteriormente, o site foi desenvolvido na linguagem php, as dvidas sobre
sintaxe e funes foram tiradas no GUIA PHP, e faz suporte para todo o desenvolvimento
em relao aos algoritmos at o momento. Na Figura 5 tem-se uma imagem do layout da
pgina principal do site, dela pode-se acessar 8 links diferentes os quais esto endereados,
cada um, com um sub-rotina diferente. Esta seo aborda o funcionamento de cada sub-
rotina dentro do website. Todos os programas podem ser encontrados no endereo
opencore.eesc.usp.br dentro da pasta marcos.
Mas antes de detalhar cada rotina, vale informar que todas esto ligadas com o
sistema de longin/cadastro, ou seja, todos que entrarem no site s iro ter acesso ao seu
contedo se estiverem realizado previamente o login e, consequentemente, cadastrados no
site. Esta imposio serve como mtodo de segurana, de fiscalizao do contedo interno
e eficincia do algoritmo.

Sistema de Cadastro de usurio
Um sistema de cadastro pode ser desde um simples armazenamento de nome de
usurio at um complexo preenchimento/armazenamento de inmeras informaes
pessoais como endereo, telefone, nome de pais, e assim por diante. Como o objetivo de
Figura 19: Execuo dos comandos na janela de comando
62

inserir cadastro no projeto ter controle de quem esta mandando informaes para o banco
de dados, no so necessria tantas informaes e com isso foram criados campos para
preenchimento de apenas nome completo, email, nome de usurio e senha, como pode ser
visto na Figura 20.

Figura 20: Informaes necessrias para o cadastro

Estas informaes so enviadas para armazenamento no banco de dados,
chamado de longin, e pode ser visualizado atravs da ferramenta online do
phpMyAdmin. A lgica de armazenamento pode ser vista no fluxograma da Figura 21.
Toda vez que algum vai fazer cadastro no site, verificado o seu nome de
usurio e email. Caso um dos campos j exista no banco de dados uma mensagem ir
informar o usurio que o cadastro no foi concludo, pois o usurio j existe e/ou email j
foi cadastrado.

Figura 21: Fluxograma Lgica - do cadastro
63


Campo de login
Este o link que libera o acesso para todas as outras pginas do site. Sem estar
logado impossvel visualizar o contedo das outras rotinas.
Primeiramente os dados so enviados e atravs de uma comparao com os dados
existentes no banco de dados, gerado pelo cadastro, possvel saber se os dados inseridos
esto de acordo com algum usurio do site. Em caso de no ocorrer equivalncia tem-se
duas opes, o nome de usurio/senha esto incorretos ou no existe este cadastro, das
duas maneiras um aviso aparece na tela informando o navegador.
Estando todos os dados (senha e nome de usurio) de acordo, o sistema inicia a
sesso e libera o acesso para as outras pginas. A funo que inicia a sesso em php, que
foi usada no algoritmo, $_SESSION['auth']=1; e para encerrar a sesso feito a varivel
receber o valor negativo representado por 0 ($_SESSION['auth']=0;).

Alterar senha
Esta pgina segue a lgica das descritas anteriormente, pois o ato de trocar a senha
simplesmente realizar uma busca no banco de dados, conferir se a senha digitada como
senha atual equivalente armazenada, e juntamente a isto conferir se os dois campos
com a senha atual so iguais entre si. Se as duas condies forem verdadeiras, o banco de
dados ser atualizado, ou seja, ser inserida no campo da senha antiga a senha atual
digitada pelo usurio.
A funo que permite alterar dados dentro de um banco de dados denominada
UPDATE e deve ser usada com as seguintes informaes:

UPDATE table SET campo = valor WHERE condio;

A informao contida na varivel table, deve ser completada com o nome da tabela
do banco de dados onde esto armazenados os dados cadastrais, neste caso usr. A
varivel a ser carregado em campo a coluna, referente tabela informada, que contm a
informao a alterada, neste caso senha. Por ltimo o campo condio que ir localizar
a linha correta para fazer alterao de senha (caso este campo seja esquecido todas linhas
sero alteradas), neste caso usuario = $usr que faz com que a alterao seja feita
apenas na linha que existe o usurio que est logado.
A varivel $usr, faz uma chamada o nome do usurio que deu incio a seo, ou
seja, o nome do usurio logado. E assim o sistema s alterar a senha da linha que
possuir na coluna usuario o nome de usurio que est requisitando a alterao de senha.
64


Administrador
O campo administrador representa uma rea onde o desenvolvedor ou o responsvel
pela administrao do site pode realizar algumas tarefas com o intuito de organizar o site e,
claro, aumentar o nvel de segurana.
Para comear, se qualquer outro usurio tentar entrar nesta pgina ser bloqueado e
redirecionado para a pgina principal do site. Dentro desta pgina esto alocadas mais trs
funes as quais so descritas abaixo.
Informaes dos usurios
uma pgina que mostra todas as informaes sobre os usurios do site. Quando
necessrio, o administrador pode ver dados dos usurios, como emails e nomes de usurio.
Todas estas informaes so dispostas em forma de tabela.
Excluir usurios
Quando notada alguma infrao por parte de algum usurio, como por exemplo,
enviar alguma msica com nome errado, se o administrador julgar que a pessoa deve ser
excluda do sistema ele o pode fazer. Para isto apenas necessita do nome do usurio (que
pode ser consultado no item informaes dos usurios).
A funo que disponibiliza a excluso de alguma informao do banco de dados
representada pela sintaxe DELETE FROM e usada da seguinte maneira:

$sql = "DELETE FROM dados WHERE condio"

Onde dados representa o nome a tabela, qus esto contidas as informaes dos
usurios dentro do banco de dados, neste caso usr, e a condio deve ser preenchida com
o nome do usurio digitado pelo administrador. Se esta opo no for digitada sero
deletadas todas as linhas do banco de dados. Para receber o nome do usurio dentro do
sistema, usa-se a funo em php $_POST['login'].
Dados do Administrador
Em caso de uma mudana de administrador, isto pode ser feito nesta pgina
informando nome de usurio e email do novo administrador. claro que esta alterao s
pode ser realizada pelo atual administrador. Neste caso usada a mesma sintaxe para
alterao de informaes dentro do banco de dados (UPDATE).
As informaes do administrador esto presentes no mesmo banco de dados, mas
em tabela diferente para evitar alguma pane no sistema e confuses.
65


Dados
Esta pgina usada para exibir todas as msicas que existem no banco de dados,
para o usurio fazer uma simples pesquisa ou adicionar alguma que no esteja na lista. Na
tabela mostrado o nome da msica, o artista e qual algoritmo que foi usado em sua
codificao. Alm disto, possvel, com um clique no nome da msica, ouvi-la diretamente
do youtube.
A exibio na tela feita de forma que todas as colunas tenham a mesma largura e
todas as linhas possuam a mesma altura. A linha de programa que executa o
redirecionamento para o youtube :

<tdwidth=25%><center><a href=endereo><font>nome</font><center></a></td>

Onde o campo endereo deve ser preenchido com o site a ser redirecionado, porm
deve-se inserir o nome da msica e artista para abrir o site corretamente e isto feito
seguindo a lgica abaixo. As variveis $escrever[musica] e $escrever[artista]
representam o nome da msica(que tambm deve ser inserida em nome) e o nome do
artista, respectivamente:

http://www.youtube.com/results?search_query='.$escrever['musica'].'
'.$escrever['artista'].'&oq=paradise&gs_l=youtube.3.0.35i39j0l9.565.1689.0
.3264.8.8.0.0.0.0.189.807.4j4.8.0...0.0...1ac.1.wTo0HroqSoo"
target="_blank

Submeter
O link submeter exerce um papel muito importante dentro do propsito do site, sendo
que responsvel pelo armazenamento de novas msicas juntamente com todas suas
informaes (impresso digital, nome, artista, algoritmo usado), e assim quanto maior for o
nmero de msicas armazenadas maior ser a probabilidade de equivalncia, alm de
tornar a busca mais rpida.
A pgina tem um sistema que evita falhas, e s receber os dados se todos forem
enviados corretamente, evitando assim que no banco de dados existam msicas sem artista
ou sem a respectiva ID, e tambm recusa o envio quando o nome da msica j se encontrar
armazenada (evitando duplicatas).

66

O processo de enviar informaes para o banco de dados liderado pelo comando
em php com sintaxe INSERT INTO, deste modo recebemos as informaes pela sintaxe
$_POST[variable] e so enviadas para o banco de dados, referente aos dados musicais,
pelo comando INSERT INTO, que usado da seguinte maneira:

$sql = "INSERT INTO dados1 (incremento, usuario, artista, musica,
algoritmo, id) VALUES ('', 'marcos', '$banda', '$musica', '$alg0',
'$id_sub')";

J o arquivo de udio, enviado juntamente com o questionrio, Figura 22, tratado
de uma maneira diferente. O arquivo recebido pela varivel $_FILE[uploadfile][name]
e enviado diretamente para o diretrio de trabalho onde esto localizados os arquivos de
execuo dos programas echoprint e chromaprin., Assim quando esses programas forem
acionados no precisam procurar o udio em outros diretrios. Lembrando que o software
foi programado para procurar o arquivo submeter.mp3 ou submeter.wav, se o udio no for
enviado com esta especfica sintaxe, o sistema ser impossibilitado de executar a
codificao do udio.
Antes de enviar todas as informaes para o banco de dados o programa verifica
qual algoritmo foi escolhido pelo usurio, e a partir desta varivel executa o echoprint ou
chromaprint para gerar a impresso digital, que tambm ser enviada para o banco de
dados.
Aps executado o algoritmo de codificao, tem-se todas as informaes prontas
para envio, nome da msica, nome do artista, o algoritmo usado, a impresso digital e
tambm o usurio que est emitindo estas informaes. De uma maneira mais intuitiva
pode-se ver o funcionamento desta pgina no fluxograma da Figura 23.


Figura 22: Questionrio para enviar dados da msica

67


Figura 23: Fluxograma do funcionamento da pgina submeter

68

udio FP
Esta pgina representa o sistema mais importante do projeto, pois responsvel por
dar suporte aos algoritmos de codificao (echoprint e chromaprint). Em contrapartida sua
importncia, a pgina no muito complexa, conta com 3 cones e com a descrio do
projeto (Figura 24).
Os algoritmos, para funcionarem como esperado, necessitam de algumas variveis
de entrada e estas variveis mudam de acordo com a escolha do algoritmo a ser usado.
Logo, foi necessrio o desenvolvimento de links separados para a execuo de cada
algoritmo. A nica informao que usada em ambos procedimentos o arquivo de udio,
que por este motivo esta disposto em um link parte dos algoritmos.
Antes da escolha entre os softwares de codificao, tem-se que enviar o arquivo que
ser codificado clicando no boto Recorder. Existe uma restrio em relao ao nome da
msica, e ela deve ser enviada sempre com o nome de musica.wav ou musica.mp3
dependendo de sua extenso.
Com o arquivo armazenado no seu devido lugar, entra-se na etapa de escolha de
software, e neste caso existem duas escolhas: echoprint e o chromaprint.
Independentemente da escolha o resultado aparecer na tela, nome da msica e nome do
artista, logo, para o usurio, a escolha entre os mtodos no aspecto que ir influenciar.
Porm, internamente, os algoritmos elaborados para a execuo dos diferentes mtodos
so diferentes. Podem-se considerar os passos semelhantes que podem ser acompanhados
no fluxograma da Figura 25.






Figura 24: Layout da pgina udio FP
69






























4.4. Configuraes adicionais
O sistema de recebimento de udio apresentou um pequeno problema. O sistema
no aceitava a transferncia de arquivos superiores a 2 MB, e a maioria dos arquivos de
udio superam esta faixa, sendo que uma msica normal com aproximadamente 3 min
apresenta uma mdia de 6 MB, sendo assim, o sistema no poderia permanecer com esta
falha.
Feitas algumas pesquisas, descobriu-se que o pacote php vem definido com o limite
mximo de transferncia de arquivo para 2 MB, justamente a falha notada. Para reparar esta
divergncia deve-se alterar, novamente, algumas linhas de programa do arquivo php.ini,
encontrado no diretrio /etc/php5/php.ini.
As linhas que devem ser alterados so:

upload_max_filesize: Tamanho mximo do arquivo que ser transmitido
para o kit (foi alterado para 100 MB).
post_max_size: Responsvel tambm pelo tamanho do arquivo em
transferncia (foi alterado para 100 MB).
Figura 25: Fluxograma - Pgina udio FP
70

max_input_time: Limite de mximo de tempo para recepo do arquivo (foi
alterado para 300 segundo).
max_executation_time: Limite mximo de tempo para a execuo da
transferncia por completo (alterado para 300 segundos).
memory_limit: Limite de memria, importante deixar algum valor fixo, caso
os outros limites falhem (alterado para 100 MB).

E a alterao deve ser feita como descrito anteriormente, com o comando nano para
abrir o arquivo para edio, e alter-lo manualmente seguindo cada linha descrita:

# nano /etc/php5/php.ini


Feita estas alteraes, os arquivos que no estavam sendo enviados passaram a
ser, e foi feito um teste com um arquivo de extenso wav, que apresentava 44 MB e a
transferncia ocorreu normalmente.



















71

40
45
50
55
60
65
70
75
80
1 2 3 4 5
T
e
m
p
o

d
e

e
x
e
c
u

o

(
s
)

Msicas
Echoprint
Chromaprint
5. Resultados e anlises
Este o momento de avaliar cada etapa do projeto, desde os algoritmos de
reconhecimento at o sistema de segurana/login desenvolvido para liberar acesso ao
projeto via web. Foram realizados alguns testes a fim de avaliar a funcionalidade do sistema,
bem como a sua eficincia.
Comeando pelos algoritmos, claro que sempre o objetivo obter maior velocidade
de resposta com uma alta porcentagem de acerto, e aqui tambm no diferente, quanto
mais rpido e mais eficiente o algoritmo melhor, logo, foram feitos testes para analisar a
velocidade de processamento de cada algoritmo com diferentes msicas. A Tabela 2
representa o tempo que cada algoritmo levou para codificar a msica (teste feito via linha de
comando fora do web site).

Tabela 2: Tempo de resposta de cada algoritmo
Nome Execuo pelo Echoprint (s) Execuo pelo Chromaprint (s)
Feeling This 55 48
Times Like These 59 51
Feel So Close 62 52
Glad You Came 76 52
Angel 64 50
Tempo mdio 63,2 50,6

A Tabela 2 evidencia que o chromaprint apresenta uma ligeira vantagem em termos
de velocidade de processamento perante o echoprint. Essa diferena pode ser bem notada
no Grfico 1, onde perceptvel que em todas as msicas a curva do tempo de execuo do
echoprint fica sempre em cima da curva do chormaprint. A diferena esta em torno de 10
segundos.


Grfico 1: Tempo de execuo dos algoritmos x msicas
72

0
1
2
3
4
5
6
7
8
9
10
1 2 3 4 5
T
e
m
p
o

d
e

r
e
s
p
o
s
t
a

d
o

s
e
r
v
i
d
o
r

(
s
)

Msicas
Echoprint
Chromaprint
Porm, a gerao do cdigo apenas uma etapa do processo de reconhecimento de
udio, ainda resta a anlise da velocidade de acesso ao banco de dados e por ltimo, e o
mais importante o nvel de eficcia de cada sistema, ou seja, qual sua porcentagem de
acerto de nome das msicas.
Com as mesmas msicas testadas anteriormente fez-se o teste de acesso/resposta
do banco de dados: foram enviados seus cdigos e outras informaes necessrias para o
servidor e analisado o tempo que levou para se obter uma resposta. Os resultados obtidos
esto dispostos na Tabela 3.

Tabela 3: Tempo de resposta do servidor de cada algoritmo
Nome Resposta do servidor Echoprint (s) Resposta do servidor Chromaprint (s)
Feeling This 7 2
Times Like These 7 3
Feel So Close 7 3
Glad You Came 7 2
Angel 10 3
Tempo mdio 7,6 2,6

Mais uma vez o chromaprint teve certa vantagem, e apresentou um desempenho
melhor. A diferena entre os dois est em cerca de 5 segundos em mdia e para ver de uma
maneira mais intuitiva, o Grfico 2 apresenta duas curvas representando a resposta do
servidor do echoprint e do chromaprint.













Grfico 2: Tempo de resposta do servidor x msicas
73

No proveitoso ter um rpido processamento com um gil acesso ao banco de
dados e retornar uma resposta incorreta, por isso que a prxima anlise de extrema
importncia. Com estas mesmas msicas, que foram testadas, fez-se anlise da resposta
obtida.
Depois de realizadas as chamadas dos servidores, notou-se que os dois sistemas
falharam em uma msica (msicas diferentes), porm a falha no foi referente ao algoritmo
e sim devido a inexistncias destas msicas no banco de dados. neste ponto que surge
uma das funes do banco de dados no website do projeto, pois aumenta a probabilidade
de acerto com o aumento de msicas armazenadas.
Baseando-se nos resultados mostrados, evidente que o chromaprint leva vantagem
em termo de velocidade de processamento, apresenta respostas mais rpidas tanto na
codificao do udio como no acesso s informaes do banco de dados. J em termos de
respostas corretas ambos apresentaram o mesmo desempenho 75 %. claro que seria
necessrio fazer testes com muito mais msicas para poder ter uma porcentagem mais
precisa.
Um ponto positivo que falhas foram devidas ausncia de cdigo correspondente
no banco de dados e no por alguma equivalncia errnea.
Com toda esta anlise feita com os algoritmos, pode-se avaliar o efeito que o site
causa neste tempo de processamento e eficincia. O tempo de resposta certamente ser
acrescido, pois no procedimento de automatizar a busca foram introduzidos filtros e
manipulaes de arquivo de extenso .txt.
Os dados obtidos esto dispostos na Tabela 4. Estes valores representam o tempo
de execuo total, ou seja, tempo de resposta do algoritmo mais tempo de resposta do
servidor.

Tabela 4: Tempo de resposta do site
Nome Resposta do website Echoprint (s) Resposta do website Chromaprint (s)
Feeling This 66 58
Times Like These 65 58
Feel So Close 60 58
Glad You Came 62 66
Angel 78 66

Para poder observar melhor o efeito do site sobre o tempo de resposta, foram
elaborados os Grfico 3 e Grfico 4, fazendo um comparativo entre antes e depois de cada
algoritmo, echoprint e chromaprint respectivamente.
74

55
60
65
70
75
80
85
1 2 3 4 5
T
e
m
p
o

d
e

r
e
s
p
o
s
t
a

d
o

s
i
s
t
e
m
a
(
s
)

Msicas
Echoprint sem website
Echoprint com website
45
50
55
60
65
70
1 2 3 4 5
T
e
m
p
o

d
e

r
e
s
p
o
s
t
a

d
o

s
i
s
t
e
m
a
(
s
)

Msicas
Chromaprint sem website
Chromaprint com website


























visvel no Grfico 4 que o website acrescentou alguns segundos no seu tempo de
resposta, porm agora o sistema todo automatizado e com uma interface, representada
pelo site. J no Grfico 3 notrio que em trs das cinco msicas testadas apresentaram
um tempo de resposta menor, e isso se deve ao fato de que estas trs msicas
apresentarem seus cdigos cadastrados no banco de dados do projeto.
O Grfico 3 comprova que um dos objetivos, pelo qual o banco de dados foi
desenvolvido, funciona como o esperado diminuindo o tempo de resposta e assim deixando
o sistema mais rpido que o normal, porm isto apenas vlido para o echoprint.
Grfico 3: Tempo de resposta do sistema x Msicas (echoprint)
Grfico 4: Tempo de resposta do sistema x Msicas (chromaprint)
75

No caso do chromaprint, o site acaba elevando seu tempo de resposta. Isto ocorre
pois seu tempo de busca no servidor era muito baixo, cerca de 2 segundo, e o sistema de
busca pelo banco de dados, realizado no website, leva alguns segundos a mais pois
necessrio realizar a conexo e depois a busca por toda sua extenso.
O sistema de segurana desenvolvido funciona de acordo com o esperado, onde
todo o fluxo de informao do site controlado pelo administrador, que pelo prprio sistema,
tem a ferramenta de excluso de membros e tambm excluso de informaes
inadequadas/errneas.
O procedimento de bloqueio de contedo para pessoas que no estejam logadas
est em pleno funcionamento, ou seja, se tentar acessar qualquer pgina no site sem estar
logado, o contedo no ser liberado e uma mensagem ir aparecer na tela, indicando
para o membro realizar o login ou se cadastrar no site, caso ainda no o tenha feito.
Por ltimo, uma anlise da submisso de msicas tambm plausvel, pois desta
maneira consegue-se retirar informaes que revelam o tempo que o sistema leva para
adicionar dados dentro do banco de dados.
Quando o usurio submete uma msica para armazenamento no banco de dados,
praticamente todas as rotinas do website so acionadas, pois necessrio receber o
arquivo de udio, analisar o banco de dados com o intuito de no enviar msicas repetidas,
acionar um dos softwares escolhido, realizar a codificao e por ltimo enviar as
informaes armazenadas para o banco de dados. Devido nmero elevado de operaes
sequenciais, sem dvida, esta pgina que levar mais tempo para dar alguma resposta.
Na Tabela 5 pode-se observar o tempo desta operao.

Tabela 5: Tempo de resposta da submisso de dados
Nome
Resposta da submisso Echoprint
(s)
Resposta da submisso Chromaprint
(s)
Teenage Dream 129 119
Thank You For Loving Me 123 100
I Started a Joke 84 75
Mundo Animal 89 84
Quebra Mar 75 75
Too Much 158 146

Como esperado, o tempo de espera elevado, mas condizente, pois se juntarmos
todos os tempos de execuo anteriores teremos um nmero aproximado mdia dos
valores da Tabela 5. Outro fato que pode ser notado que o fator que mais interfere na
diferena entre os valores mostrados na Tabela 5 o tamanho do arquivo, ou seja, quanto
maior o arquivo maior o tempo de seu envio e, consequentemente, maior o tempo de
76

resposta de submisso dos dados. A msica que levou maior tempo foi Too Much,
justamente a que possui maior espao de memria, 10,0 MB.
Na Figura 26, tem uma imagem do banco de dados depois da submisso destes
arquivos, comprovando que a comunicao website e banco de dados est ocorrendo sem
falhas. Note que devido ao tamanho as impresses digitais no so mostradas
completamente, mas basta expandir a coluna id para analis-las por completo.












Figura 26: Banco de dados como as msicas enviadas para teste
77

6. Consideraes Finais
Ao final do trabalho foi possvel concluir que o projeto funcionou conforme o
planejado, apresentando-se como uma ferramenta de reconhecimento de udio, que alm
de propiciar o aumento do nvel de acerto dos algoritmos em funo da disponibilidade de
um banco de dados local, o que aumenta o acervo de msicas para realizar a comparao,
em muitos casos tambm diminuiu seu tempo de busca. Alm destes benefcios, o sistema
est disponvel para qualquer usurio, bastando-se fazer o cadastro na pgina inicial do
projeto, pois se utiliza das vantagens da disponibilizao via Web.
Sobre a rea de sistemas embarcados, pode-se concluir que continua em
crescimento, mas ainda possvel constatar a ausncia de concentrao de assuntos
pertinentes e bem documentados, o que pode inicialmente dificultar o trabalho. Porm, como
existem inmeros desenvolvedores pelo mundo, existem tambm muitos fruns de
discusses, onde todos compartilham informaes importantes, e destes fruns que
muitas vezes vem as informaes que auxiliam na soluo dos problemas que se
apresentam no decorrer do desenvolvimento de projetos, como alguns aqui apresentados.
78


Referncias Bibliogrficas

FRUM brasileiro de usurios Linux. Disponvel em: <http://www.brlinux.net>.
Acesso em: 31 jul. 2012.
GUIA taglib. Disponvel em: <http://taglib.github.com/>. Acesso em: 13 set. 2012.
BASE DE DADOS do algortimo chromaprint usado no desenvolvimento do projeto.
Disponvel em: <http://www.acoustid.org/chromaprint>. Acesso em: 20 ago. 2012
BASE DE DADOS do algortimo echoprint usado no desenvolvimento do projeto.
Disponvel em: <http://www.echoprint.me>.Acesso em: 20 ago. 2012.
ELLIS, D.; WHITMAN, B.; PORTER, A. Echoprint an open music identification
service, ismir 2011. Disponvel em <http://www.echoprint.me>.Acesso em: 30 ago.
2012.
BELLO, J.; DAUDET, L.; ABDALLAH, S.; DUXBURY, C. A tutorial on Onset Detection
in Music Signals, IEEE Transactions on speech and audio processing, 2005.
Disponvel em <http://ieeexplore.ieee.org>. Acesso em: 05 set.2012.
MANUAL FriendlyArm Tiny6410. Disponvel em <http://friendlyarm.net>. Acesso em
20 ju. 2012.
LEITO, G. Separao de fontes de sinais de udio. 2009. Ps-Graduao em
Engenharia eltrica e computao PPGEE, Universidade Federal do Rio Grande do
Norte, Natal. 2009
GUIA audio fingerprint: MusicBrainz: The open music encyclopedia. Disponvel em:
<http://musicbrainz.org>. Acesso em 20 ago.2012
HAITSMA, J.; KALKER, T. A Highly Robust Audio Fingerprinting System Philips
Research, 2002.
CHENG Y., Music Database Retrieval Based on Spectral Similarity, International
Symposium on Music Information Retrieval (ISMIR) 2001, Bloomington, USA.
October 2001
GUIA ffmpeg. Disponvel em: < http://ffmpeg.org/>. Acesso em 13 set. 2012.
GUIA libboost. Disponvel em: <http://www.boost.org/>. Acesso em: 13 set. 2012
79

ELLIS, D.; WHITMAN, B.; JEHAN, T.; LAMERE, P. The Echo Nest musical fingerprint. In
Proceedings of the 2010 International Symposium on Music Information Retrieval, 2010.
BARTSCH, M.; WAKEFIELD,G.Audio Thumbnailing of Popular Music Using Chroma-Based
Representations, 2005. Disponvel em: <http://ieeexplore.ieee.org>. Acesso em: 05
set.2012.
GUIA zlib. Disponvel em: < http://www.zlib.net/>. Acesso em 13 set. 2012.
GUIA Chroma features, 2004. Disponvel em:
<http://abrosa.ee.columbia.edu/matlab/chroma-ansyn> . Acesso em 30 out.2012.
KE, Y.; HOIEM, D.; SUKTHANKAR, R. Computer Vision for Music Identification, 2005.
Disponvel em: <http://www.cs.cmu.edu/~yke/musicretrieval/>. Acesso em: 15 set.2012.
GUIA php. Disponivel em: <http://php.net/manual/pt_BR/index.php>. Acesso em: 10
jul.2012.
GUIA Linux. Disponvel em: <http:// www.vivaolinux.com.br>. Acesso em: 10 jul.2012.
MANUAL Audacity, the Free, Cross-Platform Sound Editor. Disponvel em
<http://oficinademultimedia.files.wordpress.com/2011/09/manual_audacity.pdf>. Acesso em
13 out. 2012
MANUAL olimex SAM9-L9260. Disponvel em :
<http://www.olimex.com/Products/ARM/Atmel/SAM9-L9260>. Acesso em 5 out.2012.
GUIA googletest. Disponvel em: <http://code.google.com/p/googletest/>. Acesso em 13
set. 2012
CUNHA, A.; O que so sistemas embarcados? 2008 Disponvel em:
<http://www.sabereletronica.com.br/secoes/leitura/274>. Acesso em: 07 out. 2012.
GOMES, P.; LEITE, T.; CAETANO, U. A Arquitetura ARM. Projeto de Sistemas
Computacionais, Universidade de Campinas, 2005.
MATTOSO, M. Introduo a Banco de dados, 2007. Disponvel em:
<http://www.cos.ufrj.br/~marta/BdRel.pdf> . Acesso em: 19 out. 2012.
80

CRESSONI, P. Short Time Fourier Transform na Anlise de Sinais Eletromiogrficos, 2011.
Relatrio Final de trabalho de iniciao cientfica Centro Universitrio Fundao Santo
Andr, Santo Andr, 2012.


.


















81


APNDICE A Imagens do website

Pgina principal


Pgina para realizar login



82

Pgina para realizar cadastro



Pgina para submeter msicas






83

Pgina para realizar o reconhecimento do udio


Pgina para exibio do contedo do banco de dados

You might also like