curso de engenharia de computação sistema controle via...
TRANSCRIPT
i
Curso de Engenharia de Computação
SISTEMA CONTROLE VIA COMANDO DE VOZ
Carlos André Pinheiro Braz
Campinas – São Paulo – Brasil
Dezembro de 2008
ii
Curso de Engenharia de Computação
SISTEMA DE CONTROLE VIA COMANDO DE VOZ
Carlos André Pinheiro Braz
Monografia apresentada à disciplina de Trabalho de Conclusão do Curso de Engenharia de Computação da Universidade São Francisco, sob a orientação do Prof. Dr. Claudio Kiyoshi Umezu, como exigência parcial para conclusão do curso de graduação. Orientador: Prof. Dr. Claudio Kiyoshi Umezu.
Campinas – São Paulo – Brasil
Dezembro de 2008
iii
Sistema de Controle Via Comando de Voz
Carlos André Pinheiro Braz Monografia defendida e aprovada em 11 de Dezembro de 2008 pela Banca Examinadora assim constituída:
Prof. Dr. Claudio Kiyoshi Umezu (Orientador) USF – Universidade São Francisco – Campinas – SP.
Prof. M.Sc. Claudio Maximiliano Zaina USF – Universidade São Francisco – Campinas – SP.
Prof. M.Sc. Raimundo Claudio da Silva Vasconcelos USF – Universidade São Francisco – Campinas – SP.
iv
.
Dedico esse trabalho com todo meu amor e
respeito a minha amada esposa, que com sua
paciência e plenitude foi essencial para que os
resultados deste trabalho fossem positivos e
superassem as expectativas.
v
Agradecimentos
Agradeço primeiramente a Deus, pois, foi ele que me deu força e aptidão
para realizar este trabalho. A ele devo a minha existência.
Em segundo lugar agradeço a minha amada esposa que sempre esteve do
meu lado, me apoiando, incentivando e sendo o alicerce que sustentou o meu
sucesso. Objetivou-me a sempre dar o melhor de mim. Amou-me e apoiou
incondicionalmente, mesmo muitas vezes não podendo retribuir devido à longa
jornada de desenvolvimento deste trabalho.
A minha família, pai mãe, sogro, sogra e irmãos que sempre estiveram
dispostos a ajudar.
Ao Prof. Dr. Claudio Kiyoshi Umezu que me orientou, com sua amizade e
conhecimento contribuiu com máximo para conclusão deste trabalho. Esteve
sempre disposto a ajudar e jamais negou os frutos do seu conhecimento para o
resultado notável deste trabalho.
A todos os meus colegas de classe que convivi estes 5 anos. Tive o prazer
de aprender muito, ganhos notáveis, valiosas amizades que ficarão para sempre.
Em especial a minha amiga Rúbia Mara Rossi que mesmo com dois filhos
pequenos, também venceu essa guerra sem perder nenhuma batalha.
Aos professores do corpo docente da Universidade São Francisco que com
suas bagagens e experiências contribuíram muito para meu aprendizado,
possibilitando um grande crescimento pessoal e profissional.
A todos os funcionários da universidade São Francisco, desde o faxineiro
até a Reitoria. Se não fosse graças ao trabalho e cada um, eu não teria tido a
oportunidade de me formar Engenheiro da computação em uma universidade que
lego de muita qualidade.
Em Especial a um grande Amigo, Silvio B. Setubal, a pessoa que me serviu
como espelho e graças a seu apoio e contribuição possibilitou os meus primeiros
passos na Área de computação.
vi
Sumário
SUMÁRIO.............................................................................................................. VI
LISTA DE FIGURAS ........................................................................................... VIII
RESUMO............................................................................................................... IX
ABSTRACT ............................................................................................................ X
1 INTRODUÇÃO ..................................................................................................1
1.1 Objetivo ..........................................................................................................2
1.2 Justificativa.....................................................................................................3
1.3 Organização do trabalho ................................................................................4
2 O RECONHECIMENTO DE VOZ......................................................................6
2.1 Gramáticas ...................................................................................................12
2.2 Trabalhos Já Realizados ..............................................................................14
2.3 A API de Reconhecimento de Voz ...............................................................15
2.4 Comparando APIs de Reconhecimento de voz............................................17
3 O PROJETO....................................................................................................20
3.1 Os Modelos ..................................................................................................25
3.1.1 Modelo de Gramática .............................................................................25
3.1.2 Modelo da Interface de Hardware ..........................................................33
3.1.3 Modelo Hierarquia de Comandos...........................................................38
3.2 Desenvolvimento do Sistema .......................................................................41
3.2.1 A Base Dados ........................................................................................41
3.2.2 O Sistema de Controle Via Comandos de Voz.......................................44
3.3 O Reconhecimento de Voz e os Ruídos.......................................................49
4 CONCLUSÃO..................................................................................................52
4.1 Contribuições ...............................................................................................52
4.2 Trabalhos Futuros ........................................................................................53
vii
Lista de Siglas
API – Application Programming Interface
DDI – Drive Direct Interface
HMM – Hidden Markov Model
JSAPI – Java Speech API
NLU – Natural Language Understanding
PCM – Pulse Code Modulation
PDA – Personal Digital Assistant
SAPI – Speech API
SCVCV – Sistema de Controle Via Comando de Voz
SDK – Software Developer Kit
MDI – Multiple Document Interface
MASAPI – Microsoft Speech Application Programming Interface
SCVCV – Sistema de Controle Via Comando de Voz
viii
Lista de Figuras
Figura 1 - As fases empregadas para reconhecimento de fala.
(DAMASCENO, 2005). .................................................................................6
Figura 2 - Representação do modelo de Hidden Markov. (ODELL, 1995). ..........9
Figura 3 - Diagrama de um sistema de reconhecimento de fala genérico,
baseado em estatísticas relacionando com treino e decodificação da
fala. (CHOU, 2003). ....................................................................................10
Figura 4 - Como um mecanismo de reconhecimento de Voz reconhece uma
palavra. (ODELL, 2005). .............................................................................11
Figura 5 – Esquema de integração da base de dados com os processos do
reconhecimento da fala. (RABYNER, 1993). ..............................................12
Figura 6 - Esquema Uso da API de Fala. (MICROSOFT, 2000). .......................16
Figura 7 - Gráfico comparativo Java Speech X Microsoft Speech API.
(DAMASCENO, 2005). ...............................................................................18
Figura 8 – Esquema básico do sistema de controle via comando de Voz. ........20
Figura 9 – Diagrama UML dos casos de uso do sistema comando de voz. .......22
Figura 10 – Tela de configuração do mecanismo de fala...................................24
Figura 11 - Árvore de regras de uma gramática para uso de comandos de
voz. .............................................................................................................26
Figura 12 - ”RECO” - Interface de teste de reconhecimento de voz...................28
Figura 13 - Árvore modelo de estrutura da geração de arquivos XML. ..............32
Figura 14 - Esquema dos pinos porta paralela (Conector DB25) no modo
ECP. (ROGERCOM, 2008).........................................................................34
Figura 16 – Modelo hierarquia de comandos. ....................................................40
Figura 17 – Diagrama relacional do banco de dados do Sistema de Controle
via Comando de Voz...................................................................................43
Figura 18 – Tela do Formulário MDI contendo o formulário de autenticação
no sistema...................................................................................................44
Figura 19 - Tela do formulário de manutenção da hierarquia de comandos. .....45
Figura 20 – Tela do Formulário monitor comando de Voz. ................................48
ix
Resumo
Com o corrente problema da inclusão social dos portadores de
necessidades especiais, tem-se a necessidade de promover a portabilidade e
inclusão social destes indivíduos. O uso dos sistemas de reconhecimento de voz
teve um notável crescimento, e mostrou ser uma nova tecnologia a favor da
acessibilidade. Baseado neste conceito, este projeto tem por objetivo entender o
funcionamento da tecnologia de reconhecimento de voz e desenvolver um sistema
de controle via comando de voz.
Foi desenvolvido um modelo de gramática que demonstra um padrão de
representação das “tags” XML para uso em comandos de reconhecimento de voz,
bem como a organização desses comandos e os vários arquivos XMLs gerados.
Também foi criado um modelo de hardware de controle de equipamentos,
composto por vários módulos que expande sua capacidade de controle sem a
necessidade de alterar a estrutura atual já implantada. Para controlá-lo, foi
desenvolvido um modelo de organização e classificação dos comandos e, através
destes, foi desenvolvido o sistema de controle via comando de voz.
O sistema de controle via comando de voz é um sistema robusto e funcional
que permite controlar vários equipamentos eletrônicos ou digitais e foi projetado
de forma que sua capacidade de controle possa ser expandida sem a necessidade
de alterações no seu código fonte.
PALAVRAS-CHAVE: Reconhecimento de Voz, API de Fala, Microsoft Speech API,
Acessibilidade, Sistema de Controle, XML.
x
Abstract
With the current issue of social inclusion of individuals with special needs,
has been the need to promote social inclusion and portability of these individuals.
The use of voice recognition systems had a remarkable growth, and it proved to be
a technology in favor of the accessibility. Based on this concept, this project is to
understand the operation of voice recognition technology and develop a control
system through voice command.
It developed a model of grammar that demonstrates a pattern of
representation of the tags for use in XML for recognizing voice commands and the
organization of these commands and the various files XMLs generated. It was also
created a model of hardware control equipment compound by several modules that
expand their ability to control without the necessity to change the current structure
already deployed. To control it, was developed a model of organization and
classification of commands and, through these models has been developed a
control system via voice command.
The Control System Via Voice Command is a robust and functional system
to control several electronics or digital equipments and it was designed so that their
ability to control can be expanded without the necessity for changes in your source
code.
KEY WORDS: Voice Recognition, Speech API, Microsoft Speech API, Accessibility, Control System, XML.
1
1 Introdução
No mercado existem várias empresas que investem na tecnologia de
reconhecimento de voz, como a Philips, IBM, Dragon Systems e Lernout &
Hauspie. Essas tecnologias estão presentes em chips de celulares que permitem
a discagem via comando de voz, leitura e escrita de textos. O IBM Via Voice é
considerado um dos melhores softwares da categoria, reconhece a voz em vários
idiomas. Esses softwares permitem executar alguns comandos do sistema
operacional como abrir e fechar aplicativos e até mesmo executar programas pré-
configurados. (DAMASCENO, 2005).
Os fabricantes dos sistemas de reconhecimento de voz disponibilizam
bibliotecas e APIs (Application Programming Interface) que permite o
desenvolvimento de aplicações específicas de reconhecimento de voz. Alinhando
as tecnologias de reconhecimento de voz com as tecnologias de controle e
automação de equipamentos eletrônicos e digitais, nota-se a possibilidade de
desenvolver um software que possa reconhecer os comandos de voz de um
usuário e atuar em um hardware de controle de equipamentos, surgindo o sistema
de controle via comando de voz.
Em São Paulo, na Brasiltec 2003 (Salão e Fórum de Inovação Tecnológica
& Tecnologias Aplicadas nas Cadeias Produtivas), engenheiros efetuaram
demonstração da chamada “Casa Inteligente”, que utilizava PDAs (Personal
Digital Assistant) e o controle de voz para acionar os dispositivos eletroeletrônicos
da casa. Os investimentos ficaram em torno de 4 milhões de reais. O problema é
que além de ser somente um demonstrativo, o custo foi exorbitante. O fator custo,
impossibilita que pessoas de média e baixa renda possam adquirir o sistema,
sendo que somente pessoas com alto poder aquisitivo poderiam usufruir dessa
tecnologia, o que causaria maior desigualdade social. Outro ponto negativo
encontrado é que o projeto não foi desenvolvido para atender empresas em geral.
O Sistema Controle Via Comando de Voz (SCVCV), desenvolvido neste
trabalho, possibilita controlar equipamentos via comando de voz usando
tecnologias de última geração, como comunicação sem fio, microcontroladores e
2
software não proprietário, proporcionando um baixo custo do sistema. Portanto
maior acessibilidade poderá ser oferecida para todas as classes sociais,
possibilitando a inclusão social e a redução da desigualdade social.
Para desenvolver esse projeto é necessário conhecer o funcionamento da
tecnologia de reconhecimento de voz. Em seguida descobrir as APIs disponíveis
no mercado para desenvolvimento do software de reconhecimento.
O sistema proposto poderá ser usado em residências, empresas e outros
estabelecimentos comerciais, permitindo que pessoas com deficiências , apenas
com a voz, possam controlar os equipamentos eletroeletrônicos, como por
exemplo, controlar ar condicionado, iluminação, elevador, computadores, efetuar
chamadas telefônicas, abrir portas com fechaduras eletrônicas, controlar uma
cadeira de rodas adaptada com um motor elétrico, ou seja, qualquer dispositivo
que possa ser controlado por uma interface digital ou analógica.
Outro campo é a medicina. Os médicos poderão ligar aparelhos, ajustar
configurações sem se desprender da cirurgia em andamento, simplesmente
utilizando o controle de voz. Essa é uma fase mais avançada, pois os comandos
devem ser reconhecidos imediatamente, mas é uma barreira que com melhorias
no sistema poderá ser quebrada.
1.1 Objetivo
O objetivo principal deste projeto é desenvolver um software que reconheça
comandos de voz e possibilite a comunicação com interfaces eletrônicas
analógicas ou digitais, permitindo controlar equipamentos ligados nas suas
respectivas saídas.
Para desenvolver um projeto de reconhecimento de voz foram estudados
os principais softwares de reconhecimento de fala do mercado, verificando suas
principais diferenças e definir o adequado para o projeto.
Em meio de fundamentar essa tecnologia conceituou-se a tecnologia de
reconhecimento de voz, suas aplicações e principais definições necessárias para
o entendimento da mesma e desenvolvimento do sistema.
3
Antes de iniciar a codificação do software, foram desenvolvidos modelos
que possam ser aplicados e utilizados no sistema de reconhecimento de voz de
modo que se tenha um padrão que atenda às necessidades do projeto. Foram
criados modelos de organização dos comandos, modelos de gramática e um
modelo do hardware controlador a ser usado junto com o sistema de controle via
comando de voz
Por final mostrar o funcionamento da API de reconhecimento de voz
Microsoft Speech API, suas principais classes e métodos e definir a interface do
software criado e seu funcionamento.
1.2 Justificativa
Um dos principais problemas sociais encontrados no país é a inclusão
social dos portadores de deficiência física. As vias de circulação não possuem
rampas de acesso, equipamentos eletrônicos ficam em locais de difíceis acessos
e os disjuntores (liga e desliga) de lâmpadas não ficam na altura padrão de
acessibilidade a um cadeirante. Além da dificuldade nos meios sociais, dentro da
sua residência também existem dificuldades de acesso.
Não tratando somente de deficientes físicos, pessoas em recuperação
cirúrgica ou problemas de saúde que impossibilitam sua locomoção também
sofrem com problemas de acessibilidade e dependem 24 horas por dia de
pessoas para atender às suas necessidades, sejam elas físicas ou de lazer. Um
exemplo disso são pessoas com paralisia que não conseguem mover-se ao
menos para usar um controle remoto.
Nos hospitais também existem os pacientes que podem passar mal e,
devido à deficiências ou mobilização corporal não terem ou conseguirem acesso a
um dispositivo que depende da mobilidade física para pedir ajuda ou
simplesmente para seu conforto como ajustes de macas e equipamentos
eletrônicos.
Com todos esses problemas encontrados na sociedade o projeto Sistema
de controle via comando de voz (SCVCV) propõe promover acessibilidade e a
4
inclusão social para pessoas com diversos tipos de deficiências física , sejam elas
temporárias ou não, permitindo flexibilidade nas suas atividades ou necessidades
sem depender de terceiros. Ressaltando que não somente pessoas com
deficiências físicas como também pessoas sem as mesmas poderão usufruir desta
tecnologia possibilitando seu conforto.
1.3 Organização do trabalho
Este trabalho esta dividido em 4 capítulos:
• Capítulo segundo: Corresponde a revisão bibliográfica sobre o
reconhecimento de voz. Apresenta as principais definições
necessárias para o entendimento de como a voz é falada e
reconhecida pelos mecanismos de reconhecimento. Aborda o
modelo de Markov, como os softwares fazem para reconhecer a voz
humana e a importância das gramáticas para a eficácia do
reconhecimento dos comandos de voz. Descreve dois trabalhos
realizados no campo de reconhecimento de voz que permitem maior
acessibilidade aos portadores de deficiência física. Fala do
funcionamento das APIs de reconhecimento de fala e suas principais
funções. Faz o comparativo das três principais bibliotecas de
reconhecimento do mercado: O IBM via Voice, O Java Speech e o
Microsoft Speech.
• Capítulo terceiro: Possui a descrição do projeto de software. Define
as principais classes do Microsoft Speech que vão ser usadas no
desenvolvimento. Ilustra a integração do servidor de aplicação com
os módulos de controle. Descreve as configurações mínimas da CPU
a ser usada como servidor de aplicação para SCVCV. Demonstra os
modelos desenvolvidos para desenvolvimento do projeto. Define um
modelo de gramática que permite trabalhar com múltiplos arquivos
XML de gramática. Propõe um modelo de interface modular de
hardware a ser controlada pelo SCVCV e um modelo de
5
classificação, organização e atuação dos comandos de voz. Aborda
o desenvolvimento do sistema, define as tabelas do banco de dados.
Demonstra a estrutura do software desenvolvido, sua interface e as
principais funcionalidades do SCVCV. Descreve os resultados
obtidos e trata da problemática dos ruídos.
• Capítulo quarto: Faz a conclusão do trabalho. Cita as principais
contribuições do projeto. Sugere alguns trabalhos que podem ser
desenvolvidos futuramente como continuidade do trabalho atual.
6
2 O Reconhecimento de Voz
O reconhecimento de voz já é uma tecnologia presente no dia a dia de
muitas pessoas. Atualmente existe no mercado equipamentos que utilizam essa
tecnologia como: celulares, PDAs, entre outros, permitindo fazer ligações,
acessarem agendas, enfim, efetuar vários comandos utilizando somente com o
uso da voz.
A Figura 1 mostra as fases usadas no reconhecimento da voz. Primeiro o
som analógico falado é transmitido através de um microfone para a placa de som
do computador. A placa de som digitaliza o sinal e disponibiliza para as saídas
existentes. Na fase 2 o mecanismo de reconhecimento faz um pré-processamento
dos sinais obtidos, analisa e organiza o sinal e identifica com um numero as
palavras faladas e preparara o comando para fase seguinte. Nesta fase ocorre a
limpeza do sinal, suavização, etc. Num segundo estágio desta fase é feita a
eliminação dos ruídos e interferências. Na fase 3 ocorre a comparação dos
padrões. O software de reconhecimento de voz compara o sinal processado com
os padrões existentes, agrupa os sinais reconhecidos dentro de uma determinada
categoria e disponibiliza, em uma saída, as palavras ou expressões reconhecidas.
(DAMASCENO, 2005).
Figura 1 - As fases empregadas para reconhecimento de fala. (DAMASCENO, 2005).
7
Várias empresas estão investindo na tecnologia de reconhecimento de voz.
As mais conhecidas são a Philips, Lernout & Houspie, IBM, Texas Instruments e a
Microsoft. Estas empresas produzem softwares que permitem ditados, leituras de
textos em voz natural e reconhecimento de comandos, fonemas curtos. Estes
softwares permitem ao usuário executar funções dentro do sistema operacional,
como abrir e fechar aplicativos.
O reconhecimento de voz, inicialmente foi criado através de muitos estudos,
dentre eles: definições matemáticas, transformadas de Fourier, estudos da
definição da fala e as regras das formações gramaticais. De acordo com
Damasceno (2004) têm-se algumas definições:
• Fonema: a menor unidade de som que as palavras são compostas;
• Modelo acústico: modelo de como os sons das palavras deveriam se
representar;
• Expressão: qualquer seqüência de voz entre dois períodos de silêncio;
• Pronúncia: forma de se falar as palavras (incluindo o sotaque e o
regionalismo das mesmas);
• Gramática: são as regras de reconhecimento, ou seja, o conjunto de
palavras e conjunções válidas para a ativação de uma ação no sistema;
• Treinamento: processo pelo qual o mecanismo de reconhecimento passa
para identificar o sotaque e a pronúncia dos vocábulos do usuário;
• Precisão: variável que estabelece se o que foi pronunciado pode ser
representado em sua equivalência pela gramática.
• Padrão Acústico: Variações da fala como idioma, sotaque, velocidade,
tonalidade e freqüência da voz .
Mesmo os melhores softwares do mercado de reconhecimento de voz
possuem erros de áudio e pronúncia, ou seja, não conseguem reconhecer o que
foi falado dentro dos padrões acústicos de cada pessoa, sendo necessário o
treinamento do software. Durante o treinamento, as expressões gramaticais são
relacionadas à voz e sotaque do usuário, criando um modelo acústico que
relaciona a freqüência de entrada ao fonema.
8
Os modelos são definidos em perfis, permitindo várias pessoas usarem um
mesmo computador. Assim, o software consegue fazer o reconhecimento da voz
com menor taxa de erro. Mesmo com o intenso treinamento, uma precisão de no
máximo 95%, essa probabilidade melhora quando se usa comandos curtos. Os
erros aumentam em ambientes que possuem ruídos, pois estes geram falsos
fonemas. (DAMASCENO, 2005).
A freqüência da fala humana é de 60 a 1300 Hz, transformada através de
um circuito digital utilizando Pulse Code Modulation (PCM), que é a medida do
sinal analógico através das amplitudes da freqüência da fala.
Graças às técnicas das transformadas de Fourier, consegue-se definir uma
amostragem do sinal de áudio em cada centésimo de segundo, representado no
domínio da freqüência. Assim, o sinal de entrada pode ser representado por um
conjunto de bandas de freqüências discretas, que representam os componentes
de freqüência do som da fala humana. (GUILHOTO, 2001).
As bibliotecas de fala liberadas pelos fabricantes do software de
reconhecimento de voz possuem uma base de dados com milhares de fonemas
vinculados a uma freqüência de voz. Assim, o software pode comparar o
respectivo fonema encontrado na base de dados com o sinal de entrada e
reconhecer o que foi dito. Cada fonema é identificado por um número, chamado
de “feature number”. (ODELL, 1995).
Segundo Odell (1995), no modelo de Hidden Markov (HMM), Markov
determina um modelo que permite ao reconhecedor de voz saber quando um
fonema acaba e outro começa utilizando funções matemáticas. É um sistema
estatístico que compara os “feature numbers” de cada fonema e faz análises
combinatórias das transições com pesos associados que permitem definir os
agrupamentos dos fonemas.
A Figura 2 representa o modelo de Hidden Markov, mostra as
transformações de uma entrada de voz representada em uma máquina de
estados, cada estado representa uma análise da entrada de voz que geram vários
sinais de freqüência da voz, nestes sinais são aplicadas várias transformadas
9
matemáticas, havendo a comparação entre todos os sinais testados com o sinal
esperado, ate chegar à aceitação do fonema falado. (ODELL, 1995).
Figura 2 - Representação do modelo de Hidden Markov. (ODELL, 1995).
Também existe um fonema que determina o silêncio que possibilita
identificar a pausa entre cada palavra.
Para o reconhecedor de voz conseguir construir as orações sem muito
esforço de processamento e memória, há necessidade de uma base que define as
regras de constituição das orações. Essa base possui um dicionário com todas as
palavras possíveis do idioma, conduzidas pelas regras gramaticais ou de
formação de cada palavra, ou seja, deve possuir as classes gramaticais que
mostram todas as possibilidades possíveis dos agrupamentos das palavras ou
fonemas. Essa gramática é relacionada a um reconhecedor léxico, ou seja, é o
padrão de voz que define como a palavra é pronunciada. (RABINER, 1989).
O software IBM Via Voice faz análise de toda a frase para ampliar a visão
de conhecimento, verificando todas as possibilidades de construções gramaticais.
Ele também verifica as seqüências anteriores para definir a probabilidade de a
próxima oração ser verdadeira. Baseados nos modelos estatísticos mostram a
palavra de maior probabilidade. (GUILHOTO, 2001).
10
Para se conseguir um bom reconhecimento da voz é indispensável o treino
do software, onde deve ser gravada a voz do usuário para as diferentes regras
aplicadas na regras do idioma. (CHOU, 2003).
Conforme ilustrado na Figura 3, durante o treino é realizado um
relacionamento do modelo gramatical da frase escrita com o modelo léxico do
usuário do treino. É criado uma base paralela que contém padrões acústicos
relacionados com a base dos modelos da linguagem. Portanto para reconhecer a
voz, o decodificador de voz faz uma comparação do que foi falado com as duas
bases existentes. Assim consegue reconhecer a voz de diferentes pessoas com
diferentes sotaques e variações da fala, incluindo freqüência da fala, velocidade,
tonalidade, etc. (CHOU, 2003).
Figura 3 - Diagrama de um sistema de reconhecimento de fala genérico, baseado em estatísticas
relacionando com treino e decodificação da fala. (CHOU, 2003).
Cada software de reconhecimento de voz possui uma interface de treino em
que o usuário deve ler textos de maneira clara, respeitando os sinais de
11
pontuação. É neste momento que o analisador léxico faz o relacionamento da voz
do usuário a cada fonema presente na base de dados. (ODELL, 2005).
Conforme Figura 4, o sistema de reconhecimento de voz não reconhece a
palavra por inteiro, mas usando as árvores de derivação para as regras
gramaticais existentes, fazendo comparação dos fonemas reconhecidos com os
fonemas existentes, consegue-se distinguir a palavra falada.
Figura 4 - Como um mecanismo de reconhecimento de Voz reconhece uma palavra. (ODELL,
2005).
Além da interface de reconhecimento permitir o reconhecimento dos
comandos, também possui o sistema que permite o ditado de textos em qualquer
aplicativo que permite entrada de textos, seja na Internet ou um editor de texto.
Este mecanismo é chamado de reconhecedor de linguagem natural ou “Natural
Language Understanding (NLU)” (RABYNER, 1993).
Com o NLU é possível fazer menus dinâmicos que permitem uma relação
homem-máquina, onde há total interação entre um software e o usuário
simplesmente através do uso da voz. Um exemplo: as centrais de telefonia
inteligentes utilizadas atualmente. Cada sistema possui uma base de
conhecimento com todas as relações necessárias para o reconhecimento de voz.
(RABYNER, 1993).
12
A Figura 5 demonstra todas as fases empregadas no reconhecimento de
voz. Todas às informações necessárias dos processos empregados no
reconhecimento de voz, estão disponíveis em uma base de conhecimento. Cada
processo recebe um sinal, processa-o, consulta a base de dados, faz as
validações necessárias e passa para o próximo nível até ocorrer o reconhecimento
total do fonema. (RABYNER, 1993).
Figura 5 – Esquema de integração da base de dados com os processos do reconhecimento da
fala. (RABYNER, 1993).
2.1 Gramáticas
Para a eficácia do reconhecimento da voz, é indispensável uma gramática
livre de regras ambíguas. Com uma gramática bem definida, o analisador léxico
entende somente as regras principais e consegue deduzir e formular a frase, não
havendo a necessidade de uma interpretação completa de tudo que se foi falado,
sendo um ganho para o reconhecimento da voz, principalmente na parte de
comandos.
13
As gramáticas são representadas por expressões regulares, processadas
de um modo linear de maneira recursiva. (GUILHOTO, 2001).
Mesmo que se tenha uma entrada de voz distorcida, com uma boa
gramática o sistema é capaz de identificar parte da frase fazendo apenas uma
breve pergunta sobre um fonema de finalização da frase.
Uma gramática deve aceitar alguns erros comuns do dialeto e, sempre que
houver novas alterações na linguagem, novas regras devem ser inseridas ou
retiradas. Cada vez que ocorre isso, existe o risco de ambigüidades, podendo
prejudicar o sistema.
Pesquisadores do ramo de inteligência artificial estão realizando vastos
estudos e desenvolvendo sistemas que façam aprendizagem e criem
automaticamente as regras gramaticais.
Com a gramática, tem-se uma melhor reconhecimento da voz, eficácia nas
restrições e indicações do mecanismo de reconhecimento de voz. Oferece
sustentabilidade textual para as regras gramaticais do idioma e permite a
reutilização de regras definidas anteriormente, incluindo frases, listas, números ou
palavras isoladas. Permite também a tradução de comandos para gerenciamento
de aplicativos. Estes tipos de gramáticas são produzidos com uma semântica
específica, incluindo somente as frases e palavras utilizadas nas ações do
aplicativo. (MICROSOFT, 2000).
A gramática é representada em arquivos XML, formato que foi padronizado
pelo instituto W3C. Esse instituto é o responsável pela padronização de
linguagens Web. (MICROSOFT, 2000).
Nos arquivos XML usam-se “tags” para definição de regras de
reconhecimento de voz, geralmente iniciadas por sinais de <Tag> e finalizadas
pelo sinal </Tag>.
De acordo com o guia do Microsoft Speech SDK 5.1, para definir uma
gramática que permite marcar reuniões com diferentes pessoas pode-se usar o
exemplo:
14
<RULE TOPLEVEL=ACTIVE> <P PROPNAME="marque" VAL="reuniao">marque uma reunião</P> <P>com</P> <L PROPNAME="participantes"> <P VAL="CAndre">Carlos André</P> <P VAL="Comezu">Claudio Omezu</P> <P VAL="Cpin">Cristiane Pinheiro</P> <P VAL="crandall">Cynthia Randall</P> <P VAL="Aleon">Andre Leon</P> <P VAL="Mbraz">Marcos Braz</P> </L> </RULE>
(Adaptado Guia Microsoft Speech SDK 5.1)
As regras são definidas na gramática para controlar os elementos de
construção de palavras ou frases. As regras são definidas hierarquicamente e
permitem controlar os elementos de construção da oração, na qual existe um
número definido de palavras e suas possíveis combinações em que o sistema
recursivamente entende e interpreta a ação desejada. (MICROSOFT, 2000).
A complexidade de definição das regras gramaticais aumenta
exponencialmente quando se tenta definir o número máximo de combinações
possíveis. (MICROSOFT, 2000).
Existem dois tipos de gramáticas, a de alto nível e a de baixo nível que
definem a forma de acesso ao mecanismo de serviço de fala. A gramática de alto
nível é indicada para reconhecimento de comandos simples, itens de menus,
janelas etc. Já no modelo de baixo nível há um detalhamento aprofundado de
como realmente se manipula a linguagem, que é utilizado para reconhecimento de
textos contínuos. (DAMASCENO, 2005).
A gramática é definida, conforme modelos aplicados na engenharia, que o
reconhecimento das palavras parte de uma árvore de derivação e máquinas de
estados.
2.2 Trabalhos já Realizados
Várias universidades, institutos e pessoas independentes estão
desenvolvendo aplicações usando as bibliotecas de reconhecimento de voz
15
voltadas para o mercado comercial e também para atendimento a pessoas com
deficiência.
O projeto Falibras foi concebido como um sistema que, ao captar a fala no
microfone, exibe no monitor a interpretação do que foi dito em LIBRAS (linguagem
de sinais), na sua forma gestual, animada e em tempo real, permitindo maior
acessibilidade aos 6 milhões de surdos mudos existentes no Brasil. (CORADINE,
2004).
Outro projeto é o LIMA, Livros Multimodais Aumentados, desenvolvido no
LaSIGE - Laboratório de Sistemas Informáticos de Grande Escala e Grupo HCIM -
Human Computer Interaction and Multimedia. (DE LIMA, 2000).
De acordo com De Lima (2000) o sistema LIMA usa algoritmos de
processamento de imagens, que através de um scanner de mão, exibe na tela
uma imagem aumentada do trecho de um livro físico. O Microsoft SDK 5.1 faz a
leitura dos parágrafos usando a voz natural disponíveis na biblioteca.
O sistema reconhecimento de voz é de extrema utilidade na área comercial.
usado em robôs e aparelhos eletrônicos e principalmente para permitir a
acessibilidade dos milhões de portadores de deficiência existentes no mundo.
2.3 A API de Reconhecimento de Voz
Cada empresa que investe na tecnologia de reconhecimento, geralmente
possui os pacotes de desenvolvimento, incluindo bibliotecas, objetos e APIs que
permitem o desenvolvimento de aplicações nas diversas linguagens como Java,
C++, Delphi, Visual Basic, C#, .Net e outras.
A Figura 6 mostra que a aplicação usa a API para se comunicar com o
mecanismo de reconhecimento de voz e este utiliza o Driver Direct Interface (DDI)
que gerencia a entrada e saída de voz, fazendo o reconhecimento ou leitura de
uma frase através de seus mecanismos de reconhecimento passando pelas suas
camadas. (MICROSOFT, 2000).
16
Figura 6 - Esquema Uso da API de Fala. (MICROSOFT, 2000).
A aplicação de fala e a máquina de reconhecimento de voz não comunicam
diretamente entre si. De acordo com o Guia da Microsoft Speech API a
comunicação é feita através da Speech API (SAPI) que controla vários aspectos
de um sistema de fala, tais como:
• Controla a contribuição auditiva de um microfone, arquivos ou outra fonte
auditiva, convertendo dados auditivos a um formato de máquina válido;
• Carrega a gramática ativa;
• Compila a gramática, converte no formato desejado, analisa as regras,
semânticas e formações gramaticais;
• Permite o compartilhamento de reconhecimento por aplicações múltiplas
que usam a máquina compartilhada;
• Retorna os resultados e outras informações para os métodos de controle.
• Armazena o áudio de entrada, deixando os resultados para análise
posterior;
• Garante que as aplicações não provoquem erros inesperados, permitindo
uma passagem de parâmetros corretos.
17
Tabela1 – Relação dos softwares de reconhecimento de fala. (DAMASCENO, 2005).
2.4 Comparando APIs de Reconhecimento de voz
A fim de desenvolver o projeto de reconhecimento de voz para controle de
um sistema digital usando microcontroladores, foram estudadas as bibliotecas do
Java Speech API, IBM Via Voice e Microsoft Speech SDK 5.
O Java Speech API (JSAPI) é um pacote da Sun usado para a síntese e
reconhecimento de fala com contribuições de várias empresas como a Apple
Computer Inc., AT&T, Dragon Systems, Inc., IBM Corporation, Novell, Inc., Philips
Speech Processing e Texas Instruments Incorporated. (PRESTON, 2006).
De acordo com a Sun (2005), o JSAPI é uma biblioteca excelente, com
bases de dados para vários idiomas como português, espanhol, inglês, alemão
entre outros. Essa biblioteca ficou disponível gratuitamente nos últimos anos.
Atualmente, devido a estratégias comerciais todas as fontes disponíveis foram
retiradas pelas empresas que possuem os direitos autorais.
O IBM Via Voice é considerado um dos melhores softwares de
reconhecimento de voz no mundo, contemplando vários idiomas inclusive
português e também disponibiliza objetos e APIs. Considerado o de mais fácil
implementação para os desenvolvedores, este software pode ser usado em quase
todas as linguagens de programação. (DAMASCENO, 2005).
18
O Microsoft speech SDK é um pacote de desenvolvimento distribuído
gratuitamente pela Microsoft, possui suporte para as linguagens, C++, C#, Visual
Basic, Vb .Net e Java Script da Microsoft. Esse software roda somente em
sistemas Windows 32 bits. (MICROSOFT, 2000).
Segundo Damasceno (2005), o Microsoft SAPI tem uma média de acertos
maior que o IBM Via Voice. Um dado importante é que, quando é utilizada a
biblioteca Java Speech, não há eventos de erros. O mecanismo trata apenas os
erros de pronúncia, ou seja, ele verifica se a informação que o usuário pronunciou
está na gramática definida.
A biblioteca Microsoft SAPI, consegue redirecionar o que foi pronunciado
para um arquivo temporário, que pode ser usado como verificador ou corretor na
segunda vez em que o usuário pronuncia a frase. (DAMASCENO, 2005).
De acordo com a Figura 7, no uso de comandos e controles com palavras
isoladas, o Microsoft SAPI é 1% menos eficiente que o Java Speech. Na utilização
de diálogos contínuos, o Microsoft SAPI é 3% mais eficiente do que o Java
Speech. (DAMASCENO, 2005).
Figura 7 - Gráfico comparativo Java Speech X Microsoft Speech API.
(DAMASCENO, 2005).
19
Na abordagem de comandos e controle para regras de gramática não existe
diferença entre as taxas de acerto, ou seja, têm-se 98% de acurácia nas duas
plataformas. (DAMASCENO, 2005).
20
3 O Projeto
Conforme observado na Figura 7, o Microsoft Speech é tão eficiente quanto
o Java Speech, e ainda possui bibliotecas para as linguagens de programação
gráficas como o Visual Basic, que é de domínio do autor do projeto e por isso foi à
plataforma escolhida para desenvolvimento do software de controle.
Atualmente o Microsoft Speech SDK 5.1 possui reconhecimento de fala
somente no Idioma inglês, japonês e chinês. Em Portugal já existe uma equipe
desenvolvendo as bases de reconhecimento para português Brasil, mas ainda
estão em fase de testes e não foram liberadas para distribuição, foi disponibilizada
somente uma versão Beta para testes.
O projeto consiste no desenvolvimento de um aplicativo no Visual Basic
usando as livrarias e bibliotecas do Microsoft Speech API 5.1 com acesso a uma
base de dados para guardar dados cadastrais e as configurações de
gerenciamento do aplicativo.
O sistema deve reconhecer um comando de voz de entrada, verificar na
gramática carregada se o comando é válido, enviar sinal de controle para a
interface de controle e executar uma determinada ação, como por exemplo,
apagar uma luz.
Para assegurar uma maior flexibilidade, o sistema deve permitir o cadastro
de novos equipamentos a serem controlados. Cada equipamento deve ser
associado a um endereço de uma porta do hardware de controle e a um comando
de voz associado a cada função a ser executada. Por exemplo, no caso de uma
televisão, deve ser associado os controles ligar, desligar, aumentar volume,
diminuir volume.
Como já definido, deve ser criado um arquivo XML com a hierarquia das
regras dos comandos a serem reconhecidos. Posteriormente os equipamentos ou
comandos podem ser cadastrados ou alterados. Portanto, o arquivo XML deve ser
criado e atualizado dinamicamente em tempo de execução a cada alteração nos
equipamentos controlados.
21
De acordo com a Figura 8, o aplicativo deve receber um comando através
de um microfone, comparar o comando recebido, selecionar os módulos de
interface, selecionar o equipamento e enviar o comando desejado.
Figura 8 - Esquema básico do sistema de controle de voz.
A configuração mínima do servidor de aplicativo de comando de voz é um
Pentium II 233 MHz com 128 MB de memória RAM com sistema Windows 98.
(Microsoft, 2000). Esta configuração é a designada pelo fabricante. O ideal é rodá-
lo em um Pentium III 700 MHz com 256 MB de memória com Windows XP, assim
evitar possíveis travamentos e possibilitar melhor desempenho no sistema.
A Figura 9 ilustra os casos de uso do sistema. Existem basicamente três
atores: o usuário, a API de voz e o SCVCV. Basicamente o funcionamento se
resume em o usuário falar o comando, a fala é recebida pelo hardware de som do
servidor, a API de voz (SAPI) processa a fala e reconhece o comando. O SCVCV
usa o comando reconhecido para selecionar a interface de hardware, processar o
comando e enviá-lo para atuar no equipamento selecionado.
22
Figura 9 – Diagrama UML dos casos de uso do sistema comando de voz.
Para realizar o reconhecimento dos comandos de voz usando MSAPI são
necessárias três classes:
• ISpRecognizer: Habilita o reconhecimento da Voz. Os objetos são criados
no modo compartilhado (SpSharedRecoContext) ou no privado
(SpInprocRecognizer), onde somente o serviço atual tem acesso ás
entradas de voz.
• ISpeechRecoGrammar: Habilita o reconhecimento das palavras e frases
que o mecanismo de reconhecimento deve reconhecer. Neste caso deve
ser especificado uma entrada de comandos ou um arquivo XML contendo
ID do Idioma e as regras de reconhecimento.
23
• ISpeechRecoResult: Retorna o resultado do reconhecimento dos
comandos, se o comando ou frase for reconhecido, retorna o comando
caso contrario, retorna uma string “False Recognition”.
Exemplo de declaração e instanciação dos objetos usando Visual Basic:
‘Declara as bibliotecas
Public WithEvents RC As SpSharedRecoContext
Public Grammar As ISpeechRecoGrammar
Dim RecoResult As ISpeechRecoResult
‘Instancia os objetos
Set RC = New SpSharedRecoContext
Set Recognizer = New SpInprocRecognizer
Ao instanciar os objetos de reconhecimento de fala, o padrão do sistema é
carregar as configurações definidas no aplicativo de reconhecimento, como idioma
e perfil do usuário. Estas configurações podem ser definidas em tempo de
execução.
O primeiro passo é instalar o SDK (Software Development Kit) da Microsoft.
Conforme Figura 10, após instalação, no ícone “Fala” presente no Painel de
Controle do sistema operacional Microsoft Windows XP, é criado a aba
“Reconhecimento de fala”. Esta tela permite criar vários perfis de reconhecimento
e realizar o treino do mesmo. Permite também configurar o microfone e para
computadores que têm mais de uma placa de som, permite definir um hardware
especifico para o reconhecimento de voz.
24
Figura 10 – Tela de configuração do mecanismo de fala.
No caso do sistema desenvolvido, por questões de segurança,
primeiramente o usuário deve se identificar via comando de voz, assim
automaticamente é vinculado o idioma e o perfil do mesmo.
Para melhor interação entre o usuário, também foi usada a biblioteca
Ispvoice, que reconhece frases ou strings na forma de fala, sendo direcionada
para saída de áudio existente no computador.
Existem diferentes bases de voz que podem ser usadas para a leitura das
frases. Novas bases podem ser instaladas posteriormente. Estas bases contêm
vozes gravadas de um perfil de pessoa onde inclui o dialeto, sotaque e tonalidade
que determina sexo e idade da pessoa que gravou. Existe também a voz robótica
gerada por artifícios da computação, mas sua qualidade é muito inferior.
A definição do arquivo XML deve ser muito criteriosa, pois regras mal
formuladas podem ocasionar a interpretação incorreta dos comandos ou o não
reconhecimento do comando. Se o sistema já executar um comando interpretado
sem confirmação e o mesmo estiver incorreto, serão acionados outros dispositivos
e dependendo do equipamento que for acionado, poderá ocasionar riscos de
acidentes ou prejuízos.
Portanto, no sistema, cada comando deve ter uma opção indicando a
confirmação ou não para executar o comando. Por exemplo, ligar uma lâmpada
25
não precisa de confirmação, mas para se abrir o portão externo é ideal uma
confirmação. Este procedimento é necessário pois, caso o usuário no interior da
casa ordenasse o apagamento das luzes do jardim, mas por um reconhecimento
incorreto, houvesse a abertura do portão externo, ocorreria uma situação que
deixaria a casa vulnerável para invasões.
Como já citado anteriormente, a gramática será criada dinamicamente via
código de acordo com hierarquia e comandos desejados para controlar os
dispositivos.
3.1 Os Modelos
Antes de começar a desenvolver o código do projeto, houve a necessidade
do desenvolvimento de alguns modelos que definem o funcionamento do SCVCV
e atenda aos objetivos descritos neste capítulo.
Foi definido um modelo padrão de gramática, um modelo de hardware e um
modelo de organização dos comandos. Ambos indispensáveis para o
funcionamento e sucesso do sistema.
3.1.1 Modelo de Gramática
As regras, nas gramáticas, seguem o modelo de uma árvore de derivação
de uma gramática qualquer. Existe o “top level” que é considerada a regra mais
importante e conseqüentemente, é o primeiro nó da árvore. Existem os nós não
terminais, que são regras intermediárias herdadas do nó anterior e, finalmente, os
nós terminais, que são as palavras a serem reconhecidas. (MICROSOFT, 2000).
Na figura 11, cada nó da árvore representa uma regra, cada regra tem um
ou mais fonemas relacionados. Os comandos são as folhas da árvore. Quando é
realizado um comando de voz o sistema varre a árvore de regras recursivamente,
faz a comparação dos fonemas e retorna o comando desejado. Por exemplo, na
frase “Ligar TV da Sala”, o sistema varreria a árvore e, conforme encontrar as
regras, organiza os fonemas e forma o comando.
26
Figura 11 - Árvore de regras de uma gramática para uso de comandos de voz.
A “Sala” representa um local que é uma regra principal (“Top Level”), logo
em seguida vem os equipamentos “TV” e “Luz” que são sub-regras de “Local”.
Dentro de “TV” há a folha que representa um comando “Ligar” e mais uma sub
regra “Volume” que define as funções da “TV”. Dentro da sub-regra de função
“volume” tem-se as folhas que representam os comandos de atuação
relacionados a função.
Portanto, as regras gramaticais usadas no sistema terão a estrutura:
• Regra “Local” – regra principal que define o local onde está instalado o
equipamento;
• Sub-regra “Equipamento” – 1 sub-regra herdando de “Local” para cada
equipamento controlado;
• Sub-regra “Função” – 1 sub-regra “Função” herdada de “Equipamento” para
cada função de controle do equipamento;
• Sub-regra “Comandos” – 1 sub-regra herdada de função que contem todos
os comandos de controle referente à função.
Cada regra pode ter definido vários comandos de reconhecimento dentro da
sua estrutura.
27
De acordo com o padrão definido, depois de estudados os comandos e
formatos das tags XML para o uso no sistema de voz, foi criado um arquivo XML
com várias regras principais e suas respectivas sub-regras. As regras principais
(“Top level”) representam os locais e suas respectivas sub-regras representam os
equipamentos e suas funções.
Cada token - Nomes das regras, palavras, etc. - é identificado por um nome
e um valor inteiro (“ID value”) único. Não é obrigatório definir o ID na gramática
para todos os tokens. Caso não seja informado o sistema assume valores internos
atribuídos pelo mecanismo de compilação e interpretação da gramática.
Nas primeiras Gramáticas não estava sendo utilizado o “ID value” para
todos os tokens. Depois de estudos e testes, foi percebido que os comandos
podem se repetir numa mesma gramática em diferentes sub-regras e ainda haver
a necessidade de ter vários comandos para uma mesma função, surgindo à
necessidade de criar um “ID value” para todos os comandos, regras e etc.
Exemplo de definição de tokens na gramática:
<DEFINE>
<ID NAME="PID_Cmdmenu" VAL="1"/>
<ID NAME="PID_CmdArea" VAL="100"/>
<ID NAME="PID_CmdSala" VAL="101"/>
<ID NAME="PID_CmdGaragem" VAL="102"
</DEFINE>
A implementação do primeiro arquivo modelo XML demandou muito
trabalho e tempo, devido dificuldade de uso da sintaxe da gramática e definição de
um método de adaptação do modelo de comandos do sistema à estrutura XML.
Para saber se não havia erros de sintaxe, foi utilizado o programa “Gramar
Compile”. Para testar a coerência da gramática e como os comandos estavam
sendo reconhecidos, foi utilizada a ferramenta “Reco”. Ambos utilitários foram
disponibilizados junto com o pacote de desenvolvimento Microsoft Speech SDK
5.1.
A Figura 12 mostra a interface de um aplicativo liberado junto com kit de
desenvolvimento Microsoft Speech que permite realizar testes do reconhecimento
28
de voz. Permite carregar uma gramática e verificar se a mesma esta coesa e se
retorna os resultados esperados.
Figura 12 - ”RECO” - Interface de teste de reconhecimento de voz.
Após constantes testes usando o aplicativo “Reco”, foi verificado que a
gramática definida era consistente, porém, devido possuir de 4 a 5 níveis
recursivos, dificultava a pronúncia completa do comando, pois para chegar num
comando válido, tinha que falar continuamente de 4 a 5 palavras válidas até
chegar no ultimo nível da regra. Uma vez que uma das palavras faladas não fosse
reconhecida, todas tinham quer ser repetidas novamente.
Para resolver o problema, as sub-regras de “funções” foram duplicadas,
herdando diretamente do local, assim eram reconhecidos os comandos longos e
também os comandos curtos como “channel up”.
Com os constantes testes, percebeu-se que quanto maior o número de
palavras possíveis na gramática através das combinações, maior a probabilidade
de reconhecer comandos hipotéticos e incorretos. Os comandos eram
reconhecidos incorretamente por erro de reconhecimento dos comandos falados
ou simplesmente devido ao ruído do ambiente, principalmente as palavras que
29
tinham uma pronúncia muito próxima e as palavras muito curtas como por
exemplo “on”.
Para resolver o problema de reconhecimentos incorretos da Voz,
precisava-se de gramáticas que tinham o mínimo possível de níveis encadeados
recursivos e menor número de palavras.
Foi mantido o mesmo padrão, porém, o arquivo XML atual foi quebrado em
vários pequenos arquivos, eliminando a recursividade de todas as regras. Exceção
foi realizada no arquivo de equipamentos que tem apenas uma sub-regra: as
funções do equipamento e seus respectivos comandos.
A gramática foi definida conforme os arquivos XML a seguir:
• Local.xml – Arquivo único contendo uma única regra com a lista de
todos os Locais cadastrados onde existem equipamentos a serem
controlados;
Exemplo:
<DEFINE>
<ID NAME="PID_Local" VAL="1002"/>
<ID NAME="PID_SALA" VAL="1000"/>
<ID NAME="PID_JARDIM" VAL="1001"/>
</DEFINE>
<RULE NAME="PID_Local" ID="PID_Local" TOPLEVEL="ACTIVE">
<L PROPNAME="PID_Local" PROPID="PID_Local">
<P VAL="PID_SALA">room</P>
<P VAL="PID_JARDIM">garden</P>
</L>
</RULE>
• LocNome_local.xml – Para cada local listado no arquivo local.xml é
gerado um novo arquivo com a lista dos equipamentos
cadastrados. Os novos arquivos gerados têm a mesma estrutura do
exemplo anterior;
• Equi_Nome_local_Nome_Equipamento.xml – É Criado um arquivo
XML para cada equipamento de todos os locais. Se existir uma TV
na sala e uma TV no quarto é gerado dois arquivos XML de
30
equipamento, um herdando da sala e outro herdando do quarto.
Uma vez que os equipamentos são os mesmos, nem sempre as
funções são as mesmas.
Exemplo:
#Define o idioma da gramatica – 409 = Inglês EUA#.
<GRAMMAR LANGID="409" >
<DEFINE>
# definição dos IDs dos tokens da gramática#
<ID NAME="PID_TV" VAL="3000"/>
<ID NAME="PID_3001" VAL="3001"/>
<ID NAME="PID_3002" VAL="3002"/>
<ID NAME="PID_CANAL_FC" VAL="8001"/>
<ID NAME="PID_CANAL_CMD" VAL="8002"/>
<ID NAME="PID_CANAL" VAL="3003"/>
<ID NAME="PID_3004" VAL="3004"/>
<ID NAME="PID_3005" VAL="3005"/>
<ID NAME="PID_3006" VAL="3006"/>
<ID NAME="PID_VOLUME_FC" VAL="8003"/>
<ID NAME="PID_VOLUME_CMD" VAL="8004"/>
<ID NAME="PID_VOLUME" VAL="3007"/>
<ID NAME="PID_3008" VAL="3008"/>
<ID NAME="PID_3009" VAL="3009"/>
<ID NAME="PID_7001" VAL="7001"/>
</DEFINE>
#Definição da regra “PID_TV” – Contendo as funções e commandos da TV#
<RULE NAME="PID_TV" ID="PID_TV" TOPLEVEL="ACTIVE" EXPORT="1">
# Lista de commandos Diretos de atuação da TV.#
<L PROPNAME="PID_TV" PROPID="PID_TV">
<P VAL="PID_3001">on</P>
<P VAL="PID_3001">begin</P>
<P VAL="PID_3002">off</P>
<P VAL="PID_7001">back</P>
</L>
<P>
31
# Lista de commandos para seleção função “Canal” da TV.#
<L PROPNAME="PID_CANAL_FC" PROPID="PID_CANAL_FC">
<P VAL="PID_CANAL">channel</P>
</L>
# Sub lista de commandos de atuação da função “Canal” da TV.#
<L PROPNAME="PID_CANAL_CMD" PROPID="PID_CANAL_CMD">
<P VAL="PID_3004">up</P>
<P VAL="PID_3004">plus</P>
<P VAL="PID_3005">minus</P>
<P VAL="PID_3005">down</P>
<P VAL="PID_3006">av</P>
</L>
</P>
<P>
<L PROPNAME="PID_VOLUME_FC" PROPID="PID_VOLUME_FC">
<P VAL="PID_VOLUME">volume</P>
<P VAL="PID_VOLUME">sound</P>
</L>
<L PROPNAME="PID_VOLUME_CMD" PROPID="PID_VOLUME_CMD">
<P VAL="PID_3008">up</P>
<P VAL="PID_3008">plus</P>
<P VAL="PID_3009">minus</P>
<P VAL="PID_3009">down</P>
</L>
</P>
</RULE>
</GRAMMAR>
A Figura 13 ilustra o modelo final de organização e geração dos arquivos
XML. Cada nó representa um arquivo XML que pode ser gerado. É uma árvore de
3 níveis e cresce somente na horizontal. O nó pai representa a lista dos locais,
cada um dos seus nós adjacentes representa a lista de equipamentos e as folhas
da árvore representam os comandos de cada equipamento existente.
32
Figura 13 - Árvore modelo de estrutura da geração de arquivos XML.
Com o novo modelo de gramática, um arquivo XML, com alto grau de
complexidade, se transformou num arquivo com estrutura simples e pequeno, com
um número exato de palavras necessárias para controlar os equipamentos. Antes
tinha estruturas recursivas de até ordem 5, agora se têm no máximo ordem 1.
O programa de reconhecimento de voz é o responsável por selecionar a
gramática atual de acordo com comando reconhecido e carregá-la seguindo a
seqüência da árvore.
Num ambiente com baixo nível de ruídos, com um perfil de voz padrão
(base inicial sem treinos adicionais), o primeiro modelo necessitava repetir um
comando em média quatro vezes para que o módulo SAPI conseguisse o
reconhecimento real do que se foi falado. Normalmente, em três ocorrências eram
reconhecidos comandos incorretos ou nenhum e somente na quarta tentativa
conseguia-se a interpretação correta. Quando se conseguia um tom padrão de
pronúncia, essa média caia para três vezes. Cada dez comandos falados,
somente quatro eram reconhecidos corretamente, tendo uma média de acertos de
somente 40%.
No modelo atual todos os comandos têm uma média de acertos de 90%.
Estes comandos devem ser falados com voz clara e velocidade constante. A
33
acurácia do reconhecimento depende diretamente do tom de voz da pessoa que
esta falando os comandos, incluindo sotaque, velocidade, freqüência da fala (varia
de pessoa para pessoa) e a fonética. O treino do mecanismo de fala se torna
indispensável para ser ter um resultado ótimo (acima de 90%).
3.1.2 Modelo da Interface de Hardware
O objetivo é propor um dispositivo de hardware modular que permite o
acoplamento de novas interfaces de controle e novos equipamentos a serem
controlados sem a necessidade de alterar o código fonte do programa de controle
e os módulos já em uso, seguindo o modelo conforme ilustrado na Figura 15. O
modelo inicial foi projetado para ser controlado pela porta paralela do computador.
Conforme Figura 14, o modelo de hardware foi definido para usar os pinos 1
ao 9, 14, 16, 17, formando dois barramentos:
• Pinos de 2 a 9 (8 bits – D0...D7). Esse é barramento de dados. Foi
usado para seleção dos módulos e como bits de controle dos
equipamentos conforme Figura 15. O acesso foi realizado de
maneira assíncrona.
• Pinos 1,14,16 e 17 (4 bits – S0...S3). Esse barramento define os
estados do sistema, ou seja, o caminho que os bits do primeiro
barramento devem seguir, se os bits vão ser usados para seleção ou
atuação
34
Figura 14 - Esquema dos pinos porta paralela (Conector DB25) no modo ECP. (ROGERCOM,
2008).
A Figura 15 define o modelo de hardware proposto a ser usado pelo
sistema de controle de voz. Usando um barramento de 8 bits de dados, o módulo
principal poderá controlar ate 256 módulos secundários, cada módulo secundário
mais 256 módulos finais que poderá controlar até 256 interfaces de controle dos
equipamentos controlados. Portanto o sistema tem uma capacidade de controlar
2563 ou seja, 16.777.216 equipamentos.
End 37Ah
End 378h
35
Figura 15 – Modelo final Interface de hardware do sistema de controle.
36
Baseado na Tabela 2, são verificados nos módulos os seguintes estados:
• Módulo Principal:
o S0 = 0 : (nível lógico baixo)
� Indica que o módulo principal esta desativado.
� Quando do Software de controle reconhecer um
comando do tipo “Local”, ativa o bit S0 do módulo
principal;
o S0 = 1 : (nível lógico alto)
� Indica que um local ainda não foi selecionado.
� O Barramento de dados (D0...D7) é direcionado a
um Demultiplexador (Demux);
� Ativa o bit S1 do módulo principal;
� O Demux seleciona uma das 256 saídas possíveis
e ativa o módulo “local” relacionado à saída
selecionada;
� Ativa sincronamente o Bit S1 (Altera em todos
módulos ativados);
o S0 = 1 e S1 = 1 :
� O barramento de dados é retransmitido para o
módulo “local” ativado;
� É ativado sincronamente o bit S2;
o S0 = 1 e S1 = 1 e S2 = 1:
� O barramento de dados é retransmitido para o
módulo “local” ativado;
� É ativado sincronamente o bit S3;
o S0 = 1 e S1 = 1 e S2 = 1 e S3 = 1
� O barramento de dados é retransmitido para o
módulo “local” ativado;
• Módulo “Local”:
o S1 = 1:
� O barramento de dados é direcionado para um
Demux;
37
� O Demux seleciona uma das 256 saídas possíveis
e ativa o módulo “equipamento” ligado na saída
selecionada;
o S1 = 1 e S2 = 1:
� O barramento de dados é retransmitido para o
módulo “equipamento” ativado;
� Ativa sincronamente S2;
o S1 = 1 e S2 = 1 e S3 = 1:
� O barramento de dados é retransmitido para o
módulo “equipamento” ativado;
• Módulo Equipamento:
o S2 = 1:
� Recebe o barramento de dados e seleciona a
função a ser executada. Ex. canal, volume, etc.;
� Ativa Sincronamente S3;
o S3 = 1:
� Recebe os bits de dados e atua no equipamento;
Tabela 2 – Bits entrada do Barramento 2 X Estado dos bits Barramento 2 nos módulos.
S0 S1 S2 S3 M Principal M Local M Equipamento 1 0 0 0 1 0 0 S0 1 1 0 0 1 1 0 S1 1 1 1 0 1 1 1 S2 1 1 1 1 1 1 1 S3
Esse projeto de interface representa apenas um modelo. Os meios de
transmissão de dados podem ser com fio (cabos rígidos) ou sem fio (módulos
de RF ou TCP/IP).
O ideal é montar a interface de hardware com transmissão sem fio
usando TCP/IP. Apesar dos módulos de comunicação wireless TCP/IP terem
um valor bem mais elevado do que um módulo RF, tecnologicamente é mais
viável devido à convergência das tecnologias para as redes TCP/IP,
possibilitando assim menor risco de obsolescência da tecnologia.
38
3.1.3 Modelo de Hierarquia de Comandos
Houve a necessidade criar um modelo de comandos que possa ser
implementado no sistema de reconhecimento de voz de modo que os
comandos de voz controlem os módulos de hardware com seus respectivos
equipamentos e se adéqüe ao modelo de gramática.
Baseado na hipótese que um estabelecimento, como uma casa, possua
os mesmos equipamentos em vários locais (cozinha, sala, quarto, etc.), o
mesmo equipamento ter funções e modos de atuação diferentes, definiu-se que
comandos seriam utilizados de maneira hierárquica.
Por exemplo, uma casa possui 3 televisões: uma na sala, uma no quarto
e uma na cozinha. A TV da sala é LCD, digital, de última geração, com as mais
avançadas funções de controle. A TV da cozinha é uma TV básica colorida
sem muitas funções, mas com controle remoto e entrada e saída de vídeo com
a função AV para alternar entre o modo de vídeo e o modo normal. Já a TV do
quarto é uma TV da década de 80, sem controle remoto, totalmente analógica,
onde as funções são trocar canal liga e desliga por meio de chaves físicas.
Para assistir um programa de um determinado canal, deve-se selecionar
onde vai ser assistido, dirigir-se ao local, ligar a TV. Caso necessário atuar:
mudar o canal e aumentar ou diminuir o volume. Dependendo do local
selecionado a maneira de operar a TV é diferente.
Para controlar as TVs da casa mencionada, apesar de ser o mesmo tipo
de equipamento, é necessário desenvolver uma interface de hardware diferente
para cada TV, pois todas possuem tecnologias diferentes, sendo que cada
interface pode ser desenvolvida em épocas diferentes
O sistema deve estar preparado para que sejam incluídas futuras
interfaces sem a necessidade de alterar o código fonte do programa de
controle ou até mesmo a estrutura do hardware já implantado.
Na expressão “aumentei o volume da TV da sala”, “volume” representa
uma função da TV, “aumentei” é a ação, “TV” é o equipamento e “sala” é Local.
A ação entre “aumentar o volume” e “aumentar a numeração dos canais” é a
mesma, o que muda é a função.
39
Assim, o primeiro passo foi classificar os comandos de voz por tipo de
função. Foram definidos 5 tipos de função de comandos:
• Local: Representam os comandos de seleção dos locais onde
estão os equipamentos;
• Equipamento: Representam os comandos de seleção dos
equipamentos, todo comando de “equipamento” deve vir abaixo
de um comando de “local”;
• Função: Representa os comandos de seleção das funções a
serem controladas no equipamento, como exemplo canal e
volume;
• Comando: São os comandos propriamente ditos. Sempre
executa uma ação, como aumentar, diminuir, ligar, desligar, etc.;
• Geral: Representam os comandos gerais que não tem atuação
com o Hardware, usado apenas para executar funções internas
do sistema como por exemplo autenticar o usuário, fazer uma
chamada telefônica, falar o menu de comandos e etc.
Conforme Figura 16, a hierarquia de comandos foi modelada num grafo
tipo árvore de grau 4, 5 níveis. No nível 1, o nó pai representa o sistema como
um todo e é um dos dois únicos nós que não possui um comando associado.
Todos os nós restantes da árvore de comandos representam um comando.
Respectivamente têm-se os níveis de locais, equipamentos, funções/comandos
e comandos, a árvore cresce infinitamente na horizontal.
Os Comandos “ligar” e “desligar” são considerados comandos primários,
não têm nenhuma função associada e portanto, ficam no mesmo nível das
funções. Os comandos com função do tipo “Comando” são sempre
representados pelas folhas da árvore.
Os comandos com função do tipo “Geral” é uma abstração que foge do
modelo hierárquico. Tendo em vista a necessidade de fazer parte da árvore de
comandos, no nível 2, foi criado um nó extra do tipo “Geral” que não representa
um comando, mas sim um conjunto de comandos representados pelas folhas
desse nó. Portanto para o nó do Tipo “Geral” todos os seus filhos
obrigatoriamente devem ser folhas.
40
Figura 16 – Modelo hierarquia de comandos.
Para atuar nas funções de uma TV, o estado inicial para que seja
possível essa operação é o estado ligada, do mesmo jeito para ligar o
equipamento deve esta no estado desligado e vice-versa.
Para definir se o estado atual do equipamento permite a execução do
comando, os comandos do modelo foram classificados como “ativa”, “desativa”,
“atua”, “seleciona” e “único”, representando os tipos de atuação no
equipamento.
Tipos de atuação dos comandos:
• Ativa: São todos os comandos do tipo “Comando” que ligam os
equipamentos;
• Desativa: São todos os comandos do tipo “Comando” que
Desligam os equipamentos;
• Atua: São os comandos tipo “Comando” que executam uma
ação relacionada a uma função do equipamento e não fazem
parte do grupo “Ativa”, “Desativa”;
• Seleciona: São todos os comandos do tipo “Local” e
“Equipamento”, usados para selecionar os módulos de controle.
• Único: São comandos isolados que não dependem de um estado
do equipamento. São usados em todos os comandos do tipo
“Geral” e, por exemplo, em um comando para atuar em um relê
de uma fechadura de porta;
Para executar qualquer comando que tem o tipo de atuação “Desativa”,
“Atua” e “Seleciona”, o equipamento deve estar no estado “Ligado”. Para
41
executar um comando do tipo de atuação “Desativa”, o equipamento deve esta
no estado desligado. Os comandos do tipo “Único” serão sempre executados.
De acordo com a Figura 16, cada nó do nível foi nomeado com letras
únicas ordenado pela numeração crescente do alfabeto. Assim o modelo
definido permite mapear o caminho do comando na árvore. Através de uma
busca pelas arestas mais próximas da origem até o comando folha, criando
uma chave única para cada comando. Como exemplo, tem-se a chave
“A/A/A/A/B”. O comando B, nó folha, pertence à função A do equipamento A do
Local A que por final se origina do sistema que é o nó pai da árvore. Cada letra
da chave representa um nível da árvore, permitindo reconstruir a árvore de
comandos somente analisando as chaves dos comandos.
3.2 Desenvolvimento do Sistema
Com os modelos e especificações do projeto concluídas, deu-se o
desenvolvimento do software do sistema de controle via comando de voz. O
primeiro passo foi definir quais telas iriam ser construídas de modo que
atendessem aos modelos propostos. Dentro dessas telas foram definidos quais
são os campos necessários para interface. O escopo do projeto exigia um
banco de dados para guardar os dados cadastrais e históricos do sistema. Foi
projetada uma base de dados que atendesse aos pré-requisitos do sistema.
Neste capítulo tem-se a definição da base de dados, a interface do
software desenvolvido com suas principais características e resultados.
3.2.1 A Base Dados
O banco de dados escolhido foi Microsoft Access, versão 2002, já que o
sistema não precisa de grandes quantidades de informações e por ser um
banco de dados que irá prover serviço local e sem acessos concorrentes. O
sistema de banco de dados Microsoft Access atende totalmente as
necessidades do sistema.
Conforme a Figura 17, foram criadas as tabelas tblgrupos, tblPID,
tblhiscmd, tblparam e tblacesso:
42
• Tblgrupos: Criada para armazenar a hierarquia de comandos
conforme figura 16.
• TblPID: Criada para armazenar os comandos do sistema com os
campos necessários para criar o arquivo XML e parâmetros do
comando, bits de controle do hardware e etc.
• Tblhiscmd: Criada para armazenar os históricos do comando e
controlar o estado atual dos equipamentos.
• Tblparam: Criada para armazenar os parâmetros padrões de
inicialização do sistema.
• Tblacesso: Criada para armazenar os usuários de acesso ao
sistema e suas respectivas permissões.
43
Figura 17 – Diagrama relacional do banco de dados do Sistema de Controle via Comando de
Voz.
44
3.2.2 O Sistema de Controle Via Comandos de Voz
O sistema foi codificado no visual Basic 6. Foi criado um formulário MDI
(Multiple Document Interface), ilustrado na Figura 18, que é o formulário mestre
do sistema. Exceto o formulário inicial de apresentação (Splash), todos os
outros formulários estão contidos no MDI.
Figura 18 – Tela do Formulário MDI contendo o formulário de autenticação no sistema.
No SCVCV (Sistema de Controle Via Comando Voz) foram criados dois
formulários principais: um para o cadastro da hierarquia de comandos e seus
respectivos parâmetros e outro para realizar o reconhecimento dos comandos,
monitoração e controle dos módulos de hardware.
O formulário de “hierarquia de comandos” foi projetado de maneira que
atenda os modelos e definições pré-estabelecidas. Ele permite os cadastros e
alterações dos membros da hierarquia de comandos, dos parâmetros de cada
comando e principalmente a geração automática dos arquivos XML contendo
as gramáticas dos comandos de voz.
Na parte esquerda da Figura 19 há um “tree-view” que exibe a árvore de
comandos cadastrada no banco de dados. Estes dados estão gravados na
tabela tblgrupos. Foi criado um algoritmo que lê a tabela de dados e monta
a árvore vertical.
45
Figura 19 - Tela do formulário de manutenção da hierarquia de comandos.
Ao clicar nos nós da árvore, são exibidos do lado direito os dados
referentes ao comando selecionando, estes dados estão na Tabela tblPID. A
estrutura da árvore pode ser alterada a qualquer momento usando o botão
direito do mouse, aparecerá um menu do tipo “Pop Up” que permite alterar,
excluir ou incluírem novos nós na árvore.
Sempre que é cadastrado um novo nó na árvore, os dados do comando
ainda não existem, portanto, os mesmos devem ser cadastrados
posteriormente utilizando o botão “Incluir”.
Ao fazer qualquer alteração nos dados, deve ser acionado o botão
“Gramática”. O mesmo chama um método que recria todos os arquivos XML
contendo as gramáticas com as regras dos comandos.
O método que cria as gramáticas não foi inserido para ser executado
automaticamente após alterações nos registros do banco de dados, por que é
um método pesado e tornaria a manutenção dos dados um pouco mais lenta.
É mais prático primeiro cadastrar todos os comandos e depois gerar as
gramáticas. O risco é modificar os comandos e esquecer-se de clicar no botão
“Gramática”. Caso isso ocorra, tem-se uma gramática inconsistente, diferente
do real cadastrado.
46
Na Figura 19, o campo “Binário” representa os bits responsáveis pelo
controle dos equipamentos. Se o comando for do tipo “Seleção”, deve ser
informado o número binário referente ao número inteiro da porta de saída do
módulo de controle. Caso o tipo seja “Comando” ou “Função”, vai depender da
configuração do hardware de controle ligado diretamente ao equipamento. Os
comandos do tipo “Geral” não enviam comandos de controle.
O SCVCV permite até três frases diferentes para o mesmo comando. O
SAPI não limita o número de registros vinculados a um único ID de comando.
Como, quanto maior o número de palavras na gramática, maior a possibilidade
de reconhecimentos hipotéticos, o número de comandos de um mesmo ID foi
limitado a três. O comando reconhecido é executado somente se o campo
“Ativo” for verdadeiro.
Alguns comandos, se executados sem a real intenção, podem trazer
perigo para as pessoas próximas ao local do equipamento. Por exemplo, se um
comando para abrir um portão externo for reconhecido hipoteticamente por
meio da fala ou um alto índice de ruído do ambiente onde esta o microfone de
captura de áudio, o local ficará vulnerável a ladrões e entrada de pessoas não
autorizadas. Outro exemplo seria ligar um forno por tempo indeterminado. Se
as pessoas próximas não perceberem que o forno esta ligado, o mesmo pode
aquecer a ponto de gerar um incêndio.
Para minimizar o problema descrito foi criado o campo “Pede
confirmação para executar comando”. Se assinalado, sempre que for
reconhecido um comando válido, antes de enviar os bits de atuação, o sistema
deve pedir um novo comando de confirmação.
O formulário “Monitor de Comando de Voz” foi projetado para monitorar
o reconhecimento dos comandos e enviar os bits de controle para a porta de
saída onde o hardware de controle esta conectado, neste caso, a porta
paralela. Os comandos são enviados mediantes validações de controle
conforme status do equipamento e tipo de comando.
De acordo com o formulário da Figura 20, foi criada uma interface que
mostra os comandos reconhecidos, como a biblioteca de reconhecimento
reconhece a voz e os retornos dos principais eventos internos da API. O
formulário foi dividido três seções:
47
• Na primeira tem-se um “tree-view” que mostra uma árvore com os
comandos reconhecidos e suas respectivas propriedades.
• Na segunda seção há uma caixa de texto que mostra os retornos
dos eventos do mecanismo de reconhecimento de voz. Os
eventos monitorados podem ser ativados ou desativados,
conforme as caixas de seleção disponíveis.
• Na terceira seção, na parte superior mostra gramática atual
carregada pelo SCVCV, na parte inferior a caixa de texto exibe o
retorno dos comandos reconhecidos.
Todos os comandos são falados em inglês, por que a biblioteca de
reconhecimento não possui o idioma português. Como, em geral, o locutor não
está no seu dialeto padrão, isto dificulta o reconhecimento dos comandos. A
fonética de um brasileiro dificilmente é igual à fonética de uma pessoa nata do
idioma inglês.
48
Figura 20 – Tela do Formulário monitor comando de Voz.
49
3.3 O Reconhecimento de Voz e os Ruídos
Um problema a ser resolvido é a interferência de ruídos proveniente do
ambiente. O treino do software no ambiente com ruídos melhora
consideravelmente a qualidade de reconhecimento, mas não deixa o software
livre de reconhecimentos de comando espúrios.
Outro fato é que software pode estar muito bem treinado com os ruídos
padrões do ambiente, mas nada impede que, eventualmente, fontes de ruído
como um carro de som, máquinas de obras próximas, ou um avião, gerem
níveis excessivos de ruído e conseqüentemente façam o sistema reconhecer
comandos errôneos.
Há ambientes que o nível de ruído é tão alto que, mesmo com o treino
no ambiente característico, o reconhecimento de comandos errôneos devido ao
ruído é constante. Um exemplo é uma área fabril com vários motores ligados
ou uma sala com de aula com 50 pessoas falando em tom alto ao mesmo
tempo.
Segundo o manual do Microsoft Speech SDK 5.1, o evento que monitora
a interferência da recepção retorna seis valores constantes que indica as
formas de interferência:
1) SINoise(1): O valor indica que esta reconhecendo apenas barulho.
2) SINoSignal(2): Indica que o mecanismo de reconhecimento esta
reconhecendo um som constante, um barulho sempre com a mesma
freqüência, ou ausência de um microfone de entrada de áudio.
3) SITooLound(3): Indica que o mecanismo de voz recebeu o som mas
a intensidade de fluxo é muito alta para reconhecimento. Isto ocorre
quando há barulhos extremamente altos como um grito.
4) SITooQuiet:(4): Indica que o mecanismo de voz recebeu o som mas
a intensidade de fluxo é muito baixa para reconhecimento da voz.
5) SITooFast(5): Indica que as palavras são faladas muito depressa
para reconhecimento.
6) SITooSlow(6): As palavras são faladas muito lentamente e indicam
tempo excessivo entre palavras.
50
Como abordado, teoricamente, o sistema controla a interferência dos
ruídos, mas na prática isso não se concretiza. Foram realizados testes e em
um ambiente como uma sala de aula, onde há um nível de conversa razoável.
Vários comandos foram reconhecidos sem que o usuário falasse uma única
palavra e o mecanismo de conhecimento não retornam interferência. Alguns
sinais analógicos do barulho são próximos ao sinal de um comando válido.
Um das observações realizadas durante os testes é que quanto menor
número de sílabas da palavra, maior é a possibilidade dela ser reconhecida
incorretamente.
Para realizar os testes iniciais, um notebook foi deixado em ambientes
de barulho e ruídos excessivos, carregado uma gramática contendo palavras
de uma, duas, três e mais sílabas. Após os resultados dos testes foi observado
que aproximadamente 60% dos comandos reconhecidos incorretamente
possuem apenas uma sílaba como on, up, set, in e etc. 35% dos comandos
possuem duas silabas como apple, garden, room, down e etc. Apenas 5% dos
erros são provenientes de palavras com 3 ou mais sílabas.
A fonética da palavra também influencia no reconhecimento, como
exemplo, foram testadas as palavras apple e garden. Como a pronuncia de
apple é mais curta que garden, a palavra apple é reconhecida incorretamente
com maior freqüência.
A qualidade do hardware de entrada de áudio esta diretamente ligada ao
percentual de interferências causadas pelos ruídos. Quanto melhor for a
qualidade do hardware, menor vai ser a quantidade de ruídos captados e
passados para o mecanismo de reconhecimento.
Um dos equipamentos mais importantes é o microfone. Existem
microfones que possuem filtros de ruído e, neste caso, são transmitidos sinais
quase limpos para a placa de som do computador. Outro dispositivo é a placa
de som, existem placas de sons profissionais que também possuem controles
avançados de filtros dos sons capturados do ambiente.
Acredita-se que com o uso de microfone profissional, que possui filtros
de ruídos e uma placa de som que permite filtrar faixas de freqüência, seja
possível minimizar ou eliminar os ruídos, podendo resolver o problema dos
ruídos e interferências de sons externos de intensidade intermediária.
51
Outro aspecto para resolver o problema é sempre verificar se nas
próximas versões liberadas das bibliotecas de reconhecimento de voz,
possuem mecanismos mais avançados para tratamento do ruído e
interferência.
52
4 Conclusão
A tecnologia de reconhecimento de voz está em ascensão. Dentre as
APIs e bibliotecas dos fabricantes liberadas para desenvolvimento de software
de reconhecimento de voz, a Microsoft Speech API foi o que melhor se
adequou para o desenvolvimento do SCVCV.
Os modelos desenvolvidos permitiram o desenvolvimento de um sistema
flexível e eficaz. Os mesmos poderão ser aplicados não só na linguagem Visual
Basic, mas em qualquer linguagem de programação como Java, C++, Delphi e
etc.
O projeto desenvolvido atendeu às expectativas e provou-se que os
modelos desenvolvidos funcionam em uma aplicação prática. Os modelos
aplicados no software permitem controlar novos hardwares de controle via
comando de voz sem a necessidade de alterações de código no sistema.
Novos módulos de hardware de controle podem ser acoplados no
SCVCV bastando somente cadastrar o novo equipamento, suas funções,
comandos e bits de controle.
Um dos grandes problemas a ser resolvido são as interferências de
ruídos e sons externos que provocam reconhecimento de comandos que não
foram pronunciados.
O reconhecimento de voz, aplicado para controle de dispositivos
eletrônicos, é uma tecnologia nova que tem muito a se desenvolver. Com o
projeto atual desenvolveu um padrão de projeto funcional que poderá ser
aperfeiçoado e aplicado nas mais diversas áreas, como centros de assistência
a deficientes físicos, casas, empresas, áreas comerciais, salas cirúrgicas,
clínicas, etc.
4.1 Contribuições
Este projeto traz inúmeras contribuições para a sociedade e para o
avanço da tecnologia de reconhecimento de voz, dentre elas:
• A inclusão social dos milhões de deficientes físicos existentes,
permitindo acessibilidade e conforto para os mesmos;
53
• O avanço de uma tecnologia que ainda esta em ascensão. Que
dentro dos padrões pré-estabelecidos poderá se tornar um fator
de conforto para toda a população mundial a custo acessível;
• Na medicina, com alguns aperfeiçoamentos, médicos poderão
interagir com seus aparelhos eletrônicos sem se desprender da
cirurgia;
• Agregar uma nova área de conhecimento. Permitiu o domínio de
uma nova área da engenharia que esta em expansão e tem
muito a ser feito.
4.2 Trabalhos Futuros
Existe uma infinidade de projetos que podem ser desenvolvidos que
complementam o SCVCV:
• A criação de uma interface via página da Internet, permitindo o
controle dos dispositivos conectados no sistema através da Internet;
• A criação uma interface para celular, onde os usuários não
necessitarão mais estar nas proximidades do local onde se encontra
o sistema;
• O desenvolvimento dos módulos de controle dos diversos
equipamentos eletrônicos existente no nosso dia a dia, como módulo
para controle de televisores, forno microondas, interfaces para
fogões, geladeiras, ar condicionado e equipamentos diversos que
fazem parte do nosso dia a dia;
• A criação de mecanismos para resolver o problema do ruído do
sistema de reconhecimento de comandos de voz.
54
Referências Bibliográficas
CHOU, Wu; JUANG, Biing-Hwang. Recognition in Speech and Language
Processing. Flórida: CRC Press, 2003.
CORADINE, L.C. et al. Interpretação de Pequenas Frases com análise léxica
no sistema Falibras: Tradutor do Português para LIBRAS. III Fórum de
informática aplicada a pessoas portadoras de necessidades especiais, 2004.
DAMASCENO, Eduardo Figueiras; PEREIRA, Tatiane Valau; FERREIRA, José
Remo. Implementação de Serviços de Voz em Ambientes. Dissertação de Pós-
Graduação em Ciência da Computação. UFMS – Universidade Federal de
Mato Grosso do Sul, Dourados-MS, 2004.
DAMASCENO, Eduardo Figueiras. Avaliação das Bibliotecas de
Reconhecimento e síntese de fala em ambientes virtuais. Dissertação
(Mestrado em Ciências da Computação) - Centro Universitário Eurípides:
Fundação de Ensino Eurípides Soares da Rocha. Marília, 2005.
DE LIMA, Amaro A. et al . Análise comparativa de parâmetros em sistemas de
reconhecimento de voz. XVIII Simpósio Brasileiro de Telecomunicações: URFJ-
Universidade Federal do Rio de Janeiro, 2000.
GUILHOTO, Paulo J. Santos; ROSA, Susana P. C. de Souza. Reconhecimento
de Voz: Dissertação (Licenciatura em Engenharia da Informática): Universidade
de Coimbra. Coimbra, 2001.
MICROSOFT Corporation. Microsoft Speech Software Development Kit,
Version 5.1, Guia de Referência, 2000.
ODELL, James Julian. The Use of Context in Large Vocabulary Speech
Recognition: Dissertação (Doutorado em Filosofia). University of Cambridge.
Cambridge, 1995.
55
PRESTON, Scott. The definitive guide to building Java robots. New York:
Springer, 2006.
RABINER, Lawrence R. A Tutorial on Hidden Markov Models and Selected
Applications in Speech Recognition, Proceedings of the IEEE, Vol. 77, N. 2,
1989.
RABINER, Lawrence; JUANG, Biing-Hwang. Fundamentals of Speech
Recognition. New Jersey: PTR Prentice-Hall International, Inc, 1993.
SUN Microsystens. FreeTTS 1.2.1: A speech synthesizer written entirely in the
JavaTM programming language. Guia de Referência, 2005.
SUN Microsystens, Sun Java™ Speech API, Programmer’s Guide Version 1.0,
1998.
Introdução à Porta Paralela. URL:
http://www.rogercom.com/pparalela/introducao.htm#introducao, recuperado em
3 de novembro de 2008.