Software usando reconhecimento e síntese de voz: o estado da arte para o Português brasileiro

Share Embed


Descrição do Produto

Software Usando Reconhecimento e S´ıntese de Voz: ˆ Brasileiro O Estado da Arte para o Portugues Nelson Neto

ˆ Enio Silva

Erick Sousa

Universidade Federal do Para´ – UFPA Rua Augusto Correa, 1 – 660750-110 Belem, ´ PA, Brasil

Universidade Federal do Para´ – UFPA Rua Augusto Correa, 1 – 660750-110 Belem, ´ PA, Brasil

Universidade Federal do Para´ – UFPA Rua Augusto Correa, 1 – 660750-110 Belem, ´ PA, Brasil

[email protected]

[email protected]

ABSTRACT Speech is a natural interface for human-computer interaction. Speech (or voice) technology is a well-developed field when one considers the international community. There is a wide variety of academic and industrial software. The majority of them assumes a recognizer or synthesizer is available, and can be programmed through an API. In contrast, there are few resources in public domain for Brazilian Portuguese. This work discusses some of these issues and compares SAPI and JSAPI, which are APIs promoted by Microsoft and Sun, respectively. We also present two examples: a tic-tac-toe JSAPI-based game using Portuguese digits recognition and a computer-aided language learning (CALL) application using SAPI-based speech recognition in English and synthesis in Portuguese.

1.

˜ INTRODUC ¸ AO

A tecnologia de voz possui grande potencial para a cria¸ca ˜o de aplicativos que possibilitem uma eficaz intera¸ca ˜o humanocomputador, especialmente no atual contexto de acelerada miniaturiza¸ca ˜o dos sistemas embarcados. Dentre os ramos dessa tecnologia, o reconhecimento e a s´ıntese de voz s˜ ao os abordados no presente trabalho. Resumidamente, dado um texto (em ASCII, por exemplo), a s´ıntese de voz ´e o processo de gera¸ca ˜o de amostras de um sinal digital que deveria soar como se um humano tivesse dito o texto. A s´ıntese de voz (ou TTS, de text-to-speech) n˜ ao deve ser confundida com a simples digitaliza¸c˜ ao, armazenagem e posterior playback de voz. O reconhecimento de voz (ou ASR, de automatic speech recognition) pode ser visto como o processo inverso, onde o sistema converte voz digitalizada em texto. Dependendo da aplica¸ca ˜o, o resultado obtido pelo ASR pode ser repassado para m´ odulos como o de gerenciamento de di´ alogos, tutores inteligentes, processamento de linguagem natural (PLN) e outros.

[email protected]

