javaspeech – deixe seu computador falar com você... por justjava.org.br 3 a 5 de outubro –...
TRANSCRIPT
JavaSpeech – Deixe seu Computador falar com você...
Por
justjava.org.br
3 a 5 de Outubro – SENAC – Campus Santo Amaro / SP
Promoção e Realização
Robison Cris Brito [email protected]
Agenda...
Motivação Quando uma aplicação deve utilizar comandos
de voz? Desafios API JavaSpeech Framework Sphinx4
Sintetização Reconhecimento
Exemplo de aplicação Onde o reconhecimento de voz pode ser
aplicado O futuro das aplicações Conclusão
Quem acha que a informática hoje em dia
está fácil?
Inclusão Digital! Mas quando?
Usuário
Usuário
Teclado/Mouse
Fala
“Uma criança não aprende a teclar esc”
“Uma criança aprende a dizer mamãe”
MOTIVAÇÃO
Conversação
Verbal27%
Não-Verbal73%
MOTIVAÇÃO
Aplicação Agradável
Verbal27%
Não-Verbal73%
MOTIVAÇÃO
Como uma aplicação deve utilizar a voz?
Tipos de aplicações
Somente com falaSpeech Only
AplicaçõesMulti-Modal
ObjetivoCLARO Quando as mãos e
os olhos estão ocupados
Ler email por telefone
ALTA EXPECTATIVA
Quando deve ser utilizado ?
• Não existe um teclado (em uma cabine telefônica)
• A operação exige que a mão do usuário esteja ocupado (Operadores de manutenção)
• Comandos precisam de alta navegação pelos menus
• Usuários não são capazes de digitar• Usuários possuem incapacidades físicas• Necessitam chamar a atenção do usuário
Quando não deve ser usado ?
• Operações exigem que o usuário conversem com outras pessoas enquanto utilizam a aplicação
• Ambiente muito ruidoso • É muito mais fácil fazer a operação por
mouse/teclado• Apresenta grande quantidade de informação• Comparação de informações• Informações necessitam ser confidenciais
A fala deve ser parte integrante do projeto desde o início
Projetos com fala
PROBLEMAS COMUNS...
Desafios
Desafios
TransienciaUma vez que algo foi dito, não tem como voltar atrás
O usuário se recorda apenas de um pequeno número de palavras ditas
Desafios
InvisibilidadeNão se vê os comandos que podem ser ditos
Quais as ações que podem ser executados ?
Desafios
AssimetriaUm usuário pode falar mais rápido do que digitar
...entretanto pode escutar de forma mais lenta do que ler
Problema em balancear as instruções com a limitação do usuário de absorver a informação falada.
Desafios
Qualidade de SintetizaçãoA informação apresentada é dinâmica... Sintetização dinâmica
Escutar é fácil se a voz é consistente
Pré-gravar falas com uma voz “bonita” ? MUITA MEMÓRIA
Saber com antecedência o que deve ser falado
Desafios DesempenhoNenhum sistema de Reconhecimento é 100%
Muito tempo até que se consiga o status “Filme de ficção científica”
Entender os tipos de erros que podem gerar
Desafios
Adaptabilidade
O sistema deve reconhecer a voz de uma criança, assim como reconhece a voz de uma mulher, de um homem, de uma pessoa idosa, de pessoas
com problemas leves de dicção.
Desafios
Flexibilidade vs Precisão
Dizer um comando de várias maneiras
“O que tenho para manhã ?”
“Tenho compromisso para amanhã ?”
“Leia os compromissos para amanhã”
Desafios
Fala Continua vs Palavra Isolada
Sistemas de fala contínua são desejáveis, porém mais complexos
Sistemas de palavras isoladas possuem um alto índice de acerto, porém deve ser falado pausadamente.
Ex. “Me dá uma mão aqui..”
Do conceito à prática
Ciclo de Vida de um Sistema de Reconocimento
DigitalizaçãoProcessamento
de RuídosSeparação de
palavras
Comparação deVocabulário
Base de Dadosdos Vocabulário
Fala
ResultadoProbabilístico
JavaspeechAPI para Sintetização e Reconhecimento de Voz
Java Speech SDK API (JSR-113, JSAPI)ou simplesmente
JavaspeechAPI para Sintetização e Reconhecimento de Voz
speech recognition speech synthesis
Javaspeech
Aplicação
JavaSpeech API
FreeTTSThe Cloud
GardenIBM Speech Festival
Independênciade Plataforma
FRAMEWORK SPHINX4http://cmusphinx.sourceforge.net/sphinx4/
Sintetização de Voz
try {
// Cria um sintetizador para o portugues
Synthesizer synth = Central.createSynthesizer(
new SynthesizerModeDesc(new Locale(“pt”, “br”));
// Libera o recurso para falar
synth.allocate();
synth.resume();
// Diz a mensagem Ola Mundo
synth.speakPlainText(“Ola Mundo", null);
// Espera até que a frase seja dita
synth.waitEngineState(Synthesizer.QUEUE_EMPTY);
// Libera a memória
synth.deallocate();
} catch (Exception e) {…
Sintetização de Voz
Propriedades
Volume
Velocidade da Fala
Tom
Seleção das Vozes
Reconhecimento de Voz
Por Regras Ditado
Se define um conjunto de
combinações que o usuário pode falar
STAR TREK
Reconhecimento de Voz
// Define um sistema para o reconhecimento do português
rec = Central.createRecognizer(new EngineModeDesc(new Locale(“pt”, “br”));
// aloca o recurso para escutar
rec.allocate();
// Carrega as regras e habilita a gramática gramática
FileReader reader = new FileReader(args[0]);
RuleGrammar gram = rec.loadJSGF(reader);
gram.setEnabled(true);
// Adiciona um listener que receberá a mensagem
rec.addResultListener(new HelloWorld());
// Faz um commit com a gramática
rec.commitChanges();
// Foco: Para parar a escuta
rec.requestFocus();
rec.resume();
public void resultAccepted(ResultEvent e) {
//recupera o objeto que contém as palavras recuperadas
Result r = (Result) (e.getSource() );
//Adiciona as palavras em um Token
ResultToken tokens[] = r.getBestTokens();
//percorre todas as palavras do Token, exibindo na console
for (int i = 0; i < tokens.length; i++) {
System.out.print(tokens[i].getSpokenText() + " ");
System.out.println();
}
// Desaloca o recurso e sai da aplicação
rec.deallocate();
System.exit(0);
}
Reconhecimento de Voz
JSML – Java Speech Markup Language
Como se diz: 17/03/2008 ou Tenho R$ 10,00 na carteira
O JSML possibilita definir o formato de leitura
sintetizador.speak (“you win <EMP> $10000</EMP)!.NULL);
Exemplo de aplicações
Exemplo Didático de Aplicação
Exemplos: 78705 - AUSTIN - TX84105 - SALT LAKE CITY - UT99505 - FORT RICHARDSON - AK
Software para ensino de inglês
Onde o reconhecimento de
voz pode ser aplicado
Automação ...
Auxiliar portadores de deficiências
Automação Residencial para Portadores de Deficiência
+
Fonoaudiologia
Softwares Educativos
Auxiliar na redação de processos
Aplicações que não possuem interface com usuário
Controle de comandos no automóvel
Leitura de informações remotas
Auxiliar pessoas com deficiências visuais
Inclusão digital....
Leitura automática de documento
Era uma vez....
Escrita automática de documentos
Reduzir o Stress de Animais Domésticos
Repelente Eletronico de Pequenos Animais
Afinador de Instrumentos Musicais
Man vs. Machine
Aplicações para Celulares
Aplicações para TV Digital
Troque o controle remoto pela voz
X
Aplicações no Futuro
• Aplicativos de forma distribuídas• Envio e recebimento de informações via Wireless• Grande poder de processamento• Grande poder de armazenamento
• Ambiente propício a comunicação utilizando voz
DúvidasDúvidas
??
JavaSpeech – Deixe seu Computador falar com você...
Por
justjava.org.br
3 a 5 de Outubro – SENAC – Campus Santo Amaro / SP
Promoção e Realização
Robison Cris Brito [email protected]