Índice:

Reconhecedor de fala: 12 etapas
Reconhecedor de fala: 12 etapas

Vídeo: Reconhecedor de fala: 12 etapas

Vídeo: Reconhecedor de fala: 12 etapas
Vídeo: Resumo fácil para entender os elementos da comunicação 2024, Novembro
Anonim
Reconhecedor de Fala
Reconhecedor de Fala

Olá a todos………

Este é o meu segundo instrutível que estou postando

Portanto, sejam bem vindos a todos …

Neste Instructable, vou ensinar a você como construir um reconhecedor de voz usando uma placa Arduino.

Então eu acho que você já teve uma experiência com placas arduino antes. Se não, não é um grande problema aqui. Mas eu recomendo que você se acostume com isso, pois é muito interessante brincar com ele e criar alguns projetos legais fora dele de acordo com sua criatividade e conhecimento sobre ele.

Então, para as pessoas que não têm experiência anterior no uso do arduino:

Arduino é um hardware de computador de código aberto fabricado por uma empresa que possui uma grande comunidade de designers e fabricantes. Ele pode ser considerado como um pequeno computador que pode ser usado para controlar outros circuitos eletrônicos

O Arduino é programado em um ambiente desenvolvido por eles mesmos, que pode ser facilmente baixado de seu site

Etapa 1: como configurar o ambiente?

Como configurar o ambiente?
Como configurar o ambiente?
Como configurar o ambiente?
Como configurar o ambiente?
Como configurar o ambiente?
Como configurar o ambiente?
Como configurar o ambiente?
Como configurar o ambiente?

Basta pesquisar no google "baixar arduino"

Clique em "Arduino - Software"

Você poderá ver "Baixe o IDE do Arduino"

Escolha dependendo do seu sistema operacional

Baixe e instale-o

Então você instalou o software com sucesso e pode escrever seu código para o arduino e com a ajuda de um cabo você pode conectar a placa do arduino ao computador e inserir o código.

Etapa 2: Por que a demanda pelo Arduino está aumentando?

Barato

As placas Arduino são baratas em comparação com outras plataformas de microcontroladores. Custará cerca de US $ 50.

Plataforma cruzada

O software para Arduino funciona em sistemas operacionais Windows, Macintosh OS e Linux. Se pensarmos em outros sistemas de microcontroladores, ele funcionará apenas no Windows ou, em outras palavras, limitado apenas ao Windows.

Software de código aberto e extensível

O software é de código aberto, de forma que as pessoas começaram a estudá-lo profundamente e a incluir bibliotecas (que inclui um conjunto de funções para seu funcionamento) de outras linguagens de programação.

Ambiente de programação simples e fácil

É fácil usar o IDE do Arduino (software sobre o qual já discutimos …) para pessoas, incluindo iniciantes, uma vez que uma grande quantidade de recursos são fornecidos pelo próprio Arduino que está disponível na Internet gratuitamente. Portanto, sinta-se à vontade para aprender mais sobre isso.

Hardware de código aberto e extensível

Os planos das placas Arduino são publicados sob uma licença Creative Commons, de modo que as pessoas com experiência em design de circuitos podem fazer sua própria versão do módulo, também têm o direito de estender a tecnologia e podem melhorar adicionando recursos a ela.

Etapa 3: vamos começar !!!!

Por isso já disse que este projeto tem como foco principal o reconhecimento de voz usando o Arduino e permitir a realização de algumas tarefas.

Falando mais claramente ……

Ele capta os sinais sonoros fornecidos pelo usuário, que podem ser detectados ao piscar do LED após serem convertidos em voz sintetizada.

Etapa 4: Componentes necessários

Componentes necessários
Componentes necessários
Componentes necessários
Componentes necessários
Componentes necessários
Componentes necessários

Os principais componentes necessários para este projeto são:

Arduino Due x 1

Disjuntor de microfone de eletreto Spark Fun x 1

Amp de áudio Mono Spark Fun Breakout x 1

Alto-falante: 0,25 W, 8 ohms x 1

Placa de ensaio x 1

LED de 5 mm: Vermelho x 3

Resistor 330 ohm x 3

Jumper fios x 1

