Docstoc

arq-embarcados

Document Sample
arq-embarcados Powered By Docstoc
					    UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL
             INSTITUTO DE INFORMÁTICA
 PPGC – PROGRAMA DE PÓS-GRADUAÇÃO EM COMPUTAÇÃO




Arquiteturas para reconhecimento de voz em sistemas
                     embarcados




                         por


                Luiz Sequeira Laurino
                 lslaurino@inf.ufrgs.br




           Porto Alegre, novembro de 2004.
1. Introdução


      Com o avanço tecnológico tem-se observado uma proliferação cada vez maior
de dispositivos portáteis (celulares, PDA’s, etc.) visto a facilidade e utilidade que
proporcionam para o dia-a-dia das pessoas. Este interesse pela computação portátil
tornou interessante, novamente, tecnologias de interface que se adaptem a
portabilidade inerente de tais dispositivos. Uma dessas formas de interface é o
reconhecimento automático de voz.
      A tarefa de reconhecimento automático de voz é um tema que já foi bastante
pesquisado e tem várias soluções propostas e desenvolvidas que tratam o problema de
forma adequada. Entretanto, em se tratando de sistemas embarcados, as soluções
propostas não são adequadas, visto que nestes sistemas tem-se que atender a certas
restrições, como o atendimento das solicitações em tempo real (ou o mais próximo
disso), o projeto tem que ter um custo em área relativamente baixo visto que os
dispositivos alvo são pequenos e, ainda, deve-se atentar para o consumo de potência,
que deve ser o mais baixo possível, já que todos esses dispositivos dependem de
bateria para funcionar [5].
      É importante observar que a maioria das soluções propostas para a resolução da
tarefa de reconhecimento de voz em sistemas embarcados materializa-se em um co-
processador. Dessa forma, o co-processador realiza todos os cálculos relativos a tarefa
específica e devolve os resultados ao processador de propósito geral presente em
determinado sistema embarcado. Além disso, é importante ressaltar que tal abordagem
não foge do paradigma von Neumann e, portanto, não existe uma solução para a
resolução do problema que se utilize de qualquer outro modelo de computação.



2. O reconhecimento de voz


       O reconhecimento de voz é a tarefa de traduzir um sinal acústico (analógico)
representando a fala de uma pessoa em uma representação textual que corresponda
àqueles sons.


                                                                                     2
      Um sistema de reconhecimento de voz geralmente é muito complexo, visto que
tem que lidar com um grande número de sotaques, volumes diferentes entre as falas de
seres humanos e ambigüidade em palavras fora de contexto (por exemplo, “there” e
“their”) [4]. Além disso, para ser viável, precisa ser independente de interlocutor, cobrir
um grande vocabulário (número de palavras e sentenças), tratar fala contínua, ser
preciso e, ainda, ter uma implementação “leve” para sistemas embarcados [5].
      Para um uso confortável de algum dispositivo deve-se ter uma taxa de erro, por
palavra e para um vocabulário de tamanho razoável, de no máximo 10% [3]. Isso
significa que entre 10 palavras, uma precisa ser repetida. Tal precisão já é obtida em
alguns sistemas de reconhecimento de voz tradicionais [3]. É claro que um ambiente
barulhento influenciará negativamente na precisão dos resultados.
      A maioria dos sistemas de reconhecimento de voz utiliza a mesma estratégia,
onde é feita uma busca pela melhor seqüência textual que representa uma determinada
entrada sonora, baseado em alguma informação previamente conhecida da tarefa [1].
Existem vários algoritmos que se propõem a realizar tal tarefa. O que os difere
geralmente é a heurística usada na busca e o método de pontuação para determinados
caminhos. A Figura 1 ilustra as várias etapas utilizadas neste processo.




                 Figura 1: Visão geral do processo de reconhecimento de voz




                                                                                         3
2.1 A tarefa de reconhecimento de voz




      A tarefa de reconhecimento de voz envolve basicamente três etapas. O primeiro
passo é a conversão da onda sonora (voz) de entrada em feature vectors (cada feature
vector representa o sinal sonoro durante 10ms), que se dá através de operações DSP
(conversões A/D). Os feature vectors passam por um modelo acústico que os
transforma, através do cálculo probabilístico Gaussiano, em uma série de fonemas.
Então, os fonemas gerados na segunda etapa passam por uma fase de busca, que é
dada por um modelo de busca em grafo lingüístico. É importante observar que deve
existir uma realimentação entre a terceira e a segunda etapas, visto que a saída gerada
pelo cálculo Gaussiano é avaliada no modelo de Markov, onde são geradas as
probabilidades. Dessa forma, reduz-se o número de seqüências que o cálculo
Gaussiano precisa avaliar. A Figura 2 ilustra essas etapas de maneira mais detalhada.
      O cálculo Gaussiano e o modelo de busca servem para, além de realizar o
