Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proyecto Final Identificador Del Hablante
Proyecto Final Identificador Del Hablante
April 12
Comunicaciones
Digitales
2011
Introduccio n
El reconocimiento de voz es el proceso de reconocer automticamente quien est hablando sobre
la base de la informacin que figura en las ondas de voz. Esta tcnica hace posible el uso de la voz
del hablante para verificar su identidad y control de acceso a servicios tales como la marcacin por
voz, banca por telfono, ir de compras telefnicas, servicios de base de datos de acceso, servicios
de informacin, correo de voz, control de seguridad para las reas de informacin confidencial, y
la distancia acceso a las computadoras.
El objetivo del proyecto es conocer cmo detectar patrones especficos de la voz y realizar una
comparacin para determinar cul persona est hablando, tambin ponemos en prctica lo
aprendido en el laboratorio como fue la transformada rpida de Fourier FFT, la toma de una seal
de voz con su respectiva frecuencia, el manejo de la interface grfica de matlab entre otras cosas.
Este tipo de sistema en un futuro puede tener buenas repercusiones en el mundo, debido a que
las personas cada vez prefieren ms comodidad y seguridad, por lo que la voz es el mtodo de
comunicacin ms verstil y cmodo que existe ya que gastamos menos energa al utilizarla.
Desarrollo
El sistema puede almacenar ilimitados usuarios pero a medida que los usuarios son aumentados
ms aumenta el porcentaje de error. Este consta de una base de datos mySQL el cual son
simplemente registrado por un usuario donde por medio de este capturamos una imagen, una
muestra de voz y por ltimo los datos de la informacin.
$matlabroot/java/jarext/mysql-connector-java-3.0.17-ga-bin.jar
Fuente: http://www.cristiantala.cl/index.php?option=com_content&view=article&id=62:matlabmysql&catid=14:matlab&Itemid=5
Una vez conectados a la BD procedemos con la creacin de las tablas en este caso se crearon las
siguientes:
El sistema captura el nombre, apellido, carrera, identificador el cual se refiere al nmero en el que
la voz fue grabada, estatus, edad.
function proximo_id=next_id()
host = 'localhost';
user = 'root';
password = '';
dbase = 'matlab';
% Datos de la coneccin
jdbcString = sprintf('jdbc:mysql://%s/%s', host, dbase);
jdbcDriver = 'com.mysql.jdbc.Driver';
dbConn = database(dbase, user , password, jdbcDriver, jdbcString);
if isconnection(dbConn)
curs = exec(dbConn, 'select count(nombre) from usuarios');
setdbprefs('DataReturnFormat', 'cellarray')
curs = fetch(curs);
res = curs.Data(:,1);
proximo_id = 1+[res{:}];
proximo_id;
else
disp(sprintf('Error en la coneccin a la BdD: %s', dbConn.Message));
end
close(dbConn);
Captura de imagen
Una vez el usuario escribe su nombre en el formulario la imagen se almacena con el nombre de
este, con el fin de obtener una organizacin al almacenar la informacin.
La funcin para tomar la imagen al usuario se llama foto.m
function foto(nombre)
vid = videoinput('winvideo', 1, 'YUY2_640x480');
src = getselectedsource(vid);
vid.FramesPerTrigger = 1;
vid.ReturnedColorspace = 'rgb';
preview(vid);
myWait(3);
a=wavread('sistem_audio\beep.wav');
wavplay(a,11000);
data = getsnapshot(vid);
stoppreview(vid);
name = sprintf('fotos/%s.jpg',nombre);
imwrite(data,name);
Al principio presente problemas con la imagen ya que esta capturaba solo blanco y negro y este
problema fue resuelto con el cambio de los cdec de video.
En esta funcin hay una funcin dentro llamada myWait este es un delay para dar tiempo al
usuario que se coloque en posicin antes de hacer la captura.
De esta misma forma despliego la imagen de la persona que es reconocida y la imagen del logo.
Al presionar el botn de acceso el sistema inicia y le pide que diga su nombre el sistema graba la
voz temporal como s1.wav, una vez esta es guardada se llama la funcin next_id y se le resta un
dgito para obtener la cantidad exactas de muestras que tengo almacenadas, esta son pasadas a la
funcin train() el cual analiza todas las muestras y luego se le pasan estos valores muestreados a
la funcin test() el cual se encarga de analizar y realizar las comparaciones, en esta funcin son
llamadas otras como son mfcc() el cual calcula la FFT.
cant_patron= next_id-1;
code1=train('train/', cant_patron);
m=test('audio_temp/',1,code1);
Uno de los parmetros modificados para aumentar la rapidez de anlisis del sistema fue el
incremento de m en la funcin mfcc() el cual hace que los marcos o frames que inician despus del
anterior sean ms grandes.
Conclusiones
El sistema presenta dificultades de reconocimiento dependiendo en qu lugar se tomaron las
muestras y esto es debido a la cantidad de ruido que se captur en el momento.
Ejemplo si una persona tom su patrn de muestra en un rea muy silenciosa, al momento de
realizar las comparaciones si se toma en un lugar con ms ruido, el sistema falla.
Una de las desventajas de este tipo de sistemas es que la voz humana cambia constantemente,
cambia de una forma tal vez imperceptible para el humano pero si perceptible para una mquina.
Este problema en teora puede corregirse realizando varios patrones de voz de una persona
grabndolas en determinados tiempos especficos.
Tambin el problema del ruido puede mejorarse, si hacemos un buen filtro de la voz del patrn y
la voz tomada para el anlisis.
Este proyecto lo considero como una muy buena experiencia ya que desconoca los mtodos y
software utilizados para la realizacin de este.
10