Sei sulla pagina 1di 9

RECONOCIMIENTO DE PATRONES EN IMÁGENES

Luis Brito Ayabaca


Universidad Politécnica Salesiana.
Facultad de Ingeniería Electrónica
Informática Industrial
Cuenca, Ecuador
lbrito@est.ups.edu.ec

Abstract. In this document we will proceed to indicate 3. Identificar la ¨Misión` de la red neuronal
how the implementation of htk is done for the recognition artificial en la solución del problema e
of yes words and not with this program. identificar sus ventajas.

Palabras clave— Redes neuronales, Control Automático,


Reconocimiento de Patrones.
MARCO TEÒRICO
INTRODUCCIÓN
A. REDES NEURONALES ARTIFICIALES
El presente trabajo de investigación tiene como marco Las redes neuronales (también conocidas
conceptual e investigativo dos de los avances como sistemas conexionistas) son un modelo
científicos más importantes del conocimiento que son computacional basado en un gran conjunto de unidades
el desarrollo del análisis de imágenes mediante la neuronales simples (neuronas artificiales) de forma
inteligencia artificial implementando redes neuronales aproximadamente análoga al comportamiento
con las cuales podemos hacer que las RNA reconozcan observado en los axones de las neuronas en los
imágenes semejantes dentro de una base de datos pero cerebros biológicos1. La información de entrada
esto lo aran previo a un entrenamiento de las mismas atraviesa la red neuronal (donde se somete a diversas
con lo cual hace que el reconocimiento de una cierta operaciones) produciendo unos valores de salida. Cada
patología dérmica sea reconocida de una manera visual neurona está conectada con otras a través de unos
mediante la implementación de imágenes con lo cual enlaces. En estos enlaces el valor de salida de la
hace que el avance y el desarrollo de este tipo de neurona anterior es multiplicado por un valor de peso.
tecnologías sean para poder desarrollar el campo de la Estos pesos en los enlaces pueden incrementar o inhibir
medicina desde un punto tecnológico. el estado de activación de las neuronas adyacentes. Del
mismo modo, a la salida de la neurona, puede existir
 Los Sistemas de Control Automáticos una función limitadora o umbral, que modifica el valor
 Las Redes Neuronales Artificiales resultado o impone un límite que se debe sobrepasar
antes de propagarse a otra neurona. Esta función se
En esta investigación se modelan dos procesos, en cada conoce como función de activación.
uno de los cuales se pretenden controlar
automáticamente más de una variable de salida .Para lo
anterior se aplica una estrategia de control predictivo IDENTIFICAMOS LA PROBLEMATICA
usando redes neuronales artificiales. Por tanto, el
desarrollo de ambientes automatizados dotados de real Reconocer la voz mediante la implementación de dos
inteligencia, capaz de adaptarse por un lado al uso que nuevos audios tanto si como no mediante el programa
se les da y por otro mantener condiciones propicias que llegando
apoyen la seguridad y el ahorro energético, son
características esenciales en los futuros sistemas de éste DESARROLLO
tipo. Primero procedemos a instalar el htk con el cual se
procederá a reconocer la voz.
OBJETIVOS
Primero debemos de bajar el htk y el visual studio 2011
1. Identificar el problema a resolver. de la página.
2. Identificar el tipo de red neuronal usada.

1
Cuando instalamos el visual studio debemos enlazar la
dirección tanto de la visual como del htk al Path del
sistema.

mkdir bin.win32

Luego procedemos a introducir en el


cmd los siguientes códigos, con los
cuales se crearan nuevos archivos.

Luego se procede a ingresar en el cmd


cd HTKLib
nmake /f htk_htklib_nt.mkf all
cd ../HTKTools
nmake /f htk_htktools_nt.mkf all
cd ../HLMLib
nmake /f htk_hlmlib_nt.mkf all
cd ../HLMTools
nmake /f htk_hlmtools_nt.mkf all

Cuando el Sistema HTK se instala bien nos sale algo


como esto.

Luego se procede a instalar el vcvars

2
comandos de Windows (cmd), sin poner todo el path
completo, sólo si el directorio bin.win32 está en el path
del sistema.

Luego de esto colocamos la ruta del C:\Program Files


Creación del Corpus de Entrenamiento
(x86)\htk\bin.win32
Para crear el corpus de entrenamiento lo hacemos
cambiando 16000hz y en un solo canal además también
Para que pueda entrenarse la neurona
tenemos que crear un archivo htk .
Luego de esto procedemos a revisar lo siguiente en el
- Propiedades de Sonido: se grabe a 16Khz y 16
cmd.
bin (mono)
Organización del Espacio de Trabajo
- Apply Configuration: se indique que se usará
Para seguir el ejemplo propuesto se ha creado la la HTK Transcription
siguiente estructura de directorios:
Prueba\ : contiene todos los scripts (ficheros .bat) para
ejecutar los comandos HTK junto a los ficheros de
configuración.
Prueba\sonidos : donde están los ficheros de audio
(que serán .wav : a 16KHz y 16 bit/muestra).
Prueba\labels : donde están los ficheros de etiquetas
que contienen las transcripciones de cada fichero de
audio en Prueba/sonidos usados para entrenar.
Prueba\vcar : donde se almacenarán los ficheros de
características (por ejemplo cepstrum) correspondientes
a ficheros de audio en Prueba/sonidos
Prueba/recono : donde se guardarán los ficheros de
etiquetas que contienen las transcripciones de cada
fichero reconocido.
Prueba\hmms: donde estarán los HMMs prototipo de
SI, NO y RUIDO.
Prueba\hmmsiniciales: donde estarán los HMMs
después de utilizar el primer paso de entrenamiento
HINIT.
Prueba\hmmhrest: donde estarán los HMMs después de
utilizar el segundo paso de entrenamiento HREST.
Prueba\hmmherest: donde estará el fichero que contiene
a TODOS los HMMs después de utilizar el tercer paso
de entrenamiento HEREST. Pero, además del audio, es necesario generar un fichero
(de etiquetas / labels) que contenga una etiqueta (label)
por cada “unidad lingüística/acústicas” a la que se va
Instalación/Acceso Básico HTK
asociar un HMM. Es decir, que si grabamos la primera
frase diciendo “sí” en un fichero de audio si_1.wav, las
El acceso a HTK es el acceso a los programas
“unidades” que hay en ese fichero s1_1.wav serán sil –
ejecutables del directorio ...\HTKV3.XX\bin.win32
si – sil , y esa información debemos “ponerla a mano”
Por tanto se puede acceder desde una ventana de

3
(anotarla) y guardarla en un fichero que se llame Se ha elegido un fichero conf con parámetros que luego
s1_1.lab . permitan hacer pruebas on-line (grabando de
micrófono) con los modelos que genera HTK. Estos
parámetros son:
SOURCEKIND = WAVEFORM // Tipo de datos de
entrada
SOURCEFORMAT = WAV // Extensión de los datos
de entrada
SOURCERATE = 625
// Periodo de muestreo T en unidades de
100 ns (verificar que 1/T = 16 KHz)
ZMEANSOURCE = T
USESILDET = TRUE
// UTILIZA DETECTOR DE ACTIVIDAD
(para pruebas on-line; pero a veces da
problemas y hay que ponerlo a FLASE)
MEASURESIL = FALSE
OUTSILWARN = TRUE
El formato de transcripción (lab) de HTK, es el que se
muestra en el ejemplo siguiente, las marcas de tiempo TARGETKIND = MFCC_0_D_A
de HTK son 10-7 segundos (si_1.lab): // Tipo de codificación a aplicar MelFFT + C0
(Energía) + Delta y Aceleración (Doble Delta)
0 3564899 sil
3564899 6288848 si TARGETFORMAT = HTK
6288848 9835466 sil TARGETRATE = 100000.0 // Desplazamiento cada
10 mseg
Extracción de Características Acústicas SAVEWITHCRC = FALSE
WINDOWSIZE = 250000.0 // Tamaño de la ventana a
El paso siguiente consiste en procesar todos los ficheros aplicar la codificación
grabados si_n.wav, no_n.wav para extraer las USEHAMMING = TRUE
características acústicas sobre las que trabajará el PREEMCOEF = 0.97 // Pre-enfásis
reconocedor. NUMCHANS = 12 // Número de canales del banco de
HTK permite extraer un número muy amplio de filtros
diferentes tipos de características, ceptrum, LPC, MEL, NUMCEPS = 10 // Número de coeficientes cepstrum
FilterBank, PLP,... utilizando la herramienta HCopy. La por ventana
forma más simple de usar HCopy es: // Este Dato junto a MFCC_0_D_A :
HCopy -C conf si_1.wav si_1.mfc nos daría el número de
OPCIONES: // coeficientes que vamos a usar 10
-C conf: Archivo de configuración que indica las ceps + 10 Deltaceps + 10 DDceps + 1C0 +
características acústicas y parámetros a utilizar // 1DC0 +1 DDCep = 33 coeficientes
si_1.wav: Archivo de voz a codificar por trama
si_1.mfc: Archivo con los vectores de características ENORMALISE = FALSE // No normaliza la energía
acústica (PODRÍA COMPENSAR DISTINTOS NIVELES DE
Pero para procesar TODOS los ficheros con una sola GRABACIóN)
orden en este ejemplo usaremos: CEPLIFTER = 22 // Ponderación-filtrado de los
HCopy -C conf -S flist.scp cepstrum LIFTER
(Tal y como está escrito en el fichero SacaCep.bat) USEPOWER = TRUE // Podría usar el valor abs (por
OPCIONES: ejemplo...)
flist.scp : tiene ahora los pares wav de entrada -> mfc
de salida
.\sonidos\si_1.wav .\vcar\si_1.mfc
.\sonidos\si_2.wav .\vcar\si_2.mfc
....
.\sonidos\no_5.wav .\vcar\no_5.mfc

4
Entrenamiento - Paso 1- HINIT
El primer paso va dirigido a tener un primera
inicialización de valores para los parámetros (medias
cero, varianzas 1, prob. transición,..) de los prototipos
iniciales.
HInit utiliza los ficheros de características y las marcas
de etiquetas para hacer una inicialización uniforme
dentro de cada modelo.
Comentar: existe otra posibilidad de inicialización con
Una vez se ejecute: SacaCep.bat (se recomienda HCompv, que tiene la ventaja de calcular un ficheros
hacerlo desde la línea de comando para ver si hay algún (macros) con los límites más pequeños para las
error...). Por ejemplo, la imagen siguiente representa el varianzas de las gaussinas)
error que da HTK por usar ~v varFloor1
USESILDET = TRUE ; en este caso habría que usar: <Variance> 33
USESILDET = FALSE 2.23232e-001 1.03872e-001 (...) 4.00123e-003
Y una vez se ejecute con éxito SacaCep.bat, en Pero en este ejemplo sólo usaremos HInit tal y como se
\Prueba\vcar tendremos si_1.mfc, si_2.mfc,... no_5.mfc ejecuta utilizando el fichero: EntrenaListaHInit.bat
NOTAR primero que hay que ejecutar HInit TRES
HTK tiene una herramienta HList que permite leer uno veces, una para cada modelo: si, no, sil
de estos ficheros para ver los valores de las 33 HInit -T 1 -l si -L .\labels -M .\hmmsiniciales .\hmms\si
características; por ejemplo: -S listatrain
Hlist -h -e 1 si_1.mfc HInit -T 1 -l no -L .\labels -M .\hmmsiniciales
.\hmms\no -S listatrain
Genera por pantalla: HInit -T 1 -l sil -L .\labels -M .\hmmsiniciales
----------------------------------- Source: si_1.mfc .\hmms\sil -S listatrain
-----------------------------------
Sample Bytes: 132 Sample Kind: MFCC_D_A_0 -T 1 : es el nivel de trazado (información que saca
Num Comps: 33 Sample Period: 10000.0 us al ejecutarse)
Num Samples: 98 File Format: HTK -l si : es la etiqueta que buscará para entrenar
------------------------------------ Samples: 0->1 -L .\labels : el directorio donde están las etiquetas
------------------------------------- - M .\hmmsiniciales : directorio de salida, donde
0: -5.769 1.360 -1.041 -1.606 -0.643 -1.303 guardará los modelos nuevos
-1.380 0.017 1.731 1.495 .\hmm\sin : directorio y nombre del fichero con el
58.589 0.279 2.649 2.098 2.927 3.047 HMM de entrada (el prototipo que creamos en la
1.078 2.394 -0.201 -1.034 Sección 5)
-0.393 -1.811 0.360 0.164 0.189 0.027 Y, listatrain, tiene la lista de todos los ficheros del
-0.204 -0.258 -0.458 -0.676 corpus de entrenamiento (los *.mfc del directorio
-0.360 0.012 -0.053 .\vcar)
1: -3.598 9.894 5.159 5.613 7.360 2.961
5.144 2.312 5.040 2.044 .\vcar\si_1.mfc
55.530 0.969 3.575 2.640 3.051 3.669 .\vcar\si_2.mfc
0.158 2.005 -2.530 -1.962 .\vcar\si_3.mfc
0.340 -2.089 0.343 -0.380 -0.218 -0.505 .\vcar\si_4.mfc
-0.743 0.055 -1.005 -0.319 .\vcar\si_5.mfc
-0.367 -0.473 0.120 .\vcar\no_1.mfc
----------------------------------------- END .\vcar\no_2.mfc
------------------------------------------ .\vcar\no_3.mfc
.\vcar\no_4.mfc
Presentando la cabecera del fichero, y los 33 .\vcar\no_5.mfc
componentes para las dos primeras ventanas, la 0 y la 1.
Observar, por ejemplo, que el C0 (relacionado con la La figura siguiente muestra la información que
energía) es el valor mayor que aparece en la posición presenta por pantalla HInit para cada modelo. Se puede
número 11 de cada ventana (58.589 para la 0: ; y apreciar que es un proceso iterativo que va ajustándose
55.530 para la 1:)

5
cada vez más a los datos en términos del logProb veremos que HERest sólo se ejecuta UNA vez y re-
(Revisar teoría). HInit tiene diversos parámetros para estima de forma conjunta los TRES modelos.
definir la convergencia de este proceso, en el ejemplo, HERest -T 1 -L .\labels -M .\hmmherest -d .\hmmhrest
como no se ha especificado nada, se usan los valores -S listatrain listahmms
por defecto. Por ello hay que pasarle un fichero listahmms con la
lista de los modelos a entrenar, en nuestro caso: si, no y
sil.
Tras ejecutar EntrenaListaHERest.bat , el directorio
.\Prueba\hmmherest tendrá un único fichero llamado
newMacros que contiene la definición de los tres
modelos entrenados:
~o
<STREAMINFO> 1 33
<VECSIZE>
33<NULLD><MFCC_D_A_0><DIAGC>
~h "no"
<BEGINHMM>
<NUMSTATES> 14
Como resultado del proceso tendremos, en .....
.\Prueba\hmmsiniciales ficheros si, no y sil con los <ENDHMM>
HMMs generados. ~h "si"
<BEGINHMM>
<NUMSTATES> 14
Entrenamiento - Paso 2 - HREST .....
<ENDHMM>
El siguiente paso re-estima los hmms del paso anterior, ~h "sil"
manteniendo la segmentación inicial de los límites de <BEGINHMM>
cada modelo, pero permitiendo una segmentación no <NUMSTATES> 14
uniforme en el interior de cada modelo/etiqueta .....
(Repasar teoría) <ENDHMM>
La herramienta que se utiliza en este caso es HRest, y
como HInit, si vemos el fichero: EntrenaListaHRest.bat Y con ello finalizamos el proceso de entrenamiento de
hay que ejecutar HRest TRES veces, una para cada los HMMs de este ejemplo, pudiendo pasar a
modelo: si, no, sil evaluarlos.
HRest -T 1 -l si -L .\labels -M .\hmmhrest
.\hmmsiniciales\si -S listatrain Diseño de Tarea de Reconocimiento y Pruebas
HRest -T 1 -l no -L .\labels -M .\hmmhrest
.\hmmsiniciales\no -S listatrain
Una vez que se dispone de modelos HMMs entrenados,
HRest -T 1 -l sil -L .\labels -M .\hmmhrest
hay que especificar cómo se quiere llevar a cabo el
.\hmmsiniciales\sil -S listatrain
reconocimiento para poder la aplicación que se desee
probar, y, posteriormente, utilizar en alguna aplicación.
La diferencia, en las líneas anteriores, con respecto a
Este proceso es muy importante, y, en general, es
HInit, sólo es que el directorio de HMMs de entrada es
mucho más complejo que en el ejemplo que
ahora hmmsiniciales (salida de HInit) y el de salida es
presentamos (Comentar).
hmmhrest (salida de HRest).
En cualquier caso, este ejemplo sencillo ilustra los
La información que HRest presenta por pantalla es
componentes principales componentes a definir o
similar a la de HInit.
diseñar para el proceso de reconocimiento, que serán:
el diccionario y la gramática de reconocimiento.
Entrenamiento - Paso 3 - HEREST
El último paso de re-estima de los hmms es el más
Diccionario
potente, ya que entrena de forma conjunta TODOS los
modelos (en nuestro caso tres). En este paso ya no se El diccionario de reconocimiento indica,
mantiene la segmentación inicial modelo/etiqueta principalmente, qué palabras o vocabulario va a ser
(Repasar teoría). capaz de reconocer el sistema, y cómo quedan
La herramienta que se utiliza en este caso es HERest, y definidas esas palabras en función de los HMMs que
si vemos ahora el fichero: EntrenaListaHERest.bat tiene el mismo.

6
En nuestro caso la relación palabra del vocabulario HParse gram.txt red
HMM es directa, por lo que el fichero dic es muy Se genera el fichero red que tiene el formato de
simple: gramática que necesita el programa de reconocimiento
sil sil HVITE, que veremos en el punto siguiente.
si si Fichero red :
no no VERSION=1.0
N=8 L=12
Pero, si hubiésemos entrenado HMMs de fonemas, por I=0 W=sil
ejemplo, cada palabra debería definirse por su I=1 W=!NULL
transcripción fonética (Comentar pronunciaciones I=2 W=no
alternativas, etc.. etiquetas...) I=3 W=si
I=4 W=sil
Gramática de Reconocimiento I=5 W=!NULL
I=6 W=!NULL
Junto a las palabras o vocabulario que el sistema va a
I=7 W=!NULL
ser capaz de reconocer, hay también que especificar
J=0 S=1 E=0
qué secuencias de las palabras del diccionario estarán
J=1 S=5 E=0
permitidas. Esta definición de secuencias de palabras
.......
permitidas, que se suele denominar gramática de
Se pueden hacer diferentes variaciones en una
reconocimiento, puede ser una definición determinista
gramática tan sencilla como la anterior para probar
o probabilística (Comentar: Modelos de Lenguaje,
diferentes estrategias de reconocimiento. (Ver más
también dentro de HTK).
detalles en htkbook)
En nuestro caso, nuevamente, podremos definir
Pruebas de Reconocimiento
gramáticas de reconocimiento sencillas, por ejemplo:
Una vez que tenemos los modelos HMMs:
...decidir que el sistema puede reconocer un silencio
la lista de modelos está en el fichero: listahmms ;
opcional al principio y al final, y después del silencio
y los modelos en ./hmmherest\newMacros)
inicial puede reconocer “si”, “no” o nada (ni “si” ni
el diccionario (fichero dic), y la red de reconocimiento
“no”). Esto se podría ilustrar como:
(fichero red)
ya podemos hacer pruebas de reconocimiento, tanto
de reconocimiento indica, principalmente, qué palabras
sobre ficheros (off-line), como directamente sobre la
o vocabulario va a ser capaz de reconocer el sistema, y
entrada de audio.
cómo quedan definidas esas palabras en función de los
HMMs que tiene el mismo.
Pruebas Off-line
En nuestro caso la relación palabra del vocabulario
La herramienta HTK para hacer el reconocimiento es
HMM es directa, por lo que el fichero dic es muy
HVite, que implementa el algoritmo de Viterbi por ser
simple:
más eficiente para hacer el reconocimiento (Revisar
sil silsi si
teoría).
no no
El fichero reconoce_auto.bat hace uso de HVite para
reconocer dos ficheros, ya en formato *.mfc, con los
Para definir la gramática de la figura anterior HTK
que se ha hecho el entrenamiento. Como si_1.mfc y
permite utilizar una sintaxis “legible” que luego se
no_1.mfc se han empleado para entrenar es un “auto
compila en el formato (menos “legible”) de nodos y
test”, es decir, debería reconocerlos. Las llamas a
arcos que utiliza HTK.
HVite en el fichero reconoce_auto.bat son:
Así, el fichero gran tiene la gramática correspondiente
HVite -w red -l .\recono -T 1 -H
al dibujo anterior
.\hmmherest\newMacros dic listahmms .\vcar\si_1.mfc
$comando = si | no;
HVite -w red -l .\recono -T 1 -H
( {sil} [ $comando ] {sil} )
.\hmmherest\newMacros dic listahmms .\vcar\no_1.mfc
Que utilizan los ficheros que se han indicado antes, y
La variable comando puede ser remplazada tanto por
además incluye –l .\recono , para indicar el nombre del
“si” como por “no”;
directorio en el que se generarán los ficheros con los
{} indica cero o más repeticiones (se puede
resultados de reconocimiento, que, por defecto, tienen
repetir el modelo de sil);
extensión .rec ; y su formato es igual a los .lab pero
[] indica cero o una repetición (con lo que se
incluyen la puntuación de reconocimiento de cada
puede saltar los modelos de si y no)
etiqueta.
A partir del fichero gran y utilizando la herramienta
Fichero .\recono\si_1.rec
Hparse:
0 4000000 sil -2632.982422

7
4000000 7200000 si -1941.103882
7200000 9800000 sil -1721.177368
NOTAR que si queremos hacer pruebas con otras
grabaciones no usadas para entrenar, hay que:
Grabar el fichero de audio (.wav 16 KHz y 16 bit): por
ejemplo: prueba.wav
Procesar el fichero para obtener los mismos parámetros
con HCopy: prueba.mfc
Ejecutar HVite igual que antes pero sobre prueba.mfc
El fichero ReconocePr.bat procesaría un fichero
prueba.wav grabado en .\sonidos y generaría el
.\vcar\prueba.mfc y el .\recono\prueba.rec con el
resultado de reconocimiento.
Para hacer una evaluación “formal” de un reconocedor
habría que grabar una Base de Datos de evaluación, y
Ventajas
luego hacer un análisis de los errores. HTK tiene una
herramienta para esta finalidad que se llama HResults
Se podría aplicar a otros dispositivos en un entorno tipo
(se recomienda tratar de usarla según se detalla en
hogar u oficina tales como: dispositivos multimedia de
htkbook).
audio y video, impresoras, scanner, cámaras,
proyectores, hornos microondas consolas de juegos,
Pruebas On-line
dispensadores de agua, persianas, programas utilizados
por el usuario en la computadora (mail, ofimática,
Otra posibilidad que tiene HTK es permitir hacer
navegación internet, redes sociales virtuales, etc.), entre
pruebas de reconocimiento sobre la entrada de
otros. Particularmente dispositivos que poseen un
micrófono.
encendido prolongado y no pueden ser simplemente
Para ello se utiliza también HVite, pero ahora en lugar
encendidos o apagados mediante el reconocimiento de
de una entrada de fichero .mfc, se indica –C trealconf ,
la voz.
siendo trealconf un fichero similar al conf que se utilizó
en HCopy, ya que la parametrización de la entrada de
Una de las principales ventajas de las RNA es su
audio debe ser la misma.
capacidad de generalización, por lo tanto, en este
HVite -w red -l .\recono -T 1 -H
escenario, las acciones automáticas deben ser
.\hmmherest\newMacros -C trealconf dic listahmms
conservadoras y solo actuar cuando exista un nivel de
El fichero trealconf es, por tanto, igual a conf salvo por
confianza en el desempeño de la RNA.
indicación de entrada en tiempo real y la necesidad de
utilizar un detector de actividad.
La arquitectura de RNA del perceptrón multicapa con
En estas pruebas en tiempo-real es muy importante
retro propagación utilizado en este estudio, frente a
tener controladas las condiciones de grabación y la
otras técnicas de I.A o métodos estadísticos, reduce la
configuración del detector de actividad. Para oir la
base de datos de eventos registrados y sus
señal sobre la que está trabajando el reconocedor, es
combinatorias
muy interesante activar el “echo” del reconocedor
usando la opción –g de HVite, con lo que escuchamos
el trozo de audio que “le está entrando” al reconocedor. BIBLIOGRAFIA.
Linea de código para opnline
HVite -g -w red -l .\recono -T 1 -H
.\hmmherest\newMacros -C trealconf dic listahmms [1] Kcomt N, y otros cuatro autores: Advances in Soft
Computing, Ambient Intelligence and Future Trends-
HTK tiene un recubrimiento para hacer aplicaciones International Symposium on Ambient Intelligencem,
interactivas con síntesis de voz y reconocimiento que se Volumen 72, 201-204 (2010).
llama ATK (http://htk.eng.cam.ac.uk/develop/atk.shtml [2] Gurney K.; An Introduction to Neural Networks.
The ATK Real-Time API for HTK). London: Routledge. ISBN 1-85728-673-1, (1997).
[3] Schmidt A.; Implicit Human-Computer Interaction
through Context. In International Symposium on
Human Computer Interaction with Mobile Devices and
Services (M obileHCI), (1999).

8
9

Potrebbero piacerti anche