cmusphinx IA Programação srvOuve
Sphinx reconhecimento de audio gravado

Para este experimento iremos utilizar o seguinte texto:

https://www.nasa.gov/mp3/586447main_JFKwechoosemoonspeech.mp3

Trata-se do famoso discurso de J.F. Kenedy, sobre a necessidade de ir a lua.

A transcrição do audio, pode ser vista neste link.

JFK RICE MOON SPEECH (nasa.gov)

Preparação do Arquivo

Primeiramente precisamos converter o texto em wav.

ffmpeg -i 586447main_JFKwechoosemoonspeech.mp3 -ar 16000 -ac -1 jfk.wav

o ffmpeg, faz a conversão do texto no formato desejado para analise. O arquivo é preparado para uma taxa de amostragem de 16k.

Lendo o arquivo

pocketsphinx_continuous -infile jfk.wav > jfk.txt

Segue o que ele ouviu

i got an r n n n
not because they are easy one because they are hot
the car and gold
wilson to organize then it then asked
our energy density else
we got it at our ideas and won that we’re willing to exactly
while we are unwilling to postpone
and one nintendo wii in and then look

Podemos perceber que neste primeiro processo ele ouviu muita coisa errada, porem algumas palavras de cara deram certo. “not because they are easy”. Porem a qualidade do audio comprometeu em muito a leitura.

O parametro -infile, permite ler o arquivo origem, porem o mesmo precisa ser previamente preparado para leitura deste.

Pudemos verificar que a qualidade do audio foi importante para refletir a acuracia do audio, iremos pegar algo mais simples agora.

Segundo exemplo

Neste segundo exemplo extraímos o audio do seguinte link:

https://freesound.org/people/tim.kahn/sounds/82986/

Neste link temos uma contagem regressiva, bem pronunciada de uma voz feminina.

Iremos baixar o wav e passar um filtro conforme a sintaxe abaixo:

ffmpeg -i 82986__tim-kahn__countdown.wav -ar 16000 -ac 1 countdown.wav

Agora iremos processar o arquivo, jogando o resultado no arquivo countdown.txt

pocketsphinx_continuous -infile 82986__tim-kahn__countdown.wav > countdown.txt

Temos como conteudo, o seguinte texto:

ten
nine
eight seven
six five four three two
wind
zero

Podemos perceber que de 10 itens falados, apenas o one, não foi ouvido corretamente.

Referencias:

https://freesound.org/browse/tags/english/

Blog cmusphinx IA Reconhecimento de Voz srvOuve
CMU Sphinx

Temos visto uma crescente de IoT desenvolvidos especificamente para reconhecer comandos de seu dono, tais dispositivos, como Alexa ou o Google Home, tem se tornado, bem popular.

Iremos neste artigo, aprender a criar nosso próprio google home.

O que é o CMU Sphinx

CMU Sphinx é uma api de reconhecimento de voz. Ela é bastante consagrada, possuindo muitos projetos atrelados a ela.

Trato a biblioteca com bastante foco para desenvolvimento IoT, no meu livro que pode ser baixado livremente.

A grande vantagem desta api, é que ela não necessita de conexão externa ou acesso a internet.

Uso do CMU Sphinx

Utilizaremos o CMU Sphinx como base do nosso projeto.

GIT do Projeto

cmusphinx · GitHub

Site do Projeto

CMUSphinx Documentation – CMUSphinx Open Source Speech Recognition

Divisão por Projetos

O CMU Sphinx, possui diversos softwares ou pacotes separados.

Irei abordar alguns deles, que serão algo deste artigo.

  • sphixbase – Biblioteca base
  • pocketsphinx – Conjunto de fontes e dicionário para reconhecimento de vóz usado no sphinxbase.
  • sphinxtrain – Ferramenta de Traino de modelos acústicos
  • Modelo em portguês

Instalação do Sphinx

Pré requisitos de instalação

Para atender a instalação será necessário as seguintes bibliotecas:

apt install bison

apt install libasound2-dev

apt install swig

apt install python

Pré requisitos de instalação

Instalação do Sphinx pelo gerenciador de pacotes

A instalação do sphinx pelo gerenciador de pacote, fica bem mais fácil, porem pode ser necessário, atualizar manualmente a versão, pois ninguem garante que o repositório estará atualizado com a ultima versão.

apt install shinxbase*

apt install pocketsphinx*

instalação através do gerenciador de pacotes

Baixa manual

Nesta modalidade iremos baixar e instalar o sphinx manualmente em nosso linux.

Primeiramente iremos baixar o projeto no git

git clone https://github.com/cmusphinx/sphinxbase.git

Baixando o projeto do repositório

digite agora o autogen para gerar os arquivos de configuração.

./autogen.sh

execução do autogen.sh

Agora, rode o /configure, conforme a linha a seguir:

./configure –enable-fixed

Em seguida compile o projeto:

make clean all

make

make install

Ao fim do processo, voce terá instalado a base.

Instalando o Pocket Sphinx

Bom fizemos a instalação do Sphinxbase, mas iremos agora, adicionar o pacote, necessário para desenvolvimento desktop.

A instalação tradicional já foi passada na instalação do sphinxbase, por isso iremos omitir.

Iremos agora orientar na compilação dos fontes.

Baixe os fontes do repositório:

git clone https://github.com/cmusphinx/pocketsphinx.git

Em seguida entre na pasta e realize os seguintes comandos:

./autogen.sh

./configure

make check

make install

make installcheck

ldconfig

Ao fim do projeto, se der certo, irá aparecer o seguinte binário.

> pocketsphinx_continuous

Ao tentar rodar, ele irá pedir parametros, vamos testar agora com parametros adicionais.

pocketsphinx_continuous -adcdev plughw:1,0 -kws_threshold 1e-20 -inmic yes

Neste modo ele irá ouvir comandos em inglês, fale um simples hello, que voce irá verificar que o mesmo funciona.

Teste de hello

Bom, finalizamos este primeiro artigo, no próximo, iremos criar uma aplicação que ouve as pessoas. Sendo nosso hello world em C.

Espero que tenham gostado.

Reconhecimento de voz com sphinx

maurinsoft.com.br