Ferro de solda x 1

BitVoicer Server

É um servidor de reconhecimento e síntese de voz para automação de voz.

Etapa 5: Como realmente funciona?

1. As ondas de áudio estão sendo descobertas, em seguida, ele captura essas ondas e são amplificadas pela placa Sparkfun Electret Breakout.

2. O sinal amplificado obtido no processo acima será digitalizado e armazenado em buffer / armazenado na placa Arduino usando seu conversor analógico-digital (ADC) presente nela.

3. As amostras de áudio serão fornecidas ao BitVoicer Server usando a porta serial do Arduino presente.

4. O BitVoicer Server processará o stream de áudio e então reconhecerá a fala nele contida.

5. A fala reconhecida será mapeada para os comandos que já foram definidos por ela mesma antes, então ela será enviada de volta para o Arduino. Se um dos comandos consistir em sintetizar a fala, o BitVoicer Server irá preparar o stream de áudio e enviá-lo para o Arduino.

6. O Arduino identificará os comandos fornecidos e executará certas ações apropriadas. Se um fluxo de áudio for recebido, ele será enfileirado na classe BVS Speaker e reproduzido usando DUE DAC e DMA.

7. O Amplificador de Áudio Mono SparkFun amplificará o sinal DAC para que possa acionar um alto-falante de 8 Ohm e ser ouvido através dele.

Etapa 6: Conexão dos componentes

Fiação dos componentes
Fiação dos componentes
Fiação dos componentes
Fiação dos componentes

A primeira etapa é conectar diferentes componentes na placa de ensaio e também na placa arduino, conforme mostrado na imagem

Lembre-se de que a placa arduino usada aqui é DUE, existem diferentes outros modelos que foram fabricados pela Arduino, cada um funciona em diferentes níveis de tensão

A maioria das placas Arduino funciona a 5 V, mas o DUE funciona a 3,3 V

O DUE já usa uma referência analógica de 3,3 V, portanto, você não precisa de um jumper para o pino AREF

Oh, desculpe, esqueci de dizer que um pino AREF é um "PIN DE REFERÊNCIA ANALÓGICA" que está presente em uma placa arduino como mostrado na próxima figura (é um arduino UNO, mas é semelhante em um site semelhante no caso do DUE)

O pino AREF no DUE é conectado ao microcontrolador por meio de uma ponte de resistor

Para usar o pino AREF, o resistor R1 deve ser dessoldado da PCB [Placa de circuito impresso]

Etapa 7: Fornecendo Código para a Placa Arduino

Fornecendo código para a placa Arduino
Fornecendo código para a placa Arduino

Portanto, temos que fazer o upload do código para a placa Arduino, para que ele possa funcionar dependendo das instruções fornecidas no código.

É muito fácil fazer isso. Vou explicar cada um deles detalhadamente, sobre o que fazem e como funcionam.

Como instalar uma biblioteca?

Portanto, antes disso, temos que saber como instalar as bibliotecas do BitVoicer Server no IDE do Arduino, isso no software do arduino.

Então, para isso, abra o IDE do Arduino

No painel superior, clique em "Sketch"

Em seguida, clique em "Incluir Biblioteca"

Nesse clique em "Gerenciar Biblioteca"

Em seguida, o gerenciador de bibliotecas será aberto e podemos ver uma lista de bibliotecas que estão prontas para instalação ou que já foram instaladas

Procure a biblioteca a ser instalada e selecione o número da versão

Aqui estamos instalando as bibliotecas do BitVoicer Server, necessárias para este projeto

Como importar uma biblioteca.zip?

As bibliotecas também podem ser distribuídas como um arquivo ZIP ou pasta

O nome da pasta é o nome da biblioteca

Dentro da pasta estará um arquivo.cpp, um arquivo.h e geralmente um arquivo keywords.txt, uma pasta de exemplos e outros arquivos exigidos pela biblioteca

A partir da versão 1.0.5 do Arduino IDE, você pode instalar bibliotecas de terceiros dentro dele

Não descompacte a biblioteca baixada, deixe-a como está

Para isso, vá para esboço> Incluir biblioteca> Adicionar biblioteca.zip