reconhecimento de sons, compensar as diferenças de fala entre pessoas diferentes
(sotaques, ambigüidade entre palavras, etc.) e o resultado desse processo é
representado pela hipótese que tem maior probabilidade com relação a uma
determinada entrada. Na maioria dos artigos pesquisados, o modelo de busca utilizado
foi o “Hidden Markov Model (HMM)”, que é uma técnica utilizada para representação de
sistemas probabilísticos complexos em expressões matemáticas relativamente simples.




                    Figura 2: Detalhes do processo de reconhecimento de voz


                                                                                        4
      Todo o processo de análise probabilística é feito sobre um banco de dados de
expressões representadas como um HMM. A análise é feita fonema por fonema e
combinações de dois fonemas em seqüência são, também, analisadas. Dessa forma, a
probabilidade de haver a transição do primeiro para o segundo fonema é avaliada e vai
sendo formada uma rede de interconexões onde os nodos são os fonemas e as arestas
são as probabilidades de que dois fonemas sejam falados em seqüência [4].
      Esse mesmo mecanismo é feito em um nível mais alto para avaliar a
probabilidade de transição entre palavras. Dessa forma, o sistema poderia distinguir
entre “their car” e “there car”, já que a primeira tem probabilidade muito maior de ocorrer
na forma culta da língua inglesa. Importante observar que vão sendo formados vários
caminhos possíveis nessa rede (ou grafo) de interconexões e cada caminho é
totalmente independente dos demais. Na Figura 3 é mostrado um caminho no grafo
para uma determinada entrada.
      A concorrência característica na determinação de caminhos no grafo que
correspondam a uma determinada entrada é geralmente muito explorada pelas
arquiteturas, especialmente naquelas voltadas para sistemas embarcados. Além disso,
a tarefa de reconhecimento de voz inclui, além de muitos acessos, grande demanda por
memória [4].




                                Figura 3: Caminho no grafo dirigido




                                                                                         5
3. Arquiteturas para o reconhecimento de voz



      Como já dito anteriormente, as arquiteturas desenvolvidas especialmente para
sistemas embarcados tentam explorar o paralelismo inerente presente no algoritmo de
reconhecimento de voz. Além disso, elas focam todos esforços no cálculo Gaussiano e
na busca sobre o grafo (HMM), visto que estas duas etapas consomem
aproximadamente 98% de todo o processamento necessário para realizar a tarefa.
      A maioria das arquiteturas pesquisadas é projetada na forma de um co-
processador e são responsáveis por realizar toda a tarefa de reconhecimento de voz e
retornar os resultados para o processador de propósito geral do dispositivo. Além disso,
há uma grande similaridade entre a maioria das arquiteturas estudadas. Por isso, serão
abordados aqui os dois grandes grupos de arquiteturas desenvolvidas para sistemas
embarcados.




3.1. Arquitetura SMT/SMP



      Devido a grande concorrência inerente à fase de busca do processo de
reconhecimento de voz, as primeiras arquiteturas em que se pensa são a Simultaneous
Multithreading (SMT) ou Symmetric Multiprocessing (SMP). Uma das características da
aplicação é a grande demanda por memória, o que resulta em latências elevadas. Ao
se desenvolver uma solução com arquitetura SMP, a tendência é ter-se um aumento de
desempenho visto os vários processadores operando em paralelo. Entretanto, cada um
dos processadores será subutilizado devido ao fato de se ter limitantes no mecanismo
de memória presente em dispositivos portáteis (geralmente pouco sofisticados). Uma
solução composta por características SMT poderia lidar com latências grandes trocando
o contexto para outras threads em execução. Entretanto, utilizando-se apenas um
processador que aproveite de forma correta os recursos disponíveis, ter-se-ia uma
grande demanda por recursos, o que poderia tornar o projeto inviável.



                                                                                      6
      Dessa forma, a solução adotada por vários pesquisadores é a combinação das
duas arquiteturas (SMT/SMP), empregando elementos de processamento (EP’s) com
baixo consumo de potência e distribuindo a carga computacional. Com o intuito de
maximizar a utilização dos processadores, minimizar a complexidade de escalonamento
e proporcionar um bom balanceamento de carga para o sistema, as tarefas são
distribuídas através de um escalonamento estático feito inicialmente.
      A Figura 4 apresenta uma das arquiteturas que seguem esta abordagem
