Wiki

Clone wiki

gpyvozcontrol / pruebas

Pruebas y Resultados


  1. Campaña de Pruebas

Campaña de Pruebas

Para verificar el nivel de logro alcanzado con la implementación del sistema GpyVozControl y comparar sistemáticamente las dos bibliotecas de soporte que utiliza, se realizaron 3 conjuntos de pruebas a los modelos acústicos creados con las bibliotecas Julius y CMUSphinx, cada una con 100 audios grabados, de las cuales 2 pruebas se grabaron con un micrófono externo y 1 prueba con el micrófono integrado en el equipo. Las pruebas fueron realizadas por dos voces masculinas y una voz femenina. A continuación se muestra un fragmento de las frases grabadas para las pruebas (el total de los archivos de prueba se encuentra en el repositorio del proyecto):

/01 abrir reproductor
/02 cierra el reproductor
/03 activa orca
/04 reducir la ventanas
/05 bajar volumen al equipo
/06 abrir calculadora
/07 minimizar las ventanas
/08 presentar proyecto
/09 cambiar a la lamina ochenta y cuatro
/10 vozcontrol
/11 maximizar las ventanas
/12 maximiza las ventanas
/13 apagar sistema
/14 subir volumen al equipo
/15 cambiar a la lamina once
/16 abrir mensajeria
/17 cerrar el reproductor
/18 reduce todas la ventanas
/19 cambiar a la lamina cincuenta y seis
/20 primera cancion
...

En las siguientes secciones se describe el proceso llevado a cabo para cada biblioteca.

Pruebas y resultados en Julius

Ejecución de pruebas

Para realizar pruebas al modelo acústico creado con la biblioteca Julius, se siguió el libro de HTK "HTKBOOK", sección 3.4.

HTKnecesita de una red de palabras, la cual se crea a partir de la gramática utilizada, representada como se muestra a continuación (este archivo se debe crear. Para el sistema de órdenes de voz se llama "gramatica"):

$ACCION = abrir $|$ abre;
$ACCION _V = cerrar $|$ cierra $|$ maximiza$[$r$]$ $|$ minimiza$[$r$]$ $|$ amplía$[$r$]$ $|$ reducir $|$ reduce;
$EDICION = presentaci$|$ó$|$n $|$ texto $|$ documento $|$ hoja;
$PROGRAMA _O = calculadora $|$ navegador $|$ mensajer{ ' i}a $|$ terminal $|$ consola $|$ correo;
$SISTEMA = equipo $|$ sistema;
$ACCION _S = apagar $|$ reiniciar;
$ARCHIVO = personal $|$ videos $|$ música $|$ descargas $|$ documentos;
$LA = la $|$ las;
$ACCION _R = siguiente $|$ anterior $|$ detener $|$ reproducir;
$ACCION _L = primera $|$ última $|$ cambiar $|$ próxima;
$ACCION _RP = bajar $|$ subir $|$ silenciar;
$ACCION _RP _1 = cerrar $|$ cierra $|$ pausa$[$r$]$;
$LAMINA = lámina $|$ canción;
$TESIS = tesis $|$ proyecto;
$ACTIVO = canción $|$ ventana;
$DECIR = decir $|$ dime;
$DIGIT5 = uno $|$ dos $|$ tres $|$ cuatro $|$ cinco;
$DIGIT9 = seis $|$ siete $|$ ocho $|$ nueve;
$DIGIT10 = diez $|$ once $|$ doce $|$ trece $|$ catorce $|$ quince;
$DIGIT100 = veinte $|$ treinta $|$ cuarenta $|$ cincuenta $|$ sesenta $|$ setenta $|$ ochenta $|$ noventa;
$ACCION _A = activa$[$r$]$ $|$ desactiva$[$r$]$;
$ACCESIBILIDAD = orca $|$ teclado $|$ magnificador;
$DATE = hora $|$ fecha;
(SENT-START ( vozcontrol $|$ $ACCION (editor de $EDICION $|$ $PROGRAMA _O $|$ carpeta $ARCHIVO $|$ reproductor) $|$ $ACCION _V $[$todas$]$ $LA ventanas$]$ $|$ $ACCION _R $LAMINA $|$ $ACCION _RP volumen al (reproductor $|$ $SISTEMA) $|$ t{í}tulo de la $ACTIVO $|$ $DECIR la $DATE $|$ $ACCION _L $LAMINA $|$ $ACCION _RP _1 el reproductor $|$ $ACCION _S $SISTEMA $|$ presentar $TESIS $|$ $LAMINA $ACCION _R $|$ cambiar a la lámina ( $DIGIT5 $|$ $DIGIT9 $|$ $DIGIT10 $|$ $DIGIT100 $[$y ( $DIGIT5 $|$ $DIGIT9)$]$) $|$ $ACCION _A $ACCESIBILIDAD) SENT-END)

