Está en la página 1de 5

TALLER DE CONVERSIÓN ANALÓGICO A DIGITAL

El proceso de cuantización es uno de los pasos que permite lograr la digitalización de una señal
analógica. Básicamente, la cuantización convierte una sucesión de muestras de amplitud continua
en una sucesión de valores discretos preestablecidos según el código utilizado. Durante el proceso
de cuantización se mide el nivel de la señal (tensión o corriente) de cada una de las muestras
obtenidas en el proceso de muestreo, y se les asigna un valor finito (discreto) de amplitud,
seleccionado por aproximación dentro de un margen de niveles previamente fijado que está
relacionado con el número de bits de resolución del conversor utilizado. En ese sentido si el nivel
obtenido no coincide exactamente con alguno de los valores, se toma el valor inferior más próximo
a través de una operación de redondeo.

1. Carga y reproducción de señales de audio

El objetivo de este taller es trabajar y reconocer algunos aspectos esenciales en el proceso de


digitalización de las señales. Para ello, se trabajará con muestras de señal de voz cortas que pueden
segmentarse a una longitud particular que podría ser 250 muestras o 500, capturadas a una tasa de
muestreo de 8 kHz con una resolución de 16 bits y almacenadas en un formato .mat (my_voice.mat).
En el enlace adjunto podrá encontrar como usar el objeto audiorecorder (se sugiere manejar un solo
canal de audio - monofónico).

1. De lo anterior, visualice con la ayuda de stem 20 muestras de su forma de onda de señal de voz
y compárela usando la función plot para la misma duración.
2. A partir de esa frecuencia de muestreo de 8 o 16 kHz genere un vector de tiempos y grafique la
señal de voz para entender su comportamiento y periodo con mayor riqueza en amplitud.
3. Ahora cargue el archivo good_evening.wav usando el comando audioread y visualice la forma
de onda en el dominio del tiempo, pero usando una escala en segundos.
4. Reproduzca el audio usando el comando sound(y,Fs);

2. Proceso de Cuantización

Matlab trabaja con una precisión numérica de 64 bits, sin embargo, para estudiar el proceso de la
cuantización, esto será equivalente a trabajar con números reales o precisión infinita. Por esa razón,
cada vez que se carga una señal .wav, la información queda representada en precisión infinita entre
-1 y 1. En la práctica, este proceso puede simularse usando números enteros, siendo el rango
disponible el número de escalones de cuantificación. Por ejemplo, si se cuantiza con 8 bits, habrá 28
= 256 niveles, y el rango iría entre -127 a 128. En Matlab la función que permite emular la
cuantización se conoce como función de redondeo (comando round), que devuelve el entero más
próximo. Entonces, la cuantización con 8 bits de información contenida en su señal .wav se obtiene
como:

voice_q = round(y*128)/128;

EDUARDO AVENDAÑO FERNÁNDEZ 1


5. Calcule, represente y escuche las señales cuantizadas con 8, 6, 4 y 2 bits y la señal de error de
cuantización. ¿Puede deducirse alguna relación entre las amplitudes del error y los tamaños de
los escalones o redondeo en el proceso de cuantización?.
6. A partir del teorema de Parseval, se puede calcular la relación señal a ruido (SNR) para cada uno
de los casos usando:
L 1

  x[n]
2

SNR  10 log10 L 1
n 0

  x[n]  x[n]
2

n0

Implemente esta función en Matlab para que calcule la SNR a partir de la señal original y
cuantificada y responda al siguiente prototipo:

function snr = f_snr(x, xq);

Recomiendo no usar loops, para ello aproveche la vectorización de la función sum.

7. Haciendo uso de la función para cálculo de SNR, calcule la SNR de la señal cuantizada para cada
uno de los cuatro casos de resolución. Compare el valor obtenido con la predicción teórica
suponiendo una distribución gaussiana de los datos. Compruebe la validez de tal suposición
usando un histograma, el cuál representa la distribución estadística experimental de los datos y
ajusta sobre ellos una Gaussiana histfit(y(:,1)).

3. Modelos de cuantizador – Simulink

Implemente en Simulink el siguiente modelo de cuantizador que incorpora: un generador de señal,


seguido por un retenedor de orden cero, un bloque de saturación con límite inferior igual -1 y
superior 1, luego un cuantizador con q = 2/22 se usa para 2 bits de resolución, y luego se resta la
señal original para determinar el nivel de error. En ese caso puede usar bloques export to workspace
para almacenar esos resultados y procesar posteriormente. Para el retenedor de orden cero use un
periodo de muestreo de 0.01Hz.

Acá es importante revisar de la teoría que la SNR también puede estimarse como

Energia de Señal  E 
SNR  10 log10  10log10  12 2x 
Energia de Ruido  q 
8. Implemente el modelo presentado en la figura 1 y obtenga para cada uno de los niveles de
cuantización las diferentes salidas.

EDUARDO AVENDAÑO FERNÁNDEZ 2


Signal Zero -Order Saturation Quantizer Scope
Generator Hold

Add Scope 1

signal
error
To Workspace
To Workspace1

Fig. 1. Modelo de cuantizador en diagrama de bloques

Fig. 2. Señal de salida del cuantizador y nivel de error.

Cuantizador Uniforme: Implemente el diagrama de bloques de la figura 3 y la señal de voz se carga


usando el bloque from workspace usando el siguiente código:
[n,m]=size(y); % determina la longitud de la señal
t= 0:1:n-1; % define un vector de tiempo
plot(t,y); axis tight

% Simulink
T= [0:1:n-1]'; % vector de columna de tiempo
U=y(:,1); % se toma un solo canal de la señal
simin=[T,U];

EDUARDO AVENDAÑO FERNÁNDEZ 3


9. Obtenga de igual manera para las diferentes resoluciones de bit las señales cuantizadas y su
error, y obtenga la SNR usando la función desarrollada.

simin
Scope 1
From Quantizer
Workspace

Add
signal
error
To Workspace
To Workspace 1

Fig. 4. Cuantizador Uniforme

MATLAB Scope 1
simin |u|
Function
From Abs MATLAB Fcn Quantizer
Workspace Product

Sign
MATLAB
Function
yout
MATLAB Fcn 1
Product 1 To Workspace2

error

Add To Workspace 1
signal

To Workspace
Scope 2

Fig. 5. Cuantizador de ley µ

Cuantizador de Ley µ: De igual forma implemente el diagrama de bloques de la figura 4 y realice


los mismos pasos que para el caso uniforme.

10. Finalmente, obtenga la densidad espectral de potencia para la señal de voz de entrada y la
señal cuantizada. Analice al respecto y comente sus observaciones.

EDUARDO AVENDAÑO FERNÁNDEZ 4


En Matlab Function debe usar la fórmula que implementa las funciones requeridas para obtener la
ley µ y su inversa. Ojo deben ser diferentes a las que implementa Matlab por defecto,
impleméntelas.

mu = lin2mu(y) % convierte una señal de audio a la ley-

y = mu2lin(mu) % inversa de la anterior

Concluya al respecto del proceso de cuantización y los tipos de cuantizadores de manera objetiva y
apoyado en los resultados obtenidos.

EDUARDO AVENDAÑO FERNÁNDEZ 5

También podría gustarte