Interfaces
alternativas são um tema popular no cenário
atual dos jogos de computador. Controles por voz,
biométricos e até por pensamento
têm aparecido frequentemente em jornais
e revistas internacionais. Porém, até
hoje não houve um jogo brasileiro que incorporasse
qualquer sistema mais sofisticado que um joystick.
Portanto,
como não poderia deixar de ser, nós
da TILT online
tomamos a dianteira e apresentamos o primeiro
sistema para jogos com reconhecimento de voz em
português, com especial atenção
aos jogos do tipo adventure.
Chega
de digitar "norte", "abra a mala"
ou "beba água": agora, jogar
o Amazônia é tão fácil
quanto dizer "O rato roeu a roupa do rei
de roma".
O
TILT Vox:
Visando
reduzir o trabalho dos desenvolvedores de jogos,
criamos um programa de controle por voz genérico,
chamado TILT Vox, que pode ser
usado em qualquer tipo de jogo, seja ação,
esporte ou raciocínio. Na verdade, o sistema
pode ser usado inclusive para controle do micro
e de outros programas além de jogos.
Ele
funciona reconhecendo as palavras faladas em um
microfone, decodifindo-as em comandos específicos
e enviando teclas ou sentenças ao Sistema
Operacional. Elas são divididas
em duas áreas: comandos
e ditado.
Os
comandos são palavras isoladas que provocam
uma ação, como executar um programa,
um conjunto de teclas ou a habilitação
do reconhecimento de outros comandos. Eles tomam
precedência de qualquer outro tipo de ação
(exceto dos modificadores numéricos).
Já
a área de ditado contém palavras
que, quando reconhecidas, são "digitadas"
pelo programa como se o próprio usuário
estivesse usando o teclado normalmente.
Instalando
e testando:
Para
rodar o TILT Vox são necessários
dois downloads: o da biblioteca Sphinx
e do próprio programa (disponíveis
no final desta página). O instalador da
Sphinx
é simples; basta rodá-lo, selecionar
um diretório de destino e o programa se
encarrega do resto. ATENÇÃO:
a biblioteca Sphinx
tem dificuldade em operar quando o diretório
possui espaço em seu nome, portanto, evite
esse tipo de diretório. Esse pacote instalador
não cria nenhum executável em si
- apenas os dados necessários para reconhecimento
de voz. E vale lembrar que só funciona
à partir do Windows NT
(ou seja, não é possível
usar o TILT Vox nas versões
95, 98 ou ME do Windows).
O
próximo passo é descomprimir o arquivo
zip em qualquer diretório
e rodá-lo. Antes, porém, tenha certeza
de que o seu microfone está conectado e
funcionando corretamente (é possível
testá-lo gravando uma frase qualquer no
gravador de som do Windows). Um bom microfone
é essencial para um reconhecimento eficaz,
os melhores são os do tipo headset, que
mantém o microfone perto da boca do usuário
(eles podem ser encontrados em qualquer loja de
informática por cerca de 20 reais).
Dentro
do TILT Vox é possível
criar comandos, palavras para ditado ou utilizar
algum profile já existente. Incluso na
distribuição da TILT
estão três profiles-padrão:
principal
(com alguns comandos-execmplo para controlar o
desktop), amazônia
(para controle desse jogo) e um em branco.
Para
jogar o Amazônia
com controle de voz, basta carregar o profile
correspondente, clicar em "reconhecer",
minimizar o programa (botão no canto superior
direito) e rodar o jogo. Dependendo de suas preferências,
você pode escolher criar um comando para
ativação de reconhecimento, ou deixá-lo
ligado continuamente.
Comandos
e ditado:
Criar
comandos é simples: basta especificar uma
palavra identificadora, uma pronúncia usando
os fonemas adequados e a ação a
ser executada quando o comando for identificado,
que o TILT Vox automaticamente
se encarrega do resto. Os tipos de ação
suportados são:
1-
Execução: Executa um programa
com os parâmetros especificados. É
útil para criar profiles de controle do
computador.
2-
Tecla: Simula o pressionamento de uma
tecla ou combinação. O programa
ativo irá responder como se o usuário
tivesse realmente pressionado o teclado (alguns
jogos que usam o directx têm problema em
detectar algumas teclas específicas como
as setas).
3-
Ativação: Ativa o reconhecimento
de outros comandos. Se nenhum comando de ativação
for especificado, o sistema irá reconhecer
continuamente todas as palavras falados no microfone.
No entanto, se houver um comando desse tipo, as
palavras reconhecidas (excetuando-se as de ativação)
serão descartadas a não ser que
o sistema seja ativado. Ou seja, nenhum comando
será aceito se antes não houver
um de ativação.
4-
Digitação: Envia uma frase
ao Sistema Operacional como se o próprio
usuário houvesse digitado. Esse tipo de
comando é útil para simplificar
textos que são digitados muitas vezes (por
exemplo, dizer "nome" ao invés
de ditar o nome completo). Para um profile com
muitas palavras, no entanto, a melhor maneira
de inserir textos para digitação
é através de palavras para ditado.
A
área de ditados é um pouco mais
complicada. Devido ao modo de funcionamento da
engine de reconhecimento de voz usada (CMU
Sphinx), os melhores resultados
para reconhecimento de um grande número
de palavras são alcançados quando
um modelo de linguagem é construído
à partir de sentenças normalmente
pronunciadas.
Portanto,
para utilizar a área de ditados, primeiro
é preciso construir um corpus (um acervo
de sentenças "naturais") com
as palavras que podem ser reconhecidas inseridas
dentro do contexto de uso (por exemplo, as sentenças
mais comuns utilizadas no jogo Amazônia)
e salvá-lo em um arquivo de texto comum
(com uma sentença por linha). E então
carregar esse arquivo para a área de ditados
do programa, que se encarregará de criar
as informações necessárias
para o seu correto entendimento.
Uma
última classe de comandos que também
é entendida são os modificadores
numéricos (um, dois três...) que
são codificados diretamente no programa
e permitem a repetição de um comando
repetidas vezes. Esses modificadores podem ser
habilitados ou desabilitados nas seção
de preferências, e editados manualmente
dentro do arquivo modnum.ini.
Pronúncia:
O
segredo do reconhecimento de voz é a pronúncia.
Todo comando que pode ser entendido pela engine
deve ser associado a uma ou mais pronúncias
que são construídas a partir de
uma lista de fonemas.
Embora
o Sphinx
seja um sistema para reconhecimento de voz em
inglês, ao contrário de outras bibliotecas
como o SAPI da Microsoft ele
não requer treinamento e é independente
de locutor. Com um pouco de adaptação,
é possível utilizar os mesmos fonemas
do inglês para palavras em português
com um ótimo resultado.
Dentro
do Vox, quando um comando é
digitado, algumas regras básicas de pronúncia
do português são aplicadas à
palavra, gerando uma lista de fonemas perto da
pronúncia real (com alguma margem de erro
para casos especiais), o que significa que na
maioria das vezes não será necessário
conhecer o alfabeto de fonemas.
É
importante lembrar porém, que algumas palavras
são simplesmente difíceis para o
programa identificar, devido à própria
forma da pronúncia, do dialeto ou dicção
do usuário, o que pode tornar necessário
um ajuste fino das palavras para locutores diferente.
Por esse motivo, está incluso no programa
(dentro no arquivo phoneset.txt) a lista de fonemas
aceitos junto com uma palavra e a sua pronúncia.
Sphinx:
A
engine utilizada pelo TILT Vox
para reconhecimento de voz é a CMU
(Carnegie Mellon University) Sphinx
II, de código aberto, que
vêm sendo desenvolvida a vários anos.
Dentre as diversas versões presentes (2,
3 e 4) a escolhida foi a versão 2 por executar
reconhecimento em tempo real, e por ter integração
simples com o Delphi.
Ela
foi compilada em um OCX que pode
ser utilizado importando-o como uma Type
Library dentro das versões mais
recentes do Delphi. Seu único problema
é não suportar os sistemas operacionais
Windows 95 e 98 (e possivelmente o ME) devido
à incompatibilidades do modelo de threads
entre esses SOs e as versões mais recentes
como o Windows 2000 e XP.