A tecnologia de processamento de fala (ou voz) encontrase bastante avan¸cada e, em escala mundial, existe vasta disponibilidade de software tanto acadˆemico quanto comercial. A maioria dos mesmos assume a disponibilidade de um reconhecedor e/ou sintetizador, conhecidos genericamente na literatura como engines, os quais podem ser programados via uma API. Ao contr´ ario do que acontece para a l´ıngua inglesa, por exemplo, n˜ ao existem atualmente reconhecedores ou sintetizadores de dom´ınio p´ ublico para o portuguˆes brasileiro (PB). Essa situa¸ca ˜o obviamente retarda a dissemina¸ca ˜o de uma tecnologia dentre os desenvolvedores brasileiros, a qual, segundo estudo feito em 2003 pela Allied Business Intelligence, correspondeu a um mercado de U$677 milh˜ oes em 2002, e projetado para U$5,3 bilh˜ oes em 2008. Uma das aplica¸co ˜es de maior interesse ´e a relacionada ` a telefonia, call-centers e similares. No Brasil, grupos como o LINSE (UFSC) e LPDS (UNICAMP) det´em amplo know-how no desenvolvimento de sistemas TTS e ASR.1 Outro exemplo ´e o Instituto Genius, situado em Manaus, o qual disponibiliza tecnologia ASR para aplica¸co ˜es como encaminhamento de liga¸co ˜es telefˆ onicas (auto-attendant) e outras que usem gram´ atica do tipo CFG, a serem discutidas adiante, tais como as baseadas em reconhecimento de palavras isoladas para automa¸ca ˜o dom´estica. Contudo, principalmente por falta de financiamento, n˜ ao vigoram atualmente esfor¸cos para a cria¸ca ˜o de engines para o PB visando sua disponibiliza¸ca ˜o gratuita para toda a comunidade acadˆemica. Um par´ agrafo extra´ıdo de [15], publicado no Simp´ osio Brasileiro de Computa¸ca ˜o (SBC) de 2004, ilustra claramente a situa¸ca ˜o dos pesquisadores nacionais, que s˜ ao obrigados a usar engines para a l´ıngua inglesa: “Outros pontos interessantes de serem abordados em trabalhos futuros s˜ ao: acrescentar ao sistema novos idiomas para a s´ıntese da voz, principalmente o portuguˆes; e a alternativa de operar com vozes capturadas. Esse u ´ltimo ponto exigir´ a, no entanto, a integra¸ca ˜o com ferramentas de reconhecimento de voz...”. Na Se¸c˜ ao 2, esse trabalho apresenta uma breve revis˜ ao das tecnologias TTS e ASR, identificando os esfor¸cos para o su1 O desenvolvimento desses trabalhos pode ser acompanhado pelas publica¸co ˜es no workshop TIL do SBC e no Simp´ osio Brasileiro de Telecomunica¸c˜ oes (SBT), os quais s˜ ao atualmente os principais ve´ıculos de divulga¸ca ˜o da ciˆencia nacional nessa ´ area.

CLIHC'05, October 23-26, 2005, Cuernavaca, México. Copyright is held by the author(s). ACM 1-59593-224-0.

326

porte ao PB. A Se¸ca ˜o 3 compara as relevantes APIs SAPI e JSAPI, promovidas pela Microsoft e Sun, respectivamente. A Se¸ca ˜o 4 trata da utiliza¸ca ˜o do software livre Sphinx-4 para a cria¸ca ˜o de um modelo ac´ ustico para o PB com JSAPI, enquanto a Se¸ca ˜o 5 concentra-se na SAPI, a mais difundida das duas. Na Se¸ca ˜o 6 aborda-se a constru¸ca ˜o de um aplicativo CALL (computer-assisted language learning) para o ensino da l´ıngua inglesa, no qual ´e usado ASR e TTS em inglˆes (baseado em SAPI) e TTS em portuguˆes.

2.

ESTADO DA ARTE EM ASR E TTS

Nessa se¸ca ˜o discute-se ASR e posteriormente TTS. No estado da arte em ASR, o complexo processo de decodifica¸ca ˜o do sinal realizado pela mente humana ´e imitado pelo computador com base em modelos probabil´ısticos. Atualmente, a grande maioria dos sistemas para voz cont´ınua e grandes vocabul´ arios (LVCSR, de large-vocabulary continuous speech recognition) ´e baseada em cadeias escondidas de Markov (HMMs, de hidden Markov models) [8]. Esses sistemas usam um front end para converter o sinal de voz digitalizado em uma matriz X de parˆ ametros, e buscam a seq¨ uˆencia de palavras W que maximiza a probabilidade condicional ˆ = arg max P (W |X). W W

Na pr´ atica, usa-se a regra de Bayes para implementar a busca atrav´es de: ˆ = arg max P (X|W )P (W ) = arg max P (X|W )P (W ) W W W P (X) com P (X) sendo desprezado pois n˜ ao depende de W . Para cada W , os valores de P (X|W ) e P (W ) s˜ ao fornecidos pelos modelos ac´ ustico e de linguagem (ou l´ıngua [13]), respectivamente. O modelo de linguagem precisa fornecer a probabilidade conjunta P (W ) da seq¨ uˆencia de palavras W = w1 , w2 , ..., wn , a qual pode ser decomposta em: P (W )

= =

P (w1 , w2 , ..., wn ) P (w1 )P (w1 |w2 ) . . . P (wn |w1 , w2 , ..., wn−1 ).

Na pr´ atica, ´e invi´ avel estimar robustamente as probabilidades P (wi |w1 , ...wi−1 ) mesmo para valores moderados de i. A solu¸ca ˜o t´ıpica, chamada modelo N -grama ´e assumir que P (wi |w1 , ...wi−1 ) depende apenas das N −1 pr´evias palavras. Caso N = 3 tem-se um trigrama P (wi |wi−2 , wi−1 ), enquanto N = 2 e 1 s˜ ao chamados bigrama P (wi |wi−1 ) e unigrama P (wi ), respectivamente. Em um LVCSR com vocabul´ ario em torno de 60 mil palavras, ´e comum o modelo de linguagem ser composto por algo em torno de 40 milh˜ oes de trigramas e 20 milh˜ oes de bigramas (e 60 mil unigramas). Em contraste com os modelos N -grama, alguns sistemas ASR utilizam um modelo de linguagem n˜ ao-probabil´ıstico, baseado em gram´ aticas livres de contexto (CFG, de contextfree grammars). As CFG s˜ ao mais apropriadas para implementa¸co ˜es similares ` as de comando-e-controle, enquanto as N-grama s˜ ao u ´ teis em aplica¸co ˜es de ditado (da´ı serem chamadas dictation grammars), cria¸ca ˜o autom´ atica de legendas (captioning), e outras onde a perplexidade [8] seja relativamente alta.

327

