Tabla de contenido:

Reconocedor de voz: 12 pasos
Reconocedor de voz: 12 pasos

Video: Reconocedor de voz: 12 pasos

Video: Reconocedor de voz: 12 pasos
Video: LOS 12 PASOS DEL PERDON | PAUL FERRINI (Audiolibro Completo) "Voz Real Humana" 2024, Noviembre
Anonim
Reconocedor de voz
Reconocedor de voz

Hola a todos………

Este es mi segundo instructivo que estoy publicando

Bienvenidos todos …

En este Instructable, voy a enseñarle cómo construir un reconocedor de voz usando una placa arduino.

Creo que ya has tenido una experiencia con placas arduino antes, si no, no es un gran problema aquí, pero te recomiendo que te acostumbres ya que es muy interesante jugar con él y crear algunos proyectos geniales. de acuerdo con su creatividad y conocimiento sobre él.

Entonces, para las personas que no tienen experiencia previa en el uso de arduino:

Arduino es un hardware de computadora de código abierto que es fabricado por una empresa que tiene una gran comunidad de diseñadores y fabricantes. Se puede considerar como una pequeña computadora que se puede usar para controlar otros circuitos electrónicos

Arduino está programado en un entorno desarrollado por ellos mismos que se puede descargar fácilmente desde su sitio web

Paso 1: ¿Cómo configurar el entorno?

¿Cómo configurar el entorno?
¿Cómo configurar el entorno?
¿Cómo configurar el entorno?
¿Cómo configurar el entorno?
¿Cómo configurar el entorno?
¿Cómo configurar el entorno?
¿Cómo configurar el entorno?
¿Cómo configurar el entorno?

Solo busca en google "descargar arduino"

Haga clic en "Arduino - Software"

Podrá ver "Descargar el IDE de Arduino"

Elija dependiendo de su sistema operativo

Descárgalo e instálalo

Así que ha instalado con éxito el software y puede escribir su código para arduino y con la ayuda de un cable puede conectar la placa arduino a la computadora y puede insertar el código.

Paso 2: ¿Por qué está aumentando la demanda de Arduino?

Barato

Las placas Arduino son económicas en comparación con otras plataformas de microcontroladores. Costará alrededor de $ 50.

Multiplataforma

El software para Arduino funciona en los sistemas operativos Windows, Macintosh OS y Linux. Si pensamos en otros sistemas de microcontroladores, funcionará solo en Windows o, en otras palabras, se limitará solo a Windows.

Software extensible y de código abierto

El software es de código abierto, por lo que la gente comenzó a estudiarlo en profundidad e incluir bibliotecas (que incluye un conjunto de funciones para su funcionamiento) de otros lenguajes de programación.

Entorno de programación sencillo y sencillo

Es fácil usar el IDE de Arduino (software del que ya hemos hablado …) para personas, incluidos los principiantes, ya que Arduino proporciona una gran cantidad de recursos, que está disponible en Internet de forma gratuita. sobre eso.

Hardware extensible y de código abierto

Los planos de las placas Arduino se publican bajo una licencia Creative Commons, por lo que las personas que tienen experiencia en el diseño de circuitos pueden hacer su propia versión del módulo, también tienen derecho a extender la tecnología y pueden mejorar agregándole características.

Paso 3: ¡¡¡¡¡Empecemos !!!!

Por eso ya les he dicho que este proyecto está enfocado principalmente en el reconocimiento de voz usando el Arduino y que le permita realizar algunas tareas.

Hablando con más claridad ……

Recoge las señales de sonido proporcionadas por el usuario, que se pueden detectar al parpadear el LED y luego se convierte en voz sintetizada.

Paso 4: componentes necesarios

Componentes requeridos
Componentes requeridos
Componentes requeridos
Componentes requeridos
Componentes requeridos
Componentes requeridos

Los principales componentes necesarios para este proyecto son:

Arduino Due x 1

Spark Fun Electret Micrófono Breakout x 1

Salida de amplificador de audio mono Spark Fun x 1

Altavoz: 0,25 W, 8 ohmios x 1

Placa de pruebas x 1

LED de 5 mm: rojo x 3

Resistencia de 330 ohmios x 3