Selecione a localização do arquivo.zip e abra-o.

Retorne ao menu Sketch> Import Library.

Se for importado corretamente, essa biblioteca deve ser vista na parte inferior do menu suspenso quando você navegar.

Etapa 8: Programa / Esboço

Este é o programa que deve ser carregado no Arduino.

Isso pode ser feito simplesmente conectando a placa Arduino ao computador e enviando-a para a placa.

Etapa 9: e os códigos escritos?

Agora, vamos dar uma olhada no que cada uma das funções escritas no código realmente faz ………..

Referências de biblioteca e declaração de variável

Antes de falar sobre isso, temos que conhecer e compreender algumas terminologias básicas. Estas incluem:

  • BVSP

    É uma biblioteca que nos fornece quase todos os recursos necessários para a troca de informações com o BitVoicer Server

    Existe um protocolo conhecido como BitVoicer Server Protocol que é implementado através da classe de BVSP. Isso é necessário para interagir com o servidor

  • BVSMic

    É uma biblioteca que implementa todas as coisas necessárias para gravar o áudio usando o conversor analógico-digital (ADC) do Arduino

    Este áudio fica armazenado no buffer interno da classe e pode ser recuperado e enviado para os motores de reconhecimento de voz disponíveis no BitVoicer Server

  • BVSSpeaker

    É uma biblioteca que contém todos os recursos essenciais necessários para reproduzir streams de áudio enviados do BitVoicer Server

    Para isso, a placa Arduino deve ter um conversor digital para analógico (DAC) integrado

    Arduino DUE é a única placa Arduino que possui um DAC integrado

Bibliotecas BVSP, BVSMic, BVSSpeaker e DAC, a referência a estas está escrita nas primeiras quatro linhas que compõem o início do programa

Ao instalar o BitVoicer Server, você encontrará o BitSophia, que oferece todas essas quatro bibliotecas

Quando o usuário adiciona uma referência à biblioteca BVSSpeaker, a biblioteca DAC mencionada anteriormente será chamada automaticamente

A classe BVSP é usada para se comunicar com o BitVoicer Server

A classe BVSMic é usada para capturar e armazenar áudio

A classe BVSSpeaker é usada para reproduzir áudio usando o Arduino DUE DAC

2. função de configuração

A função de configuração é usada para realizar certas ações como:

Para definir os modos de fixação e seus estados iniciais

Para inicializar a comunicação serial

Para inicializar a classe BVSP

Para inicializar a classe BVSMic

Para inicializar a classe BVSSpeaker

Ele também define “manipuladores de eventos” (ponteiros de função) para os eventos frameReceived, modeChanged e streamReceived da classe BVSP

Etapa 10: Função de loop

Realiza cinco operações principais:

1. função keepAlive ()

Esta função é para solicitar ao servidor as informações de status.

2. função receive ()

Esta função é para verificar se o servidor enviou algum dado ou não. Se o servidor enviar algum dado, ele irá processá-lo.

3. Funções isSREAvailable (), startRecording (), stopRecording () e sendStream ()

Estas funções são utilizadas para controlar as várias configurações na gravação do áudio e após quando atingir o áudio será enviado ao BitVoicer Server.

4. função play ()

Esta função é usada para reproduzir o áudio que está na fila da classe BVSSpeaker.

5. playNextLEDNote ()

Esta função é utilizada para controlar como o Led deve piscar.

6. Função BVSP_frameReceived

Esta função é chamada toda vez que a função receive () começa a identificar que um frame completo foi recebido. Aqui estamos executando os comandos obtidos do BitVoicer Server. Os comandos que controlam o piscar dos LEDs são de 2 bytes. Nesse primeiro byte indica o pino e o segundo byte indica o valor do pino. Aqui estamos usando a função analogWrite () para definir o valor apropriado para o pino. Nesse momento, também temos que verificar se o comando playLEDNotes, que é do tipo Byte, foi recebido. Se tiver sido recebido, defino playLEDNotes como true e ele monitorará e marcará a hora atual. Este tempo será usado pela função playNextLEDNote para sincronizar os LEDs com a música.

7. Função BVSP_modeChanged

