2 Reconhecimento de padrões

Propaganda
JOGO INTERATIVO PARA TVDIGITAL
MACACO MALUCO
Antonio Carlos da Silva Junior, Bruno Florencio Pinheiro, Rafael Barbosa Gonçalves, Vinicius Cezar
Monteiro de Lira
Centro de Informática, Universidade Federal de Pernambuco, Brazil
[email protected],[email protected],[email protected],[email protected]
Resumo:
1
O presente documento tem como objetivo demonstrar o desenvolvimento de um divertido jogo para TV
Digital, utilizando Lua e NCL, com reconhecimento de voz realizado pelo FIVE.
INTRODUÇÃO
A TV como qualquer outro veículo de
comunicação, é submetida a um constante
aperfeiçoamento, já passou por várias fases e
transições, e estamos passando pela mais crucial
delas. Valdecir e Becker (2005, p.22) comentam que
desde o primeiro canal de TV, a BBC de Londres,
fundada em 1936, a televisão já passou por várias
mudanças. Além da cor, que deixou muito mais
atraente ainda na década de 1950, também aumentou
o número de canais, originando as primeiras
escolhas ao telespectador.
Com a TV digital as escolhas serão muito
maiores, e as opções serão muitas, o usuário não irá
apenas controlar os canais e o volume, vai estar no
centro da cadeia televisiva, intervindo diretamente
no que assiste. (BATISTA, 2006).
Diante disso, diversas aplicações têm sido
desenvolvidas nessa área com o objetivo de
promover cada vez mais a interação do usuário com
a TV.
O nosso projeto - Macaco Maluco - é um jogo
casual em 2D e monousuário com a inovação
tecnológica de ser feito para TV Digital e com
reconhecimento de voz.
O jogador controlará um Macaco em um
labirinto através de comandos de voz, e terá a
missão de escolher o melhor caminho para capturar
as bananas que aparecerem no cenário. Mas para
conseguir chegar às bananas, o Macaco Maluco terá
que escapar dos Macacos Malvados que estão
rondando o labirinto. A cada banana capturada,
aparecerá outra banana em um lugar diferente e de
acesso mais difícil no labirinto. Se conseguir
capturar as três bananas, o jogo acaba com vitória
para o jogador.
O jogo se propõe como um passatempo para os
intervalos das programações televisivas em
contraposição as propagandas.
2
RECONHECIMENTO
PADRÕES
DE
A
Inteligência
Artificial
utiliza-se
do
Reconhecimento de Padrões para analisar
determinado conjunto de dados (“conjunto de
treinamento”) e organizá-los de acordo com padrões.
O reconhecimento de padrões visa classificar dados
baseados em conhecimento a priori (preliminar ou
dedutivo) ou informações estatísticas extraídas de
padrões.
Estes padrões a serem classificados normalmente
são grupos de medidas ou observações que definem
pontos em um espaço multidimensional apropriado.
Antes de partir para a análise efetiva, uma etapa de
treinamento é realizada: nela o algoritmo de
reconhecimento é testado para que seja possível
saber se ele encontra os resultados esperados. [2]
No reconhecimento de voz esse processo é realizado
extraindo-se de forma automática a informação
necessária do sinal de voz. O sistema pode estar
interessado na informação textual da fala para a
edição de um texto ou execução de um comando. O
sistema também pode estar interessado em algumas
palavras chave, como "sim" ou "não", que possam
estar inseridas na frase. Ou ainda no timbre pessoal
do agente emissor do comando de voz, para a
identificação do mesmo como uma medida de
segurança.
O processo de reconhecimento de voz pelo sistema
computacional ocorre em três fases distintas:
aquisição do sinal de voz, extração de parâmetros e
reconhecimento do padrão.
A aquisição do sinal de voz se dá a partir de um
dispositivo conversor analógico/digital, que obtém o
sinal a ser reconhecido. Em um microcomputador de
mesa, esse processo poderia ser o seguinte: um
usuário emite o sinal de voz em um microfone
acoplado à uma placa de som que digitaliza o sinal
analógico deixando-o preparado para a próxima fase
do processamento.
Na segunda fase, um algoritmo de parametrização,
ou seja, um programa desenvolvido para tratar de
forma parametrizada o dado de entrada (comando
vocal) através de um conjunto de características que
descrevem de maneira adequada as propriedades do
sinal da voz, extraindo e representando os
parâmetros necessários para a sua utilização.
Após a extração das características do padrão, o
reconhecimento do padrão responsabiliza-se pela
identificação dos mesmos, isto é, através de
comparações sucessivas, ele verifica a que padrão de
referência (conhecido) o padrão de entrada (o qual
se deseja reconhecer) se assemelha. [3]
2.1
Extração MFCC
Os MFCCs são coeficientes característicos do som
obtidos de um tipo de representação cepstral. O
termo cepstral origina de cepstrum, que é o resultado
da Transformada de Fourier de um espectro decibel.
A escala mel é uma escala perceptual de pitch, que é
a frequência fundamental do som percebida. O nome
mel originou-se da palavra melodia para indicar que
a escala é baseada em comparação de pitch.
Os MFCCs apresentam um bom desempenho em
extração de características presente em sinais da fala
humana. Pois, conseguem representar os aspectos
perceptualmente relevantes do espectro do som de
curta duração.
As etapas do algoritmo para se calcular os MFCCs
são:
1) Pré-ênfase : amplifica o espectro do sinal do som;
2) Janela de Hamming: minimiza o efeito de borda
provocado com a segmentação da amostra de dados,
que ocorre devido às descontinuidades no início e no
fim de cada bloco segmentado;
3) Transformada discreta de Fourier (DFT):
determina as componentes de frequência.
2.2
conjunto de parâmetros estatísticos. No processo de
classificação avaliamos a probabilidade da amostra
ter sido gerada por um dos modelos de referência
previamente treinados.
A aplicação de um modelo estatístico fornece uma
alternativa para contornar o problema de
alinhamento entre referência e amostra. Os
algoritmos convencionais procuram ajustar a
amostra e a referência, repetindo ou eliminando
segmentos da amostra (ou da referência) com base
na semelhança entre os atributos deste segmento e
dos adjacentes.
2.3
Ferramenta FIVE
O FIVE é um framework orientado a objeto
desenvolvido em frameworks open source escrito
em Java. O FIVE é composto de cinco módulos para
auxiliar desenvolvedores na construção de interfaces
de voz para suas aplicações:
1) Engenho de reconhecimento automático de
voz (ASR)
2) Engenho Text-To-Speech (TTS)
3) Engenho de verificação automática de locutor
(ASV)
4) Módulo que representa a API (Application
Programming Interface), responsável pela integração
dos módulos anteriores (módulos base) e a
aplicação.
5) Aplicação (APP).
O FIVE provê uma forma flexível para os
desenvolvedores criarem interfaces baseadas em
reconhecimento de voz.
É possível, também, construir interfaces com
apenas um dos módulos base ou com os módulos
combinados entre si.
A figura a seguir mostra a arquitetura do FIVE.
[6]
Classificação HMM
Modelos Ocultos de Markov (Hidden Markov
Models - HMM) trata-se de um formalismo
Markoviano usado para modelar situações nas quais
a fonte geradora dos sinais observados está oculta do
observador. Esse formalismo pode ser usado tanto
para estudar a natureza dessa fonte quanto para
ajudar a prever observações futuras.
Os modelos ocultos de Markov são processos
probabilísticos, onde aplicamos um modelo
estatístico, e avaliamos a probabilidade da amostra
ter sido gerada pela referência treinada.
Criam-se referências que representam um modelo
aos atributos extraídos do sinal de voz por um
3
EXPERIMENTOS
Nossa base de dados foi composta por quatro
palavras (cima, baixo, direita e esquerda) gravadas
por quatro locutores. Os locutores gravaram em
torno de 10 vezes cada palavra, totalizando 219
gravações.
O tipo de ambiente escolhido foi o ruidoso, com
o intuito de que caso o framework detectasse
qualquer tipo de interferência provocada pelo
microfone, a mesma fosse minimizada.
Na configuração dos parâmetros da extração de
características, optamos por deixar os valores padrão
e com a única técnica de extração disponível:
MFCC.
Já em relação aos parâmetros da classificação
dos padrões, passamos por dois momentos distintos.
Num primeiro momento, optamos também por
deixar os valores padrão, porém verificamos que o
reconhecimento estava sendo feito com uma
quantidade de erros muito grande.
Após algumas dicas do professor da disciplina
resolvemos fazer algumas melhorias. Acontece,
então, o segundo momento.
Através do Audacity[7], removemos as partes
sem áudio das gravações e no parâmetro Número de
estados que por padrão estava em 1, colocamos para
2.
O resultado foi surpreendente. A engine passou a
reconhecer mais de 90% das locuções, dando à
aplicação um bom grau de confiança.
A figura a seguir representa a matriz de
confusão.
4.1 Arquitetura
Devido à impossibilidade de integração do
FIVE com o Ginga-J e à ausência de microfone na
televisão, fez-se necessário a utilização de uma
arquitetura auxiliar mediante o uso de um protocolo
de comunicação cliente-servidor para suprir essas
duas incompatibilidades.
O lado cliente é responsável pela captação do
áudio através de um microfone e por toda a parte de
reconhecimento de fala com o uso do FIVE, e, por
fim, comunicação com o servidor via protocolo
TCP/IP para alteração do status da tela do mesmo. O
lado cliente foi implementado em Java e conforme
dito acima utilizou a API do FIVE. O cliente teria o
papel de um dispositivo auxiliar a televisão que
captura a fala do usuário e informa o comando
pretendido para televisão.
Por sua vez, o lado servidor é responsável por
toda a parte de reconhecimento da fala com o uso do
FIVE e pela apresentação da programação da TV
assim como as alterações de estados da tela
conforme os comandos de voz vindo do cliente. O
servidor foi desenvolvido em NCL e Lua e consiste
no papel do televisor da aplicação.
No ambiente da televisão (representado por
nosso servidor), em um dado momento conforme a
escolha da interatividade da programação televisiva
scripts em Lua mantém uma porta aberta para
receber conexões e começar a brincadeira iniciando
o jogo. De acordo com o conteúdo enviado, esse
script fará a renderização do jogo na tela.
4.2 Funcionamento
4
APLICAÇÃO
Inicialmente o projeto foi planejado com a
proposta de manter o reconhecimento de padrões
contido no FIVE integrado com o Java DTV. O Java
DTV é uma especificação livre criada pela Sun para
ser adotado no Ginga-J. O Ginga-J por sua vez é o
middleware da TV digital, sendo composto por um
conjunto de APIs (Interfaces de Programação de
Aplicativos) projetadas para suprir todas as
funcionalidades necessárias para a implementação
de aplicativos para televisão digital, desde a
manipulação de dados multimídia até protocolos de
acesso [7]. No decorrer do projeto constamos que o
Java DTV utiliza a versão 1.3 do Java gerando
incompatibilidade de versão com o FIVE que
utilizava recursos mais avançados como Generics
presente apenas na versão 1.5 do Java.
O jogo tem como objetivo fazer com que o
personagem, nosso Macaco Maluco, percorra um
labirinto desviando de inimigos e consiga pegar
bananas distribuídas pelo mapa. Para isso o usuário
irá utilizar de quatro diferentes comandos de voz:
Cima: instrui o macaco a subir no mapa.
Baixo: instrui o macaco a descer no mapa.
Direita: instrui o macaco a mover sua direção
para horizontalmente para a direita do jogador.
Esquerda: instrui o macaco a mover sua direção
para horizontalmente para a esquerda do jogador.
Após recolher as 3 bananas do mapa, o usuário
será contemplado com contente tela de
parabenização e finalização do jogo. Caso não
obtenha sucesso em sua saga e algum macaco
malvado alcance o personagem, o usuário perderá o
jogo sendo informado através de uma tela de game
over.
5
CONCLUSÕES
O processo de desenvolvimento do jogo como
um todo foi de grande proveito para todos os
participantes da equipe. Pois a partir desse
adquirimos novos conhecimentos em tecnologias até
então pouco familiar para equipe, como no caso de
trabalhar com a linguagem Lua e em uma aplicação
com reconhecimento de padrão, sendo mais
específico, em reconhecimento de voz. Além disso
nossa equipe se mostrou motivada por conta do
caráter desafiador, inovador e divertido do projeto.
Concluímos que mediante o desenvolvimento
desse projeto conseguimos compreender a
sistemática envolvida na elaboração de um sistema
de reconhecimento de padrões. Onde a partir de uma
quantidade de dados de amostra inicialmente
conhecidos tem-se a classificação de determinado
indivíduo.
REFERÊNCIAS
[1] BATISTA, Carlos Eduardo. TV Digital: Java na
sala de estar. Mundo Java, n. 17. 2006.
[2] http://www.baixaki.com.br/tecnologia/3014inteligencia-artificial-reconhecimento-depadroes.htm
[3]http://wwwusr.inf.ufsm.br/~maicongb/trabalho.html#recon
[4] Investigação dos coeficientes cepstrais da
frequência mel para extração de características de
gêneros musicais. Fonte:
http://bt.fatecsp.br/system/articles/300/original/arq1
6.pdf
[5] Um Estudo sobre Modelos Ocultos de Markov
HMM - Hidden Markov Model. Fonte:
http://www.inf.pucrs.br/peg/pub/tr/TI1_Luciana.pdf
[6] Maciel, A., Carvalho, E. FIVE Framework for an Integrated Voice
Environment. 2010. IWSSIP - 17th
International Conference on Systems, Signals
and Image Processing.
[7] http://audacity.sourceforge.net/
Download