Al´em do modelo de linguagem, o l´exico ´e um outro recurso importante. O ASR exige que cada palavra do vocabul´ ario tenha sua correspondente transcri¸ca ˜o fon´etica. Se a inclus˜ ao de uma nova palavra ´e feita off-line, um especialista pode mape´ a-la nos alofones [8] correspondentes. O processo online, onde o usu´ ario acrescenta uma palavra a partir apenas de sua ortografia, exige um procedimento relativamente sofisticado conhecido como letter-to-sound ou grapheme-tophoneme [3] (o algoritmo respons´ avel ´e ` as vezes chamado phoneticizer [14]). Outros recursos presentes em ASR s˜ ao o modelo ac´ ustico e o front end. Do ponto de vista do programador, os mesmos s˜ ao menos vis´ıveis, mas projetar um modelo ac´ ustico ´e importante quando se deseja dar suporte a uma nova l´ıngua, tal como o portuguˆes brasileiro. Em termos de TTS, o principal desafio ´e fazer com que a voz sintetizada soe menos robotizada e mais humana. Dentre os fatores que dificultam atingir esse objetivo, encontra-se a modelagem da pros´ odia, uma das principais respons´ aveis para que a voz sintetizada carregue o ritmo e emo¸ca ˜o que um ser humano empregaria. O melhor exemplo da evolu¸ca ˜o da tecnologia TTS ´e o sistema da AT&T [2], o qual atinge uma voz bastante pr´ oxima da natural. Os sistemas TTS evolu´ıram de um paradigma knowledgebased, onde ling¨ uistas e engenheiros trabalhavam muito mais afinados, para uma pragm´ atica abordagem data-driven. Seguindo essa dire¸ca ˜o, o back end do TTS, ` as vezes chamado de sintetizador, por ser o m´ odulo respons´ avel pela gera¸ca ˜o das amostras do sinal digital, evoluiu da t´ecnica conhecida como s´ıntese por formantes [1] para a concatenativa [5], onde segmentos de voz (representando, por exemplo, difones) s˜ ao armazenados para posterior concatena¸ca ˜o. Uma das t´ecnicas em voga ´e a utiliza¸ca ˜o de HMMs para o treinamento autom´ atico de sistemas TTS [7].

˜ ENTRE SAPI E JSAPI 3. COMPARAC ¸ AO Existe um grande n´ umero de empresas no mercado que apresentam solu¸co ˜es para que um desenvolvedor possa incorporar a tecnologia de voz em seus aplicativos. Empresas como a IBM e Microsoft possuem solu¸c˜ oes que adotam padr˜ oes como VoiceXML e Salt. A maioria dessas empresas adota uma API (application programming interface) para o desenvolvimento de aplicativos. Esse trabalho se discute duas delas, as quais bem representam as op¸co ˜es dispon´ıveis. A primeira ´e a SAPI (Speech API ) da Microsoft [16] e a segunda a JSAPI (JavaT M Speech API ) da Sun [10]. Ambas permitem o emprego das tecnologias de TTS e ASR. A JSAPI deixa a desejar num ponto de extrema importˆ ancia em TTS, ao n˜ ao permitir o redirecionamento das amostras de ´ audio para arquivos e/ou dispositivos al´em da sa´ıda de ´ audio padr˜ ao. Por´em, ambas suportam o uso de gram´ aticas CFG e de ditado (probabil´ısticas). A SAPI utiliza-se da XML (Extensible Markup Language) para incluir “marcas” pros´ odicas (formatar) o texto a ser sintetizado, ou seja, configurar os parˆ ametros de s´ıntese de voz como velocidade, afina¸ca ˜o, timbre e l´ıngua. J´ a com JSAPI, tamb´em ´e poss´ıvel trabalhar com esses parˆ ametros tanto atrav´es de invoca¸c˜ ao de procedimentos e/ou m´etodos, como pela JSML (Java Synthesis Markup Language).

A escolha de qual interface utilizar depende de v´ arios aspectos, que v˜ ao desde crit´erios t´ecnicos, como o sistema operacional, a crit´erios bastante subjetivos, como facilidade de uso. A SAPI utiliza COM (Component Object Model ) e por isso pode ser utilizada a partir de qualquer linguagem que suporte COM. Nesse trabalho, utilizamos C#. A JSAPI n˜ ao ´e uma interface do estilo COM, logo a linguagem empregada no desenvolvimento do sistema deve ser a mesma utilizada para escrever a JSAPI, no caso Java. A JSAPI sugere que o aplicativo se comunique com o engine a partir de Java Events. Assim, a JSAPI pode ser utilizada em qualquer sistema operacional para o qual exista uma m´ aquina virtual Java. Em contraste, a SAPI ´e restrita a sistemas operacionais Windows. No que diz respeito a engines, existe uma gama de softwares que suportam SAPI e/ou JSAPI. Esse ´e um ponto importante, pois permite ao desenvolvedor avaliar a qualidade de engines de fabricantes diferentes e escolher o que melhor se aplica ` as caracter´ısticas do seu sistema. A SAPI ´e adotada pela maioria das empresas do setor, tais como Dragon, IBM, e Lucent. A JSAPI ´e bem menos difundida, e uma das exce¸co ˜es ´e o suporte ` a parte ASR dessa interface no produto ViaVoice da IBM. A pr´ oxima se¸ca ˜o concentra-se exclusivamente na JSAPI.

4.

JSAPI DA SUN

A JavaT M speech API ´e uma especifica¸ca ˜o que permite aos desenvolvedores incorporarem tecnologia de voz aos seus aplicativos escritos em Java. JSAPI especifica uma interface que independe da plataforma de desenvolvimento e suporta sistemas para ditado, reconhecedores e sintetizadores de voz. Apesar da Sun ter lan¸cado a Vers˜ ao 1.0 da JavaT M speech API em 1998, a mesma n˜ ao comercializou qualquer tipo de implementa¸c˜ ao em JSAPI. Em vez disso, ela conta com um grupo de companhias que trabalham com ASR e TTS, entre elas a IBM, para desenvolverem aplica¸co ˜es e servi¸cos baseados na especifica¸ca ˜o JSAPI.

Apesar de n˜ ao existir referˆencia de implementa¸ca ˜o por parte da Sun, n˜ ao necessariamente teremos que trabalhar com softwares comerciais, como o Via Voice, para adicionarmos interface de voz ` a nossas aplica¸co ˜es. Podemos fazer uso de produtos com c´ odigo livre, disponibilizados sem custo na Internet. O Sphinx-4 (vide [17]), para reconhecimento de voz, ´e uma das op¸co ˜es existentes.

4.1

Reconhecimento de voz usando Sphinx 4

O Sphinx-4 ´e um sistema de reconhecimento de voz do estadoda-arte, sendo open-source e escrito inteiramente na linguagem de programa¸ca ˜o JavaT M . Encontra-se dispon´ıvel no site ”http:/cmusphinx.sourceforge.net” e se constitui em uma excelente plataforma para pesquisas em reconhecimento de voz. O Sphinx-4 executa reconhecimento em tempo real ou em batch e ´e capaz de implementar reconhecimento de voz cont´ınua ou discreta. A instala¸ca ˜o do Sphinx-4 requer os softwares adicionais, Java 2 SDK, Standard Edition, v1.4 e Ant 1.6.0, ou vers˜ oes mais recentes. Sua compila¸ca ˜o limitase a configura¸ca ˜o de arquivos ANT (XML), o que facilita a utiliza¸ca ˜o de seus diversos componentes. O Sphix 4 apresenta como principais caracter´ısticas: flex´ıveis

328

configura¸co ˜es nas arquiteturas dos frontends, modelos de linguagem, gerenciamento da busca (decoding) onde s˜ ao inclusos suportes para busca breadth first e word pruning, por exemplo, al´em de uma flex´ıvel arquitetura dos modelos ac´ usticos. A seguir descreve-se a constru¸ca ˜o de um modelo ac´ ustico para reconhecimento de d´ıgitos em Portuguˆes brasileiro, a ser executado no formato Sphinx-4. Os pr´ oximos t´ opicos s˜ ao a extra¸ca ˜o de parˆ ametros, treinamento e convers˜ ao dos modelos.

4.2

Extrac¸a˜ o de Parˆametros

Esta etapa visa a extra¸ca ˜o de parˆ ametros que melhor caracterizem a voz, os quais s˜ ao necess´ arios na fase de treinamento. Utilizou-se o frontend baseado nos parˆ ametros MFCC (Mel-Frequency Cepstrum Coefficients) que ´e configurado no arquivo frontend.config.xml conforme estrutura mostrada a seguir. streamDataSource preemphasizer windower dft melFilterBank dct batchCMN featureExtractor Para especificar as caracter´ısticas das vozes de treino, foram feitas altera¸co ˜es nas propriedades da classe “StreamDataSource” respons´ avel pela digitaliza¸ca ˜o do ´ audio original. Foi especificada na entrada do filtro a freq¨ uˆencia de amostragem em 16000 amostras por segundo e para compatibilizar os formatos Little Endian dos arquivos wavs originais com o Sphinx-4, que como todo programa em Java processa e cria dados no formato Big Endian por default, foi alterada a propriedade ”bigEndianData”: Para os parˆ ametros MFCCs extra´ıdos com as classes do Sphinx-4 serem utilizados na fase de estima¸ca ˜o dos modelos ac´ usticos foi necess´ ario a convers˜ ao dos arquivos para o formato HTK (The Hidden Markov Model Toolkit, vide [6]), um software de reconhecimento de voz escrito em linguagem C que possui amplo suporte para o treinamento de modelos ac´ usticos.

4.3 4.3.1

´ Modelagem Acustica Treinamento - Estimac¸a˜ o dos Modelos HMMs

Os modelos ac´ usticos foram baseados em HMMs (Hidden Markov Models), treinados com o software HTK e conver´ necess´ tidos para o formato Sphinx-4. E ario que o treinamento das HMMs seja feito usando o HTK, devido ao Sphinx4 n˜ ao possuir ainda suporte para esta tarefa. Outra solu¸ca ˜o seria utilizar a vers˜ ao sphinx-3 trainer, por´em seu uso seria t˜ ao complexo quanto a utiliza¸ca ˜o do HTK, o qual apresenta

melhor documenta¸c˜ ao. Nesta etapa do trabalho, Estimou-se HMMs, onde cada modelo representa um fonema, contendo 5 estados e 10 gaussianas.

4.4

Convers˜ao dos HMMs do Formato HTK para Sphinx

Ao t´ermino do processo de treinamento, concatenou-se cada HMM em um u ´ nico arquivo chamado hmms.mlf. Na convers˜ ao para o formato Sphinx-4, utilizou-se classes que separaram as HMMs em arquivos de m´edias, variˆ ancias, peso das misturas e matrizes de transi¸ca ˜o. O resultado desta convers˜ ao preliminar s˜ ao arquivos ASCII com os dados das HMMs, que posteriormente foram convertidos para o formato Bin´ ario Little-Endian acrescentando a cada um deles um cabe¸calho espec´ıfico contendo informa¸co ˜es como n´ umero de Gaussianas, n´ umero de estados, n´ umeros de parˆ ametros MFCCs, entre outros. A valida¸ca ˜o dos arquivos bin´ arios ´e feita atrav´es do programa printp dispon´ıvel no Sphinx-3. Usando o Emacs para executar o gdb, e carregar o arquivo printp encontrou-se os valores corretos dos CHECKSUMs dos arquivos bin´ arios, os quais eram necess´ arios nos arquivos finais.

4.5

´ Criac¸a˜ o de um Modelo Acustico JAR no Sphinx-4

Para usar modelos ac´ usticos no Sphinx-4, ´e necess´ ario empacot´ a-los em um arquivo JAR. A vantagem de se ter um arquivo JAR ´e que ´e poss´ıvel inclu´ı-lo facilmente no classpath e referenci´ a-lo em um arquivo de configura¸ca ˜o para ser usado em aplica¸co ˜es que utilizem o Sphinx-4. Este possui um script build.xml que cont´em targets ANT que permitem uma f´ acil convers˜ ao dos modelos ac´ usticos para o arquivo JAR. Neste trabalho foi gerado um Modelo Ac´ ustico, para reconhecimento de d´ıgitos em portuguˆes brasileiro, chamado ”KEENKE”. Um diret´ orio com o mesmo nome do modelo deve ser criado no diret´ orio ”modelsacoustic” do Sphinx-4. Basicamente, para a cria¸ca ˜o do arquivo JAR, s˜ ao exigidos os arquivos bin´ arios das gaussianas que representam os modelos HMMs, um dicion´ ario fon´etico, um arquivo contendo targets para inicio e fim de frase, bem como o silencio, um arquivo de defini¸c˜ ao contendo instru¸co ˜es que relacionam as gaussianas bin´ arias com as suas respectivas HMMs dos fonemas e finalmente um arquivo de propriedades (model.props) contendo informa¸c˜ oes detalhadas do modelo. No arquivo model.props s˜ ao especificadas diversas propriedades que correspondem ao processo de extra¸ca ˜o dos parˆ ametros MFCCs, detalhes como n´ umero de pontos da FFT (Fast Fourier Transform), n´ umero de filtros e gaussianas, freq¨ uˆencias m´ axima e m´ınima e freq¨ uˆencia de amostragem. Estas propriedades devem ser as mesmas do arquivo de configura¸ca ˜o no qual o modelo ac´ ustico JAR criado ser´ a referenciado. Ap´ os recompila¸ca ˜o do projeto Sphinx-4, o novo modelo ac´ ustico KEENKE 10gau 13dCep 16k 40mel 130Hz 6800Hz.jar ´e criado e pode ser facilmente implementado a um sistema de reconhecimento de voz. Como exemplo, utilizou-se como aplica¸ca ˜o o programa TicTacToe.java desenvolvido por Arthur van Hoff, ao qual foi acrescentado o reconhecimento de d´ıgitos isolados.

329

A grande vantagem do uso de JSAPI e Sphinx-4 ´e que eles tˆem uma filosofia voltada para o mercado de software livre. Uma outra alternative, importante do ponto de vista comercial, ´e a utiliza¸ca ˜o da SAPI da Microsoft, a qual ser´ a abordada na pr´ oxima se¸ca ˜o.

5.

SAPI DA MICROSOFT

A SAPI provˆe aos programadores acesso aos servi¸cos fornecidos por um engine de ASR e/ou TTS. A Microsoft disponibiliza gratuitamente na Web o kit de desenvolvimento Speech SDK, atualmente na vers˜ ao 5.1, com DLL’s que suportam objetos OLE (Object Linking and Embedding), caracter´ıstica essencial para que possa ser utilizado por linguagens de programa¸ca ˜o conhecidas como de alto n´ıvel.

5.1

S´ıntese de Voz usando SAPI

De acordo com a SAPI, as aplica¸co ˜es controlam o processo de s´ıntese de voz atrav´es do objeto ISpVoice. Depois de criar esse objeto, a aplica¸ca ˜o precisa apenas chamar o m´etodo ISpVoice::Speak para gerar ´ audio de sa´ıda a partir de um texto ou arquivo de entrada. O m´etodo ISpVoice::SetVoice permite que a voz padr˜ ao do sistema operacional, a qual ´e selecionada por caracter´ısticas como l´ıngua, sexo e idade, seja alterada de acordo com a necessidade e finalidade da aplica¸ca ˜o. Adicionalmente, as propriedades do processo de s´ıntese, como volume e velocidade da voz de sa´ıda, podem ser modificadas atrav´es dos m´etodos ISpVoice::SetVolume e ISpVoice::SetRate, tal como mostrado a seguir. SpVoice Voice = new SpVoice(); Voice.Volume = 50; Voice.Rate = 5; Voice.Speak("Hello", SpeechVoiceSpeakFlags.SVSFlagsAsync); Voice.Speak("C:/Teste.txt", SpeechVoiceSpeakFlags.SVSFIsFilename); Uma das alternativas para formatar o texto a ser sintetizado ´e via XML. Pausas, ˆenfases, caracter´ısticas da pron´ uncia, volume e velocidade, s˜ ao alguns dos parˆ ametros que podem ser especificados para uma determinada palavra ou frase, sempre com a finalidade de minimizar a falta de naturalidade da voz sintetizada.

5.2

Reconhecimento de voz usando SAPI

Para executar ASR, uma gram´ atica precisa ser definida para que o aplicativo saiba que a¸ca ˜o executar quando uma determinada palavra lhe for enviada. Assim como o ISpVoice ´e a principal interface para a s´ıntese de voz, o ISpRecoContext ´e a principal interface para o reconhecimento de voz. Atrav´es desse objeto a aplica¸ca ˜o tem controle do conte´ udo do que foi reconhecido e das gram´ aticas de reconhecimento. Ele tamb´em tem o poder de parar e reiniciar o reconhecimento. A SAPI d´ a suporte a ambas gram´ aticas CFG (tamb´em conhecida como command and control ) e a probabil´ıstica, ou gram´ atica para ditados (dictation). No c´ odigo abaixo uma CFG (Grammar) contendo uma regra (Ruleone) foi criada, carregada e ativada. Da´ı, a regra ser´ a acionada toda vez que a palavra boy for reconhecida.

SpSharedRecoContext RecoContext = new SpSharedRecoContext(); RecoContext.State = SpeechRecoContextState.SRCS_Enabled; ISpeechRecoGrammar Grammar; ISpeechGrammarRule Ruleone; objectPropValue = ""; Grammar = RecoContext.CreateGrammar(0); Ruleone = Grammar.Rules.Add("regraum", SpeechRuleAttributes.SRATopLevel | SpeechRuleAttributes.SRADynamic,1); Ruleone.InitialState.AddWordTransition(null, "boy","",SpeechGrammarWordType.SGLexical, "boy",0,ref PropValue,0f); Grammar.Rules.Commit(); Grammar.CmdSetRuleState("regraum", SpeechRuleState.SGDSActive); Depois da gram´ atica ser definida, a aplica¸c˜ ao precisa saber o que foi reconhecido. Para isso, utiliza-se o evento RecoContext.Recognition. No caso de estarmos utilizando a gram´ atica CFG, podemos identificar qual foi a regra acionada atrav´es da interface SpeechPhraseProperty.

5.3

Microsoft Agentes

Apesar de n˜ ao ser parte da SAPI, o Microsoft Agent ´e uma tecnologia diretamente relacionada, pois permite criar personagens e utilizar anima¸co ˜es na interface gr´ afica de programas, al´em de associ´ a-las aos mecanismos de fala, proporcionando uma interface muito rica (similar ` a descrita em [15]). O c´ odigo abaixo ´e uma aplica¸ca ˜o simples do uso de agentes em uma aplica¸ca ˜o SAPI com C#. O agente Merlin ´e carregado e depois mostrado na tela. As duas u ´ltimas linhas proporcionam a¸co ˜es por parte do agente: na primeira ele realiza uma breve sauda¸c˜ ao e, em seguida, utiliza-se da tecnologia de voz para sintetizar o texto ”Exercise”. AxAgent.Characters.Load("Merlin", (object)"C:/Windows/Msagent/chars/merlin.acs"); Character = AxAgent.Characters.Character("Merlin") Character.Show(null); Character.Play("announce"); Character.Speak("Exercise",null);

