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.
1º - 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
3º - 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.
4º - 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:
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.
Attachments
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".
3° - 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
3 Comments
5 years ago
Só não entendi muito bem onde defino as portas que eu posso utilizar. E se eu posso utilizar mais de uma porta com palavras diferentes para aciona-las. Poderia me explicar esses pontos ?
5 years ago
Cara, parabéns pelo tutorial, muito legal!
5 years ago
Obrigado por compartilhar :)