Você está na página 1de 7

ELECTRNICA DIGITAL

Diseo e implementacin
de un filtro de voz
Proyecto de desarrollo en un microcontrolador

M. Beln Llaneza
Noviembre de 2017

Ingeniera en Telecomunicaciones
Instituto Balseiro
Resumen

En este trabajo se busca disear e implementar en un microcontrolador, un filtro que permita el paso de la voz
humana. Para ello se realiz un diseo de filtro de respuesta al impulso finita en Matlab, se prob el
funcionamiento escuchando los audios filtrados y se analiz su espectro. Los resultados obtenidos fueron
satisfactorios.

1. Introduccin

Este trabajo utiliza una placa educativa desarrollada en Argentina denominada EDU-CIAA. La misma integra un
microcontrolador LPC4337 dual core ARM Cortex-M4F y Cortex-M0, conversores A/D, puertos USB, conectores de
Ethernet, pulsadores y leds, entre otras cosas, como se observa en la Figura 1. Estas placas tienen distintas
aplicaciones, educativas y tambin tienen versiones ms robustas diseadas para la industria.

Para la implementacin del filtro de voz en esa placa, se realiz un diseo por libreras en dnde se diferenciaron
los bloques de comunicacin con la computadora, adquisicin de datos y filtrado.

Figura 1: Diseo modular de la EDU-CIAA.

2. Especificaciones de diseo

El filtro implementado en este trabajo es del tipo FIR o de respuesta al impulso finita. Este tipo de filtro digital se
caracteriza mediante una ecuacin del tipo promedio mvil con finitos coeficientes, de la forma:

[1]
En dnde y[n] representa la seal filtrada, bk son los coeficientes del filtro, x[n] es la seal a filtrar y N es el orden
del filtro.

Para el diseo del mismo se utiliz una herramienta de diseo de filtros digitales del software computacional
Matlab, denominada fdatool.

Para la eleccin de los parmetros de diseo del filtro se tuvo en cuenta que el rango de frecuencias de la voz
humana hablada llega hasta 3,5kHz, pero existen fonemas de mayor frecuencia que llegan hasta 10 kHz.. Por lo
tanto la frecuencia de muestreo de voz se estableci en 20 kHz.

Como parmetros de diseo se seleccion una banda de transicin entre 3,5 kHz y 4,5 kHz, una atenuacin en la
banda de rechazo de 60 dB y una frecuencia de muestreo de 20kHz, lo que dio como resultado un filtro de orden
N=35 y respuesta en frecuencia dada por la Figura 2.

Los coeficientes obtenidos se exportaron con representacin en complemento A2 y aritmtica de punto flotante
con 16 bits de precisin para la parte decimal y 8 bits de representacin para la parte entera ms un bit de signo.

Figura 2: Respuesta en frecuencia de la magnitud del filtro diseado.

3. Implementacin

El diseo modular es como se observa en la Figura 3. Consiste en utilizar libreras diferenciadas para la adquisicin
de datos, la comunicacin con la PC y el filtro propiamente.

Se configuraron los perifricos mediante las libreras uart.h y adc.h, que se adjuntan a este trabajo. En las
mismas se configur la inicializacin de los perifricos y una funcin para leer un dato para el ADC y una para
enviar un dato en la librera de la UART. La frecuencia de muestreo del ADC se configur como la frecuencia
mxima por defecto y la resolucin, en 10 bits. La tasa de baudios de transmisin de la UART se configur en
230400 baudios.
Se configur un timer que activa cada 20 KHz la opcin start_now del ADC. Una vez que el ADC realiza la
conversin, se configur una interrupcin que lea el dato desde el ADC y lo guarde en una variable global. Luego se
levanta una bandera que inicia el procesamiento y filtrado. Una vez que el dato se filtr, se enva mediante la UART.

Figura 3: Implementacin de filtro de voz.

3.1. Implementacin del filtro

Para la implementacin del filtro, se utiliz una estructura de la forma:

// nmero de coeficientes del filtro


//arreglo de coeficientes del filtro
//arreglo de muestras
// ndice dnde se coloc la ltima muestra
// inicializacin realizada

El objetivo de esta estructura es definir un filtro que utilice un buffer circular para guardar las N muestras
anteriores que necesita el filtro para procesar los datos. El buffer circular sobreescribe los valores ms antiguos en
la lista.

En la librera del filtro se crean las siguientes funciones:


Las mimas tienen como objetivo construir, destruir, resetear y filtrar respectivamente.

Para el filtrado se tiene en cuenta la posicin dentro del buffer que ocupa la ltima muestra ingresada a la hora de
multiplicar con los coeficientes del filtro, esto se ve en la implementacin de la funcin:

4. Testeo
Se realiz una prueba de funcionamiento del mdulo UART, del ADC y el filtro por separado.

4.1. UART

Se gener un contador para enviar datos desde 0 a 255 y se observ que se enviaran correctamente a travs del
terminal CuteCom.

4.2. ADC

Se grab desde el micrfono un audio de voz, se muestre y envi mediante la UART. Luego se reprodujo mediante
audacity y se verific que el audio se escuchara correctamente.

4.3. FILTRO

Se probaron las funciones implementadas en Code Blocks, imprimiendo cada vez que el filtro reciba un dato el
buffer circular y la muestra filtrada. Tambin se obtuvo la respuesta impulsiva del filtro enviando una secuencia
10000 para un filtro de prueba con 5 coeficientes.
5. Resultados

Se gener un barrido de frecuencias de igual amplitud en el software de audio audacity y se grab con el
micrfono para evaluar el espectro en frecuencia antes y despus de pasar el filtro. El barrido de frecuencias,
denominado chirp alcanza frecuencias de hasta 10 kHz. En la Figura 4 puede apreciarse la densidad espectral
estimada de la seal sin filtrar en comparativa con la seal luego de pasar el filtro.

Figura 3: Implementacin de filtro de voz.


6. Conclusiones

Se dise e implemento un filtro de voz con frecuencia de corte cercana a los 4kHz de manera satisfactoria. El
diseo se obtuvo mediante la herramienta fdatool de Matlab. Se prob el funcionamiento del mismo y se analiz el
espectro obtenido tras filtrar un barrido de frecuencias de 0 a 10 kHz. Los resultados fueron los esperados. Se
verific que la implementacin del filtro propiamente se realiz ms fcilmente que en FPGA, aunque la
configuracin de los perifricos conllev un tiempo considerable.

7. Referencias

[1] PROYECTO EDU - CIAA , C OMPUTADORA INDUSTRIAL ARGENTINA , http://www.proyecto-


ciaa.com.ar/devwiki/lib/exe om.ar/devwiki/lib/exe

[2] TRATAMIENTO DE SEALES EN TIEMPO DISCRETO , S EALES Y S ISTEMAS - A LAN V. OPPENHEIM & A LAN S. W ILLSKY -
2 ED

Você também pode gostar