6.

˜ EXEMPLO DE APLICAC ¸ AO: “CALL”

Nessa se¸ca ˜o discute-se brevemente um software para aprendizado de l´ıngua estrangeira com o aux´ılio de computador. O mesmo apresenta exerc´ıcios para o aluno, que dever´ a pronunciar a palavra que melhor completa a frase, ou mesmo atividades de ditado. O n´ıvel de confiabilidade no reconhecimento da voz pode ser ajustado de acordo com a necessidade. O software utiliza agentes animados para tornar mais alegre a interface, podendo-se n˜ ao apenas mostrar texto na tela do computador, mas tamb´em permitir que o aluno ou¸ca a pron´ uncia correta de uma palavra ou frase. A Figura 1 mostra uma tela do prot´ otipo que est´ a sendo desenvolvido para o ensino da l´ıngua inglesa, em fun¸ca ˜o da maior disponibilidade de engines. A avalia¸ca ˜o da interface foi considerada boa nos experimentos realizados. Os usu´ arios relataram que a navega¸c˜ ao en-

330

Figure 1: Uma das telas do aplicativo para ensino de l´ıngua inglesa.

tre os menus ´e de f´ acil entendimento e que os comandos de voz requeridos em cada etapa da aplica¸ca ˜o s˜ ao bem claros. Contudo, muitos questionaram o fato do programa n˜ ao solicitar repeti¸c˜ ao, ou mesmo informar, quando o comando n˜ ao ´e reconhecido. A voz sintetizada pelo engine da Microsoft n˜ ao foi bem aceita. Para melhorar sua naturalidade e clareza, foram inseridos comandos XML para alterar alguns parˆ ametros da voz, como rate e pitch, e, com isso, o ´ındice de satisfa¸ca ˜o cresceu bastante. Utilizando-se os engines disponibilizados pela Microsoft para ASR e TTS, pode-se interagir com o usu´ ario atrav´es da l´ıngua inglesa. Contudo, levando-se em conta que o usu´ ario ´e muitas vezes uma crian¸ca, ´e importante se poder usar TTS em l´ıngua portuguesa para instru¸co ˜es e feedback. Essa situa¸ca ˜o ´e compartilhada com outros projetos em desenvolvimento no Brasil (e.g., [15]). Para o presente trabalho, utiliza-se o software do CSLU [4], o qual incorpora suporte ao PB atrav´es da “voz” AGA. Apesar de relativamente prec´ ario, o suporte ` a TTS em PB do CSLU ´e bastante u ´til. Em resumo, o processo de gera¸ca ˜o da voz AGA foi baseado na s´ıntese por difones, um dos m´etodos mais populares para cria¸ca ˜o de voz sint´etica [12]. O difone ´e a regi˜ ao entre os “centros” de dois fones adjacentes. O centro de uma realiza¸ca ˜o fon´etica ´e a regi˜ ao mais est´ avel da mesma, enquanto que a transi¸ca ˜o de um fone para outro cont´em mais varia¸ca ˜o (efeitos da co-articula¸ca ˜o), o que torna dif´ıcil a modelagem. Ap´ os a sele¸ca ˜o do conjunto de fones, os difones s˜ ao coletados utilizando palavras que possuam o respectivo difone no meio [9]. A coleta foi feita em uma cˆ amara anec´ oica, com equipamento de grava¸ca ˜o de alta-qualidade e um laring´ ografo. O laring´ ografo ´e utilizado para garantir a qualidade da grava¸ca ˜o e extrair informa¸ca ˜o sobre o pitch e pulso glotal. Ap´ os a coleta, as palavras foram alinhadas temporalmente com os difones e segmentadas posteriormente. Finalmente, os modelos pros´ odico e l´exico s˜ ao gerados para produzir uma voz o mais natural poss´ıvel e lexicamente correta. O toolkit do CSLU ´e uma plataforma para o desenvolvi-

mento de aplicativos de di´ alogos. O software provˆe quatro n´ıveis de interface para o desenvolvimento de aplicativos. No n´ıvel mais baixo, os desenvolvedores podem usar c´ odigo C para acessar todos os componentes, tais como o engine ASR. N˜ ao h´ a, contudo, suporte para uma API gen´erica como a SAPI ou JSAPI. Apesar de n˜ ao ser a solu¸ca ˜o ideal, a seguir discute-se a estrat´egia utilizada para sintetizar em PB usando CSLU. Uma das diretrizes adotadas, foi buscar uma solu¸ca ˜o simples, a qual n˜ ao envolvesse modifica¸co ˜es no c´ odigo do CSLU. Assim, optou-se pela utiliza¸ca ˜o de arquivos batch que invocavam o TTS do CSLU, sob o comando do aplicativo. Os passos adotados foram os seguintes ($cslu ´e a pasta onde o software CSLU foi instalado). Dentro do diret´ orio $cslu/Festival/1.4.2/festival/lib, o aplicativo cria um arquivo com o texto que deseja sintetizar. Nesse exemplo, assume-se que o nome desse arquivo ´e “comandos.txt”. O comandos.txt possui o seguinte conte´ udo:

8.

ADDITIONAL AUTHORS

Autores adicionais: Maria Fonseca (Universidade Federal do Par´ a, email: [email protected]), Alessandra de Sousa (Universidade Federal do Par´ a, email: Alessandra.Ewerton@vivo. net.br) e Aldebaro Klautau (Universidade Federal do Par´ a, email: [email protected]).

9.

REFERENCES

[1] J. Allen, M. S. Hunnicutt, D. H. Klatt, R. C. Armstrong, and D. B. Pisoni. From text to speech: The MITalk system. Cambridge University Press, 1987. [2] http://www.research.att.com/projects/tts/demo.html, Visited in March, 2005.

(voice_aga_diphone) (SayText "ENTRE O TEXTO AQUI") Ent˜ ao, no diret´ orio $cslu/Toolkit/2.0/bin, criou-se uma c´ opia do arquivo Festival.bat (chamada aqui de “call.bat”), e sua u ´ltima linha foi alterada para: $CSLU\Festival\1.4.2\bin\ festival.exe --batch "comandos.txt"

[3] A. Black, K. Lenzo, and V. Pagel. Issues in building general letter to sound rules. In ESCA Synthesis Workshop, Australia 1998, 1998. [4] http://cslu.cse.ogi.edu/toolkit/, Visited in March, 2005. [5] T. Dutoit. An Introduction to Text-To-Speech Synthesis. Kluwer, 2001.

Ap´ os esses passos, basta ao aplicativo criar um arquivo comandos.txt e invocar o arquivo call.bat. Por exemplo, a partir de um programa C, bastaria a chamada: system("$cslu\\Toolkit\\2.0\\bin\\call.bat"); Nota-se que a solu¸ca ˜o apresentada acima ´e ineficiente no sentido de que o processo de escrita e leitura em disco ´e lento. Contudo, o mesmo ´e simples e pode ser usado em situa¸co ˜es onde a velocidade e qualidade do TTS n˜ ao s˜ ao cr´ıticas.

7.

s˜ ao as APIs da Microsoft e Sun, respectivamente. Abordouse a constru¸ca ˜o de um modelo ac´ ustico para reconhecimento de d´ıgitos em Portuguˆes brasileiro (baseado em JSAPI) e de um aplicativo para o ensino da l´ıngua inglesa, no qual ´e usado ASR e TTS em inglˆes (baseado em SAPI) e TTS em portuguˆes (baseado no toolkit do CSLU).

[6] http://htk.eng.ac.uk, 2005. [7] http://hts.ics.nitech.ac.jp/, Visited in March, 2005. [8] X. Huang, A. Acero, and H.-W. Hon. Spoken language processing. Prentice-Hall, 2001. [9] S. Isard and D. Miller. Diphone synthesis techniques. In Proceedings of the IEE International Conference on Speech Input/Output, pages 77–82, 1986. [10] http://java.sun.com/products/java-media/speech/, Visited in March, 2005. [11] http://www.ldc.upenn.edu., Visited in March, 2005. [12] K. A. Lenzo and A. W. Black. Diphone collection and synthesis. In ICSLP, 2000.

˜ CONCLUSOES

Como atualmente s˜ ao sistemas data-driven, a s´ıntese e o reconhecimento de voz se beneficiam da disponibilidade de corpora com grande volume de dados. Existe uma quantidade razo´ avel de textos para estudos de modelagem de linguagem para a l´ıngua inglesa, portuguˆes europeu e outras (vide [11]). Todavia, h´ a poucos recursos acess´ıveis quando se trata do PB. Essa lacuna ´e ainda maior quando se trata de voz digitalizada para treinamento do modelo ac´ ustico e desenvolvimento de TTS. A inexistˆencia de uma grande base de dados n˜ ao s´ o atrasa as pesquisas em ASR, TTS e ´ areas correlatas, mas tamb´em impede que os resultados obtidos por diferentes grupos de pesquisa sejam comparados diretamente. Nesse trabalho foram descritas algumas atividades no desenvolvimento de ASR para PB, mas a constru¸ca ˜o de um SAPI-compliant engine ainda demandar´ a mais tempo. O presente trabalho discutiu o estado da arte em ASR e TTS, e tamb´em avaliou a utiliza¸ca ˜o da SAPI e JSAPI, que

331

[13] L. Pessoa, F. Violaro, and P. Barbosa. Modelo de l´ıngua baseado em gram´ atica gerativa aplicado ao reconhecimento de fala cont´ınua. In XVII Simp´ osio Brasileiro de Telecomunica¸c˜ oes, pages 455–458, 1999. [14] Patent EP984430 - speech recognizer with lexicon updateable by spelled word input, http://gauss.ffii.org/patentview/ep984430, 2004. [15] P. L. Rodrigues, B. Feij´ o, and L. Velho. Expressive talking heads: uma ferramenta de anima¸ca ˜o com fala e express˜ ao facial sincronizadas para o desenvolvimento de aplica¸co ˜es interativas. In Proceedings of Webm´ıdia. SBC, 2004. [16] http://www.microsoft.com/speech/, Visited in March, 2005. [17] http://cmusphinx.sourceforge.net/sphinx4/, 2005.

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.