(descrita anteriormente). Nesta figura podem ser observados alguns dos principais
recursos dessa arquitetura: o processador principal (nesse caso um Xscale, da Intel –
voltado exclusivamente para embarcados) e o co-processador de reconhecimento de
voz. O co-processador está conectado ao processador principal através de um
barramento simples usado apenas para inicializar o processamento, coletar resultados
e realizar alguma comunicação pequena. Esse mesmo barramento é capaz de realizar
pequenas comunicações entre os componentes do co-processador, descrito a seguir.
Além disso, o co-processador ainda é conectado a um sistema de memória através de
um barramento bastante grande, visto a grande demanda da aplicação por memória.




                    Figura 4: Diagrama de blocos de uma arquitetura SMT/SMP




      O co-processador é composto por uma série de elementos de processamento
(EP’s), um balanceador dinâmico de carga e alguns locks globais. Os EP’s são ligados
ao balanceador dinâmico para que esse possa detectar aqueles que estão
sobrecarregados e aqueles que estão inativos e determinar um novo mapeamento entre
tarefas/EP’s.


                                                                                   7
      Cada EP é bem simples e basicamente é composto por um pipeline de 5
estágios, uma memória cache, uma ULA, uma unidade responsável por gerenciar
tarefas de controle necessárias ao EP e alguns registradores que controlam os vários
contextos presentes na execução de múltiplas threads. Vários mecanismos presentes
em microprocessadores convencionais não são implementados, visto que apresentam
um consumo de potência elevado e os ganhos proporcionados por eles não são muito
evidentes, já que a inerente concorrência dos cálculos que envolvem a aplicação
proporcionam um bom desempenho. A Figura 5 dá maiores detalhes a respeito de cada
EP.




                                 Figura 5: um EP em detalhe




3.2 ASP (Associative String Processor)



      Nesta abordagem, tem-se uma arquitetura desenvolvida especificamente para
processamento paralelo, sendo homogênea, tolerante a falhas e reconfigurável [2].
Como ilustrado na Figura 6, ASP é composto por uma estrutura dinâmica e
reconfigurável de substrings de comunicação, cada qual tendo um buffer de dados
associado, um dispositivo denominado “controlador” e uma rede de comunicação de
dados.




                                                                                  8
                                 Figura 6: Estrutura geral do ASP




      Cada substring do ASP (ver Figura 7) é uma estrutura computacional composta
por uma série de elementos de processamento associativos (APE’s). O ASP está
baseado, ao contrário das arquiteturas tradicionais, em um processamento associativo,
onde o conteúdo dos vários APE’s em cada substring é comparado com o conteúdo dos
barramentos associados a eles. A inexistência de referências a endereços simplifica a
operação e oferece tolerância a falhas [2].




                                 Figura 7: Substring em detalhes




                                                                                   9
       Como pode ser observado, devido a limitação da arquitetura em termos de
substrings e APE’s, seu uso é voltado para vocabulários restritos, onde o número de
nodos no grafo (HMM) é reduzido.



4. Conclusões



       Ao se analisar todas as arquiteturas desenvolvidas e projetadas para o
reconhecimento de voz em sistemas embarcados, verifica-se que a maioria possui
ainda uma forte ligação com o modelo von Neumann. Por outro lado, há alguns
esforços com o intuito de quebra de paradigma, ainda muito incipientes.
       Pôde-se constatar que o desempenho (tempo de processamento e precisão dos
resultados) de arquiteturas auxiliares para resolver esta tarefa mostrou-se bastante
satisfatório.   Entretanto,   ainda   são    necessárias   otimizações    nas   memórias
desenvolvidas para dispositivos portáteis.



Referências



[1] Anantharaman, T.; Bisiani, R. A Hardware Accelerator for Speech Recognition
Algorithms. In Proceedings of the 13th annual international symposium on Computer
architecture. Pg 216 – 223. 1986.


[2] Krikelis, A. Continuous speech recognition using an associative string
processor. In IEEE International Symposium on Circuits and Systems. 1989.


[3] Hagen, A.; Connors, D.; Pellom, B. The Analysis and Design of Architecture
Systems for Speech Recognition on Modern Handheld-Computing Devices. In
Proceedings of the 1st IEEE/ACM/IFIP international conference on Hardware/software
codesign and system synthesis. Pg 65 – 70. October 2003.


                                                                                      10
[4] Krishna, R.; Mahlke, S.; Austin, T. Architectural Optimizations for Low-Power,
Real-Time Speech Recognition. In Proceedings of the 2003 international conference
on Compilers, architectures and synthesis for embedded systems. Pg 220 – 231.
October 2003.


[5] Mathew, B; Davis, A.; Fang, Z. A Low-Power Accelerator for the SPHINX 3
Speech Recognition System. In Proceedings of the 2003 international conference on
Compilers, architectures and synthesis for embedded systems. Pg 210 – 219.
November 2003.




                                                                               11

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:0
posted:10/19/2012
language:Latin
pages:11