• Nenhum resultado encontrado

4.6 Reconhecedor de fala dependente do orador, baseado em HTK

4.6.1 Configurac¸ ˜oes e preparac¸ ˜ao dos dados

Para construir um reconhecedor de fala s ˜ao necess ´arios dados ac ´usticos, tanto para treinar como para testar o reconhecedor [44]. A recolha dos dados ac ´usticos ´e a primeira tarefa a realizar na construc¸ ˜ao de um reconhecedor de fala. Para tal ´e necess ´ario percorrer os seguintes passos:

1. Definir uma gram ´atica

2. Gerar e gravar os conjuntos de frases de treino e teste

3. Construir o dicion ´ario

4. Criar os ficheiros com a transcric¸ ˜ao fon ´etica

5. Extrair os feature vectors

Gram ´atica

Antes de mais ´e necess ´ario definir o cen ´ario onde o reconhecedor vai ser utilizado. Neste caso em concreto, o cen ´ario ´e uma casa de habitac¸ ˜ao, onde o que se pretende ´e executar acc¸ ˜oes sobre os diversos dispositivos, isto ´e, controlar o ambiente envolvente. A figura 4.23, apresenta o cen ´ario t´ıpico.

No cen ´ario apresentado pela figura 4.23 s ˜ao v ´arios os dispositivos que pretendemos controlar. Em concreto, podemos enumerar os seguintes: portas, l ˆampadas, tomadas, estores e o auto- clismo. A acc¸ ˜oes que se podem executar sobre estes dispositivos s ˜ao: abrir/fechar, ligar/desligar e subir/descer. Assim sendo, o conjunto de frases que se pretende reconhecer ´e o seguinte:

• Luz da Sala

Figura 4.23: Cen ´ario de utilizac¸ ˜ao do reconhecedor.

• Luz da Cozinha

• Luz da Casa de Banho • Luz do Corredor • Luz do Quarto

• Abrir a Porta da Frente • Abrir a Porta do Quarto • Abrir o Estore do Quarto • Fechar a Porta da Frente

• Fechar a Porta do Quarto • Fechar o Estore do Quarto • Subir o Estore

• Descer o Estore

• Ligar a Tomada do Quarto

• Desligar todas as l ˆampadas

• Desligar a Tomada do Quarto

• Tomada do Quarto

• Autoclismo

No conjunto de frases sugerido existem algumas que n ˜ao indicam qual a acc¸ ˜ao a executar. Isto acontece porque nestes casos o que se pretende ´e executar a acc¸ ˜ao que inverta o estado actual (l ˆampadas), ou ent ˜ao porque s ´o ´e poss´ıvel executar uma ´unica acc¸ ˜ao e neste caso est ´a impl´ıcita (autoclismo).

A forma de definir estas frases ´e atrav ´es de uma gram ´atica. O HTK disponibiliza uma lingua- gem para definir formalmente uma gram ´atica. A gram ´atica da figura 4.24, define formalmente as frases enumeradas. Os par ˆentesis rectos delimitam palavras opcionais e as barras verticais separam as diversas possibilidades.

De forma a melhorar a compreens ˜ao da gram ´atica, esta pode ser representada grafica- mente. A figura 4.25 apresenta todas as possibilidades permitidas pela gram ´atica, para construir frases iniciadas pelas palavras ”Ligar” e ”Desligar”.

A forma como a gram ´atica ´e apresentada na figura 4.24 ´e utilizada apenas por conveni ˆencia, e ´e uma representac¸ ˜ao de alto n´ıvel, f ´acil de utilizar. O HTK utiliza a informac¸ ˜ao contida na gram ´atica recorrendo a uma representac¸ ˜ao de baixo n´ıvel. De facto, ´e usada uma rede onde est ˜ao representa- das todas as palavras bem como a forma como estas se ligam entre si. Esta notac¸ ˜ao de baixo n´ıvel chama-se HTK Standard Lattice Format (SLF). O HTK disponibiliza uma ferramenta, o HParse, que constr ´oi a rede de palavras a partir da representac¸ ˜ao de alto n´ıvel da gram ´atica [44].

Criac¸ ˜ao dos conjuntos de frases para treino e teste

Os conjuntos de frases para treino e teste do reconhecedor podem ser obtidos a partir da gram ´atica. Para tal, basta utilizar a ferramenta HSGen disponibilizada pelo HTK, juntamente com um dicion ´ario

$autoclismo = AUTOCLISMO; $tomada = TOMADA;

$locais_com_tomada = QUARTO; $subir_descer = SUBIR | DESCER; $objectos_sobem_descem = ESTORE; $dispensar = DISPENSAR;

$produtos_dispensar = PRODUTO; $numero = UM | DOIS | TRES | QUATRO; $ligar_desligar = LIGAR | DESLIGAR; $luz = LUZ;

$locais_com_luz = CASA DE BANHO | COZINHA | QUARTO | CORREDOR; $abrir_fechar = ABRIR | FECHAR;

$objectos_abrem_fecham = PORTA | ESTORE;

$locais_objectos_abrem_fecham = FRENTE | QUARTO; (

SENT-START (

($autoclismo) |

($tomada [DO] $locais_com_tomada) |

($subir_descer [O] $objectos_sobem_descem) | ($dispensar [O] $produtos_dispensar $numero) | ($ligar_desligar TODAS [AS] LAMPADAS) | ($ligar_desligar [A] TOMADA [DO] QUARTO) | ($luz [DA] SALA $numero) |

($luz [DA | DO] $locais_com_luz) | ($abrir_fechar DISPENSADOR) |

($abrir_fechar [A | O] $objectos_abrem_fecham [DA | DO] $locais_objectos_abrem_fecham) )

SENT-STOP )

Figura 4.24:Gram ´atica.

gen ´erico para o Portugu ˆes. O HSGen gera um conjunto de N frases, aleatoriamente, usando a informac¸ ˜ao presente na gram ´atica e no dicion ´ario

Dicion ´ario

O primeiro passo na construc¸ ˜ao de um dicion ´ario ´e a identificac¸ ˜ao de todas as palavras presentes nas frases que se pretende reconhecer. O dicion ´ario tem que conter a representac¸ ˜ao fon ´etica de todas as palavras que constituem estas frases. A melhor forma de obter esta lista de palavras ´e extra´ı-la automaticamente do conjunto de frases de treino.

Gravac¸ ˜ao das frases para treino e teste

Neste ponto da construc¸ ˜ao do reconhecedor ´e necess ´ario gravar o material de ´audio correspondente `as frases de treino e de teste. A gravac¸ ˜ao destas frases ´e feita recorrendo `a ferramenta HSLab, fornecida pelo HTK.

Criac¸ ˜ao dos ficheiros com a transcric¸ ˜ao fon ´etica

Para que os dados que acabamos de obter sejam ´uteis ´e necess ´ario gerar as respectivas transcric¸ ˜oes fon ´eticas. Para o efeito, vamos utilizar as ferramentas disponibilizadas pelo HTK. O primeiro passo ´e criar um Master Label File (MLF) com as transcric¸ ˜oes ao n´ıvel da palavra para cada um dos ficheiros de ´audio. Para criar este ficheiro de uma forma autom ´atica podemos utilizar o script TrainPrompts2mlf.pl disponibilizado juntamente com o HTK.

Agora que j ´a possu´ımos as transcric¸ ˜oes ao n´ıvel da palavra podemos avanc¸ar para a transcric¸ ˜ao fon ´etica. O ficheiro MLF contendo as transcric¸ ˜oes fon ´eticas pode ser gerado de uma forma au- tom ´atica pela ferramenta HLEd. O HLEd utiliza a informac¸ ˜ao existente no dicion ´ario, em conjunto com as transcric¸ ˜oes ao n´ıvel da palavra, para gerar as transcric¸ ˜oes fon ´etica.

Extracc¸ ˜ao dos feature vectors

Esta ´e a ´ultima tarefa a realizar no que diz respeito `a preparac¸ ˜ao dos dados. Consiste na extracc¸ ˜ao de vectores com as caracter´ısticas mais relevantes do sinal, tendo em conta a tarefa que se pretende realizar. Neste caso concreto pretende-se extrair as caracter´ısticas mais relevantes para reconheci- mento de fala. Na literatura de l´ıngua Inglesa estes vectores t ˆem o nome de feature vectors.

A extracc¸ ˜ao destes vectores pode ser feita de uma forma autom ´atica utilizando a ferramenta HCopy, fornecida pelo HTK.