You are on page 1of 13

IMPLEMENTACIN EN TIEMPO REAL DEL ALGORITMO SIFT PARA EL CLCULO DE LA FRECUENCIA FUNDAMENTAL DE LA VOZ EN UN DSP TMS320C6711 Jorge A.

Del Carpio Salinas F. Daniel Argandoa Martinez

IMPLEMENTACIN EN TIEMPO REAL DEL ALGORITMO SIFT PARA EL CLCULO DE LA FRECUENCIA FUNDAMENTAL DE LA VOZ EN UN DSP TMS320C6711 Primera edicin digital

Julio, 2011 Lima - Per

Jorge A. Del Carpio Salinas & F. Daniel Argandoa Martinez

PROYECTO LIBRO DIGITAL PLD 0161

Editor: Vctor Lpez Guzmn

http://www.guzlop-editoras.com/ guzlopster@gmail.com guzlopnano@gmail.com facebook.com/guzlop twitter.com/guzlopster 428 4071 - 999 921 348 Lima - Per

PROYECTO LIBRO DIGITAL (PLD)

El proyecto libro digital propone que los apuntes de clases, las tesis y los avances en investigacin (papers) de las profesoras y profesores de las universidades peruanas sean convertidos en libro digital y difundidos por internet en forma gratuita a travs de nuestra pgina web. Los recursos econmicos disponibles para este proyecto provienen de las utilidades nuestras por los trabajos de edicin y publicacin a terceros, por lo tanto, son limitados. Un libro digital, tambin conocido como e-book, eBook, ecolibro o libro electrnico, es una versin electrnica de la digitalizacin y diagramacin de un libro que originariamente es editado para ser impreso en papel y que puede encontrarse en internet o en CD-ROM. Por, lo tanto, no reemplaza al libro impreso. Entre las ventajas del libro digital se tienen: su accesibilidad (se puede leer en cualquier parte que tenga electricidad), su difusin globalizada (mediante internet nos da una gran independencia geogrfica), su incorporacin a la carrera tecnolgica y la posibilidad de disminuir la brecha digital (inseparable de la competicin por la influencia cultural), su aprovechamiento a los cambios de hbitos de los estudiantes asociados al internet y a las redes sociales (siendo la oportunidad de difundir, de una forma diferente, el conocimiento), su realizacin permitir disminuir o anular la percepcin de nuestras lites polticas frente a la supuesta incompetencia de nuestras profesoras y profesores de producir libros, ponencias y trabajos de investigacin de alta calidad en los contenidos, y, que su existencia no est circunscrita solo a las letras. Algunos objetivos que esperamos alcanzar: Que el estudiante, como usuario final, tenga el curso que est llevando desarrollado como un libro (con todas las caractersticas de un libro impreso) en formato digital. Que las profesoras y profesores actualicen la informacin dada a los estudiantes, mejorando sus contenidos, aplicaciones y ejemplos; pudiendo evaluar sus aportes y coherencia en los cursos que dicta. Que las profesoras y profesores, y estudiantes logren una familiaridad con el uso de estas nuevas tecnologas. El libro digital bien elaborado, permitir dar un buen nivel de conocimientos a las alumnas y alumnos de las universidades nacionales y, especialmente, a los del interior del pas donde la calidad de la educacin actualmente es muy deficiente tanto por la infraestructura fsica como por el personal docente. El p e r s o n a l d o c e n t e j u g a r u n r o l d e t u t o r, f a c i l i t a d o r y c o n d u c t o r d e p r o y e c t o s

de investigacin de las alumnas y alumnos tomando como base el libro digital y las direcciones electrnicas recomendadas. Que este proyecto ayude a las universidades nacionales en las acreditaciones internacionales y mejorar la sustentacin de sus presupuestos anuales en el Congreso. En el aspecto legal: Las autoras o autores ceden sus derechos para esta edicin digital, sin perder su autora, permitiendo que su obra sea puesta en internet como descarga gratuita. Las autoras o autores pueden hacer nuevas ediciones basadas o no en esta versin digital.

Lima - Per, enero del 2011 El conocimiento es til solo si se difunde y aplica Vctor Lpez Guzmn Editor

Memorias - XVII CONIMERA

Implementacin en tiempo real del algoritmo SIFT para el clculo de la frecuencia fundamental de la voz en un DSP TMS320C6711
Jorge A. Del Carpio Salinas / F. Daniel Argandoa Martinez
jdelcarpio@uni.edu.pe dargandonam_cidfiee@uni.edu.pe Universidad Nacional de Ingeniera Facultad de Ingeniera Elctrica y Electrnica Av. Tupac Amaru 210 Lima 25 - Per

