Em artigos anteriores eu apresentei o uso e instalação do CMU Sphinx no Linux. Neste artigo irei retratar a instalação no windows. Primeiro baixe o projeto CMU Sphinx do git: O git do projeto: https://github.com/cmusphinx/sphinxtrain Em seguida instale o Visual Studio 2020 Express: https://visualstudio.microsoft.com/pt-br/vs/express/ Após a instalação, entre no visual studio e abra o projeto… Read more: Instalando Sphinx no Windows
Iremos falar do processo de instalação do SpeechRecognition. https://pypi.org/project/SpeechRecognition/ Que permite reconhecer voz e converter para texto, utilizando o google e outros métodos como o CMU Speech. Instalação no ubuntu: Irei abordar todos estes processos em outros artigos. Porem neste vamos preparar o ambiente para o uso em python. Por enquanto é só. Nos próximos… Read more: Reconhecimento de voz – primeiros passos
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… Read more: Sphinx reconhecimento de audio gravado
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… Read more: CMU Sphinx
Definição Ninja é um pequeno conjunto de ferramentas, desenvolvido por Evan Martin, um empregado da Google. Ninja foi usado em diversas construções de aplicações. Entre suas vantagens estão a facilidade de montagem de aplicação, a velocidade e rapidez. Outra vantagem é a capacidade de construir aplicações em multiplos SOs. (Windows, Linux, MacOS). Referência: https://en.wikipedia.org/wiki/Ninja_(build_system) Construção… Read more: Montagem de código em C com Ninja
GIT
Para aqueles que querem o projeto já pronto, segue o git
Agora usaremos o nome hello, para o nosso primeiro programa.
Neste momento , voce deve conseguir compilar um hello world.
Agora iremos começar a trabalhar.
Primeiramente iremos incluir as dll do sphinx. As DLLs estão no projeto que compilamos o sphinx.
No nosso projeto hello, crie uma pasta libs, e adicione a dll copiada.
Iremos adicionar agora a lib ao nosso projeto
Arraste a DLL para o Gerenciador de Soluções > hello.
Irá ser incluída a dll ao projeto.
Copie os includes do sphinxbase, para o projeto hello, e adicione na pagina de propriedades do hello, na aba c/c++> Geral > Diretórios de Inclusão Adicionais.
Agora irei faze-lo no Windows usando o Visual Studio.
Isso se dá porque geralmente eu prefiro o Linux ao Windows para desenvolvimento. A escolha é pessoal, e foi um hábito adquirido, no passar dos anos, pois o Linux, em minha opinião, oferece uma oportunidade maior de crescimento profissional. No que tange aprendizado de baixo nível.
Porem sem querer entrar nas questões de plataforma, há também necessidade, vez ou outra, usar o windows para desenvolvimento.
E para ser sincero, muitas vezes me sinto desconfortável, até pela falta de prática do uso desta plataforma.
Instalando o OPENCV no Windows
Porem para chegar nesse ponto, irei apresentar alguns artigos, que devem ser necessários para este fim.
O primeiro é a instalação do OpenCV e sua respectiva configuração no ambiente windows.
Primeiramente vamos baixar o opencv no site:
https://opencv.org/
Site do OpenCV
Baixe a ultima versão desta lib.
De forma geral ao tentar instalar, ele compacta na pasta: C:\Users\marce\Downloads
Eu costumo mover ele para o raiz do D:\ , no caso, caso não use um segundo disco, faça em seu c:\
Pronto a instalação do OpenCV foi realizada.
Preparando ambiente Visual Studio
Agora vou criar uma pasta VS, dentro do meu D:\opencv\
O C precisa de duas coisas para funcionar, se tratando de bibliotecas, includes e libs.
Includes são os cabeçalhos das funções.
Libs são os binários (DLLs)
Copiando a pasta include, já marcada acima, dentro do VS.
No caminho D:\opencv\build\x64\vc16 ou equivalente, pois o build contem os arquivos pré compilados, onde no meu caso irei utilizar a plataforma win 64 bits, por isso o X64. Copiarei as pastas bin e lib da pasta, para o VS, conforme mostrado a seguir:
Agora precisamos incluir o caminho completo do bin, nas variáveis de ambiente:
Criando Hello World
Agora vamos dar inicio a criação do projeto no visual studio.
Entre no Visual Studio e crie um projeto.
Agora, selecionamos o tipo de projeto:
Como o visual studio tem muitos templates, é mais fácil pesquisar c++ na aba de pesquisa, e selecionar Projeto Vazio, conforme figura acima.
Digite o nome Hello World no Nome do projeto, conforme apresentado, e o local, indique a sua pasta de projeto. Por fim click no botão CRIAR.
Va na aba de gerenciador de Soluções, e click com botão direito no nome do projeto. Selecione NEW > Novo Item.
Mude para main.cpp e pressione adicionar.
Agora, iremos mudar o projeto, para incluir os locais que criamos no opencv.
Em PROJETO > Pagina de Propriedades, conforme figura abaixo:
Abra a aba C/C++, localize Diretórios de Inclusão Adicionais, incluindo o seguinte item:
Inclua a pasta do include.
Agora vamos adicionar a lib.
Em GERAL > Vinculador , Diretórios de Biblioteca Adicionais
Inclua o a pasta D:\opencv\VS\lib
Agora iremos mostrar qual a lib que será adicionada.
A lib que iremos usar para debug, é opencv_world480d.lib.
Para isso vamos em Propriendades de Configuração > Vinculador > Entrada > Dependências Adicionais.
Pronto agora vamos ao código.
Inclusão do fonte:
Iremos usar o fonte que apontamos no artigo anterior, com uma pequena modificação.
#include <opencv2/opencv.hpp>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace cv;
using namespace std;
int main(int, char**)
{
Mat frame;
//--- INITIALIZE VIDEOCAPTURE
VideoCapture cap;
// open the default camera using default API
//cap.open(0);
// OR advance usage: select any API backend
int deviceID = 0; // 0 = open default camera
int apiID = cv::CAP_ANY; // 0 = autodetect default API
// open selected camera using selected API
cap.open(deviceID, apiID);
// check if we succeeded
if (!cap.isOpened()) {
cerr << "ERROR! Unable to open camera\n";
return -1;
}
//--- GRAB AND WRITE LOOP
cout << "Start grabbing" << endl
<< "Press any key to terminate" << endl;
for (;;)
{
// wait for a new frame from camera and store it into 'frame'
cap.read(frame);
// check if we succeeded
if (frame.empty()) {
cerr << "ERROR! blank frame grabbed\n";
break;
}
// show live and wait for a key with timeout long enough to show images
imshow("Live", frame);
if (waitKey(5) >= 0)
break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
Salve o programa, e como de praxe para o windows, reinicie o visual studio, para validar as modificações do ambiente.
Agora é só rodar o OpenCV e pronto.
Por fim para aqueles que quiserem, segue o github:
O matcher é um módulo do SPACY destinado a encontrar padrões.
Um exemplo de código:
from spacy.matcher import Matcher
mat = Matcher(nlp.vocab)
padrao =[{"ORTH":"("},"SHAPE":"dd"},{"ORTH":")"},{"ORTH":"-","OP":"?"},{"IS_DIGIT":True})
doc= nlp("Meu telefone é (16) 981434112")
matches= matcher(doc)
for match_id, start, end in mat:
print(doc[start:end])