Em 01998 tive a grande satisfação de participar do projeto VOX, juntamente com Francisco Socal e Rafael de Figueiredo e sob a orientação de Daniel Hart. O projeto foi desenvolvido como trabalho de conclusão do nosso curso técnico em eletrônica, na Fundação Liberato.
Como o título do trabalho sugere, nosso objetivo era desenvolver um método baseado em redes neurais que permitisse reconhecer as palavras faladas pelo usuário. Utilizando um vocabulário limitado a quatro palavras, chegamos a obter taxas de reconhecimento em torno de 80% com o sistema calibrado para um locutor específico. Considero este resultado excelente, sobretudo considerando que éramos alunos de um curso técnico de nível médio (“segundo grau”, na época) que nem era focado em programação, e ainda por cima em tempos em que a Internet a recém engatinhava.
Boa parte do que produzimos durante a realização deste projeto está disponibilizado a seguir. Mas antes, um alerta: o código fonte do VOX está cheio de técnicas de programação toscas e vazamentos de memória. Não tente usá-lo para aprender a programar. Sério. Doze anos de C++ depois, eu sei do que estou falando!
- Relatório: O documento que relata o desenvolvimento do projeto e os resultados que obtivemos. [PDF (1,5MB) ou PDF zipado (211kB)].
- Apresentação controlada pela fala: Uma apresentação do projeto, que também serve de demonstração, já que é controlada pela fala. [ZIP (5,8MB) contendo os fontes (C++ Builder), binário executável (Win32) e arquivos de dados necessários]
- VOX: Programa genérico: Permite coletar amostras para treinamento, treinar a rede neural e testar o reconhecimento. [ZIP (171kB) contendo os fontes (C++ Builder) e executável (Win32)]
- Reconhecedor de bandeiras: Um programa que não tem nada a ver com reconhecimento de fala, mas foi criado durante o projeto VOX como um experimento com redes neurais. Identifica a que país (Brasil, Argentina ou Japão) pertence uma pequena bandeira desenhada pelo usuário. [ZIP (153kB) contendo os fontes (C++ Builder), o executável (Win32) e arquivo de dados com os pesos da rede neural.]
- Fontes principais: Pacote com todas as rotinas relacionadas a captura e processamento do som e redes neurais. São necessárias para compilar os outros programas. O código é C++ para Win32, mas as classes de redes neurais utilizam a classe
TFileStreamda biblioteca do C++ Builder, da Borland. É bem fácil modificar estas rotinas para usar a classestd::fstreamda biblioteca padrão do C++, mas eu não pretendo fazer isso. [ZIP (11kB)]