Jorge A. Del Carpio Salinas F. Daniel Argandoña Martinez

IMPLEMENTACIÓN EN TIEMPO REAL DEL ALGORITMO SIFT PARA EL CÁLCULO DE LA FRECUENCIA FUNDAMENTAL DE LA VOZ EN UN DSP TMS320C6711 Jorge A. Del Carpio Sali

4 downloads 52 Views 665KB Size

Recommend Stories


4 JORGE MIRANDA MARTINEZ
1 ¿ QUÉ ES EL ABAP/4 ? ........................ 3 2 CARACTERÍSTICAS DEL ABAP/4. .................. 3 3 APLICACIONES DEL ABAP/4. .....................

LA EVOLUCION DE LA CASA DEL SIGLO XVI EN LAGUARDIA (ALAVA) FELICITAS MARTINEZ DE SALINAS OCIO
LA EVOLUCION DE LA CASA DEL SIGLO XVI EN LAGUARDIA (ALAVA) F ELICITAS M ARTINEZ DE S ALINAS O CIO FUENTES DO CUM ENTALES A.M.L. Archivo Municipal

Story Transcript

IMPLEMENTACIÓN EN TIEMPO REAL DEL ALGORITMO SIFT PARA EL CÁLCULO DE LA FRECUENCIA FUNDAMENTAL DE LA VOZ EN UN DSP TMS320C6711 Jorge A. Del Carpio Salinas F. Daniel Argandoña Martinez

IMPLEMENTACIÓN EN TIEMPO REAL DEL ALGORITMO SIFT PARA EL CÁLCULO DE LA FRECUENCIA FUNDAMENTAL DE LA VOZ EN UN DSP TMS320C6711 Primera edición digital

Julio, 2011 Lima - Perú

© Jorge A. Del Carpio Salinas & F. Daniel Argandoña Martinez

PROYECTO LIBRO DIGITAL PLD 0161

Editor: Víctor López Guzmán

http://www.guzlop-editoras.com/ [email protected] [email protected] 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 investigación (papers) de las profesoras y profesores de las universidades peruanas sean convertidos en libro digital y difundidos por internet en forma gratuita a través de nuestra página web. Los recursos económicos disponibles para este proyecto provienen de las utilidades nuestras por los trabajos de edición y publicación a terceros, por lo tanto, son limitados. Un libro digital, también conocido como e-book, eBook, ecolibro o libro electrónico, es una versión electrónica de la digitalización y diagramación 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 difusión globalizada (mediante internet nos da una gran independencia geográfica), • su incorporación a la carrera tecnológica y la posibilidad de disminuir la brecha digital (inseparable de la competición por la influencia cultural), • su aprovechamiento a los cambios de hábitos de los estudiantes asociados al internet y a las redes sociales (siendo la oportunidad de difundir, de una forma diferente, el conocimiento), • su realización permitirá disminuir o anular la percepción de nuestras élites políticas frente a la supuesta incompetencia de nuestras profesoras y profesores de producir libros, ponencias y trabajos de investigación 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 características de un libro impreso) en formato digital. • Que las profesoras y profesores actualicen la información 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 tecnologías. • 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 país donde la calidad de la educación actualmente es muy deficiente tanto por la infraestructura física 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 investigación de las alumnas y alumnos tomando como base el libro digital y las direcciones electrónicas recomendadas. • Que este proyecto ayude a las universidades nacionales en las acreditaciones internacionales y mejorar la sustentación de sus presupuestos anuales en el Congreso. En el aspecto legal: • Las autoras o autores ceden sus derechos para esta edición digital, sin perder su autoría, permitiendo que su obra sea puesta en internet como descarga gratuita. • Las autoras o autores pueden hacer nuevas ediciones basadas o no en esta versión digital.

Lima - Perú, enero del 2011 “El conocimiento es útil solo si se difunde y aplica” Víctor López Guzmán Editor

Memorias - XVII CONIMERA

Implementación en tiempo real del algoritmo SIFT para el cálculo de la frecuencia fundamental de la voz en un DSP TMS320C6711 Jorge A. Del Carpio Salinas / F. Daniel Argandoña Martinez [email protected] [email protected] Universidad Nacional de Ingeniería Facultad de Ingeniería Eléctrica y Electrónica Av. Tupac Amaru 210 Lima 25 - Perú

Resumen. El presente trabajo es una aplicación de las técnicas del procesamiento digital de señales al tratamiento de las señales de voz con el fin de calcular la frecuencia fundamental de una trama de voz. Dicho cálculo 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.

Introducción

Los Procesadores Digitales de Señales, DSP’s, 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 Imágenes, Voz, Video, etc. lo cual, a su vez, se traduce en «electrónica de consumo masivo»: teléfonos celulares, cámaras digitales, televisión de alta (HDTV), radio, módems, y otros dispositivos. Asimismo, los DSP’s han llegado a convertirse en una herramienta fundamental para introducir el procesamiento digital de señales a los técnicos, estudiantes y profesionales interesados. En general, la implementación de algoritmos de procesamiento de señales consta de los siguientes pasos: diseño, simulación, codificación y verificación.

A.

Estudio del Algoritmo a usar

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

B.

Simulación del Algoritmo

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

tiempo real. Aquí hay que tener en cuenta que hay una diferencia entre la implementación en Matlab y la implementación final en el DSP.

C.

Codificación 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 DSP’s es el Code Composer Studio. Al momento de codificar es recomendable hacer uso de las librerías y herramientas disponibles por parte de TI, ya que de ésta forma se puede optimizar el código a la vez que acortamos el tiempo de desarrollo.

D.

Verificación 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 están enlazados en el tiempo. Estos segmentos, llamados fonemas, tienen características acústicas y articulatorias únicas. El número de gestos articulatorios que el aparato vocal humano puede producir es casi infinito, sin embargo el número de fonemas es limitado. Cada fonema tiene características acústicas que lo distingue de otros, y cuando se combinan unos fonemas con otros se forman unidades largas llamadas sílabas y palabras.

375

Colegio de Ingenieros del Perú - CDL - Capítulo de Ingeniería Mecánica y Mecánica Eléctrica

Uno de los parámetros mas importantes en el análisis, síntesis y codificación de la voz es la frecuencia fundamental (o también conocido como pitch) de un segmento de voz. La frecuencia fundamental está directamente relacionada con el hablante y define una característica única de la persona. La voz es generada cuando el aire fluye de los pulmones y es periódicamente 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 típico segmento con voz se muestra en la Fig. 1.

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

3.

Propuesta de solución

Se plantea la implementación del algoritmo SIFT en hardware.

El Algoritmo SIFT El algoritmo SIFT es una técnica de análisis simplificado basado en el esquema de filtro inverso, el cual retiene las ventajas de los métodos de autocorrelación y del análisis cepstral. El diagrama del algoritmo SIFT se muestra en la Fig. 2. Fig. 1 Segmento de voz

2.

Planteamiento del problema

Siendo el cálculo del pitch un bloque fundamental en todo sistema de procesamiento de voz, se han desarrollado muchos métodos para el cálculo de la frecuencia fundamental de la voz. Algunos de los métodos hacen uso de la autocorrelación, periodograma, análisis 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: • Tamaño del código reducido. • Tiempo de ejecución mínimo. • Requerimiento de espacio de memoria mínimo. Si bien es cierto, algoritmos basados en el análisis cepstral son eficientes en el cálculo del pitch, tienen algunas desventajas inherentes:

376

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) obteniéndose la señal diezmada Wn. A continuación se calculan los 5 primeros términos de la secuencia de autocorrelación en periodo corto (short-term) para cada ventana de 32ms de tamaño. 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 través del cual pasará la señal diezmada. La salida

Memorias - XVII CONIMERA

Yn del filtro predictivo es una señal de error. Se calcula la autocorrelación de esta secuencia de error y se ubica el valor pico y su índice correspondiente. A continuación se interpolan los valores alrededor del valor pico obtenido para obtener mejor resolución. Finalmente, basado en el pico encontrado, se hace una decisión para clasificar el segmento como «periódica» o «no periódica».

Prefiltrado (LPF de 800 Hz) El filtrado es obligatorio antes de realizar un diezmado de la señal 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:

• La no linealidad de la fase no es crítico en los resultados finales.

Diezmado por un factor de 4 El algoritmo SIFT muestra que el cálculo 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 número total de operaciones necesarias se reduzca grandemente. En nuestra implementación, el diezmado se realiza seleccionando, de la señal filtrada, las muestras espaciadas por 4 índices.

Filtro Inverso y Algoritmo de Levinson 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:

De la señal diezmada calculamos los coeficientes predictivos {ki} y armamos el filtro inverso el cual hará un «blanqueamiento» de la señal diezmada. Un elemento crítico del algoritmo SIFT es la determinación del número M óptimo de coeficientes predictivos a ser calculados, ya que en este caso no se trata de un problema de estimación espectral sino de eliminar ciertas características de la señal diezmada y preservar otras, las cuales nos ayudarán a determinar el pitch con precisión. Si M es demasiado pequeño, se obtiene una muy pobre estimación de la estructura de resonancia dentro del rango (0, Fs/2).

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

Si M es demasiado grande, entonces se obtiene la estructura de resonancia con más detalles finos debidos a los múltiplos del pitch. Lo que se desea es obtener una estimación cercana de la estructura de resonancia e ignorar las características debido a los múltiplos del pitch. El algoritmo SIFT usa un valor de M=4.

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 requeriría más de 50 coeficientes. • Un filtro Chebyshev de orden 5 se ejecuta mucho más rápido que filtros de órdenes más altos.

Fig. 4 Espectro de la entrada al filtro inverso y espectro del recíproco del filtro inverso3

377

Colegio de Ingenieros del Perú - CDL - Capítulo de Ingeniería Mecánica y Mecánica Eléctrica

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), también se puede ver en el otro espectro (el no uniforme) picos a múltiplos de 120 Hz para este caso. Se puede decir también que, a la señal de salida del filtro inverso se le ha removido la componente de mayor resonancia dejando solo la información 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 señal entrante, solo elimina las características debidas a las resonancias del tracto vocal pero reteniendo la estructura fina debido a pulsos glotales.

Autocorrelación de la señal de salida del Filtro Inverso En esta etapa se calcula la autocorrelación de la señal de salida Yn del filtro inverso. Y se arma una secuencia rn nueva de autocorrelación de la siguiente manera:

Interpolación de la secuencia rn El algoritmo SIFT emplea un algoritmo de interpolación basado en dos transformadas discretas de Fourier (FFT para mas comodidad), las cuales se simplifican en una matriz de 18 valores. • La señal diezmada es de tamaño N=64. • La señal rn es de tamaño M = 2N = 128. Primero se calcula la transformada discreta de Fourier de la secuencia rn esta secuencia Rk es de tamaño M. Dicha secuencia se convierte en una nueva secuencia R’k de tamaño M’ = 4 M = 512. A esta última secuencia M’ de tamaño 512 se le aplica la transformada inversa de Fourier para obtener la secuencia r’n que viene a ser la interpolación de la secuencia original rn. Como se puede apreciar, realizar esta interpolación involucra realizar dos FFT de secuencias de tamaños considerables. Esto involucra un gran consumo de tiempo de ejecución. Pero, el algoritmo SIFT realiza una simplificación mediante manipulaciones matemáticas para obtener solamente los valores que nos son útiles. Es decir, calcula solamente los valores interpolados próximos al valor estimado n = N’ del pitch. La ecuación simplificada luego de las manipulaciones matemáticas es la siguiente:

Donde: rn: nueva secuencia de autocorrelación Yi: secuencia de salida del filtro inverso N: tamaño de la ventana (64) M: tamaño de la secuencia rn

Donde:

De esta secuencia se consigue el primer estimado n = N’, del valor de la frecuencia fundamental. Los cálculos precisos de la frecuencia fundamental requieren una resolución 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 resultaría 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 técnica de interpolación.

378

En nuestro caso M/M’ = 4. Como nuestro factor de interpolación 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.

Memorias - XVII CONIMERA

entonces el segmento j se clasifica como «no periódica». Caso contrario se verifica si ö >0.3, si esto es cierto entonces el segmento j es etiquetado como “periódica».

4.

Fig 5. Interpolación

A partir de la ecuación 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.

Resultados obtenidos

A continuación se muestran los resultados obtenidos de la implementación del algoritmo SIFT descrito. Las gráficas son tomadas del Code Composer Studio, el cual es el entorno de desarrollo para aplicaciones con el DSP.

Dicha relación se da en forma matricial:

Fig 6. Señal 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

Decisión para etiquetar la secuencia como «periódica» o « no periódica»

Fig 7. Señal a la salida del filtro Chebyshev de órden 5.

Para etiquetar un segmento como «periódica» o «no periódica», el algoritmo SIFT trabaja con el valor pico interpolado pero normalizado con respecto a r0 , es decir r(i) / r0 = ö, la descripción del criterio es el siguiente: • Si ö > 0.4 el segmento j es clasificado como “periódica». Pero si el segmento «j-1» fue «no periódica» y el segmento «j-2» fue «periódica» entonces el segmento «j-1» se reetiqueta como «periódica». • Si ö < 0.4, y los segmentos “j-1” y “j-2” no están etiquetados como «periódica»

Fig 8. Decimación por 4 (notar que ahora la señal es de tamaño 64):

379

Colegio de Ingenieros del Perú - CDL - Capítulo de Ingeniería Mecánica y Mecánica Eléctrica

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

Fig 12. Valores interpolados. En el código se ubicaron en la matriz I_V.

Finalmente el algoritmo calcula el pico máximo y halla el índice correspondiente.

Fig 10. Señal 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 «periódica» ya que el ö = 0.5850 > 0.4.

Fig 11. Correlación de la salida del filtro inverso

La secuencia de autocorrelación de la señal de salida del filtro inverso es de tamaño 128 pero en la gráfica mostrada solo se vé la mitad ya que dicha secuencia es simétrica 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

Tiempo de Ejecución 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.

Memorias - XVII CONIMERA

Tracking del Pitch Para un segmento grande de Voz A continuación se muestra (Fig. 14 a 17) el cálculo 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 «periódica».

Fig 17. Tracking del Pitch en el Segmento 4

5.

Fig 14. Tracking del Pitch en el Segmento 1

Conclusiones

Se ha demostrado la eficiencia tanto en precisión como en velocidad de la implementación del algoritmo SIFT en el DSPC6711. La frecuencia fundamental calculada tiene suficiente precisión como para ser empleada como bloque en otros sistemas de procesamiento de voz. El tiempo de ejecución puede mejorar muchísimo si se migra el código que se ha desarrollado, el cual está en coma flotante, a una implementación de punto fijo.

Fig 15. Tracking del Pitch en el Segmento 2

Fig 18. Entorno de desarrollo Code Composer Studio

Fig 16. Tracking del Pitch en el Segmento 3

6.

Bibliografía

[1]

Rulph Chassaing, «DSP Aplications using C and the TMS320C6X DSK» Wiley.

[2]

Markel J., «The SIFT Algorithm for Fundamental Frequency Estimation» IEEE TRANSACTIONS ON AUDIO AND ELECTROACUSTICS, VOL 20, NO5, 1972.

381

Colegio de Ingenieros del Perú - CDL - Capítulo de Ingeniería Mecánica y Mecánica Eléctrica

[3]

Vinay K. Ingle, John G. Proakis, «Digital Signal Processing Using Matlab» 1 st ed, Thomson Learning, 1999.

[6]

Wai Chu, «Speech Coding Algorithms, Foundation and Evolution of Standardized Coders» 2003, Jhon Wiley Sons

[4]

Rabiner, L; Schafer, R; «Digital Processing of Speech Signals», 1978, Prentice Hall.

[7]

spru328a, Code Composer Studio User ’s Guide, Texas Instruments.

[5]

Jurafsky, D; Martin, J.; «Speech and Language Processing», 2000, Prentice Hall

382

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.