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/