Resumen. El presente trabajo es una aplicacin de las tcnicas del procesamiento digital de seales al tratamiento de las seales de voz con el fin de calcular la frecuencia fundamental de una trama de voz. Dicho clculo es un bloque importante en muchos sistemas de procesamiento de voz. En este caso el algoritmo a utilizar ser el algoritmo SIFT (Simplified Inverse Filter Tracking) implementado en tiempo real sobre la plataforma de desarrollo DSP TMSC6711 de Texas Instruments.

1.

Introduccin

Los Procesadores Digitales de Seales, DSPs, tales como los de la familia 320 de Texas Instruments (TI) vienen siendo usados en un amplio campo de aplicaciones tales como Comunicaciones, Control, Procesamiento de Imgenes, Voz, Video, etc. lo cual, a su vez, se traduce en electrnica de consumo masivo: telfonos celulares, cmaras digitales, televisin de alta (HDTV), radio, mdems, y otros dispositivos. Asimismo, los DSPs han llegado a convertirse en una herramienta fundamental para introducir el procesamiento digital de seales a los tcnicos, estudiantes y profesionales interesados. En general, la implementacin de algoritmos de procesamiento de seales consta de los siguientes pasos: diseo, simulacin, codificacin y verificacin.

tiempo real. Aqu hay que tener en cuenta que hay una diferencia entre la implementacin en Matlab y la implementacin final en el DSP.

C.

Codificacin del Algoritmo

En esta etapa tenemos que hacer uso del entorno de desarrollo dado por el fabricante. En el caso de TI, la interfaz de desarrollo para todas las familias de DSPs es el Code Composer Studio. Al momento de codificar es recomendable hacer uso de las libreras y herramientas disponibles por parte de TI, ya que de sta forma se puede optimizar el cdigo a la vez que acortamos el tiempo de desarrollo.

D.

Verificacin del Algoritmo

Esta es la etapa final donde comprobamos el correcto funcionamiento de nuestro algoritmo. Procesamiento de la Voz y Frecuencia Fundamental La voz est conformada por una secuencia de segmentos discretos de sonidos que estn enlazados en el tiempo. Estos segmentos, llamados fonemas, tienen caractersticas acsticas y articulatorias nicas. El nmero de gestos articulatorios que el aparato vocal humano puede producir es casi infinito, sin embargo el nmero de fonemas es limitado. Cada fonema tiene caractersticas acsticas que lo distingue de otros, y cuando se combinan unos fonemas con otros se forman unidades largas llamadas slabas y palabras.

A.

Estudio del Algoritmo a usar

En la etapa de diseo de nuestro algoritmo, tenemos que tener en cuenta el modelo y caractersticas del DSP donde nuestro algoritmo ser codificado (arquitectura, Clock, nivel de paralelismo, Unidades de punto fjo o flotante, tamao de memoria, etc) con el fin de preveer posibles problemas que puedan disminuir la performance final.

B.

Simulacin del Algoritmo

En esta etapa, nos apoyamos en el Software Matlab2 el cual nos permite simular algoritmos en

375

Colegio de Ingenieros del Per - CDL - Captulo de Ingeniera Mecnica y Mecnica Elctrica

Uno de los parmetros mas importantes en el anlisis, sntesis y codificacin de la voz es la frecuencia fundamental (o tambin conocido como pitch) de un segmento de voz. La frecuencia fundamental est directamente relacionada con el hablante y define una caracterstica nica de la persona. La voz es generada cuando el aire fluye de los pulmones y es peridicamente interrumpida por los movimientos de las cuerdas vocales. Para los hombres, el rango de la posible frecuencia fundamental se ubica entre 50 y 250Hz, mientras que para las mujeres, el rango est ente 120 y 350Hz. La frecuencia fundamental debe calcularse en cada segmento de voz. Un tpico segmento con voz se muestra en la Fig. 1.

Los picos en el origen no pueden ser usados para normalizacin. El valor pico no solo depende del nmero de periodos de pitch sino tambin de la forma del espectro. El uso de logaritmos dificulta su implementacin en hardware y aumenta la latencia del programa. Un algoritmo que ha demostrado eficiencia y a la vez cumple los requerimientos para su implementacin ptima en Hardware es el algoritmo SIFT. El presente trabajo se encarga de los pormenores de la implementacin del algoritmo SIFT en la plataforma Hardware basada en el DSP TMS320C6711.

3.

Propuesta de solucin

Se plantea la implementacin del algoritmo SIFT en hardware.