donde '$|$' (barras verticales) son elementos alternativos y '$[$ $]$' (corchetes) son elementos opcionales. Con el archivo "gramatica" y el comando "HParse" se crea la red de palabras:

HParse gramatica RedPalabras

lo que genera el archivo "RedPalabras".

Teniendo que "tes.scp" contiene la lista de los archivos de pruebas codificadas (es parecido al archivo "train.scp" creado en el paso 6 descrito en un capítulo anterior), entonces cada archivo de prueba es reconocido ejecutando el siguiente comando:

HVite -T 1 -C ../../../input_files/config -H ../../hmm15/macros -H ../../hmm15/hmmdefs -S tes.scp   
-l '*' -i reconocimiento -w ../RedPalabras   
-p 0.0 -s 5.0 ../../../lexicon/VoxForgeDict.txt ../../tiedlist

lo que genera el archivo "reconocimiento", los archivos "tiedlist", "hmm15/macros" y "hmm15/hmmdefs" que fueron creados con el modelo acústico.

Ahora para obtener los resultados reales de prueba, se ejecuta:

HResults -I tes.mlf tiedlist reconocimiento

lo que da el rendimiento real del modelo acústico, donde el archivo "tes.mlf" contiene transcripciones de nivel de palabra de cada archivo de prueba (descrito en el paso 4).

Los comandos anteriormente mencionados se ejecutan mediante el siguiente script:

#! /usr/bin/env python
# coding: utf-8

import os

