Desenvolvimento de Aplicativos Usando Síntese e Reconhecimento de Voz Aldebaro Klautau PPGEE/ITEC/UFPA Universidade Federal do Pará 26/11/2009 1 / 48
1 Introdução Histórico Estado-da-arte Motivação Objetivos 2 Reconhecimento Automático de Voz Síntese de Voz 3 Interface com o Usuário Engines e Language Packs Application Programming Interface 4 VoiceNavigate PPTController Simon 0.2 5 6 LaPS Considerações Finais Trabalhos Futuros 2 / 48
Máquinas que falam e escutam Histórico Estado-da-arte Motivação Objetivos Equipar máquinas com modalidades sensoriais humanas: um sonho moderno e fascinação. O homem é o único capaz de falar? Falar é mais fácil que escutar. A realidade é que ainda estamos longe das máquinas apresentadas na ficção científica. 3 / 48
2001: Uma odisséia no espaço Histórico Estado-da-arte Motivação Objetivos HAL: fala, escuta, joga xadrez, soluciona problemas!!! Let me put it this way, Mr. Amer. The 9000 series is the most reliable computer ever made. No 9000 computer has ever made a mistake or distorted information. We are all, by any practical definition of the words, foolproof and incapable of error. 4 / 48
Síntese de voz ( Text-to-Speech ) Histórico Estado-da-arte Motivação Objetivos Transformar: É fácil sintetizar fala Em: 5 / 48
Histórico Estado-da-arte Motivação Objetivos Primeiro sintetizador mecânico: VODER Homer Dudley, exibido na World Fair s New York City, 1939. 6 / 48
Evolução da síntese de voz Histórico Estado-da-arte Motivação Objetivos Voder, Homer Dudley, 1939 OVE, Gunnar Fant, 1953. PAT, Walter Lawrence, 1962. Bell Laboratories text-to-speech system, 1973. Voz feminina, Dennis Klatt, 1986. Madalena, Nuance RealSpeak Solo, 2005. 7 / 48
Histórico Estado-da-arte Motivação Objetivos Reconhecimento automático de voz Transformar: Em: É fácil nós reconhecermos fala 8 / 48
Histórico Estado-da-arte Motivação Objetivos Evolução do reconhecimento automático de voz 1952: Bell Labs lança reconhecedor de dígitos single-speaker. 1960: FFT, predição linear, programação dinâmica: NEC: reconhecedor de dígitos dependente de locutor. 1970: Projeto ARPA SUR 5-year: Hidden Markov model: um grande avanço e mudança de paradigma. 1980-1990: Bases de dados DARPA: Verbex: reconhecedor dependente de locutor, vocabulário reduzido. Dragon Systems, IBM Via Voice: sistemas de ditado. Sistemas ASR comerciais: AT&T, Nuance, SpeechWork, L&H. Sistemas ASR multilinguais: serviços e aplicações. 2000: Projeto de tradução de idiomas DARPA GALE: NTT: sistema de tradução para aparelhos celulares. IBM: Tradutor portátil de voz usado no Iraque. 9 / 48
Estado-da-arte Introdução Histórico Estado-da-arte Motivação Objetivos A evolução da área de processamento de voz também é atestada pelas projeções para o mercado, que em 2002 foi de U$ 677 milhões. Em 2007, o mercado de reconhecimento de voz (não incluindo síntese) foi de U$1,6 bilhão e a Opus Research prevê uma taxa anual de crescimento de 14,5%. Além do aspecto econômico, o processamento de voz é um dos melhores exemplos de um relevante desafio enfrentado pela computação (e áreas afins): a construção de máquinas capazes de interagir de forma natural com seres humanos. 10 / 48
Tipos de aplicações de voz Histórico Estado-da-arte Motivação Objetivos Aplicações convencionais: Sistemas de diálogo falado. Interactive Voice Response (IVR). Desktop. Automação (casa do futuro, carros, etc). Aplicações multimodais. Aplicações multilinguais. 11 / 48
Motivação Introdução Histórico Estado-da-arte Motivação Objetivos É incontestável a importância do processamento da voz (ou fala) na computação moderna. Muitos são os softwares de voz disponíveis no mercado programáveis via API. Porém, inexiste atualmente uma gama variada de recursos em PB. Por exemplo, o Windows Vista não incorpora tecnologia de voz em PB e a IBM recentemente descontinuou o seu software de reconhecimento (ViaVoice) para a ĺıngua portuguesa. Discutir alguns esforços realizados nesse sentido, avaliando a utilização de APIs de voz (e.g. Microsoft e Sun) existentes, assim como recursos próprios desenvolvidos no LaPS, para a construção de aplicativos com interface oral em PB. 12 / 48
Objetivos Introdução Histórico Estado-da-arte Motivação Objetivos Ao invés de se deter em aspectos da ciência da fala, tais como, o uso de modelos probabiĺısticos para reconhecimento de voz, o foco aqui será a tecnologia da camada de aplicação (API), a qual faz uso dessas tecnologias a partir das camadas mais baixas. Serão expostos os principais tipos de aplicações de voz e os pontos que devem ser levados em consideração no momento da elaboração da interface com o usuário e da escolha do software. Por fim, será abordada a construção de aplicativos baseados em voz. 13 / 48
DEMO Introdução Histórico Estado-da-arte Motivação Objetivos Uma aplicação simples com ASR + TTS 14 / 48
Reconhecimento automático de voz Reconhecimento Automático de Voz Síntese de Voz Definição segundo a Wikipedia: Tecnologias de reconhecimento permitem que computadores equipados com microfones interpretem a fala humana. Como funciona um sistema de reconhecimento? A fala é uma sequência de palavras. Cada palavra consiste numa série de sons (fonema). Dicionário fonético: conversão de uma sequência de caracteres em sequência de fonemas. Modelos estatísticas baseados em probabilidades: Acústica: cadeias escondidas de Markov (HMM). Da ĺıngua: modelos n-gramas. Modelos não-probabiĺısticos: context-free grammars. 15 / 48
Reconhecimento automático de voz Reconhecimento Automático de Voz Síntese de Voz O último integrante de um sistema de reconhecimento é o decodificador. Ele utiliza os modelos acústicos e de linguagem para realizar a conversão dos sinais de fala para texto. Suas principais características são: Modos de operação: Comando e controle. Ditado (ou fala espontânea). Dependência de locutor. Adaptação de locutor. Principais métricas de avaliação: precisão e velocidade. 16 / 48
Reconhecimento Automático de Voz Reconhecimento Automático de Voz Síntese de Voz Reconhecimento Automático de Voz (RAV) 17 / 48
É difícil construir um decodificador? Reconhecimento Automático de Voz Síntese de Voz Dados para treino dos modelos acústicos e de linguagem. Variações no ritmo, timbre e intensidade da fala. Dificuldade na segmentação da fala. Diferenças de sotaque. Ruído ambiente. 18 / 48
Síntese de voz ( Text-to-Speech ) Reconhecimento Automático de Voz Síntese de Voz Produção artificial da voz humana. Tipicamente, convertendo uma representação textual para fala num formato de áudio. Como funciona: Gravação: simples reprodução da voz humana. Concatenativa: concatena segmentos de voz gravada. Por formantes: uso de modelo acústico. Baseada em HMMs. Prosódia: adicionar emoção à uma voz sintetizada. Sintetizadores: Genéricos. Limitados ao domínio. Nível de entendimento: palavra e contexto. Naturalidade: avaliação relacional. 19 / 48
Interface com o usuário Interface com o Usuário Engines e Language Packs Application Programming Interface Pesquisas no campo de interação homem-máquina estimulam o desenvolvimento de novas interfaces que reduzem a complexidade facilitando o uso de computadores por usuários não especializados. É preciso conhecer o estado da arte e da realidade das tecnologias de voz: grau de satisfação. Estratégias de interação: controle da iniciativa e confirmações durante o diálogo. Nível de confiabilidade e sensibilidade do reconhecedor de voz. Robotização da voz sintetizada. 20 / 48
Engines Introdução Interface com o Usuário Engines e Language Packs Application Programming Interface Engines para reconhecimento automático de voz. Engines para síntese de voz. Existe um grande número de empresas no mercado que apresentam soluções para que um desenvolvedor possa incorporar a tecnologia de voz em seus aplicativos: IBM. Loquendo. Microsoft. Nuance. Sun. Poucos são os software para ditado em PB: IBM ViaVoice (descontinuado). Nuance Free Speech 2000. 21 / 48
Language Packs Introdução Interface com o Usuário Engines e Language Packs Application Programming Interface Microsoft Speech Technology. Speech Language Packs: pacotes específicos por ĺıngua. Tipicamente, LPs contêm: Reconhecedores dependentes da ĺıngua. Sintetizadores dependentes da ĺıngua. Programas em versão beta para Português Brasileiro: Speech Recognition Sample Engine for Portuguese: reconhecedor de voz para PB sem suporte a ditado. Não funciona no Windows Vista. Em 2007, a Microsoft iniciou as gravações para o novo sintetizador de voz natural em Português Europeu. Porém, sua versão beta ainda não encontra-se disponível para uso. http://www.microsoft.com/portugal/mldc/betaprograms/ 22 / 48
Interface com o Usuário Engines e Language Packs Application Programming Interface Algumas vozes modernas: comerciais e livres AT&T Natural Voices Nuance RealSpeak Solo voices Cepstral Voices Loquendo Emotional TTS Voices A Microsoft disponibiliza em seus sistemas operacionais três Text To Speech engines: Mary, Mike e Sam. A Lernout & Hauspie disponibiliza gratuitamente vozes em diversos idiomas, incluindo o Português Brasileiro. 23 / 48
Microsoft Speech API Interface com o Usuário Engines e Language Packs Application Programming Interface A SAPI é uma interface para o desenvolvimento de aplicações baseadas em voz em ambiente Windows. A comunicação entre a SAPI e o engine é feita através de uma interface Windows chamada DLL (Dynamic Link Library). 24 / 48
Microsoft Speech API Interface com o Usuário Engines e Language Packs Application Programming Interface Atualmente na versão 5.3 a Microsoft Speech API fornece uma interface de alto nível entre a aplicação e o engine. Kit de desenvolvimento SDK (Speech Development Kit). Possui suporte a objetos OLE (Object Linking and Embedding): permitindo que uma aplicação seja controlada por outra. Interface do estilo COM (Component Object Model): programável por linguagens de alto nível, como Visual Basic, C Sharp, C++, etc. Principais interfaces: System.Speech.Recognition e System.Speech.Synthesis. 25 / 48
System.Speech.Synthesis Interface com o Usuário Engines e Language Packs Application Programming Interface Como usar? SpeechSynthesizer synthesizer = new SpeechSynthesizer(); synthesizer.speak( Olá mundo! ); Inclui suporte para alterar padrões da voz: velocidade, volume, pitch com suporte ao padrão XML: synthesizer.volume = 50; synthesizer.rate = 5; synthesizer.speak( C:/Teste.txt, SpeechVoiceSpeakFlags.SVSFIsFilename); Gera arquivos de saída de áudio.wav. 26 / 48
System.Speech.Recognition Interface com o Usuário Engines e Language Packs Application Programming Interface Como usar? Definir o reconhecedor; Construir uma gramática; Carregar a gramática no reconhecedor; Registar eventos; Começar o reconhecimento... Inclui suporte para gramáticas complexas padrão XML. Gera arquivos de entrada de áudio.wav. Eventos: nível de confiança, reconhecimento de hipóteses, início do reconhecimento, entre outros. 27 / 48
System.Speech.Recognition Interface com o Usuário Engines e Language Packs Application Programming Interface SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(new System.Globalization.CultureInfo( en-us )); void init() { Choices pizzachoices = new Choices(); pizzachoices.addphrase( Eu quero uma pizza de queijo ); pizzachoices.addphrase( Eu quero uma pizza de pepperoni ); pizzachoices.addphrase( Eu quero uma pizza grande de pepperoni ); Grammar pizzagrammar = new Grammar(new GrammarBuilder(pizzaChoices)); recognizer.loadgrammar(pizzagrammar); pizzagrammar.speechrecognized += new EventHandler<RecognitionEventArgs>(PizzaGrammar SpeechRecognized); recognizer.recognize(..); } void PizzaGrammar SpeechRecognized(object sender, RecognitionEventArgs e) { MessageBox.Show(e.Result.Text); } 28 / 48
O que já vem no Windows Vista? Interface com o Usuário Engines e Language Packs Application Programming Interface Reconhecedor de voz para ĺıngua inglesa. Adicionalmente, cinco outras ĺınguas também estão disponíveis via Windows Update (Francês, Alemão, Espanhol, Japonês e Chinês). Sintetizador de voz para ĺıngua inglesa - a voz Anna. Windows Speech Recognition : guia que permite ao usuário ditar documentos e e-mails; abrir e fechar aplicativos; preencher formulários na Web. É uma interface que assiste o usuário na tarefa de controlar o sistema via comandos de voz, provendo listas de comandos para ajuda e correção. Pacote de desenvolvimento.net 3.0 e a interface de programação de voz SAPI 5.3, que permitem a elaboração de poderosas aplicações de voz para o ambiente Windows. 29 / 48
Java Speech API Introdução Interface com o Usuário Engines e Language Packs Application Programming Interface A JSAPI da Sun permite aos desenvolvedores incorporarem tecnologia de voz em seus applets e aplicações Java. Representa a visão do programador sobre o engine. Portabilidade e código livre da linguagem Java. 30 / 48
Java Speech API Introdução Interface com o Usuário Engines e Language Packs Application Programming Interface A JSAPI na sua versão 1.0 suporta síntese e reconhecimento contínuo de voz. Java Native Interface e Java Software Wrappers permitem a implementação da JSAPI em uma camada de aplicação acima dos softwares de voz já existentes. Exemplo: Cloud Garden TalkingJava SDK: implementação completa da especificação JSAPI para plataforma Windows, compatível com qualquer engine de voz SAPI 4 e SAPI 5. Em maio de 2009, a Sun lançou uma extensão (versão 2.0) propondo algumas melhorias: alinhamento dos formatos da gramática e síntese com as especificações W3C; suporte a plataforma Java 2 Micro Edition; entre outras. 31 / 48
Comparação entre SAPI e JSAPI Interface com o Usuário Engines e Language Packs Application Programming Interface A especificação JSAPI é bem mais simples, compacta e acessível que a SAPI. A SAPI é mais robusta e difundida, com maior disponibilidade de engines compatíveis com a sua especificação. A JSAPI 1.0 não permite o redirecionamento das amostras de áudio para arquivos e/ou dispositivos. A JSAPI 1.0 não possui uma interface léxica clara. Ambas suportam XML, possuem métodos para ligar e desligar o engine e controlam o nível de confiabilidade. Somente a JSAPI possui controle sobre a sensibilidade. 32 / 48
Coruja Introdução Interface com o Usuário Engines e Language Packs Application Programming Interface Software para reconhecimento de voz em Português Brasileiro desenvolvido pelo LaPS-UFPA. Contém uma API (LapsAPI) que permite o controle em tempo-real do engine Julius e da interface de áudio do sistema. Os modelos acústicos e de linguagem foram construídos com a ferramenta HTK e recursos do próprio LaPS. Possui suporte aos sistemas Windows e Linux. 33 / 48
Esquema Introdução Interface com o Usuário Engines e Language Packs Application Programming Interface 34 / 48
LapsAPI Introdução Interface com o Usuário Engines e Language Packs Application Programming Interface A LapsAPI foi implementada em C++/CLI, o que a torna programável por linguagens de alto nível. Metodo/Evento Descrição básica SREngine Método para carregar e inicializar o reconhecedor startrecognition Método para iniciar o reconhecimento stoprecognition Método para pausar/parar o reconhecimento OnRecognition Evento chamado quando alguma sentença é reconhecida OnSpeechReady Evento chamado quando o reconhecimento é ativado Tabela: Principais métodos e eventos da LapsAPI. 35 / 48
VoiceNavigate PPTController Simon 0.2 Exemplos de aplicativos desenvolvidos VoiceNavigate PPTController SimonBR 36 / 48
VoiceNavigate Introdução VoiceNavigate PPTController Simon 0.2 Consiste num sistema de diálogo simples desenvolvido pelo LaPS que permite pesquisas acerca de países na Web. Primeiro passo no desenvolvimento de um sistema para navegação não-visual na Web. Interface de programação: SAPI 5.1. Engine de reconhecimento: versão beta do Microsoft Speech Recognition Sample Engine for Portuguese. Engine de síntese: Lernout & Hauspie para ĺıngua portuguesa da Nuance. Agentes animados: Microsoft Agent. 37 / 48
PPTController Introdução VoiceNavigate PPTController Simon 0.2 Aplicativo desenvolvido na linguagem C# para plataforma Windows, que utiliza reconhecimento automático de voz para controlar apresentação de slides no programa Microsoft Powerpoint. O usuário via comandos de voz é capaz de avançar ou retroceder um slide, fechar uma apresentação, entre outras funcionalidades. Utiliza o Coruja como software de reconhecimento. 38 / 48
Simon 0.2 Introdução VoiceNavigate PPTController Simon 0.2 Software open-source de reconhecimento de voz que substitui o mouse e o teclado pela voz. Desenvolvido para pessoas com necessidades especiais. Permite digitar textos, simular sequências de atalhos, iniciar programas, controle do mouse, etc. Baseado no decodificador Julius e modelos HMM (HTK). Suporte para Windows e Linux. Necessita de uma etapa de treino: dependente de locutor e independente de ĺıngua. 39 / 48
SimonBR Introdução VoiceNavigate PPTController Simon 0.2 Primeiros esforços para migrar a interface do Simon 0.2 para o Português Brasileiro. Utilizou-se do modelo acústico do Coruja. Independente de locutor. Excelente desempenho em tarefas de comando e controle. 40 / 48
Algoritmos, HTK, entre outros. 41 / 48
LaPS Considerações Finais Trabalhos Futuros Laboratório de Processamento de Sinais - LaPS/UFPA Hoje, o LaPS conta com 42 colaboradores e atua em várias linhas de pesquisa, e.g. processamento de sinais, sistemas embarcados, ADSL, entre outras. As pesquisas em síntese e reconhecimento de voz tiveram início em 2000 e podem ser rastreadas pelas várias publicações do grupo na área. Está disponibilizado gratuitamente, desde julho de 2008, recursos em Português Brasileiro (PB) que possibilitam reconhecimento de palavras e/ou frases pré-especificadas com bom desempenho em termos de rapidez e taxa de acerto. http://www.laps.ufpa.br/ 42 / 48
Missão ao longo do tempo LaPS Considerações Finais Trabalhos Futuros Aperfeiçoamento e disseminação das tecnologias de voz para o Português Brasileiro No âmbito da academia, para tornar mais eficiente o trabalho dos grupos de pesquisa: disponibilidade de recursos em domínio público para reconhecimento automático de voz e síntese de voz. No âmbito da indústria de software, procurando auxiliar programadores e empreendedores brasileiros: disponibilidade de engines (ou seja, reconhecedores e sintetizadores) gratuitos. No âmbito social, oferecer material didático/informativo permitindo que usuários sem formação específica em voz possam usar os engines através de APIs ( application programming interfaces ) e desenvolver aplicativos com interface aural. 43 / 48
Linhas de Ação Introdução LaPS Considerações Finais Trabalhos Futuros Desenvolvimento de recursos e tecnologia nos domínios da fala e da linguagem natural. Linhas de cooperação com as universidades e institutos de investigação e desenvolvimento (I&D) mais inovadores no Brasil e com o Instituto Superior Técnico de Lisboa, Portugal. Participação em projetos de I&D em consórcio com órgãos nacionais (Universal CNPq, FAPESPA) e internacionais (Fundação de Ciência e Tecnologia de Portugal). Construção de aplicativos que sirvam de exemplos práticos. Os mesmo irão também facilitar a utilização do computador por parte de deficientes auditivos e pessoas que não conseguem usar o teclado. 44 / 48
Projetos em andamento LaPS Considerações Finais Trabalhos Futuros Obtenção de corpus de voz e texto em PB. Construção de um engine de reconhecimento de voz com suporte a grandes vocabulários e aplicações de ditado: desenvolvimento de recursos e uso de ferramentas open-source. Elaboração de uma API de voz: permitir que o nosso sistema de reconhecimento possa ser utilizado com mais facilidade no desenvolvimento de aplicativos baseados em voz. Testes com a ferramenta HTS para síntese de voz em PB. 45 / 48
Projetos em andamento LaPS Considerações Finais Trabalhos Futuros Desenvolvimento de uma ferramenta para transcrições de áudio digitalizado para fins forenses no Estado do Pará. Projeto realizado em parceria com o Centro de Perícias Científicas Renato Chaves. Em cooperação com o grupo de letras da UFPA, pretende-se criar um dicionário fonético que conteria as possibilidades de realização dos fonemas do PB de acordo com uma dada variedade linguística. 46 / 48
Considerações Finais LaPS Considerações Finais Trabalhos Futuros Foram abordados os principais itens que integram um sistema de reconhecimento de voz. Várias ferramentas utilizadas para construção de aplicativos foram descritas. Fazendo uso do conjunto limitado de métodos e eventos, mostrou-se que é viável construir compactas aplicações baseadas em voz com a LapsAPI. Grupo FalaBrasil: www.laps.ufpa.br/falabrasil 47 / 48
Trabalhos Futuros Introdução LaPS Considerações Finais Trabalhos Futuros Tornar o Coruja SAPI-compliant. SimonBR. Expansão das bases de dados. Melhora dos modelos acústicos. FFTranscriber. Dicionário fonético com as variantes do Português. Software para produção de legenda automática. 48 / 48