El Algoritmo SIFT
El algoritmo SIFT es una tcnica de anlisis simplificado basado en el esquema de filtro inverso, el cual retiene las ventajas de los mtodos de autocorrelacin y del anlisis cepstral. El diagrama del algoritmo SIFT se muestra en la Fig. 2.
Fig. 1 Segmento de voz

2.

Planteamiento del problema

Siendo el clculo del pitch un bloque fundamental en todo sistema de procesamiento de voz, se han desarrollado muchos mtodos para el clculo de la frecuencia fundamental de la voz. Algunos de los mtodos hacen uso de la autocorrelacin, periodograma, anlisis cepstral, etc. Cuando un algoritmo se traduce a hardware, es decir para ser implementado por ejemplo en un DSP, debe de cumplir una serie de requerimientos adicionales: Tamao del cdigo reducido. Tiempo de ejecucin mnimo. Requerimiento de espacio de memoria mnimo. Si bien es cierto, algoritmos basados en el anlisis cepstral son eficientes en el clculo del pitch, tienen algunas desventajas inherentes:

Fig. 2 Diagrama de Bloques del Algoritmo SIFT

La voz entrante Sn (muestreada a 8.0 KHz) se filtra primero por un filtro pasabajo que tiene una frecuencia de corte de 0.8 KHz. Luego se muestrea a una tasa de 2 KHz (diezmado por un factor de 4) obtenindose la seal diezmada Wn. A continuacin se calculan los 5 primeros trminos de la secuencia de autocorrelacin en periodo corto (short-term) para cada ventana de 32ms de tamao. Luego se ejecuta el algoritmo de Levinson para calcular los 4 primeros coeficientes predictivos { ai }. Con dichos coeficientes se procede a armar el filtro predictivo (blanqueador) de orden 4 a travs del cual pasar la seal diezmada. La salida

376

Memorias - XVII CONIMERA

Yn del filtro predictivo es una seal de error. Se calcula la autocorrelacin de esta secuencia de error y se ubica el valor pico y su ndice correspondiente. A continuacin se interpolan los valores alrededor del valor pico obtenido para obtener mejor resolucin. Finalmente, basado en el pico encontrado, se hace una decisin para clasificar el segmento como peridica o no peridica.

La no linealidad de la fase no es crtico en los resultados finales.

Diezmado por un factor de 4


El algoritmo SIFT muestra que el clculo preciso de la frecuencia fundamental es incluso posible con la tasa de muestreo de 2 KHz ( 8KHz / 4). El diezmado de 4 ocasiona que el nmero total de operaciones necesarias se reduzca grandemente. En nuestra implementacin, el diezmado se realiza seleccionando, de la seal filtrada, las muestras espaciadas por 4 ndices.

Prefiltrado (LPF de 800 Hz)


El filtrado es obligatorio antes de realizar un diezmado de la seal ya que evita que los espectros se solapen uno con el otro (aliasing). En este caso se us un filtro IIR Chebyshev Tipo 1 de orden 5 (5 polos y 5 ceros), los coeficientes empleados fueron los siguientes: num_ch=[0.001314939697 0.005259758789 0.007889638184 0.005259758789 0.001314939697]; den_ch =[1 -3.191026659642 4.149363076516 -2.570303903189 0.638454062317]; La respuesta en frecuencia del filtro se muestra en la Fig. 3:

Filtro Inverso y Algoritmo de Levinson


De la seal diezmada calculamos los coeficientes predictivos {ki} y armamos el filtro inverso el cual har un blanqueamiento de la seal diezmada. Un elemento crtico del algoritmo SIFT es la determinacin del nmero M ptimo de coeficientes predictivos a ser calculados, ya que en este caso no se trata de un problema de estimacin espectral sino de eliminar ciertas caractersticas de la seal diezmada y preservar otras, las cuales nos ayudarn a determinar el pitch con precisin. Si M es demasiado pequeo, se obtiene una muy pobre estimacin de la estructura de resonancia dentro del rango (0, Fs/2). Si M es demasiado grande, entonces se obtiene la estructura de resonancia con ms detalles finos debidos a los mltiplos del pitch. Lo que se desea es obtener una estimacin cercana de la estructura de resonancia e ignorar las caractersticas debido a los mltiplos del pitch. El algoritmo SIFT usa un valor de M=4.

Fig. 3 Respuesta en Frecuencia del Filtro Chebyshev de Orden 5 empleado.

