Desenvolvimento de um Aplicativo Gráfico para

Propaganda
Desenvolvimento de um Aplicativo Gráfico para Dispositivos
Móveis para a Análise de Sinais de Áudio no Tempo e na
Freqüência
Leandro Alves Santiago, Ivan Roberto de Santana Casella
Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas (CECS), Universidade Federal do ABC
Av. dos Estados, 5001, Santo André, SP
I. INTRODUÇÃO
O
s aparelhos celulares adquiriram a capacidade para
desempenhar um grande número de novas funções. Isso
foi possível em razão da crescente demanda de serviços
multimídia de entretenimento e de fins específicos. Além
disso, esse aparelho apresentou um grande poder de
penetração na sociedade, facilitando o acesso de diversos
aplicativos ao usuário final, disponibilizando um instrumento
específico de fácil acesso. Segundo a ANATEL, o Brasil
chega a 164,5 milhões de celulares em Setembro de 2009. [1]
Devido à sua ampla gama de aplicações, os arquivos de
áudio têm importante papel tanto na pesquisa quanto na
indústria. As características dos sinais de áudio proporcionam
uma grande área de pesquisa e desenvolvimento de novas
tecnologias.
A oportunidade do envolvimento com a programação,
adicionalmente voltada a celulares, e com estudos das
características do som são grandes motivadores para a
realização deste projeto. Além disso, este trabalho ainda
poderia ser ampliado a fim de realizarem-se aplicações
adicionais, dentre outras, tais como o Reconhecimento de voz
e o Gerador de sinais acústicos.
O Reconhecimento de voz ou fala permite uma série de
aplicações, como a possibilidade de uma pessoa com
deficiência que a impede de digitar ou realizar outras ações do
gênero escrever textos ou acessar arquivos, além da
flexibilidade de acesso a recursos do celular utilizando-se a
voz ou até mesmo a identificação de padrões de sinais
sonoros.
Com a utilização do aplicativo, o estudo de sinais acústicos
padrões, tais como ondas senoidais, quadradas, triangulares
etc., seria facilitado, utilizando-se de um aparelho celular.
II.
UFABC. Como ambiente de desenvolvimento, será utilizada o
Netbeans, que dispõe de um grande número de recursos
gráficos para desenvolvimento de aplicativos para celulares.
A plataforma Java 2 Micro Edition (J2ME) foi criada para
lidar com as limitações associadas com a criação de
aplicativos para dispositivos pequenos e de pouco poder de
processamento. Esta define dois conceitos essenciais que são
Configurações e Perfis, além de utilizar-se de APIs (Interfaces
de Programa da Aplicação) adicionais. O J2ME contêm um
JRE (da sigla em inglês Java Runtime Environment, Ambiente
de Tempo de Execução) altamente otimizado, abrangendo
uma ampla gama de dispositivos muito pequenos e habilitando
programas utilitários úteis, de segurança e conectividade em
smart cards, pagers, conversores de sinal digital (set-top
boxes) e outros aparelhos de pequeno porte.
DESENVOLVIMENTO DE APLICAÇÕES PARA
DISPOSITIVOS CELULARES
Existem várias linguagens de programação voltada a
dispositivos móveis, tais como J2ME(Java), Hecl, Python,
além de aplicativos escritos em C. Existem, também, vários
ambientes de desenvolvimento como o Eclipse, o Netbeans e o
S60. Devido à grande sofisticação e flexibilidade, neste
projeto faremos uso da linguagem Java, que também leva em
conta a adoção desta linguagem em diversas disciplinas da
Figura 1 – A plataforma J2ME
A. Configurações
Uma configuração define uma plataforma mínima para um
grupo de dispositivos com características similares, tanto na
memória quanto no poder de processamento. As configurações
definem as características suportadas tanto pela própria
linguagem de programação Java, quanto pela máquina virtual
e suas bibliotecas de classes e APIs, as quais um determinado
fabricante pode esperar que estejam disponíveis em todos os
dispositivos de uma mesma categoria. As principais
configurações do J2ME são o CDC, o CLDC.
A configuração CLDC é destinada a dispositivos móveis,
pequenos e com grande restrição de recursos, conectividade a
algum tipo de rede, em geral sem-fio apresentando banda
limitada. Faz uso da KVM (Kilo Virtual Machine), uma
versão reduzida da máquina virtual Java. Alguns exemplos
desses dispositivos são: telefones celulares, PDAs, entre
outros. Assim, este projeto fará uso desta configuração CLDC.
Por outro lado, existe a configuração CDC. Ela é destinada
a dispositivos fixos um pouco mais poderosos, que possuem
conectividade com redes, possibilitando estabilidade e grande
largura de banda. Essa configuração utiliza a máquina virtual
Compact Virtual Machine (CVM) que é uma máquina virtual
completa e projetada para os dispositivos que necessitam de
toda a funcionalidade presente na edição J2SE (JVM), porém
com menos memória. Alguns exemplos desses dispositivos
são: televisão com Internet, sistema de navegação de carros,
entre outros.
B. Perfis
Um perfil define uma plataforma Java para uma categoria de
dispositivos, sendo a camada mais visível para usuários e
desenvolvedores de aplicações. Ele especifica o conjunto
mínimo de interfaces de programa da aplicação (APIs)
disponível em uma classe particular de dispositivos. Os perfis
são implementados para uma configuração particular (CLDC
ou CDC). As aplicações são escritas para um perfil específico
sendo, deste modo, portáteis para qualquer dispositivo que
suporte aquele perfil. Um dispositivo pode sustentar múltiplos
perfis.
O Perfil do Dispositivo de Informação Móvel (MIDP) é o
principal e pioneiro perfil na plataforma J2ME. A combinação
do CLDC e do MIDP fornece um ambiente completo de
desenvolvimento para a criação de aplicações em celulares e
pagers. Aplicações que executam em dispositivos que
suportam MIDP são denominados MIDlets. O MIDP foi feito
para executar em cima da camada de configuração CLDC.
Deste modo, o perfil utilizado neste projeto é o MIDP 2.0.
III. TRATAMENTO DE SINAIS DE ÁUDIO
A captura de sinais de áudio foi realizada com a utilização
da MMAPI (Mobile Media API). A MMAPI é um pacote
opcional de desenvolvimento de MIDlets que incorpora
capacidades de manipulação de áudio e vídeo e suporta vários
formatos de mídias. Fornece controles avançados sobre a
reprodução, da captura de áudio e vídeo, da captura de fotos,
reprodução de arquivos MIDI, entre outras. Para alcançar essa
neutralidade, a API encapsula esses conceitos em dois objetos
de alto nível: o Player e o DataSource. Ao passo que o Player
é uma interface que lida com o processamento e reprodução de
dados multimídia, DataSource é um resumo que encapsula a
tarefa de dados de localização e recuperação, mantendo um
protocolo independente. Além disso, temos a classe Manager,
que fornece acesso a instancias da classe Player, funcionando
como uma ponte entre o DataSource e seu respectivo Player.
Nesta aplicação, o acesso ao player de captura foi dado através
do método createPlayer() da classe Manager, utilizando-se
como parâmetros a String ―capture://audio‖, que define o
player como capturador de áudio [3].
Figura 2 – MMAPI como um Pacote Opcional
IV. REPRESENTAÇÃO GRÁFICA DE SINAIS
A representação gráfica de dados em J2ME pode ser uma
tarefa difícil de desenvolver, pois a manipulação gráfica está
vinculada à interface de baixo nível Canvas. A dificuldade de
implementação de gráficos, utilizando-se a interface Canvas,
encontra-se na manipulação direta de pixels do visor. Para
isso, foi utilizada uma biblioteca adicional chamada Chart
Component. [3] A manipulação de um gráfico é feita com a
instanciação de um objeto, que adicionam dados e define sua
estrutura. Para que o gráfico seja exibido, o item deve ser
anexado por um formulário (form). Nas figuras abaixo, temos
alguns exemplos de gráficos suportados pela biblioteca:
Figura 3 – Exemplos de gráficos da Chart
Component
V. FAST FOURIER TRANSFORM EM J2ME
A transformada de Fourier é uma transformada integral
que expressa uma função como soma ou integral de funções
senos e cossenos multiplicados por coeficientes
("amplitudes"). As transformadas contínuas e discretas de
Fourier têm muitas aplicações em disciplinas científicas — em
Processamento de sinal, Processamento de imagem, Física,
Física e Química Quântica, Estatística, Acústica e outras áreas.
Nos campos relacionados com o processamento de sinal, a
Transformada de Fourier é tipicamente utilizada para
decompor um sinal nas suas componentes em freqüência e
suas amplitudes. Geralmente, a denominação "Transformada
de Fourier" refere-se à Transformada de Fourier para funções
contínuas. Para uso computacional, seja para aplicações
científicas ou em processamento digital de sinais, é preciso ter
valores discretos. Para isso existe a versão da transformada
para funções discretas, a DFT (Discrete Fourier Transform)
que pode ser calculada de forma eficiente utilizando-se de um
algoritmo FFT (Fast Fourier Transform). O número de
cálculos necessários para executar a DFT foi drasticamente
reduzido por esse algoritmo, desenvolvido por Tukey e
Cooley, em 1965. [3]
Utilizando as técnicas de transformada de Fourier (TF) é
possível representar um sinal no domínio da freqüência. Essa
representação possibilita uma nova perspectiva de análise de
sinal, oferecendo recursos para extrair características do sinal
que podem ser utilizadas para o processamento da informação
(reconhecimento do sinal, filtragem etc.).
RESULTADOS E DISCUSSÕES
O aplicativo desenvolvido neste projeto permitiu a captura
de áudio e a representação desses dados no domínio da
freqüência e do tempo. Abaixo, temos algumas telas do
aplicativo no emulador do Netbeans, no qual foram capturados
sinais de uma onda quadrada de 1 kHz:
Figura 4 – Onda quadrada 1 kHz no tempo e na
freqüência
CONCLUSÕES
O aplicativo ainda precisa de otimizações, como aplicações
de filtros e ajustes dos níveis de captura. Entretanto, a este
projeto contribui com a pesquisa direcionada a processamento
digital de sinais, pois permite o estudo de sinais de áudio,
utilizando-se de dispositivos celulares. Sugere-se, para
posteriores pesquisas baseadas neste trabalho, o estudo sobre o
armazenamento das amostras (samples) para melhor
manipulação dessas amostras.
REFERÊNCIAS BIBLIOGRÁFICAS
[1] http://www.anatel.gov.br/Portal/exibirPortalInternet.do
acessado em 20/09/09
[2] http://java.sun.com/javame/overview/products.jsp ,
acessado em 20/09/09.
[3] Goyal, Vikram, ―Pro Java ME MMAPI: Mobile Media
API for Java Micro Edition‖, 1 ed., 2006.
[4]
http://www.beanizer.org/site/index.php/en/Software/J2meChartComponent-ver-1.5.html , acessado em 29/07/09.
[5] Lathi, B. P. – ―Sinais e sistemas Lineares‖, 2 ed., Porto
Alegre: Bookman, 2007
AGRADECIMENTOS
Agradeço a UFABC pela possibilidade de envolvimento com
a pesquisa científica e pelo apoio financeiro, ao meu
Orientador Prof. Dr. Ivan R. S. Casella e a todos que
contribuíram com a realização deste projeto.
Download