os.system("HVite -T 1 -C ../../../input_files/config -H ../../hmm15/macros -H ../../hmm15/hmmdefs -S tes.scp   
-l '*' -i reconocimiento -w ../RedPalabras   
-p 0.0 -s 5.0 ../../../lexicon/VoxForgeDict.txt ../../tiedlist")

os.system('HResults -I tes.mlf ../tiedlist reconocimiento')

que fue implementado en python y se llama "tesdepruebas.py".

Y las corridas de los 3 conjuntos de prueba se realiza mediante el script "corridaTes.sh" y que contiene:

#! /bin/bash
# coding: utf-8

echo "Script para ejecutar todas las pruebas"
echo ""
echo "Corriendo la prueba 1"
cd prueba1/
python ../tesdepruebas.py > ../resultado1
cd ..

echo "Corriendo la prueba 2"
cd prueba2/
python ../tesdepruebas.py > ../resultado2
cd ..

echo "Corriendo la prueba 3"
cd prueba3/
python ../tesdepruebas.py > ../resultado3
cd ..

Resultados

Estos son los resultados obtenidos para cada una de las pruebas realizadas en el modelo acústico de Julius:

  • Masculino (micrófono externo)
====================== HTK Results Analysis =======================
  Date: Sun Dec 20 14:47:06 2015
  Ref : tes.mlf
  Rec : reconocimiento
------------------------ Overall Results --------------------------
SENT: %Correct=52.00 [H=52, S=48, N=100]
WORD: %Corr=74.84, Acc=74.84 [H=235, D=9, S=70, I=0, N=314]
===================================================================

dando un 52.0 % de frases reconocidas de un total de 100 y un 74.84 % de palabras reconocidas de un total de 314.

Donde: "H" son las palabras reconocidas, "D" los errores de eliminación, "S" los errores de sustitución, "I" los errores de inserción y "N" el número total de palabras. Esos errores se refieren siempre a acciones del sistema que no corresponden con lo que debe hacer. Por ejemplo, reemplazar una palabra por otra diferente es un error de sustitución, eliminar la palabra es uno de eliminación y agregar una palabra sin necesidad es un error de inserción.

  • Prueba 2: Femenino (micrófono externo)
====================== HTK Results Analysis =======================
  Date: Sun Dec 20 14:47:12 2015
  Ref : tes.mlf
  Rec : reconocimiento
------------------------ Overall Results --------------------------
SENT: %Correct=44.00 [H=44, S=56, N=100]
WORD: %Corr=59.24, Acc=59.24 [H=186, D=39, S=89, I=0, N=314]
===================================================================

dando un 44.0 % de frases reconocidas de un total de 100 y un 59.24 % de palabras reconocidas de un total de 314.

  • Prueba 3: Masculino (micrófono interno)
====================== HTK Results Analysis =======================
  Date: Sun Dec 20 14:47:18 2015
  Ref : tes.mlf
  Rec : reconocimiento
------------------------ Overall Results --------------------------
SENT: %Correct=61.00 [H=61, S=39, N=100]
WORD: %Corr=81.21, Acc=80.25 [H=255, D=6, S=53, I=3, N=314]
===================================================================

dando un 61 % de frases reconocidas de un total de 100 y un 81,21 % de palabras reconocidas de un total de 314.

Pruebas y resultados en CMUSphinx

Ejecución de prueba

Para realizar las pruebas al modelo acústico creado con la biblioteca CMUSphinx, es necesario tener un modelo de lenguaje, para esto se sigue el tutorial ["Reconocimiento de voz"] 14. A continuación se detalla como se crea el modelo de lenguaje.

Estos son los programas necesarios para crear el modelo de lenguaje:
+ Kit de modelo de lenguaje: http://svr-www.eng.cam.ac.uk/~prc14/CMU-Cam_Toolkit_v2.tar.gz
+ Convertidor de modelo de lenguaje: http://www.speech.cs.cmu.edu/sphinx/download/nightly/lm3g2dmp.nightly.tar.gz

Para compilar dichos programas, se deben seguir los pasos en el archivo "README" de cada carpeta.

Ahora bien, para la creación del modelo de lenguaje, se crea un archivo de texto formateando las transcripciones del archivo "etc/gpyvozcontrol _train.transcription" eliminando los identificadores. El siguiente script "corpus.py", creado para este proyecto, realiza esta acción:

#! /usr/bin/env python
# coding: utf-8

import re

f = open('etc/gpyvozcontrol_train.transcription', 'r')
c = open('lm/train.corpus', 'w')
t = ""

for a in f:
    t = re.sub('[]  (  d  )]', ", a)
    c.write(t)

f.close()
c.close()

Con esto se crea el archivo de texto "train.corpus" en la carpeta "lm". Luego se crea el archivo "con.ccs" con lo siguiente:

<s>

y se crea el modelo, ejecutando el código:

cat train.corpus | ../../programas/CMU-Cam_Toolkit_v2/bin/text2wfreq | sort -rn -k 2 > train.wfreq

cat train.wfreq | ../../programas/CMU-Cam_Toolkit_v2/bin/wfreq2vocab -gt 0 > train.vocab

cat train.corpus | ../../programas/CMU-Cam_Toolkit_v2/bin/text2wngram -n 3 -temp /tmp >  train.w3gram

cat train.w3gram | ../../programas/CMU-Cam_Toolkit_v2/bin/wngram2idngram -n 3 -vocab train.vocab -temp /tmp > train.id3gram

../../programas/CMU-Cam_Toolkit_v2/bin/idngram2lm -idngram  train.id3gram -vocab train.vocab -context con.ccs -witten_bell -n 3 -vocab_type 1 -arpa train.lm

Por último, se transforma el modelo a formato "DMP":

../../programas/lm3g2dmp/lm3g2dmp train.lm ../etc/

esto genera el archivo "train.lm.DMP", que se renombra a "gpyvozcontrol.lm.DMP" y se coloca en la carpeta "etc/".

Ya teniendo los archivos "etc/gpyvozcontrol _test.transcription" y "etc/gpyvozcontrol _test.fileids", creados en la sección 3.2.2, solo queda ejecutar:

sphinxtrain -s decode run

realizando esta operación para cada una de las pruebas.

Resultado

Estos son los resultados obtenidos para cada una de las pruebas realizadas en el modelo acústico de CMUSphinx:

  • Prueba 1: Masculino (micrófono externo)

En el siguiente fragmento se puede observar lo que reconoce el modelo:

ABRIR   reproductor  (prueba1-01)
ALGUIEN reproductor  (prueba1-01)
Words: 2 Correct: 1 Errors: 1 Percent correct = 50.00% Error = 50.00% Accuracy = 50.00%
Insertions: 0 Deletions: 0 Substitutions: 1
cierra el  reproductor  (prueba1-02)
cierra el  reproductor  (prueba1-02)
Words: 3 Correct: 3 Errors: 0 Percent correct = 100.00% Error = 0.00% Accuracy = 100.00%
Insertions: 0 Deletions: 0 Substitutions: 0
ACTIVA  orca  (prueba1-03)
ACTIVAR orca  (prueba1-03)
Words: 2 Correct: 1 Errors: 1 Percent correct = 50.00% Error = 50.00% Accuracy = 50.00%
Insertions: 0 Deletions: 0 Substitutions: 1
reducir LA  VENTANA   (prueba1-04)
reducir LAS VENTANAS  (prueba1-04)
Words: 3 Correct: 1 Errors: 2 Percent correct = 33.33% Error = 66.67% Accuracy = 33.33%
Insertions: 0 Deletions: 0 Substitutions: 2
***   BAJAR VOLUMEN AL  equipo  (prueba1-05)
VAMOS UN    EN      EL  equipo  (prueba1-05)
Words: 4 Correct: 1 Errors: 4 Percent correct = 25.00% Error = 100.00% Accuracy = 0.00%
Insertions: 1 Deletions: 0 Substitutions: 3
abrir calculadora  (prueba1-06)
abrir calculadora  (prueba1-06)
Words: 2 Correct: 2 Errors: 0 Percent correct = 100.00% Error = 0.00% Accuracy = 100.00%
Insertions: 0 Deletions: 0 Substitutions: 0

lo que da como resultado:

TOTAL Words: 314 Correct: 168 Errors: 167
TOTAL Percent correct = 53.50% Error = 53.18% Accuracy = 46.82%
TOTAL Insertions: 21 Deletions: 17 Substitutions: 129
  • Prueba 2: Femenino (micrófono externo)

Se puede observar un fracmento de lo que reconoce el modelo:

ABRIR   REPRODUCTOR  (prueba2-01)
AMPLIAR TODO         (prueba2-01)
Words: 2 Correct: 0 Errors: 2 Percent correct = 0.00% Error = 100.00% Accuracy = 0.00%
Insertions: 0 Deletions: 0 Substitutions: 2
cierra el  reproductor  (prueba2-02)
cierra el  reproductor  (prueba2-02)
Words: 3 Correct: 3 Errors: 0 Percent correct = 100.00% Error = 0.00% Accuracy = 100.00%
Insertions: 0 Deletions: 0 Substitutions: 0
ACTIVA ORCA   (prueba2-03)
AQUÍ   AHORA  (prueba2-03)
Words: 2 Correct: 0 Errors: 2 Percent correct = 0.00% Error = 100.00% Accuracy = 0.00%
Insertions: 0 Deletions: 0 Substitutions: 2
reducir la  ventana  (prueba2-04)
reducir la  ventana  (prueba2-04)
Words: 3 Correct: 3 Errors: 0 Percent correct = 100.00% Error = 0.00% Accuracy = 100.00%
Insertions: 0 Deletions: 0 Substitutions: 0
*** BAJAR VOLUMEN AL  equipo  (prueba2-05)
VA  ÁRBOL NOVENTA EL  equipo  (prueba2-05)
Words: 4 Correct: 1 Errors: 4 Percent correct = 25.00% Error = 100.00% Accuracy = 0.00%
Insertions: 1 Deletions: 0 Substitutions: 3
abrir calculadora  (prueba2-06)
abrir calculadora  (prueba2-06)
Words: 2 Correct: 2 Errors: 0 Percent correct = 100.00% Error = 0.00% Accuracy = 100.00%
Insertions: 0 Deletions: 0 Substitutions: 0

lo que da como resultado:

TOTAL Words: 314 Correct: 135 Errors: 205
TOTAL Percent correct = 42.99% Error = 65.29% Accuracy = 34.71%
TOTAL Insertions: 26 Deletions: 36 Substitutions: 143
  • Prueba 3: Masculino (micrófono interno)

Se puede observar un fragmento de lo que reconoce el modelo:

abrir *** reproductor  (prueba3-01)
abrir EL  reproductor  (prueba3-01)
Words: 2 Correct: 2 Errors: 1 Percent correct = 100.00% Error = 50.00% Accuracy = 50.00%
Insertions: 1 Deletions: 0 Substitutions: 0
cierra el  reproductor  (prueba3-02)
cierra el  reproductor  (prueba3-02)
Words: 3 Correct: 3 Errors: 0 Percent correct = 100.00% Error = 0.00% Accuracy = 100.00%
Insertions: 0 Deletions: 0 Substitutions: 0
ACTIVA    ORCA     (prueba3-03)
ACTIVARON PORTERO  (prueba3-03)
Words: 2 Correct: 0 Errors: 2 Percent correct = 0.00% Error = 100.00% Accuracy = 0.00%
Insertions: 0 Deletions: 0 Substitutions: 2
reducir LA  VENTANA  (prueba3-04)
reducir LO  ROBARON  (prueba3-04)
Words: 3 Correct: 1 Errors: 2 Percent correct = 33.33% Error = 66.67% Accuracy = 33.33%
Insertions: 0 Deletions: 0 Substitutions: 2
*** BAJAR VOLUMEN AL  equipo  (prueba3-05)
VA  ÁRBOL EL      PAN equipo  (prueba3-05)
Words: 4 Correct: 1 Errors: 4 Percent correct = 25.00% Error = 100.00% Accuracy = 0.00%
Insertions: 1 Deletions: 0 Substitutions: 3
abrir calculadora  (prueba3-06)
abrir calculadora  (prueba3-06)
Words: 2 Correct: 2 Errors: 0 Percent correct = 100.00% Error = 0.00% Accuracy = 100.00%
Insertions: 0 Deletions: 0 Substitutions: 0

lo que da como resultado:

TOTAL Words: 314 Correct: 181 Errors: 175
TOTAL Percent correct = 57.64% Error = 55.73% Accuracy = 44.27%
TOTAL Insertions: 42 Deletions: 16 Substitutions: 117

Las comparaciones a nivel de palabras, que ambas plataformas realizan a su manera, muestran que Julius-HTK alcanza un mejor rendimiento que CMUSphinx en ese contexto restringido.

anterior Inicio Siguiente

Updated