Mostrando entradas con la etiqueta pfc. Mostrar todas las entradas
Mostrando entradas con la etiqueta pfc. Mostrar todas las entradas

sábado, 13 de agosto de 2011

Pasos a seguir para el reconocimiento de locutores

Bueno después de mucho pelearme y leer, he llegado a unas conclusiones.

Primero de todo, tener una base de datos de voces, lo interesante es construirla nosotros mismos con voces de personas de nuestro alrededor, pero para las tareas de testing yo voy a usar una base de datos, llamada BIOSECURE, que contiene 18 samples de audio de aproximadamente 10 segundos de duración. De cada sample solo hay unos 3 segundos aproximados de voz real, es decir, el resto es silencio, la manera de eliminar el silencio la veremos más adelante, para ello, usaremos una aplicación de la plataforma MISTRAL.

Lo segundo que tenemos que hacer es sacar el vector de caracteristicas de cada, para ello usaremos otra aplicación que está fuera de la plataforma MISTRAL, llamada Spro.

El tercer paso es quitar los silencios de cada sample de audio. Justo antes de suprimir el silencio, es interesante normalizar el vector de caracteristicas (MFCC en nuestro caso). Podemos normalizar de diferentes maneras, pero nosotros lo haremos siguiendo una distribución de probabilidad N(0,1).
Una vez normalizado, usaremos EnegyDetector para etiquetar las zonas con más energía de cada sample(Definimos un umbral, y si está por debajo de ese umbral es silencio y si está por encima es habla.)

Cuarto paso: World model training (no me gusta la traducción), este paso consiste en crear un modelo que representa el espacio total de posibles alternativas dado un hipotetico locutor.
Este es un modelo de aprendizaje, hemos elegido usar Gaussian Mixture Model (GMM). Con esto conseguimos un modelo universal con el que a posteriori compararemos  con el modelo objetivo, es decir, con el locutor que queremos identificar.

Quinto paso: Entrenar el modelo objetico o Target model training. El modelo del locutor se obtiene adaptando los parametros del modelo del cuarto paso usando una estimación MAP (Maximum a posteriori)


NOTA: Esto es un blog, y como he dicho, estoy haciendo un resumen "abstracto" de los pasos a seguir, aquí se nombran muchas técnicas para pasar de un paso a otro, muchas de ellas tienen una fuerte componente matemática/estadística, pero también es cierto que es asequible para alguien que tenga un mínimo conocimiento de inferencia estadística y contraste de hipótesis (nociones que "causalmente" se estudian en nuestra titulación)

martes, 26 de julio de 2011

Mistral open source platform

Hi, these days I was reading about speaker recognition in some papers (I'll give some links in other posts) and my conclusions can be resumed in this image:

General steps for speaker recognition.
So, I have been doing some proof of concept using CoMIRVA library but I didn't reach anything useful, but exploring Microsoft Speech API (SAPI) I saw an interesting topic in StackOverflow where I found Mistral platform. 
I didn't use Mistral, for now, but I'm reading its wiki and in this days I'll be testing this platform in deep.
Talking about Mistral, I can tell that it's written in C++, so it's cool because I hope to implement Mistral in an Android application using Android NDK.

So, as I go by testing I'm going to write here my progress.

miércoles, 6 de julio de 2011

Comienzo mi proyecto fin de carrera.

Bueno, después de días de pereza, hoy empiezo DE VERDAD mi proyecto fin de carrera, es el último "obstaculo" que me queda para ser ingeniero, así que, a partir de hoy, comienzo al 100% con él.
Voy a explicar un poco en qué consistirá: El proyecto se llama "Identificación de voces en dispositivos Android", aunque mi enfoque será el siguiente, voy a intentar hacer un módulo genérico de identificación de voces, y luego haré una implementación concreta, en una aplicación para la plataforma Android por ejemplo.

El primer paso a seguir es leer, leer muchos papers sobre identificación de voces, para ello, estoy haciendo uso de una herramienta muy interesante, Mendeley, se trata de un gestor de artículos, desde el cual puedes sincronizar tus artículos para tenerlos siempre disponibles desde cualquier ubicación. Aparte de esto, tiene otras muchas herramientas, como notas, subrayar texto, compartir y editar artículos con otros usuarios... etc.
El caso, es una herramienta muy completa y que pienso que me será muy útil.

Respecto al contenido de los papers, ahora mismo me encuentro leyendo este paper: "Real-Time Speaker Identification and Verification"

Pues bueno, este es el primer post sobre mi PFC y voy a escribir periodicamente mis progresos.