Se opta por el uso de un filtro IIR Chebyshev debido a que: El algoritmo SIFT no exige que el filtro sea altamente selectivo en frecuencia. Un filtro selectivo del tipo FIR por ejemplo requerira ms de 50 coeficientes. Un filtro Chebyshev de orden 5 se ejecuta mucho ms rpido que filtros de rdenes ms altos.

Fig. 4 Espectro de la entrada al filtro inverso y espectro del recproco del filtro inverso3

377

Colegio de Ingenieros del Per - CDL - Captulo de Ingeniera Mecnica y Mecnica Elctrica

Como se muestra en la Fig. 4, con un valor de M =4 se puede ver claramente el pico del primer formante en el primer espectro (el que es uniforme), tambin se puede ver en el otro espectro (el no uniforme) picos a mltiplos de 120 Hz para este caso. Se puede decir tambin que, a la seal de salida del filtro inverso se le ha removido la componente de mayor resonancia dejando solo la informacin de la frecuencia fundamental superimpuesta a una constante. Es por eso que el filtro inverso puede ser considerado como uno de pre-blanqueamiento ya que no aplana por completo el espectro de la seal entrante, solo elimina las caractersticas debidas a las resonancias del tracto vocal pero reteniendo la estructura fina debido a pulsos glotales.

Interpolacin de la secuencia rn
El algoritmo SIFT emplea un algoritmo de interpolacin basado en dos transformadas discretas de Fourier (FFT para mas comodidad), las cuales se simplifican en una matriz de 18 valores. La seal diezmada es de tamao N=64. La seal rn es de tamao M = 2N = 128. Primero se calcula la transformada discreta de Fourier de la secuencia rn esta secuencia Rk es de tamao M. Dicha secuencia se convierte en una nueva secuencia Rk de tamao M = 4 M = 512. A esta ltima secuencia M de tamao 512 se le aplica la transformada inversa de Fourier para obtener la secuencia rn que viene a ser la interpolacin de la secuencia original rn. Como se puede apreciar, realizar esta interpolacin involucra realizar dos FFT de secuencias de tamaos considerables. Esto involucra un gran consumo de tiempo de ejecucin. Pero, el algoritmo SIFT realiza una simplificacin mediante manipulaciones matemticas para obtener solamente los valores que nos son tiles. Es decir, calcula solamente los valores interpolados prximos al valor estimado n = N del pitch. La ecuacin simplificada luego de las manipulaciones matemticas es la siguiente:

Autocorrelacin de la seal de salida del Filtro Inverso


En esta etapa se calcula la autocorrelacin de la seal de salida Yn del filtro inverso. Y se arma una secuencia rn nueva de autocorrelacin de la siguiente manera:

Donde: rn: nueva secuencia de autocorrelacin Yi: secuencia de salida del filtro inverso N: tamao de la ventana (64) M: tamao de la secuencia rn

Donde:

De esta secuencia se consigue el primer estimado n = N, del valor de la frecuencia fundamental. Los clculos precisos de la frecuencia fundamental requieren una resolucin de 0.1 a 0.15 ms en la escala de tiempos. Por ejemplo para un muestreo de T = 0.125 ms, asumiendo que el pitch real sea de 6 ms, nos resultara en un error de 1.74 Hz en el calculo. Mientras que en nuestro caso la frecuencia de muestreo ha sido diezmada y T = 0.5 ms lo cual nos arroja un error de 7 Hz. Ante esto es necesaria emplear alguna tcnica de interpolacin.

En nuestro caso M/M = 4. Como nuestro factor de interpolacin es 4, vamos a tener en total 6 valores interpolados, 3 a la izquierda del valor estimado n = N y 3 su derecha, tal como se muestra en la Fig. 5.

378

Memorias - XVII CONIMERA

entonces el segmento j se clasifica como no peridica. Caso contrario se verifica si >0.3, si esto es cierto entonces el segmento j es etiquetado como peridica.

4.

Resultados obtenidos

Fig 5. Interpolacin

A partir de la ecuacin simplificada, el algoritmo SIFT emplea solamente dos vecinos para el calculo de los 6 valores interpolados, es decir cada uno de los valores interpolados i(-3/4), .i(+3/ 4) se derivan de los valores RN-1, RN y RN+1. Dicha relacin se da en forma matricial:

A continuacin se muestran los resultados obtenidos de la implementacin del algoritmo SIFT descrito. Las grficas son tomadas del Code Composer Studio, el cual es el entorno de desarrollo para aplicaciones con el DSP.

Fig 6. Seal de entrada Sn muestreada a 8 KHz.

De esta forma obtenemos todos los valores interpolados. Nuestra frecuencia fundamental resultante ser: P = (N + i) / 2, donde i es el ndice que corresponde al valor interpolado mas grande (i = -3/4, -1/2 ..1/2, 3/4). Y finalmente: F = 1 / P
Fig 7. Seal a la salida del filtro Chebyshev de rden 5.

Decisin para etiquetar la secuencia como peridica o no peridica


Para etiquetar un segmento como peridica o no peridica, el algoritmo SIFT trabaja con el valor pico interpolado pero normalizado con respecto a r0 , es decir r(i) / r0 = , la descripcin del criterio es el siguiente: Si > 0.4 el segmento j es clasificado como peridica. Pero si el segmento j-1 fue no peridica y el segmento j-2 fue peridica entonces el segmento j-1 se reetiqueta como peridica. Si < 0.4, y los segmentos j-1 y j-2 no estn etiquetados como peridica

Fig 8. Decimacin por 4 (notar que ahora la seal es de tamao 64):

379

Colegio de Ingenieros del Per - CDL - Captulo de Ingeniera Mecnica y Mecnica Elctrica

Fig 9. Los 4 coeficientes {ki} del filtro inverso.

Fig 12. Valores interpolados. En el cdigo se ubicaron en la matriz I_V.

Finalmente el algoritmo calcula el pico mximo y halla el ndice correspondiente.

Fig 10. Seal a la salida del filtro inverso construido a partir de los coeficientes {ki}

Fig 13. Frecuencia fundamental (Fo en KHz)

La frecuencia es Fo dado en Khz. En este caso Fo = 105.26 Hz. El segmento analizado fue clasificado como peridica ya que el = 0.5850 > 0.4.

Fig 11. Correlacin de la salida del filtro inverso

Tiempo de Ejecucin
Mediante las herramientas del Code Componer se ha encontrado que el algoritmo demora en ejecutarse 17 ms mientras que cada trama de 256 muestras que ingresa al algoritmo es de 32 ms. Es decir, el tiempo que se tarda en recolectar las 256 muestras (32 ms) es suficiente para ejecutar el calculo del pitch para la trama anterior, con lo cual conseguimos rendimiento en tiempo real.

La secuencia de autocorrelacin de la seal de salida del filtro inverso es de tamao 128 pero en la grfica mostrada solo se v la mitad ya que dicha secuencia es simtrica y no es necesario tener los valores de ndices negativos. De esta secuencia se calcula el pico, y como se ve en la figura es de 19, entonces N=19.

380

Memorias - XVII CONIMERA

Tracking del Pitch Para un segmento grande de Voz


A continuacin se muestra (Fig. 14 a 17) el clculo del pitch para varias secuencias grandes. Se puede apreciar el valor calculado del pitch para cada segmento. Un Pitch de valor cero significa que la secuencia no corresponde a una peridica.

Fig 17. Tracking del Pitch en el Segmento 4

5.

Conclusiones

Fig 14. Tracking del Pitch en el Segmento 1

Se ha demostrado la eficiencia tanto en precisin como en velocidad de la implementacin del algoritmo SIFT en el DSPC6711. La frecuencia fundamental calculada tiene suficiente precisin como para ser empleada como bloque en otros sistemas de procesamiento de voz. El tiempo de ejecucin puede mejorar muchsimo si se migra el cdigo que se ha desarrollado, el cual est en coma flotante, a una implementacin de punto fijo.

Fig 15. Tracking del Pitch en el Segmento 2

Fig 18. Entorno de desarrollo Code Composer Studio

6.
[1] [2]

Bibliografa
Rulph Chassaing, DSP Aplications using C and the TMS320C6X DSK Wiley. Markel J., The SIFT Algorithm for Fundamental Frequency Estimation IEEE TRANSACTIONS ON AUDIO AND ELECTROACUSTICS, VOL 20, NO5, 1972.

Fig 16. Tracking del Pitch en el Segmento 3

381

Colegio de Ingenieros del Per - CDL - Captulo de Ingeniera Mecnica y Mecnica Elctrica

[3]

Vinay K. Ingle, John G. Proakis, Digital Signal Processing Using Matlab 1 st ed, Thomson Learning, 1999. Rabiner, L; Schafer, R; Digital Processing of Speech Signals, 1978, Prentice Hall. Jurafsky, D; Martin, J.; Speech and Language Processing, 2000, Prentice Hall

[6]

Wai Chu, Speech Coding Algorithms, Foundation and Evolution of Standardized Coders 2003, Jhon Wiley Sons spru328a, Code Composer Studio User s Guide, Texas Instruments.

[4] [5]

[7]

382

You might also like