Cortez Vega Ricardo Alan 2011640028 Reconocimiento de Patrones Reconocer de Palabras
Introducción El presente trabajo tiene como finalidad explicar la realización de un reconocer de voz con la finalidad de utilizarlo en un dispensador de bebidas, para ello se espera poder distinguir entre las palabras “te”, “café”, “agua” y “refresco” además de una opción de “no identificada” en caso de que no se trate de alguna de las palabras a reconocer. Desarrollo La herramienta a utilizar para el análisis y clasificación será Matlab, para ello obtendremos los patrones de voz utilizando el micrófono integrado de una portátil y e l código: myVoice=audiorecorder; myVoice.StartFcn = 'disp(''Start speaking.'')'; speaking.'')'; myVoice.StopFcn = 'disp(''End of recording.'')'; recording.'')'; record(myVoice, 2); pause(4);
Se mostrara un mensaje que mostrara cuando empieza la grabación y cuando termina, se obtendrán 2 segundos de grabación a una frecuenc ia de muestreo de 8KHz. Para llevar acabo una análisis adecuado se le aplicara un filtro pasa bandas con frec uencia de corte de 70Hz en pasa altas y una frecuencia de corte de 800Hz en pasa bajas, debido a que la mayoría de las frecuencias de la voz humana se encuentran en este intervarlo. Para llevarlo acabo se usaran 2 filtros FIR, y el comando Filt Filt. fc1=70; fc2=800; B=fir1(20,(fc2/(fs/2))); C=fir1(20,(fc1/(fs/2)),'high' C=fir1(20,(fc1/(fs/2)), 'high'); ); Xf=filtfilt(C,1,y); Xm=filtfilt(B,1,Xf);
La herramienta matemática a utilizar en este caso será el calculo del Power Spectrum Density(PSD), mediante el método Yule Walker.
Para poder ver los resultados del análisis usamos el comando:
Mxx=pyulear(y,12,512,8000);
Donde y es nuestra señal a analizar, el 12 es el orden que se va a utilizar por conveniencia se utilizara este valor ya que es mencionado en diversos ejemplos del análisis de voz, 512 es el numero de puntos para el analisis, y 8000 es la frecuencia de muestreo de la señal a analizar. A continuación mostraremos diversos resultados obtenidos para cada una de las palabras: Agua
Figura 1. Resultado 1 de la Palabra Agua usando PSD.
Figura 2. Resultado 2 de la Palabra Agua usando PSD.
Figura 3. Resultado 3 de la Palabra Agua usando PSD. Como puede observarse la palabra agua tiene una componente en frecuencia que ronda los 50Hz, la cual tiende a ser mayor que las componentes previas, como el valor de potencia varia de acuerdo a la intensidad con que se diga la palabra no se puede determinar un valor de comparación en estas frecuencias pero es posible determinar su relación respecto a otra frecuencia, por ello se utiliza el código: if (Mxx(51)>1.4*Mxx(44))&&(m==0) disp('Es Agua.') m=1; end
De forma que si el valor 51 del vector resultado es 1.4 veces mayor que el valor 44 del mismo, se determina que la palabra que se menciono es agua, este valor de 1.4 veces y la selección de los puntos del vector resultado se realizaron mediante la comparación de múltiples resultados de la señal buscando un par de frecuencias cuya relación fuera significativamente constante. Refresco
Figura 4. Resultado 1 de la Palabra Refresco usando PSD.
Figura 5. Resultado 2 de la Palabra Refresco usando PSD.
Figura 6. Resultado 3 de la Palabra Refresco usando PSD.
Como se puede observar la palabra refresco tiene una curva de disminución conforme sube la frecuencia, este cambio es lo que se ha seleccionado como comparación para los resultados donde se busca comparar el valor en el punto 31 del vector contra el punto 37 del vector, de forma que si el primero es 1.4 veces mayor que el segundo se puede determinar que se trata de la palabra refresco, para ello se busco el valor aproximado donde la curva tiende a disminuir su pendiente, el cual fue aproximadamente el punto 34, este punto intermedio, la relación y la distancia de este punto a los otros fueron estimados en base a múltiples mediciones las cuales dan como resultado el código: if (Mxx(31)>1.4*Mxx(37))&&(m==0) disp('Es Refresco.') m=1; end
Te
Figura 7. Resultado 1 de la Palabra Te usando PSD.
Figura 8. Resultado 2 de la Palabra Te usando PSD.
Figura 9. Resultado 3 de la Palabra Te usando PSD. En el caso de la palabra Te la relación con los puntos es mas notoria ya que presenta un pico definido aproximadamente en el punto 36, y a su vez presenta una valle en el punto 24 de forma que podemos comparar el valor de este valle con el del punto 36 y si es al menos 1.5 veces mayor el valor del punto 36 entonces podemos definir que se trata de la palabra Te. De forma que el código que nos permite determinar si es la palabra se rá: if Mxx(36)>1.5*Mxx(24) disp('Es Te.') m=1; end
Café
Figura 10 Resultado 1 de la Palabra Café usando PSD.
Figura 11 Resultado 2 de la Palabra Café usando PSD.
Figura 12 Resultado 3 de la Palabra Café usando PSD.
La palabra café tiende a tener valores elevados en las frecuencias muy bajas que rápidamente tienden a disminuir tanto que se usa el punto 3 con respecto al punto 5, cuando el primero es 1.4 veces mayor que el segundo podemos determinar que es la palabra café, para ello se usa el código: if (Mxx(3)>1.4*Mxx(5))&&(m==0) disp('Es Cafe.') m=1; end
Niveles de Jerarquía Cuando se lleva acabo el análisis de las diversas señales se encuentran patrones que pueden ser repetibles en 2 señales, esto no implica que sean idénticas pero pueden conllevar a errores por lo que para llevar acabo la identificación, por lo que se hace uso de un marcador o bandera en este caso llamado “m” que en caso de que sea detectado ya no procederá a comparar con las demás señales. Para esto se analiza cuales son los patrones mas únicos y fáciles de identificar y se procede a seleccionarlos como primeras comparaciones de forma que la identificación será en cascada, en caso de que una sea detectada se detendrá la comparación y se marcara, en caso de que no pertenezca a ninguna lo determinara como “no identificada”, le jerarquía en este caso será la siguiente:
Te
Agua
Refresco
Cafe
No Identificado
Figura 13. Jerarquía de Clasificación. Se selecciona primero la comparación con la palabra Te ya que presenta un cambio mas visible e identificable en un rango de frecuencias definidas, de la misma forma la siguiente es agua ya que presenta un resultado en un rango determinado pero sin que este sea tan drástico como en el caso de Te, la tercera opción es te, ya que su comportamiento es mas estable e involucra una diferencia de frecuencias entre uno y otro punto a comparar mucho mayor que el caso de Café.
Conclusiones Este método de clasificación e identificación de palabras tiene como ventaja que se basa en la relación energética entre las frecuencias mencionadas de forma que no requiere de un nivel controlado de voz, pero requiere de un análisis caso a caso de cada una de las palabras a agregar al reconocedor. A su vez se requiere determinar una jerarquía de prioridades en base al nivel y la facilidad de reconocer las relaciones respecto a las frecuencias. Esto conlleva a que si se desearan distinguir palabras similares el sistema de cascada anularía las otras opciones por lo que seria necesario otra forma de análisis para comprobar si el resultado es correcto o es necesario comparar con las otras opciones con comportamientos cercanos.