• No se han encontrado resultados

CAPÍTULO 3. SIMULACIÓN Y ANÁLISIS DE RESULTADOS

3.1 Generalidades del experimento

3.1.1 Trabajo con archivos binarios *.COD

Tomando las siete muestras de audio seleccionadas anteriormente en el Sub-epígrafe 2.1.3, se codifican dichas muestras en el software coder.exe como se explicó en el Sub-epígrafe 2.1.4, se obtienen ficheros *.COD, son ficheros binarios que son leídos en Matlab mediante el segmento de código que aparece en la Figura 3.1.

Figura 3.1: Segmento de código en Matlab utilizado para leer archivos binarios

Estos archivos binarios *.COD aparecen en Matlab como una matriz de una sola columna, aparece primero el bit menos significativo (LSB) y luego el más significativo (MSB), tal como se ilustra en la Figura 3.2. Para hacer el trabajo con estos ficheros más fácil, se implementan códigos (Ver Figura 3.3) que permiten reordenar la información de voz que portan los mismos. Al inicio de cada paquete se encuentra una palabra de sincronismo que indica si el paquete está correcto, es decir que se recibió de forma correcta y no contiene errores por lo cual puede ser decodificado. Esta palabra de sincronismo se puede ver al inicio del paquete 1

en una de las muestras en la Figura 3.2. La palabra de sincronismo no se repite dentro de los datos, es única al inicio de cada paquete e indicadora del comienzo de nuevos paquetes, esta caracteristica es resultado de elegir en el coder.exe, el formato –itu que es el que será utilizado en los experimentos llevados a cabo en este proyecto.

Figura 3.2: Ejemplo de matriz que representa en Matlab los archivos binarios (en este caso *.COD), en amarillo se resaltan el byte más significativo y el menos significativo

que conforman la palabra de sincronismo 3.1.2 Simulación de canal

Luego de someter las muestras de audio al código que facilita el formato de estos datos se utiliza la función Burst, implementada en [2] (Ver Figura 3.4), para generar las pérdidas en ráfagas del canal, a partir del Modelo de Markov de 2 estados, tratado en el epígrafe 2.2, esta función da como salida un vector llamado cadena que da las pérdidas en ráfagas sufridas en el canal simulado (los 0 son paquetes recibidos y los 1 son paquetes perdidos). La función Burst posee como entradas las probabilidades p (expresa la probabilidad de transición del esta-

Figura 3.3: Segmentos de códigos en Matlab que modifican a los ficheros *.COD

do de paquete recibido al de perdido) y q (denota la probabilidad de transición del estado de paquete perdido al de recibido), en dependencia de esas variables de entrada las ráfagas de pérdidas en la salida: cadena, serán mayores o menores y ocurrirán con mayor o menor frecuencia, ofreciendo la posibilidad de analizar la implementación de la técnica en diversos escenarios en cuanto a la pérdida de paquetes que puede producir el canal.

Figura 3.4: Función Burst para simular pérdidas de canal basada en el Modelo de Markov de 2 estados

Para que las transiciones anteriores (de 0 a 1 y viceversa) ocurran, se crea una variable llamada ruleta con igual número de elementos que cadena, pero en ella cada elemento individual es un número decimal pseudo-aleatorio entre 0 y 1 obtenido mediante el empleo de una función rand ofrecida por MATLAB. Dicho valor se compara con las probabilidades de transiciones

(estado 0) y el valor del paquete actual en ruleta es menor que la probabilidad 𝑝 de que el paquete se pierda, entonces se pone un 1 en el paquete correspondiente en cadena y se da por perdido. En una variable denominada 𝑏 se coloca como un elemento nuevo de esta el número del paquete en el que ocurrió la transición de 0 a 1. En el caso que el valor actual en ruleta sea mayor que 𝑝, se pone un 0 en cadena en el elemento analizado. Si el paquete anterior al analizado no se recibió (estado 1) y el valor del paquete actual en ruleta es menor que la probabilidad 𝑞 de que el paquete se reciba, entonces se pone un 0 en el paquete correspondiente en cadena y se da por recibido. En una variable denominada 𝑔 se coloca como un elemento nuevo de esta el número del paquete en el que ocurrió la transición de 1 a 0. En el caso contrario de la comparación entre el valor de ruleta y 𝑞, se pone un 1 en cadena en la posición correspondiente al elemento analizado [2].

Las variables 𝑝 y 𝑞 se obtienen a partir de un cálculo para el cual se fija el tamaño esperado de la ráfaga y la probabilidad de pérdida de paquetes. Variando estos dos parámetros entonces se pueden hacer simulaciones con varias entradas de 𝑝 y 𝑞 [2].

Este proyecto persigue, mediante la implementación de la técnica Piggybacking de paquetes recuperar la mayor cantidad de paquetes perdidos posible y medir su impacto en la QoE, es por ello que se hace necesario implementar una simulación de canal que haga posible obtener una señal de salida después de haber pasado por el codificador, por el canal simulado (que puede contener la técnica Piggybacking implementada o no) y por el decodificador, para que pueda compararse con la señal de entrada al codificador, mediante PESQ que requiere como entradas la señal original y la degradada, para calcular el MOS correspondiente y así medir el impacto de la técnica en la QoE.

Documento similar