Cables de puente x 1

Soldador x 1

Servidor BitVoicer

Es un servidor de síntesis y reconocimiento de voz para la automatización de voz.

Paso 5: ¿Cómo funciona realmente?

1. Se descubren ondas de audio, luego captura estas ondas y son amplificadas por la placa Sparkfun Electret Breakout.

2. La señal amplificada obtenida del proceso anterior será digitalizada y almacenada en búfer / almacenada en la placa Arduino usando su convertidor de analógico a digital (ADC) presente en ella.

3. Las muestras de audio se proporcionarán al servidor BitVoicer utilizando el puerto serie Arduino presente.

4. BitVoicer Server procesará el flujo de audio y luego reconocerá el discurso que contiene.

5. La voz reconocida se asignará a los comandos que ya ha sido definido por sí mismo antes, luego se enviará de vuelta al Arduino. Si uno de los comandos consiste en sintetizar voz, BitVoicer Server preparará el flujo de audio y lo enviará al Arduino.

6. El Arduino identificará los comandos proporcionados y realizará la acción apropiada. Si se recibe una transmisión de audio, se pondrá en cola en la clase de altavoz BVS y se reproducirá utilizando DUE DAC y DMA.

7. El amplificador de audio mono SparkFun amplificará la señal DAC para que pueda manejar un altavoz de 8 ohmios y pueda escucharse a través de él.

Paso 6: cableado de los componentes

Cableado de los componentes
Cableado de los componentes
Cableado de los componentes
Cableado de los componentes

El primer paso es conectar diferentes componentes en la placa de pruebas y también con la placa arduino como se muestra en la imagen

Recuerde que la placa arduino utilizada aquí es DUE, hay otros modelos diferentes que han sido fabricados por Arduino, cada uno funciona en diferentes niveles de voltaje

La mayoría de las placas Arduino funcionan a 5 V, pero el DUE funciona a 3,3 V

El DUE ya usa una referencia analógica de 3.3 V, por lo que no necesita un puente al pin AREF

Oh, lo siento, olvidé decir que un pin AREF es un "PIN DE REFERENCIA ANALÓGICO" que está presente en una placa arduino como se muestra en la siguiente figura (es un arduino UNO pero similar en un sitio similar en el caso de DUE)

El pin AREF en el DUE está conectado al microcontrolador a través de un puente de resistencia

Para usar el pin AREF, la resistencia R1 debe desoldarse de la PCB [placa de circuito impreso]

Paso 7: proporcionar código a la placa Arduino

Proporcionar código a la placa Arduino
Proporcionar código a la placa Arduino

Entonces, tenemos que cargar el código en la placa Arduino, para que pueda funcionar según las instrucciones proporcionadas en el código.

Es muy fácil hacer esto, te explicaré en detalle cada uno de ellos, sobre qué hacen y cómo funcionan.

¿Cómo instalar una biblioteca?

Entonces, antes de eso, tenemos que saber cómo instalar las bibliotecas de BitVoicer Server en el IDE de Arduino, eso en el software arduino.

Entonces, para eso, abra el IDE de Arduino

En el panel superior, haga clic en "Sketch"

Luego haga clic en "Incluir biblioteca"

En eso, haga clic en "Administrar biblioteca"

Luego se abrirá el administrador de bibliotecas y podremos ver una lista de las bibliotecas que están listas para su instalación o las que ya han sido instaladas

Busque la biblioteca para instalar y luego seleccione el número de versión

Aquí estamos instalando las bibliotecas de BitVoicer Server, que son necesarias para este proyecto

¿Cómo importar una biblioteca.zip?

Las bibliotecas también se pueden distribuir como archivos o carpetas ZIP

El nombre de la carpeta es el nombre de la biblioteca

Dentro de la carpeta habrá un archivo.cpp, un archivo.h y, a menudo, un archivo keywords.txt, una carpeta de ejemplos y otros archivos requeridos por la biblioteca

Desde la versión 1.0.5 de Arduino IDE, puede instalar bibliotecas de terceros en su interior

No descomprima la biblioteca descargada, déjela como está

Para eso, vaya a boceto> Incluir biblioteca> Agregar biblioteca.zip