Esta função é chamada toda vez que a função receive () identifica uma mudança no modo na direção de saída (Servidor Arduino). O BitVoicer Server pode enviar dados em frames ou áudio para o Arduino. Antes que a comunicação passe de um modo para outro, o BitVoicer Server envia um sinal. A classe BVSP identifica este sinal e dispara ou sinaliza o evento modeChanged. Na função BVSP_modeChanged, se o usuário detectar que a comunicação está passando do modo stream para o modo framed, ele saberá que o áudio foi encerrado para que o usuário diga à classe BVSSpeaker para interromper a reprodução do áudio.

8. Função BVSP_streamReceived

Esta função é chamada sempre que a função receive () identifica que amostras de áudio foram recebidas. Ele simplesmente recupera o áudio e o enfileira na classe BVSSpeaker para que a função play () possa reproduzi-lo.

9. função playNextLEDNote

Esta função só é executada se a função BVSP_frameReceived identificar o comando playLEDNotes. Ele controla e sincroniza os LEDs com o áudio enviado do BitVoicer Server. Para sincronizar os LEDs com o áudio e saber o tempo correto, pode-se usar um software livre Sonic Visualizer. Ele nos permite observar as ondas de áudio para que a pessoa possa saber quando uma tecla de piano foi pressionada.

Etapa 11: Como importar objetos da solução do BitVoicer Server?

Agora configuramos o BitVoicer Server para funcionar com o Arduino.

Existem quatro objetos principais de solução para um BitVoicer Server: Locations, Devices, BinaryData e Voice Schemas.

Vejamos isso em detalhes:

Localizações

Ele representa o local físico no qual o dispositivo está sendo instalado.

Podemos criar um local chamado Casa.

Dispositivos

Eles são considerados clientes do BitVoicer Server.

Como na criação de um local, podemos criar um dispositivo Mixed, para facilitar, vamos chamá-lo de ArduinoDUE.

Às vezes, alguns estouros de buffer podem ocorrer, então, para eliminá-los, tive que limitar a taxa de dados nas configurações de comunicação para 8.000 amostras por segundo.

BinaryData é um tipo de comando que o BitVoicer Server pode enviar para dispositivos clientes. Eles são, na verdade, matrizes de bytes que você pode vincular a comandos.

Quando o BitVoicer Server reconhece a fala relacionada àquele comando, ele envia a matriz de bytes para o dispositivo de destino.

Portanto, por esse motivo, criei um objeto BinaryData para cada valor de pino e os denominei ArduinoDUEGreenLedOn, ArduinoDUEGreenLedOff e assim por diante.

Então eu tive que criar 18 objetos BinaryData, então eu sugiro que você baixe e importe os objetos do arquivo VoiceSchema.sof que é fornecido abaixo.

Então, o que é um esquema de voz?

Os esquemas de voz são onde tudo se junta. o principal papel deles é definir como as sentenças devem ser reconhecidas e o que todos os comandos precisam ser executados.

Para cada frase, você pode definir quantos comandos precisar e a ordem em que serão executados.

Você também pode definir atrasos entre cada um dos comandos fornecidos.

O BitVoicer Server suporta apenas áudio PCM mono de 8 bits (8000 amostras por segundo), portanto, será necessário converter o arquivo de áudio para este formato, pois existem tantos pedágios de conversão online hoje e eu recomendo https://audio.online -convert.com/convert-to-wav.

Você pode importar (Importando objetos de solução) todos os objetos de solução que usei neste projeto dos arquivos abaixo.

Um deles contém o dispositivo DUE e o outro contém o esquema de voz e seus comandos.

Etapa 12: Conclusão

Ai está !!!

Você fez um projeto incrível e pode conversar com ele

Então comece a falar ………………

Você pode piscar os LEDs e ao mesmo tempo dizer que canta uma música se precisar, seu código já foi fornecido

Portanto, concluí meu segundo instrutível !!!!!!!!

Sim……

Acho que todos entenderam …

Se alguém tiver alguma dúvida, sinta-se à vontade para me perguntar

Vou apresentar um excelente Instructable da próxima vez …

Tchau…

Vejo você em breve……………

Recomendado: