Team:Valencia Biocampus/talking

From 2012.igem.org

(Difference between revisions)
(VOICE RECOGNIZER)
(VOICE RECOGNIZER)
Line 59: Line 59:
=== '''VOICE RECOGNIZER''' ===
=== '''VOICE RECOGNIZER''' ===
-
Julius es un motor de reconocimiento de habla continua en tiempo real basado en la interpretación de modelos ocultos de Markov. Es de código abierto y se distribuye con licencia BSD. Su principal plataforma es Linux y otros sistemas Unix, también funciona en Windows. Ha sido desarrollado como parte de un kit de software libre para investigación en Reconocimiento de habla continua de amplio vocabulario (LVCSR) desde 1977 y el trabajo ha sido continuado por la Kyoto University de Japón de 1999 hasta el 2003.
+
Julius es un motor de reconocimiento de habla continua en tiempo real basado en la interpretación de Modelos Ocultos de Markov. Es de código abierto y se distribuye con licencia BSD. Su principal plataforma es Linux y otros sistemas Unix, también funciona en Windows. Ha sido desarrollado como parte de un kit de software libre para investigación en Reconocimiento de habla continua de amplio vocabulario (LVCSR) desde 1977 y el trabajo ha sido continuado por la Kyoto University de Japón de 1999 hasta el 2003.
Para usar Julius es necesario crear un modelo de lenguaje y un modelo acústico. Julius adopta los modelos acústicos y los diccionarios de pronunciación del software HTK, que a diferencia  de Julius no es opensource, pero que puede ser usado y descargado para su uso y posterior generación de los modelos acústicos.  
Para usar Julius es necesario crear un modelo de lenguaje y un modelo acústico. Julius adopta los modelos acústicos y los diccionarios de pronunciación del software HTK, que a diferencia  de Julius no es opensource, pero que puede ser usado y descargado para su uso y posterior generación de los modelos acústicos.  
Line 93: Line 93:
El modelo de lenguaje hace referencia a la gramática sobre la que el reconocedor va a trabajar y especificará las frases que podrá identificar.
El modelo de lenguaje hace referencia a la gramática sobre la que el reconocedor va a trabajar y especificará las frases que podrá identificar.
En Julius, la gramática de reconocimiento se compone por dos archivos separados: <br>
En Julius, la gramática de reconocimiento se compone por dos archivos separados: <br>
-
- fichero . voca: listado de las palabras que contendrá la gramática.  
+
- fichero . voca: listado de las palabras que contendrá la gramática. <br>
-
- fichero .grammar:  Se especifica la gramática del lenguaje a reconocer.  
+
- fichero .grammar:  Se especifica la gramática del lenguaje a reconocer. <br>
Ambos archivos deben ser convertidos a .dfa y a .dict utilizando el compilador de gramáticas "mkdfa.pl"
Ambos archivos deben ser convertidos a .dfa y a .dict utilizando el compilador de gramáticas "mkdfa.pl"
El archivo generado .dfa representa un autómata finito y el archivo .dict contiene el diccionario de palabras en el formato de Julius.
El archivo generado .dfa representa un autómata finito y el archivo .dict contiene el diccionario de palabras en el formato de Julius.

Revision as of 17:18, 30 August 2012



Talking Interfaces


THE PROCESS


The main objective of our project is to accomplish a verbal communication with our microorganisms. To do that, we need to establish the following process:




  1. The basic life cycle of our biological agent is based on an input/output process through the use of interfaces.
  2. The input used is a voice signal (question), which will be collected by our voice recognizer.
  3. The voice recognizer identifies the question and, through the program in charge of establishing the communication, its corresponding identifier is written in the assigned port of the arduino.
  4. The software of the arduino reads the written identifier and, according to it, the corresponding port is selected, indicating the flourimeter which wavelength has to be emitted on the culture. There are four possible questions (q), and each of them is associated to a different wavelength.
  5. The fluorimeter emits light (Bioinput), exciting the compound through optic filters.
  6. Due to the excitation produced, the compound emits fluorescence (BioOutput), which is measured by the fluorimeter with a sensor.
  7. This fluorescence corresponds to one of the four possible answers (r: response).
  8. The program of the arduino identifies the answer and writes its identifier in the corresponding port.
  9. The communication program reads the identifier of the answer from the port.
  10. "Espeak" emits the answer via a voice signal (Output).