Seleccione la ubicación del archivo.zip y ábralo.

Regrese al menú Sketch> Import Library.

Si se importa correctamente, esa biblioteca se verá en la parte inferior del menú desplegable cuando navegue.

Paso 8: Programa / Bosquejo

Este es el programa que debe cargarse en Arduino.

Se puede hacer simplemente conectando la placa Arduino a la computadora y cargándola en la placa.

Paso 9: ¿Qué pasa con los códigos escritos?

Ahora veamos qué hace realmente cada una de las funciones escritas en el código ………..

Referencias de biblioteca y declaración de variables

Antes de hablar de esto, debemos conocer y comprender algunas terminologías básicas, que incluyen:

  • BVSP

    Es una biblioteca que nos brinda casi todos los recursos necesarios para intercambiar información con BitVoicer Server

    Hay un protocolo presente conocido como BitVoicer Server Protocol que se implementa a través de la clase de BVSP. Esto es necesario para interactuar con el servidor

  • BVSMic

    Es una biblioteca que implementa todas las cosas que se requieren para grabar el audio usando el convertidor analógico a digital (ADC) de Arduino

    Este audio se almacena en el búfer interno de la clase y se puede recuperar y luego se puede enviar a los motores de reconocimiento de voz que están disponibles en BitVoicer Server

  • BVSSpeaker

    Es una biblioteca que contiene todos los recursos esenciales que se requieren para reproducir transmisiones de audio enviadas desde BitVoicer Server

    Para eso, la placa Arduino debe tener un convertidor digital a analógico (DAC) incorporado

    Arduino DUE es la única placa Arduino que tiene un DAC integrado

Bibliotecas BVSP, BVSMic, BVSSpeaker y DAC, la referencia a estas están escritas en las primeras cuatro líneas que componen el inicio del programa

Cuando instala BitVoicer Server, puede encontrar BitSophia, que proporciona estas cuatro bibliotecas

Cuando el usuario agrega una referencia a la biblioteca BVSSpeaker, la biblioteca DAC que se mencionó anteriormente se invocará automáticamente

La clase BVSP se utiliza para comunicarse con BitVoicer Server

La clase BVSMic se utiliza para capturar y almacenar audio

La clase BVSSpeaker se usa para reproducir audio usando Arduino DUE DAC

2. función de configuración

La función de configuración se utiliza para realizar determinadas acciones como:

Para configurar los modos de pin y sus estados iniciales

Para inicializar la comunicación en serie

Para inicializar la clase BVSP

Para inicializar la clase BVSMic

Para inicializar la clase BVSSpeaker

También establece "controladores de eventos" (punteros de función) para los eventos frameReceived, modeChanged y streamReceived de la clase BVSP

Paso 10: función de bucle

Realiza cinco grandes operaciones:

1. función keepAlive ()

Esta función es para solicitar al servidor sobre la información de estado.

2. función de recepción ()

Esta función es para verificar si el servidor ha enviado algún dato o no, si el servidor envió algún dato lo procesará.

3. Funciones isSREAvailable (), startRecording (), stopRecording () y sendStream ()

Estas funciones se utilizan para controlar las distintas configuraciones en la grabación del audio y luego de que alcance el audio, enviará este audio al servidor BitVoicer.

4. función play ()

Esta función se utiliza para reproducir el audio que está en cola en la clase BVSSpeaker.

5. playNextLEDNote ()

Esta función se utiliza para controlar cómo debe parpadear el LED.

6. Función BVSP_frameReceived

Esta función se llama cada vez que la función recibir () comienza a identificar que se ha recibido una trama completa, aquí estamos ejecutando los comandos obtenidos desde BitVoicer Server. Los comandos que controlan el parpadeo de los LED son de 2 Bytes. En ese primer byte indica el pin y el segundo byte indica el valor del pin. Aquí estamos usando la función analogWrite () para configurar el valor apropiado al pin. En ese momento también tenemos que comprobar si se ha recibido el comando playLEDNotes, que es de tipo Byte. Si se ha recibido, configuro playLEDNotes en verdadero y controlará y marcará la hora actual. Este tiempo lo utilizará la función playNextLEDNote para sincronizar los LED con la canción.

7. Función BVSP_modeChanged

Esta función se llama cada vez que la función recibir () identifica un cambio de modo en la dirección de salida (servidor Arduino). BitVoicer Server puede enviar datos enmarcados o audio al Arduino. Antes de que la comunicación pase de un modo a otro, BitVoicer Server envía una señal. La clase BVSP identifica esta señal y genera o marca el evento modeChanged. En la función BVSP_modeChanged, si el usuario detecta que la comunicación está pasando del modo de flujo al modo enmarcado, sabrá que el audio ha finalizado para que el usuario pueda decirle a la clase BVSSpeaker que deje de reproducir audio.

8. Función BVSP_streamReceived

Esta función se llama cada vez que la función recibir () identifica que se han recibido muestras de audio. Simplemente recupera el audio y lo pone en cola en la clase BVSSpeaker para que la función play () pueda reproducirlos.

9. función playNextLEDNote

Esta función solo se ejecuta si la función BVSP_frameReceived identifica el comando playLEDNotes. Controla y sincroniza los LED con el audio enviado desde BitVoicer Server. Para sincronizar los LED con el audio y conocer la sincronización correcta, se puede utilizar un software gratuito Sonic Visualizer. Nos permite ver las ondas de audio para que la persona pueda saber cuándo se presionó una tecla de piano.

Paso 11: ¿Cómo importar objetos de solución de servidor BitVoicer?

Ahora hemos configurado BitVoicer Server para que funcione con Arduino.

Hay cuatro objetos de solución principales para un servidor BitVoicer: ubicaciones, dispositivos, datos binarios y esquemas de voz.

Miremos estos en detalle:

Ubicaciones

Representa la ubicación física en la que se instala el dispositivo.

Podemos crear una ubicación llamada Inicio.

Dispositivos

Se consideran clientes de BitVoicer Server.

Al igual que al crear una ubicación, podemos crear un dispositivo mixto, para mayor facilidad, déjenos nombrarlo como ArduinoDUE.

A veces, pueden ocurrir algunos desbordamientos de búfer, por lo que para eliminarlos tuve que limitar la velocidad de datos en la configuración de comunicación a 8000 muestras por segundo.

BinaryData es un tipo de comando que BitVoicer Server puede enviar a los dispositivos cliente. En realidad, son matrices de bytes que puede vincular a comandos.

Cuando BitVoicer Server reconoce la voz relacionada con ese comando, envía la matriz de bytes al dispositivo de destino.

Entonces, por esa razón, he creado un objeto BinaryData para cada valor de pin y los llamé ArduinoDUEGreenLedOn, ArduinoDUEGreenLedOff, etc.

Así que tuve que crear 18 objetos BinaryData, por lo que le sugiero que descargue e importe los objetos del archivo VoiceSchema.sof que se proporciona a continuación.

Entonces, ¿qué es un esquema de voz?

Los esquemas de voz son donde todo se junta. el papel principal de ellos es definir cómo deben reconocerse las oraciones y qué comandos deben ejecutarse.

Para cada oración, puede definir tantos comandos como necesite y el orden en que se ejecutarán.

También puede definir retrasos entre cada uno de los comandos proporcionados.

BitVoicer Server solo admite audio PCM mono de 8 bits (8000 muestras por segundo), por lo que será necesario convertir el archivo de audio a este formato, hay tantos peajes de conversión en línea presentes en la actualidad y recomiendo https://audio.online -convert.com/convert-to-wav.

Puede importar (Importar objetos de solución) todos los objetos de solución que utilicé en este proyecto desde los archivos a continuación.

Uno de ellos contiene el dispositivo DUE y el otro contiene el esquema de voz y sus comandos.

Paso 12: Conclusión

¡¡¡¡¡Ahí tienes !!!

Has hecho un proyecto increíble y puedes hablar con él

Así que empieza a hablar ………………

Puede hacer parpadear los LED y al mismo tiempo puede decir que canta una canción si es necesario, su código ya ha sido proporcionado

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

Sí……

Creo que todos lo entendieron…

Si alguien tiene alguna pregunta, no dude en preguntarme

La próxima vez se me ocurrirá un excelente Instructable …

Adiós…

Te veo pronto……………

Recomendado: