implementaciÓn en tiempo real del … · procesamiento digital de señales a los técnicos, ......

13
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

Upload: builien

Post on 13-Oct-2018

218 views

Category:

Documents


2 download

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/guzlopster428 4071 - 999 921 348Lima - 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 investiga-ció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 pe r sona l docente jugará un r o l de tu to r, f ac i l i t ador y conductor de p r oyec tos

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

375

1. Introducción

Los Procesadores Digitales de Señales,DSP’s, tales como los de la familia 320 de TexasInstruments (TI) vienen siendo usados en un ampliocampo de aplicaciones tales como Comuni-caciones, Control, Procesamiento de Imágenes,Voz, Video, etc. lo cual, a su vez, se traduce en«electrónica de consumo masivo»: teléfonoscelulares, cámaras digitales, televisión de alta(HDTV), radio, módems, y otros dispositivos.Asimismo, los DSP’s han llegado a convertirseen una herramienta fundamental para introducir elprocesamiento digital de señales a los técnicos,estudiantes y profesionales interesados.

En general, la implementación de algoritmosde procesamiento de señales consta de lossiguientes pasos: diseño, simulación, codificacióny 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 caracte-rí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 quepuedan disminuir la performance final.

B. Simulación del Algoritmo

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

tiempo real. Aquí hay que tener en cuenta que hayuna diferencia entre la implementación en Matlaby la implementación final en el DSP.

C. Codificación del Algoritmo

En esta etapa tenemos que hacer uso delentorno de desarrollo dado por el fabricante. Enel caso de TI, la interfaz de desarrollo para todaslas familias de DSP’s es el Code Composer Studio.Al momento de codificar es recomendable haceruso de las librerías y herramientas disponibles porparte de TI, ya que de ésta forma se puedeoptimizar el código a la vez que acortamos eltiempo de desarrollo.

D. Verificación del Algoritmo

Esta es la etapa final donde comprobamosel correcto funcionamiento de nuestro algoritmo.

Procesamiento de la Voz y FrecuenciaFundamental

La voz está conformada por una secuenciade segmentos discretos de sonidos que estánenlazados en el tiempo. Estos segmentos,llamados fonemas, tienen características acústicasy articulatorias únicas. El número de gestosarticulatorios que el aparato vocal humano puedeproducir es casi infinito, sin embargo el número defonemas es limitado. Cada fonema tiene caracterís-ticas acústicas que lo distingue de otros, y cuandose combinan unos fonemas con otros se formanunidades largas llamadas sílabas y palabras.

Implementación en tiempo real del algoritmo SIFT para elcá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íaFacultad 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 procesamientodigital de señales al tratamiento de las señales de voz con el fin de calcular lafrecuencia fundamental de una trama de voz. Dicho cálculo es un bloque importanteen muchos sistemas de procesamiento de voz. En este caso el algoritmo a utilizarserá el algoritmo SIFT (Simplified Inverse Filter Tracking) implementado en tiemporeal sobre la plataforma de desarrollo DSP TMSC6711 de Texas Instruments.

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

376

Uno de los parámetros mas importantes enel análisis, síntesis y codificación de la voz es lafrecuencia fundamental (o también conocido comopitch) de un segmento de voz. La frecuenciafundamental está directamente relacionada con elhablante y define una característica única de lapersona. La voz es generada cuando el aire fluyede los pulmones y es periódicamente interrumpidapor los movimientos de las cuerdas vocales. Paralos hombres, el rango de la posible frecuenciafundamental se ubica entre 50 y 250Hz, mientrasque para las mujeres, el rango está ente 120 y350Hz.

La frecuencia fundamental debe calcularseen cada segmento de voz. Un típico segmento convoz se muestra en la Fig. 1.

• Los picos en el origen no pueden serusados para normalización.

• El valor pico no solo depende del númerode periodos de pitch sino también de laforma del espectro.

• El uso de logaritmos dificulta suimplementación en hardware y aumenta lalatencia del programa.

Un algoritmo que ha demostrado eficienciay a la vez cumple los requerimientos para suimplementación óptima en Hardware es el algoritmoSIFT. El presente trabajo se encarga de lospormenores de la implementación del algoritmoSIFT en la plataforma Hardware basada en el DSPTMS320C6711.

3. Propuesta de solución

Se plantea la implementación del algoritmoSIFT en hardware.

El Algoritmo SIFT

El algoritmo SIFT es una técnica de análisissimplificado basado en el esquema de filtro inverso,el cual retiene las ventajas de los métodos deautocorrelación y del análisis cepstral. El diagramadel algoritmo SIFT se muestra en la Fig. 2.

Fig. 1 Segmento de voz

2. Planteamiento del problema

Siendo el cálculo del pitch un bloquefundamental en todo sistema de procesamientode voz, se han desarrollado muchos métodos parael cálculo de la frecuencia fundamental de la voz.Algunos de los métodos hacen uso de la autoco-rrelación, periodograma, análisis cepstral, etc.

Cuando un algoritmo se traduce a hardware,es decir para ser implementado por ejemplo enun DSP, debe de cumplir una serie derequerimientos 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 elanálisis cepstral son eficientes en el cálculo delpitch, 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 tieneuna frecuencia de corte de 0.8 KHz. Luego semuestrea a una tasa de 2 KHz (diezmado por unfactor de 4) obteniéndose la señal diezmada Wn.A continuación se calculan los 5 primeros términosde la secuencia de autocorrelación en periodocorto (short-term) para cada ventana de 32ms detamaño. Luego se ejecuta el algoritmo de Levinsonpara calcular los 4 primeros coeficientes predictivos{ ai }. Con dichos coeficientes se procede a armarel filtro predictivo («blanqueador») de orden 4 através del cual pasará la señal diezmada. La salida

Memorias - XVII CONIMERA

377

Yn del filtro predictivo es una señal de error. Secalcula la autocorrelación de esta secuencia deerror y se ubica el valor pico y su índice correspon-diente. A continuación se interpolan los valoresalrededor del valor pico obtenido para obtener mejorresolución. Finalmente, basado en el picoencontrado, se hace una decisión para clasificarel segmento como «periódica» o «no periódica».

Prefiltrado (LPF de 800 Hz)

El filtrado es obligatorio antes de realizar undiezmado de la señal ya que evita que los espectrosse solapen uno con el otro (aliasing). En este casose usó un filtro IIR Chebyshev Tipo 1 de orden 5(5 polos y 5 ceros), los coeficientes empleadosfueron los siguientes:

num_ch=[0.0013149396970.005259758789 0.0078896381840.005259758789 0.001314939697];

den_ch =[1 -3.1910266596424.149363076516 -2.5703039031890.638454062317];

La respuesta en frecuencia del filtro semuestra en la Fig. 3:

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

Diezmado por un factor de 4

El algoritmo SIFT muestra que el cálculopreciso de la frecuencia fundamental es inclusoposible con la tasa de muestreo de 2 KHz ( 8KHz/ 4). El diezmado de 4 ocasiona que el númerototal de operaciones necesarias se reduzcagrandemente.

En nuestra implementación, el diezmado serealiza seleccionando, de la señal filtrada, lasmuestras espaciadas por 4 índices.

Filtro Inverso y Algoritmo de Levinson

De la señal diezmada calculamos loscoeficientes predictivos {ki} y armamos el filtroinverso el cual hará un «blanqueamiento» de laseñal diezmada.

Un elemento crítico del algoritmo SIFT es ladeterminación del número M óptimo de coeficientespredictivos a ser calculados, ya que en este casono se trata de un problema de estimación espectralsino de eliminar ciertas características de la señaldiezmada y preservar otras, las cuales nosayudarán a determinar el pitch con precisión.

Si M es demasiado pequeño, se obtiene unamuy pobre estimación de la estructura deresonancia dentro del rango (0, Fs/2).

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

Fig. 3 Respuesta en Frecuencia del FiltroChebyshev de Orden 5 empleado.

Se opta por el uso de un filtro IIR Chebyshevdebido a que:

• El algoritmo SIFT no exige que el filtro seaaltamente selectivo en frecuencia.

• Un filtro selectivo del tipo FIR por ejemplorequeriría más de 50 coeficientes.

• Un filtro Chebyshev de orden 5 se ejecutamucho más rápido que filtros de órdenesmás altos.

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

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

378

Como se muestra en la Fig. 4, con un valorde M =4 se puede ver claramente el pico del primerformante en el primer espectro (el que es uniforme),también se puede ver en el otro espectro (el nouniforme) picos a múltiplos de 120 Hz para estecaso.

Se puede decir también que, a la señal desalida del filtro inverso se le ha removido lacomponente de mayor resonancia dejando solo lainformación de la frecuencia fundamentalsuperimpuesta a una constante. Es por eso queel filtro inverso puede ser considerado como unode «pre-blanqueamiento» ya que no aplana porcompleto el espectro de la señal entrante, soloelimina las características debidas a lasresonancias del tracto vocal pero reteniendo laestructura fina debido a pulsos glotales.

Autocorrelación de la señal de salida delFiltro Inverso

En esta etapa se calcula la autocorrelaciónde la señal de salida Yn del filtro inverso. Y searma una secuencia rn nueva de autocorrelaciónde la siguiente manera:

Donde:

rn: nueva secuencia de autocorrelaciónYi: secuencia de salida del filtro inversoN: tamaño de la ventana (64)M: tamaño de la secuencia rn

De esta secuencia se consigue el primerestimado n = N’, del valor de la frecuenciafundamental.

Los cálculos precisos de la frecuenciafundamental requieren una resolución de 0.1 a 0.15ms en la escala de tiempos. Por ejemplo para unmuestreo de T = 0.125 ms, asumiendo que el pitchreal sea de 6 ms, nos resultaría en un error de1.74 Hz en el calculo. Mientras que en nuestrocaso la frecuencia de muestreo ha sido diezmaday T = 0.5 ms lo cual nos arroja un error de 7 Hz.Ante esto es necesaria emplear alguna técnicade interpolación.

Interpolación de la secuencia rn

El algoritmo SIFT emplea un algoritmo deinterpolación basado en dos transformadasdiscretas de Fourier (FFT para mas comodidad), lascuales 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 discretade Fourier de la secuencia rn esta secuencia Rk

es de tamaño M. Dicha secuencia se convierte enuna nueva secuencia R’k de tamaño M’ = 4 M = 512.

A esta última secuencia M’ de tamaño 512se le aplica la transformada inversa de Fourier paraobtener la secuencia r’n que viene a ser lainterpolación de la secuencia original rn.

Como se puede apreciar, realizar estainterpolación involucra realizar dos FFT desecuencias de tamaños considerables. Estoinvolucra un gran consumo de tiempo de ejecución.

Pero, el algoritmo SIFT realiza unasimplificación mediante manipulacionesmatemáticas para obtener solamente los valoresque nos son útiles. Es decir, calcula solamentelos valores interpolados próximos al valor estimadon = N’ del pitch.

La ecuación simplificada luego de lasmanipulaciones matemáticas es la siguiente:

Donde:

En nuestro caso M/M’ = 4.

Como nuestro factor de interpolación es 4,vamos a tener en total 6 valores interpolados, 3a la izquierda del valor estimado n = N’ y 3 suderecha, tal como se muestra en la Fig. 5.

Memorias - XVII CONIMERA

379

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

4. Resultados obtenidos

A continuación se muestran los resultadosobtenidos de la implementación del algoritmo SIFTdescrito. Las gráficas son tomadas del CodeComposer Studio, el cual es el entorno de desarrollopara aplicaciones con el DSP.

Fig 5. Interpolación

A partir de la ecuación simplificada, elalgoritmo SIFT emplea solamente dos vecinos parael calculo de los 6 valores interpolados, es decircada uno de los valores interpolados i(-3/4), ….i(+3/4) se derivan de los valores RN’-1, RN’ y RN’+1.

Dicha relación se da en forma matricial:

De esta forma obtenemos todos los valoresinterpolados.

Nuestra frecuencia fundamental resultanteserá:

P = (N’ + i) / 2, donde i es el índice quecorresponde 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»

Para etiquetar un segmento como «periódica»o «no periódica», el algoritmo SIFT trabaja con elvalor pico interpolado pero normalizado conrespecto a r0 , es decir r(i) / r0 = ö, la descripcióndel 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» sereetiqueta como «periódica».

• Si ö < 0.4, y los segmentos “j-1” y “j-2”no están etiquetados como «periódica»

Fig 6. Señal de entrada Sn muestreada a 8 KHz.

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

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

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

380

Fig 11. Correlación de la salidadel filtro inverso

La secuencia de autocorrelación de la señalde salida del filtro inverso es de tamaño 128 peroen la gráfica mostrada solo se vé la mitad ya quedicha secuencia es simétrica y no es necesariotener los valores de índices negativos. De estasecuencia se calcula el pico, y como se ve enla figura es de 19, entonces N’=19.

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

Fig 10. Señal a la salida del filtro inversoconstruido a partir de los coeficientes {ki}

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

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

Fig 13. Frecuencia fundamental (Fo en KHz)

La frecuencia es Fo dado en Khz. En estecaso Fo = 105.26 Hz.

El segmento analizado fue clasificado como«periódica» ya que el ö = 0.5850 > 0.4.

Tiempo de Ejecución

Mediante las herramientas del CodeComponer se ha encontrado que el algoritmodemora en ejecutarse 17 ms mientras que cadatrama de 256 muestras que ingresa al algoritmoes de 32 ms. Es decir, el tiempo que se tardaen recolectar las 256 muestras (32 ms) essuficiente para ejecutar el calculo del pitch parala trama anterior, con lo cual conseguimosrendimiento en tiempo real.

Memorias - XVII CONIMERA

381

Tracking del Pitch Para un segmentogrande de Voz

A continuación se muestra (Fig. 14 a 17) elcálculo del pitch para varias secuencias grandes.Se puede apreciar el valor calculado del pitch paracada segmento. Un Pitch de valor cero significaque la secuencia no corresponde a una «periódica».

Fig 18. Entorno de desarrollo Code ComposerStudio

6. Bibliografía

[1] Rulph Chassaing, «DSP Aplications using Cand the TMS320C6X DSK» Wiley.

[2] Markel J., «The SIFT Algorithm for FundamentalFrequency Estimation» IEEE TRANSACTIONSON AUDIO AND ELECTROACUSTICS, VOL 20,NO5, 1972.

Fig 14. Tracking del Pitch en el Segmento 1

Fig 15. Tracking del Pitch en el Segmento 2

Fig 16. Tracking del Pitch en el Segmento 3

Fig 17. Tracking del Pitch en el Segmento 4

5. Conclusiones

Se ha demostrado la eficiencia tanto enprecisión como en velocidad de la implementacióndel algoritmo SIFT en el DSPC6711. La frecuenciafundamental calculada tiene suficiente precisióncomo para ser empleada como bloque en otrossistemas de procesamiento de voz.

El tiempo de ejecución puede mejorarmuchísimo si se migra el código que se hadesarrollado, el cual está en coma flotante, a unaimplementación de punto fijo.

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

382

[3] Vinay K. Ingle, John G. Proakis, «Digital SignalProcessing Using Matlab» 1st ed, ThomsonLearning, 1999.

[4] Rabiner, L; Schafer, R; «Digital Processing ofSpeech Signals», 1978, Prentice Hall.

[5] Jurafsky, D; Martin, J.; «Speech and LanguageProcessing», 2000, Prentice Hall

[6] Wai Chu, «Speech Coding Algorithms,Foundation and Evolution of StandardizedCoders» 2003, Jhon Wiley Sons

[7] spru328a, Code Composer Studio User ’sGuide, Texas Instruments.