In this section we analyse in detail the main element used in the process:

  • Voice recognizer
  • Arduino
  • Fluorimeter


VOICE RECOGNIZER

Julius es un motor de reconocimiento de habla continua en tiempo real basado en la interpretación de Modelos Ocultos de Markov. Es de código abierto y se distribuye con licencia BSD. Su principal plataforma es Linux y otros sistemas Unix, también funciona en Windows. Ha sido desarrollado como parte de un kit de software libre para investigación en Reconocimiento de habla continua de amplio vocabulario (LVCSR) desde 1977 y el trabajo ha sido continuado por la Kyoto University de Japón de 1999 hasta el 2003. Para usar Julius es necesario crear un modelo de lenguaje y un modelo acústico. Julius adopta los modelos acústicos y los diccionarios de pronunciación del software HTK, que a diferencia de Julius no es opensource, pero que puede ser usado y descargado para su uso y posterior generación de los modelos acústicos.


MODELO ACÚSTICO


Un modelo acústico es un fichero que contiene una representación estadística de cada uno de los diferentes sonidos que conforman una palabra (fonemas). Julius permite reconocer voz mediante dictado continuo o mediante el uso de una gramática previamente introducida. Sin embargo el uso del dictado continuo conlleva un problema. Para ello es necesario un modelo acústico entrenado con una gran cantidad de ficheros de voz. A mayor número de ficheros de sonido conteniendo voces y textos diferentes mayor ratio de acierto tendrá el modelo acústico. Esto conllevo muchas variaciones: la pronunciación de la persona que entrena el modelo, el dialecto utilizado,... Actualmente, Julius no dispone de un modelo en Inglés lo suficientemente bueno para dictado continuo.

Debido los diferentes problemas que conlleva este tipo de reconocimiento, nosotros optamos por la segunda opción. Diseñamos una gramática empleando el modelo acústico de Voxforce, basado en modelos ocultos de Markov. Para ello es necesario el siguiente fichero:
- fichero.dict: lista de todas las palabras que queremos que reconozca nuestro cultivo y su correspondiente descomposición en fonemas.


  • Análisis acústico:
    Los modelos acústicos toman las propiedades acústicas de la señal de entrada, obtienen un conjunto de vectores de características que después compararán con un conjunto de patrones que representan los símbolos de un alfabeto fonético y devuelve los símbolos que más se parecen. En esto se basa el proceso matemático probabilístico llamado Modelo Oculto de Markov. El análisis acústico se basa en la extracción de un vector de características de la señal acústica de entrada con el fin de aplicar la teoría de reconocimiento de patrones. Éste vector es una representación paramétrica de la señal acústica, conteniendo la información más importante y almacenándola de la forma más compacta posible. Con el fin de extraer un buen conjunto de vectores, la señal es preprocesada reduciendo el ruido y la correlación.

  • Modelos Ocultos de Markov (HMM, Hidden Markov Model):
    <rellenar>


MODELO DE LENGUAJE


El modelo de lenguaje hace referencia a la gramática sobre la que el reconocedor va a trabajar y especificará las frases que podrá identificar. En Julius, la gramática de reconocimiento se compone por dos archivos separados:
- fichero . voca: listado de las palabras que contendrá la gramática.
- fichero .grammar: Se especifica la gramática del lenguaje a reconocer.
Ambos archivos deben ser convertidos a .dfa y a .dict utilizando el compilador de gramáticas "mkdfa.pl" El archivo generado .dfa representa un autómata finito y el archivo .dict contiene el diccionario de palabras en el formato de Julius.


<figura de la gramática empleada>

Una vez hemos definido el modelo acústico y el modelo de lenguaje, únicamente falta la implementación del programa principal en Phyton. En él ejecutamos Julius y a través del reconocimiento de voz identificamos la pregunta realizada al cultivo.


Arduino

Fluorimeter