Introduction: Comando Por Voz - DragonBoard410c

Este guia irá ensinar a instalar e configurar o programa Julius junto com o Coruja, que são respectivamente um programa de reconhecimento de voz e o modelo acústico em Português.

A vantagem da utilização do Julius é o funcionamento "offline", isto é, não utiliza serviços através da Internet para realizar o reconhecimento de voz.

Após a instalação, e pequenos ajustes na biblioteca, o programa escrito em Python permitirá ligar e desligar um LED, por meio de comando de voz utilizando um microfone ligado à porta USB através de um adaptador. Foi utilizado o adaptador de sinal de áudio (conexão P2) para USB "7.1 Channel Sound".

Este exemplo pode ser expandido para utilizar as GPIOs da placa DragonBoard410c para comandar outros dispositivos.

Desenvolvido e escrito por João Vitor Magalhães Barros, aluno de iniciação científica da Faculdade de Tecnologia SENAI "Mariano Ferraz" no curso de Tecnologia em Automação Industrial. Abril de 2017.

Step 1: Instalar Julius

Todos os passos foram executados com Linux 4.4.23 - linaro instalado na DragonBoard 410c da Qualcomm.

O programa em Python para teste foi executado utilizando a versão Python 2.7.2.

- Adicionar os repositórios brasileiros:

Abra o arquivo source.list usando o caminho / etc/apt/source.list

Adicione ao início da lista de repositórios as seguintes linhas:

  • deb http://ftp.br.debian.org/debian/ squeeze main contrib non-free
  • deb-src http://ftp.br.debian.org/debian/ squeeze main contrib non-free deb
  • http://ftp.br.debian.org/debian/ squeeze-updates main contrib non-free deb-src
  • http://ftp.br.debian.org/debian/ squeeze-updates main contrib non-free

Então salve o arquivo.

2º - Atualizar o Linux e instalar bibliotecas necessárias

Abra o terminal e digite os seguintes comandos:

  • ...$ sudo apt-get install update
  • ...$ sudo apt-get install upgrade

  • ...$ sudo apt-get install build-essential zlib1g-dev flex

  • ...$ sudo apt-get install libasound2-dev libesd0-dev libsndfile1-dev
  • ...$ sudo apt-get install alsa-tools alsa-oss flex zlib1g-dev libc-bin
    libc-dev-bin python-pexpect libasound2 libasound2-dev cvs build-essential libesd0-dev libsndfile1-dev

- Baixar a biblioteca de reconhecimento de voz Julius 4.3.1

Entre no site: http://julius.osdn.jp/en_index.php e baixe o arquivo compactado.

- Configurar opções de compilação pelas variáveis de ambiente:

Digite o seguinte comando no terminal:

  • ...$ export CFLAGS="-O2 -mcpu=arm1176jzf-s -mfpu=vfp -mfloatabi=hard -pipe -fomit-frame-pointer"

5º - Instalar o Julius

Extraia o arquivo baixado compactado do Julius, entre na pasta julius-4.3.1 pelo Terminal e digite:

  • ...$ sudo ./configure aarch64-unknown-linux
  • ...$ sudo make clean

  • ...$ sudo make

  • ...$ sudo make install

Para testar se a instalação foi feita com sucesso, utilize o comando:

  • ...$ julius -version

Caso tenha sido bem sucedido, os dados técnicos irão aparecer no terminal

Step 2: Instalar O Coruja

1º - Baixe os modelos acústicos do Coruja pelo link:

coruja_jlapisapi1.5.rar

2º - Extraia o arquivo baixado na pasta do usuário (geralmente: /home/linaro).

Esses arquivos devem estar dentro da pasta extraída:

  • dic.temp
  • julius.jconf
  • LaPSAM1.5.am.bin
  • LaPSAM1.5.tiedlist
  • LaPSLM1.5.lm.bin

Step 3: Modificando O Coruja Para a Aplicação Do Programa

1º - Entre na pasta "coruja_jlapsapi" e substitua o arquivo existente "julius.jconf" pelo anexo, nele há algumas modificações e ajustes para a execução do programa em tempo real, taxas de frequência, etc.

2º - Ainda na pasta "coruja_jlapsapi", substitua também o arquivo "dic.temp" pelo fornecido em anexo. O motivo dessa mudança é que dependendo do ambiente e a captação do microfone, o Julius pode confundir palavras, então sempre é recomendado reduzir a biblioteca de palavras no coruja para poucas palavras; as que serão utilizadas para a aplicação, e de preferência com vocábulos distintos.

3º - No Terminal novamente, acesse a pasta onde está localizado o arquivo "julius.jconf" e defina o dispositivo de áudio com o seguinte comando:

  • ...$ export ALSADEV="plughw:1,0"

4º - Execute o Julius através do seguinte comando:

  • ...$ julius -input mic -C julius.jconf

Para sair da execução do programa, pressione Ctrl+C.

Step 4: Configuração Das Saídas Digitais Da DragonBoard

1º - Instalação da biblioteca "libsoc"

Baixe a biblioteca "libsoc", dentro da sua pasta de usuário (geralmente: /home/linaro).

  • ...$ git clone https://github.com/jackmitch/libsoc.git

Caso nesse passo ou em qualquer outro, houver erro ao executar a função git clone, escreva o comando abaixo e tente baixar novamente:

  • ...$ Export GIT_SSL_NO_VERIFY=1

Instale a biblioteca "libsoc" com os seguintes comandos:

  • ...$ cd libsoc
  • ...$ autoreconf -i

Caso haja erro ao executar a função autoreconf -i, instale-o com o comando abaixo e tente novamente:

  • ...$ apt-get install dh-autoreconf

Prossiga com a instalação:

  • ...$ ./configure --enable-python2 --enable-board=dragonboard410c
  • ...$ make && sudo make install
  • ...$ sudo ldconfig /usr/local/lib

2º - Instalação da biblioteca "96boardsGPIO"

Baixe a biblioteca "96boardsGPIO" da sua pasta de usuário (geralmente: /home/linaro).

  • ...$ git clone https://github.com/96boards/96BoardsGPIO.git

Instale a biblioteca "96boardsGPIO" com os comandos abaixo:

  • ...$ cd 96BoardsGPIO
  • ...$ autoreconf -i
  • ...$ ./configure
  • ...$ make
  • ...$ sudo make install
  • ...$ sudo ldconfig /usr/local/lib

3º - Instalação da biblioteca "mraa"

Baixe a biblioteca "mraa" da sua pasta de usuário (geralmente: /home/linaro).

  • ...$ git clone https://github.com/intel-iot-devkit/mraa.git

Instale a biblioteca "mraa" com os seguintes comandos:

  • ...$ mkdir -p mraa/build
  • ...$ cd mraa/build
  • ...$ cmake ..

Caso haja erro ao executar a função cmake .., instale-o com o seguinte comando e tente novamente:

  • ...$ apt-get install cmake

Prossiga com a instalação:

  • ...$ make
  • ...$ sudo make install
  • ...$ sudo ldconfig /usr/local/lib

4º - Após realizar os passos acima, reinicie o sistema:

  • ...$ sudo reboot

5º - Para testar se todas as instalações foram feitas com sucesso, execute o programa teste em python na pasta 96boards

  • ...$ cd 96BoardsGPIO/examples
  • ...$ sudo python blink.py

É importante lembrar que para testá-lo, deve-se conectar um LED entre a saída 23 (GPIO_A) da DragonBoard e o terminal GND da mesma (veja a figura acima).

Step 5: Implementando O Programa De Reconhecimento De Voz Para Acionar O LED

1º - Além do LED já conectado ao terminal 23, conecte mais um LED entre a saída 25 (o terminal adjacente), e o outro GND (veja figura acima).


2º - Baixe o arquivo do programa em Python anexado e copie-o dentro da pasta "coruja_jlapsapi".

- Compile e execute o programa baixado:

Abra o Terminal, entre na pasta:

  • ...$ cd coruja_jlapsapi

Compile e execute o programa com o comando:

  • ...$ sudo python Reconhecimento.py

Alguns segundos após o programa iniciar, ele pedirá que fale o comando ao microfone.

4º - Para acender o LED 23, a palavra "liga" deve ser dita. O LED 25 confirmará que uma palavra foi recebida e compreendida como presente em seu dicionário. Caso queira apagar o LED 23, é necessário pronunciar ao microfone a palavra "apaga".

Vale relembrar que a taxa de compreensão depende tanto do microfone, da sensibilidade configurada a ele e a forma de pronúncia das palavras.

Caso queira adicionar palavras, para outros comandos, o documento anexado "dicionario.temp" possui as palavras e vocábulos do arquivo original do Coruja, então basta adiciona-las ao arquivo "dic.temp" dentro da pasta coruja_jlapsapi