Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Compresión de audio MPEG (página 4)




Enviado por smangiaterra



Partes: 1, 2, 3, 4, 5

Cálculo del
SCFSI (Scale factor Selection
Information)

Los SCFSI contienen la información que indica cual SCF (agrupados
en SCFSI_bands), del primer gránulo pueden ser utilizados
para el segundo gránulo. Estos SCF, por lo tanto, no se
transmiten por lo que la ganancia de bits puede ser utilizada
para los códigos Huffman.

Para determinar el uso de SCFSI, la siguiente
información de cada gránulo debe ser
almacenada:

  1. Tipo de bloque (corto o normal)

    n

    en_tot = int{ log2 [ å | xr(i) |2 ]
    }

    i=1

    donde n es el número total de valores
    espectrales.

  2. La energía total del gránulo:

    Lbl(sb)+bw(sb)-1

    en_(sb) = int{ log2 [ å | xr(i) |2 ]
    }

    i=lbl(sb)

    donde lbl(sb) es el número
    del primer coeficiente perteneciente a la banda de SCF
    sb y bw(sb) es el número de
    coeficientes dentro de la SCF band sb.

  3. La energía total que abarca el SCF
    Band.
  4. La distorsión permitida en cada SCF
    Band.

Xm(sb) = int{ log2 [
xmin(i) ] }

donde xmin(i) es calculado por el modelo
psicoacústico.

Los SCF del primer gránulo siempre se transmiten.
Cuando se codifica el segundo gránulo, la
información de los 2 gránulos se comparan. Existen
4 criterios para determinar si SCFSI puede ser utilizado en
general. Si uno de los criterios no se satisfacen, entonces se
deshabilitan los SCFSI (esto quiere decir que se setean en 0
todos los SCFSI_Bands.)

Estos criterios son: (índice 0 significa primer
gránulo, índice 1:segundo)

  1. Los valores espectrales no son todos
    ceros.
  2. Ninguno de los gránulos contiene bloques
    cortos.

    | en_tot0 – en_tot1 |
    < en_totkrit

  3. La diferencia de energía entre los
    gránulos no debe superar en_totkrit
    (en_totkrit=10 valor
    sugerido).
  4. La suma de todas las diferencias de energía
    (en valor absoluto) entre los gránulos 0 y 1 no deben
    superar en_difkrit
    (en_difkrit=100)

å |
en(sb)0 – en(sb)1 |
<
en_difkrit

all scalefactors bands

Si los SCFSI no son deshabilitados por ninguno de los
condicionamientos precedentes, existen dos criterios para cada
SCFSI_band que deben cumplirse simultáneamente para
habilitar los SCFSI (o sea para setear en "1" el SCFSI en esa
SCFSI_band). Estas condiciones son:

a- å |
en(sb)0 – en(sb)1 |
<
en(scfsi_band)krit

all cr.bands in scfsi_band

b- å |
xm(sb)0 – xm(sb)1 |
<
xm(scfsi_band)krit

all cr.bands in scfsi_band

donde : xm(sb) es la distorsión permitida de cada
SCF band

en(sb) es la energía de cada SCF band

xm(sb)=int [log2
(xmin(i)]
xmin(i) es calculado por
modelo psicoacústico

Las constantes (con el índice krit) debe ser
elegido de manera tal que SCFSI solo se habilita de caso de
similares energía/distorsión.

donde los valores
sugeridos son:

en_totkrit = 10

en_difkrit = 100

en(scfsi_band)krit= 10

xm(scfsi_band)krit= 10

[B] Lazo de iteración
externo (lazo de
control de
distorsión)

Diagrama de bloques del Lazo de
iteración externo
en la codificación Layer III.

El lazo de iteración externo controla el ruido de
cuantificación que es producido por la
cuantificación de las líneas de frecuencia en el
lazo de iteración interno. El coloreado del ruido se hace
multiplicando las líneas de frecuencia dentro de una SCF
band con el SCF correspondiente a esa banda antes de hacer la
cuantificación. Las siguientes líneas de pseudo
código
muestran una posible manera de hacer esa
multiplicación:

Donde scalefac puede ser tanto scalefac_s o
scalefac_l según corresponda.

En el sistema real la
multiplicación se hace de manera incremental con el
incremento de los scalefactors aplicado a cada lazo de control de
distorsión.

El lazo de control de distorsión siempre arranca
con scalefac_scale=0. Si después de algunas iteraciones la
máxima longitud de los scalefactors (SCF) se hubiese
excedido (ver tabla de scalefac_compress en Capítulo 4 )
entonces scalefac_scale se incrementa en 1, de esta manera se
incrementa el rango dinámico posible de los scalefactors.
En esta situación los SCFs actuales y líneas de
frecuencias deben ser corregidos concordantemente.

Guardado de los
SCF.

Los SCF de todos los SCF bands (ya sean scalefac_l o
scalefac_s según corresponda) y el tamaño del
escalón de cuantificación (qquant) son guardados.
Si la computación del lazo de iteración
externa se cancela sin haberse alcanzado a un resultado
apropiado, este valor, junto con el espectro cuantificado da una
aproximación y puede ser transmitido.

Invocación del
Lazo de iteración Interno

En cada bucle en el lazo de iteración externo
(lazo de control de distorsión), se invoca al lazo de
iteración interno (lazo de control de tasa).

Los parámetros de entrada son:

  • los valores en el dominio de la
    frecuencia (salida del banco de filtro
    híbrido)
  • los SCF aplicados a los valores dentro de los SCF
    bands
  • el número de bits que están disponibles
    a lazo de control de tasa

La salida es el número de bits actualmente
utilizados por la cuantificación de las líneas de
frecuencia.

Cálculo de la
distorsión en los SCF bands

Para cada SCF Band la distorsión real se calcula
de acuerdo a:

i=lbl(sb)+bw(sb)-1

xfsf(sb) = å [| xr(i) | –
ix(i)4/3 * 4Ö 2qquant+quantaf ]
2

Lbl(sb) bandwidth(sb)

Donde :

  • Lsb(sb) es el número del
    coeficiente que representa la frecuencia más baja en la
    banda del SCF.
  • bw(sb) es el número de coeficientes
    dentro de esta banda.

Pre-énfasis

La opción de pre-énfasis (activada cuando
en la bandera de pre-énfasis del header está
seteada en 1) provee la posibilidad de amplificar la parte alta
del espectro de acuerdo a como lo establece la tabla
B6.

If preflag=1

ifqstep =
2[0.5*(1+scalefac_scale)]

xmin(j) = xmin(j) *
ifqstep[2*prefact(j)]

for i=lower limit of scalefact band j
mientras i<=upper limit of scalefactor band j;
i++

xr(i)=xr(i)*ifqstepprefact(j)

end for

end if

La condición para activar pre-énfasis es
de acuerdo a la implementación. Por ejemplo, ésta
se podría activar si en los 4 SCF bands superiores la
distorsión excede el umbral luego de la primer llamada del
lazo de iteración interno.

Si el segundo gránulo se está codificando
y SCFSI está activo en al menos un SCFSI_band, entonces el
pre-énfasis del segundo gránulo debe ser seteado
como en el primer gránulo.

Amplificación de
los SCF bands en aquellas bandas que se viola el umbral de
enmascaramiento.

Todos los valores espectrales de los SCF bands que
tienen una distorsión que excede la permitida son
amplificados por un factor denominado ifqstep. El valor de
ifqstep es transmitido en el campo scalefac_scale.

If [(xmín < xfsf) o
scalefactor band j < 0]

xmin(j) = xmin(j) *
ifqstep2

ifq(j) = ifq(j) +1

for i=lower limit of scalefact band mientras
i<=upper limit of scalefactor band; i++

xr(i) = xr(i) * ifqstep

end for

end if

En caso que el segundo gránulo se esté
codificando, los siguiente pasos debe ser tenidos en
cuenta:

  1. Ifqstep debe ser igual al del gránulo 1.

    If scfsi de acuerdo al scalefact
    band j = 1

    ifq(j) = ifq(j)primer
    gránulo

    for i=lower limit of scalefact band
    mientras i<=upper limit of scalefactor band;
    i++

    xr(i) = xr(i) * ifqstep ^
    scalefac(j)

    end for

    end if

    Donde Scalefac puede ser tanto scalefac_l() o
    scalefac_s() según corresponda

  2. En la primer iteración, los SCF de las SCF
    bands, en cuales SCFSI está activo deben ser adoptados
    (los SCF) del primer gránulo. Los valores espectrales
    correspondientes deben ser amplificados.
  3. Si no se trata de la primer iteración entonces
    la amplificación debe ser aplicada a los SCF bands en
    los cuales SCFSI está habilitado.

Condiciones para la
finalización de los lazos de
procesamiento

Normalmente los bucles de procesamiento finalizan si no
hay más SCF bands con distorsión mayor que la
permitida. No obstante, esta situación no es siempre
posible. Existen otras situaciones que producen la
finalización del lazo de iteración
externo:

  1. Todos los SCF han sido amplificados.
  2. La amplificación de al menos una banda excede
    el límite superior, el cual es determinado por el
    formato de transmisión de los SCF.

El límite superior es:

15 para las bandas de SCF 0 a 10

7 para las bandas de SCF 11 a 20

En caso de block_type=2 y
mixed_block_flag=0

15 para las bandas de SCF 0 a 18

En caso de block_type=2 y
mixed_block_flag=1

15 para las bandas de SCF 0 a 17

El límite superior es 7 para los otros
SCF

Una vez que el lazo de procesamiento se detiene, y
restaurando los valores guardados de scalefac_l(sb) o
scalefac_s(sb) (según corresponda) se dispone de una
salida útil. Para la implementación en tiempo real,
debe existir una tercer condición y esta es que el lazo de
iteración externa debe concluir también cuando la
ranura de tiempo asignada finalice.

[C] Lazo de
iteración Interno (Lazo de control de tasa)

Diagrama de bloques del lazo de
iteración Interno
en la codificación de Layer
III

El lazo de iteración interno realiza la
cuantificación de las líneas del dominio de la
frecuencia y prepara el formateo. La selección
de tablas, subdivisión del rango de big_values en regiones
y la selección del escalón de cuantificación
se realizan en el lazo interno.

Cuantificación

La cuantificación del vector completo de valores
espectrales se realiza de acuerdo a la siguiente
fórmula:

Prueba del
máximo valor cuantificado.

El máximo valor cuantificado permitido
está limitado. Este límite se establece para
restringir el tamaño de la tabla, si se utiliza
búsqueda en tabla para recuantificar las líneas
frecuenciales cuantificadas. Este límite está dado
por los posibles valores del identificador de longitud
"linbits" (Length Identifier Number of
BITS), de valores señalados con un código
ESC (ESC code). Por lo tanto, antes de realizar cualquier conteo
de bits, el tamaño del escalón de
cuantificación (qquant) es incrementado:

qquant = qquant + 1

Hasta que el máximo de los valores cuantificados
esté dentro del rango de la tabla de codificación
Huffman más grande.

Cálculo de la
cantidad de pares de valores = 0 en la parte superior de espectro
(rzero)

Rzero es el nombre que reciben la cantidad
de pares de valores correspondientes a la parte superior del
espectro cuyo valor es cero.

Cálculo de la
cantidad de cuartetos de valores = 1 en la parte superior de
espectro (count1)

Count1 es el nombre que reciben la
cantidad de cuartetos de valores correspondientes a la parte
superior del espectro cuyo valor absoluto sea menor o igual 1
[-1,0,1]. Dichos valores se encuentran a continuación
(descendiendo en las líneas frecuenciales) de los valores
etiquetados como rzero.

Cálculo de los
bits necesarios para cuantificar los valores <= 1 (v.
absoluto).

Una palabra de código Huffman se utiliza para
codificar uno de los cuartetos count1. Existen dos
diccionarios
de codificación Huffman con correspondiente longitud de
tablas de codificación (Tablas A y B de
Huffman). El número de bits utilizados para codificar los
count1 cuartetos está dado por:

bitsum_count1 = min ( bitsum_table0,
bitsum_table1)

donde count1table_0 se utiliza para apuntar a la tabla
A

k=firstcount1+count1-1

bitsum_table0 = å
count1table_0 * [ ix(4k) + 2*ix(4k+1) +
4*ix(4k+2) + 8*ix(4k+3) ]

k=firstcount1

y donde count1table_1 se utiliza para apuntar a la tabla
B:

k=firstcount1+count1-1

bitsum_table1 = å
count1table_1 * [ ix(4k) + 2*ix(4k+1) +
4*ix(4k+2) + 8*ix(4k+3) ]

k=firstcount1

Tanto count1table_0 como count1table_1 deben incluir el
número de bits necesarios para codificar los bits de
signo.

La información de cual tabla se utilizará
en la decodificación está transmitida en el campo
count1_table_select, el cual será "0" para la tabla
A y "1" para la tabla B,
respectivamente.

Invocación a la
subrutina 'SUBDIVIDE'

El número de pares de valores cuantificados no
tenidos en cuenta en count1 o rzero es denominado
big_values (grandes valores). La función (o
subrutina) Subdivide separa las bandas de SCF
correspondientes a estos valores en tres grupos con las
sig. características:

  • El último grupo,
    incompleto generalmente, se cuenta como uno
    completo.
  • El número de bandas de SCF en la primer y
    segunda región es contenido en (region0_count+1) y
    (region1_count+1) respectivamente.
  • El número de bandas de SCF en la tercer
    región puede calcularse usando big_values.
  • La estrategia para
    la partición en regiones es inherente a la
    implementación.

Una estrategia sencilla por ejemplo, asignar 1/3 de las
bandas de SCF a la primera y 1/4 a la última.

En caso de división de bloques (block split), la
subdivisión se realiza de manera análoga pero
sólo en dos sub-regiones. region1_count se setea a un
valor por defecto en este caso. Este valor es 8 en caso de
split_point=0 y 9 en caso de split_point=1. Ambos valores apuntan
a la misma frecuencia absoluta.

Cálculo del
libro de
codificación para cada
subregión

Existen 32 tablas de codificación Huffman
diferentes para la codificación de los pares de valores
cuantificados. Estas difieren entre sí en el máximo
valor que puede ser codificado y en las estadísticas de la señal para las
cuales están optimizadas. Solamente valores < 16
están en la tabla. Para valores >= 16 se proveen 2
tablas donde el valor más grande 15 se representa con un
carácter ESC. En este caso el
carácter 15 se codifica en una palabra adicional usando
código PCM linear con una longitud de palabra denominada
linbits.

Una manera sencilla de escoger la tabla a utilizar es
usar el máximo de los valores cuantificados en una
subregión. Las tablas que tienen la misma longitud se
encuentran optimizadas para distintas estadísticas de las
señales, por lo que una ganancia de
codificación adicional se puede obtener probando con todas
estas tablas.

Conteo de los bits
necesarios para codificar los valores en las
subregiones

donde : np(j): número de pares en una
sub-región

fe(j): número del primer valor cuantificado en
una sub-región

bitz: tabla con longitud de codificación de
Huffman (Huffman code length)

s(…):Función escalón: x>=0 entonces
s(x)=1

x<0 entonces s(x)=0

Obs: las tablas de codificación de Huffman deben
incluir el número de bits necesarios para codificar los
bits de signo.

Datos
Auxiliares

El standard ISO/IEC 11172
de audio provee la inclusión en la trama para su
transmisión de datos auxiliares
de longitud variable. Estos datos reducen el número de
bits disponibles para el audio, lo que puede generar una
degradación de la calidad de
audio.

Adicionalmente, la existencia de una secuencia de 12
"1"s (1111 1111 1111 1111) en los datos auxiliares puede producir
una alteración en la sincronización. Esto se ve
especialmente agravado cuando se utiliza formato
libre.

Formateo del
Bitstream.

Los códigos Huffman están en secuencia
desde las bajas a las altas frecuencias. En los lazos de
iteración se calculan las siguientes variables y
son utilizadas en la codificación Huffman:

Is(i), i =0…575 Valores cuantificados en
el dominio de la frecuencia

table_select[región]Tabla de
codificación Huffman para las regiones 0,1 y
2

region_adress1 Define el borde entre las regiones 0 y
1

region_adress2 Define el borde entre las regiones 1 y
2

max_value[región] Máximo
valor cuantificado en las regiones 0,1 y 2

Los datos son escritos en el bitstream de acuerdo a la
sintaxis de codificación Huffman detallada en el
capítulo 4.

Posible pseudo código para la asignación
de códigos Huffman en la parte de Big_values

Codificación Joint
Stereo.

Existen métodos
adicionales de codificación que permiten una ganancia
adicional de bits, y que redundan en una mayor cantidad de bits
disponibles al momento de la asignación de bits a las
muestras (Layer I o II ), o una menor, por lo tanto mejor,
inyección de ruido. (Layer III).

Estos métodos se conocen bajo el nombre
genérico de Joint_stero, dónde:

Joint stereo = Intensity Stereo para
Layer I y II

Joint stereo = Intensity Stereo y/o
MS_stereo para Layer III.

Ambos métodos explotan las redundancias de las
señales estereofónicas.

La determinación si se aplica o no el modo joint
stereo se establece en campo mode (modo) [2 bits] del header de
la trama pudiendo tomar éste los siguientes
valores:

modo

modo especificado

00

estéreo

01

joint_st(intensity_ st and/or
ms_stereo

10

canal dual

11

canal simple

Para:

Layer I: todos los modos excepto
joint_stereo el valor de limite(bound) es 32

Layer II: todos los modos excepto
joint_stereo el valor de límite es
sblimit.

Codificación en
estéreo intenso (intensity stereo) (Layer I y
II)

Un método de
codificación adicional a joint stereo que se utiliza en
Layer I y II es intensity stereo. Intensity stereo puede ser
utilizado para incrementar la calidad de audio y/o reducir el
bitrate de señales estereofónicas. La ganancia en
la tasa de bits es de aproximadamente de 10 a 30 Kbps. Su
implementación requiere de una complejidad adicional en el
decodificador y el incremento en la complejidad de codificador es
pequeño. Las demoras en el decodificador y decodificador
no se ven afectadas.

Resultados psicoacústicos revelan que en altas
frecuencias (por encima de los 2 KHz) la ubicación de la
imagen
estereofónica dentro de una banda crítica
está determinada por el contorno temporal y no por la
estructura
"fina" de la señal.

La idea básica para la codificación en
estéreo intenso es que para algunas subbandas, en lugar de
transmitir en forma separada las muestras del canal derecho e
izquierdo, solamente se transmite la suma, pero sí los SCF
de ambos canales, lo que preserva la imagen
estereofónica.

Primero, se hace una estimación de la tasa de
bits requerida para ambos canales (derecho e izquierdo). Si la
tasa requerida excede la disponible, entonces la tasa de bits
puede ser reducida por medio de setear un número de
subbandas en modo estéreo intenso. Dependiendo de la tasa
necesaria las subbandas:

16 a 31

12 a 31

8 a 31 ó

4 a 31

pueden setearse en modo estéreo intenso. Para la
cuantificación de dichas subbandas combinadas, la mayor
cantidad de bits posibles para la asignación se usan para
los canales derecho e izquierdo.

Las señales de subbandas en joint_stereo de los
canales derecho e izquierdo se suman. Estas nuevas señales
de subbandas se escalan de manera normal, pero los SCF
originalmente determinados para los canales derecho e izquierdo
son transmitidos de acuerdo a la sintaxis del bitstream. La
cuantificación de muestras de subbandas comunes, la
codificación de muestras comunes y la codificación
de bits de asignación (bit allocation) comunes se realizan
de la misma manera que cuando se codifican en forma
independiente.

Codificación
en MS_Stereo y estéreo intenso en Layer
III

En Layer III se puede usar la combinación del
modo ms_stereo (sum/difference) y el modo intensity
stereo.

  • MS_stereo switching.

El modo MS_stereo se activa si la siguiente
condición en el modo joint stereo se cumple:

511 511

å
[rli2 – rri2] <
0.8 * å
[rli2 +
rri2]

i=0 i=0

Los valores de rli y rri
corresponden a las energías de las líneas
espectrales de las FFT de los canales izquierdos y derecho
calculadas con el modelo psicoacústico.

  • Procesamiento MS_Stereo

En el modo MS_stereo los valores normalizados de los
canales medio/lateral (middle/side) son transmitidos en vez de
los valores Ri/Li de los canales
derecho/izquierdo, donde:

Mi = Ri +
Li Si = Ri –
Li

Ö 2 Ö 2

Limitación del ancho de banda del canal
Si:

  • Todos los valores por encima del SCF band más
    alto se establecen en 0.

Dispersión (Sparsing) del canal
Si.

  • En cada SCF band sb todos los pares de valores
    pequeños (Si,Si+1) se establecen
    en 0.

If (Si2 +
Si+12) < ssb *
(Li2 + Li+12 +
Ri2 +
Ri+12)

Si = 0

Si+1 = 0

End if

Los siguientes coeficientes de umbral del canal
diferencia se aplican a las SCF bands para tipos de bloques # 2
(bloques largos: transformada MDCT larga):

  • Procesamiento de estéreo
    intenso.

Cálculo de la posición de estéreo
intenso (intensity stereo position =
is_possb)

Para cada SCF band sb codificado en
estéreo intenso se ejecutan los siguientes
pasos:

  • Is_possb = NINT[12/p * arctan( L_Energysb /
    R_Energysb )1/2]
  • Li = Li + Ri para
    todos los índices i dentro de la SCF band
    actual.
  • Ri = 0 para todos los índices
    i dentro de la SCF band actual.
  • La posición de estéreo intenso
    (is_possb) se transmite en vez de los SCF del canal
    derecho (siempre 3 bits, posición estéreo: de 0 a
    6; 7=posición estéreo ilegal).

Donde L_Energysb / R_Energysb
denota las energías de las señales de los canales
izquierdo/derecho dentro de la SCF band actual y
Li/Ri son los valores
transformados.

Los SCF bands del canal derecho(diferencia) conteniendo
sólo ceros después de la codificación, los
cuales no corresponden a la parte codificada en intensity stereo,
deberían ser transmitida con un SCF=7 para prevenir su
decodificación en estéreo intenso.

7 – Modelos
Psicoacústicos de la ISO/IEC 11172

Modelo
Psicoacústico I

El cálculo
del modelo psicoacústicos tiene que ser adaptado a la capa
correspondiente. Este ejemplo es válido para capas 1 y 2.
El modelo también puede ser adoptado para la capa
III.

No hay una diferencia principal en aplicación del
modelo psicoacústico 1 a la capa 1 y 2.

Capa 1: se calcula una nueva
asignación de bits para cada bloque de 12 muestras por
subbanda o 384 muestras PCM.

Capa 2: se calcula una nueva
asignación de bits para los tres bloques totalizando 36
muestras por subbandas correspondiente al 3 * 384 (1152)muestras
PCM.

Se calcula la asignación de bits de las 32
subbandas en base de la relación señal
máscara de todas las subbandas. Por lo tanto, es necesario
determinar para cada subbanda, el máximo nivel de
señal y el mínimo umbral de
enmascaramiento.

El mínimo de umbral de enmascaramiento se deriva
de una transformada rápida de Fourier aplicada a una
entrada PCM, seguida por el cálculo del modelo
psicoacústico.

La transformada rápida de Fourier en paralelo con
el filtro subbanda compensa la pérdida de selectividad
espectral obtenida en bajas frecuencias por el banco de filtros
de subbanda. Esta técnica provee tanto una suficiente
resolución en el tiempo para la codificación de la
señal de audio (filtro polifásico con una ventana
optimizada para mínimos pre-ecos) y una suficiente
resolución espectral para el cálculo de sus
umbrales enmascaramiento. Las frecuencias y niveles de
distorsión por aliasing pueden ser calculados. Esto es
necesario para el cálculo de la tasa mínima en esas
subbandas que necesitan algunos bits para cancelar las
componentes de aliasing en el decodificador. La complejidad
adicional para calcular la mejor resolución en frecuencia
es necesaria solamente en el codificador, y no introduce en un
retardo adicional o complejidad en el decodificador.

El cálculo de la relación señal
máscara está basado en los siguientes
pasos:

  1. Cálculo de la transformada rápida de
    Fourier para la conversión del dominio tiempo al dominio
    frecuencia.
  2. Determinación del nivel de presión
    sonora para cada subbanda.
  3. Determinación del umbral de silencio
    (umbral absoluto).
  4. Encontrar las componentes del tipo tonal y no
    tonal de la señal de audio.
  5. Diezmado de los enmascaradores, para obtener
    solamente aquellos relevantes.
  6. Cálculo de los umbrales de enmascaramiento
    individuales.
  7. Determinación del umbral de enmascaramiento
    global.
  8. Determinación del umbral de enmascaramiento
    mínimo para cada subbanda.
  9. Cálculo de la relación señal
    máscara para cada subbanda.

1. Transformada
rápida de Fourier.

El umbral de enmascaramiento se obtiene estimando la
densidad
espectral de potencia que se
calcula a través de la transformada rápida de
Fourier de orden 512 para la capa I y de orden 1024 para la capa
II. La transformada rápida de Fourier se calcula
directamente desde la entrada PCM enmarcada con una ventana del
tipo Hann.

Para que haya coincidencia en el tiempo entre la
asignación de bits y las muestras de subbanda
correspondientes, la señal PCM entrante que ingresa a la
transformada rápida de Fourier, ésta debe
retardarse.

  • El retardo del filtro subbanda es de 256 muestras, lo
    que corresponde 5,3 milisegundos de audio a 48 KHz. de tasa de
    muestreo. Se
    requiere un desplazamiento de ventana de 256 muestras para
    compensar la demora en el banco de filtro de análisis de subbanda.
  • La ventana Hann debe coincidir con las muestras por
    subbanda de la trama. Para la capa 1 esto se adiciona a un
    desplazamiento de ventana de 64 muestras. Para Layer II se
    requiere un desplazamiento de ventana de – 64
    muestras.

Datos técnicos de la Transformada Rápida
de Fourier (FFT):

 

Layer I

Layer II

Longitud de la transformada

512 muestras

1024 muestras

Tamaño de la ventana (fs=48KHz)

10,67 mseg

21,3 mseg

Tamaño de la ventana
(fs=44.1Khz)

11,6 mseg

23,2 mseg

Tamaño de la ventana (fs=32kHz)

16 mseg

32 mseg

Resolución de frecuencia

Frec_muestreo/512

Frec_muestreo/1024

Ventana Hann:

h(i)= (8/3)1/2 * 0.5 * [ 1 –
cos(2p i /N) ] i = 0 …
N-1

Densidad espectral de potencia:

Donde s(l) es la señal de
entrada.

Se ha hecho una normalización al nivel de referencia de 96
dB SPL (Sound Pressure Level), de forma tal que el máximo
valor posible corresponda a 96 dB.

2. Determinación
del Nivel de Presión Sonora (Sound Pressure Level)
(
volumen)

El nivel de presión sonora (SPL) Lsb
en la subbanda n se calcula como:

Lsb(n) = MAX [ X(k) ,
20*log(scfmáx(n)* 32768)
– 10 ] dB X(k) en la subbanda n

Donde :

  • X(k) es el SPL de la línea
    espectral con un índice k de la FFT con el
    máximo de amplitud en el rango de frecuencia
    correspondiente a la subbanda n.
  • Scf(máx) es en Layer I el SCF y
    en Layer II el máximo de los 3 SCF de la subbanda n de
    la trama.
  • El término -10 dB corrige la diferencia
    entre nivel de pico y RMS. (Vp/Ö
    2=Vrms 20.log2(1/Ö 2) =
    -10dB)
  • Lsb se calcula para cada subbanda
    n.

3. Consideración
del Umbral en silencio

El umbral en silencio LTq(k),
también denominado umbral absoluto (UA) se detalla en las
tablas D1 a,b,c para layer I y D1 d,e,f para layer
II. Estas tablas dependen de la frecuencia de muestreo de la
señal PCM de entrada. Los valores están disponibles
para cada muestra en el
dominio de la frecuencia donde se calcula el umbral de
enmascaramiento.

Un offset dependiente de la tasa total de bits se
utiliza para el umbral absoluto. Este offset es de –12 dB
para tasa de bits >= 96 Kbps y 0 dB para tasas de bits < 96
Kbps por canal.

4. Localización
de las componentes tonales y NO
tonales

La tonalidad de una componente de enmascaramiento tiene
influencia en el Umbral de Enmascaramiento (UE). Por este motivo,
resulta importante discriminar entre las componentes del tipo
Tonal y NO Tonal. Para el
cálculo del umbral de enmascaramiento global es necesario
discriminar ambas componentes del espectro de la FFT.

La operación comienza con la determinación
del máximo local, luego se extrae la componente tonal
(tipo sinusoide) y se calcula la intensidad de las componentes no
tonales dentro de un ancho de banda comprendido en una banda
crítica. Los límites de
las bandas críticas se dan en las tablas D2 a,b y c
para layer I y D2 d,e y f para layer II)

El ancho de banda de las bandas críticas
varía con la frecuencia, con un ancho de banda de
solamente 0.1 KHz para bajas frecuencias hasta un ancho de banda
de aproximadamente 4 KHz en altas frecuencias. Estos
límites se determinaron en experimentos
psicoacústicos donde se comprobó que el oído
humano tiene mejor resolución en bajas frecuencias que en
la región de frecuencias altas.

Para determinar si el máximo local puede ser una
componente del tipo tonal se examina un rango de frecuencia
(df) alrededor del máximo. Este rango de frecuencia
esta dado por:

Para listar las líneas espectrales
X(k) que son componentes tonales y NO tonales se deben
realizar las siguientes 3 operaciones:

  1. La línea espectral X(K) se
    etiqueta como un máximo local si:

    X(K) > X(K-1) y
    X(K) >= X(K+1)

  2. Etiquetado del máximo
    local.
  3. Listado de los componentes tonales y
    cálculo de SPL

Un máximo local se coloca en la lista de
componentes tonales si:

X(K) – X(K + j) >=
7dB

Donde j es elegido de acuerdo
a:

Layer I:

J= -2,+2 para 2<k<63

J= -3,-2,+2,+3 para 63<=k<127

J= -6,…,-2,+2,…,+6 para
127<=k<=250

Layer II

J= -2,+2 para 2<k<63

J= -3,-2,+2,+3 para 63<=k<127

J= -6,…,-2,+2,…,+6 para
127<=k<255

J= -12,…,-2,+2,…,+12 para
255<=k<500

Si resulta que X(K) es un componente tonal,
entonces se listan los siguientes parámetros:

  • El índice k de la línea
    espectral
  • SPL Xtm(K) = 10*
    log10[ 10X(k-1)/10 +
    10X(k)/10 + 10X(k+1)/10 ], en
    dB
  • La bandera tonal (tonal flag)

Luego, todas las líneas espectrales dentro de
las frecuencias analizadas se setean a -µ

3. Listado de las componentes no tonales y
cálculo de la energía

Las componentes no tonales (asimilables a ruido) se
calculan a partir de las líneas espectrales remanentes.
Para calcular las componentes no tonales a partir de estas
líneas espectrales X(K), se determinan
las bandas críticas z(k) usando las tablas
D2 a,b y c para Layer I y D2 d,e y f para Layer
II.

En Layer I:

  • 23 bandas críticas son usadas para las tasas
    de muestreo de 32 KHz
  • 24 bandas críticas son usadas para las tasas
    de muestreo de 44.1 KHz
  • 25 bandas críticas son usadas para las tasas
    de muestreo de 48 KHz

En Layer II:

  • 24 bandas críticas son usadas para las tasas
    de muestreo de 32 KHz
  • 26 bandas críticas son usadas para las tasas
    de muestreo de 44.1 KHz y 48 KHz

Dentro de cada banda crítica, la energía
de las líneas espectrales remanentes luego que las
componentes tonales se establecieran en cero, son sumadas para
formar el SPL de la nueva componente NO tonal Xnm(k)
correspondiente a esa banda crítica.

Los siguientes parámetros son
listados:

  • El índice K de la línea espectral
    más cerca de la media geométrica de la banda
    crítica
  • SPL Xnm(k) en dB
  • La bandera No tonal (NON Tonal Flag)

5. Diezmado de las
componentes tonales y no tonales.

El diezmado es un procedimiento que
se utiliza para reducir el número de enmascaradores
(maskers) que son utilizados para el cálculo del umbral de
enmascaramiento global.

a.- Los componentes tonales Xtm(k) o NO
tonales Xnm(k) son considerados para el
cálculo del umbral de enmascaramiento solamente
si:

Xtm(k) >= LTq(k) o
Xnm(k) >= LTq(k)

En la expresión, LTq(k) es el umbral
absoluto (o umbral en silencio) a la frecuencia del índice
k. Estos valores se dan en la tabla D1 a,b, y c para Layer
I y D1 d,e, y f para layer II.

b.- El diezmado de dos o más componentes
tonales dentro de una distancia de 0.5 bark: dejar la
componente con la energía más alta y remover las
componentes menores de la lista de componentes tonales. Para
esta operación, una ventana que se desplaza en la banda
crítica se utiliza con ancho de 0.5 bark.

En adelante, el índice j se
utilizará para indicar las componentes tonales y NO
tonales relevantes de la lista combinada diezmada.

6. Cálculo de
los umbrales de enmascaramiento
individuales.

De las N/2 muestras originales en el dominio de la
frecuencia, indexadas en k, solamente un
subconjunto de muestras, indexadas en i son
consideradas para el cálculo del umbral de enmascaramiento
global. Las muestras están en las tablas D1 a,b y c
para layer I y D1 d,e y f para layer II.

Layer I:

  • Para las líneas de frecuencia correspondientes
    a la región de frecuencia cubierta por las primeras 6
    subbandas, no se utiliza submuestreo.
  • Para las líneas de frecuencia correspondientes
    a la región de frecuencia cubierta por las siguientes 3
    subbandas se considera cada segunda línea
    espectral.
  • Finalmente, en el caso de 44.1 KHz y 48 KHz de tasa
    de muestreo, en la región de frecuencias
    correspondientes a las subbandas remanentes, son consideradas
    cada 4 líneas espectrales, hasta 20 KHz.
  • En el caso de 32 KHz de frecuencia de muestreo, en la
    región de frecuencias correspondientes a las subbandas
    restantes se consideran cada 4 líneas espectrales, hasta
    15 KHz.

Layer II:

  • Para las líneas de frecuencia correspondientes
    a la región de frecuencia la cual es cubierta por las
    primeras 3 subbandas, no se utiliza submuestreo.
  • Para las líneas de frecuencia correspondientes
    a la región de frecuencia la cual es cubierta por las
    siguientes 3 subbandas se considera cada segunda línea
    espectral.
  • Para las líneas de frecuencia correspondientes
    a la región de frecuencia la cual es cubierta por las
    siguientes 6 subbandas se considera cada 4 líneas
    espectrales.
  • Finalmente, en el caso de 44.1 KHz y 48 KHz de tasa
    de muestreo, en la región de frecuencias
    correspondientes a las subbandas remanentes, cada 8
    líneas espectrales son consideradas hasta 20
    KHz.
  • En el caso de 32 KHz de frecuencia de muestreo, en la
    región de frecuencias correspondientes a las subbandas
    restantes cada 8 líneas espectrales se consideran hasta
    15 KHz.

El número de muestras, n, en el dominio de las
frecuencias submuestreadas es diferente dependiendo de las tasas
de muestreo y de las capas.

Tasa de muestreo (KHz)

Layer I (n=)

Layer II (n=)

32

108

132

44.1

106

130

48

102

126

Cada componente tonal y NO tonal se le asigna el valor
del índice i que más cerca se
corresponda a la frecuencia de la línea espectral original
X(k). Este índice i se da en las
tablas D1 a,b y c para layer I y D1 d,e y f para
Layer II.

Los umbrales de enmascaramiento individuales para tanto
las componentes tonales y NO tonales se dan en la siguiente
expresión:

LTtm[z(j),z(i)] = Xtm[z(j)] +
avtm[z(j)] + vf [z(j),z(i)] dB

LTnm[z(j),z(i)] = Xnm[z(j)] +
avnm[z(j)] + vf [z(j),z(i)] dB

En las fórmulas, LTtm y
LTnm son los umbrales de enmascaramiento individuales
en las bandas críticas (z) (en Bark) de las componentes de
enmascaramiento, en la banda crítica del enmascarador
(masker),zm (en Bark). Los valores en dB pueden ser
tanto positivos como negativos.

El término Xtm[z(j)] es el SPL de la
componente de enmascaramiento con el número índice
j en la banda crítica correspondiente
z(j).

El término av se denomina el
índice de enmascaramiento y vf es la
función de enmascaramiento de la componente de
enmascaramiento Xtm[z(j)]. El índice de
enmascaramiento av es diferente para los enmascaradores (maskers)
tonales y NO tonales (avtm y
avnm)

Para los maskers tonales está dado
por:

avtm = -1,525 – 0,275 *
z(j) – 4,5 dB

Para los maskers NO tonales está dado
por:

avnm = -1,525 – 0,175 *
z(j) – 0,5 dB

La función de enmascaramiento vf de un
enmascarador (masker) se caracteriza por diferentes pendientes
inferiores y superiores, las cuales dependen de la distancia (en
Bark) dz = z(i)-z(j) al masker. En la expresión, i
es el índice de la línea espectral a la cual se
calcula la función de enmascarado. (y j es
la del enmascarador [masker])

Las bandas críticas z(j) y z(i) se encuentran en
las tablas D1 a,b y c para Layer I y D1 d,e y f
para Layer II. La función de enmascarado, que es la misma
para los maskers tonales y NO tonales está dada
por:

vf = 17* (dz+1) – ( 0,4
* X[z(j)] + 6 ) dB para -3 <=dz<-1
Bark

vf = ( 0,4 * X[z(j)] + 6 ) *
dz dB para -1 <=dz< 0 Bark

vf = – 17 * dz dB para 0 <=dz< 1
Bark

vf = -(dz-1) * ( 17 – 0,15 *
X[z(j)] ) – 17 dB para 1 <=dz< 8 Bark

En estas expresiones X[z(j)] es el SPL de la
j-ésima componente de enmascarado (en dB). Por razones de
complejidad de implementación, el enmascaramiento no se
considera más allá, si dz < -3 bark o dz >= 8
bark (LTtm y LTnm se setean en -µ
dB)

7. Cálculos del
Umbral de enmascaramiento global (LTg)

El umbral de enmascaramiento global LTg (i)
en la i-ésima muestra de frecuencia se deriva a partir de
las pendientes superiores e inferiores de los umbrales de
enmascaramiento individuales de cada uno de los enmascaradores
tonales y no tonales "j" y a partir del umbral en silencio
LTq(i). Este umbral se da en las tablas D1.a,
D1.b, D1.c para el Layer I y de las tablas
D1.d, D1.e y D1.f para Layer II. El umbral
de enmascaramiento global se obtiene sumando las potencias
correspondientes la los umbrales de enmascaramiento individuales
más el umbral de enmascaramiento en silencio.

El número total de enmascaradores tonales
está dado por m y el número total de
enmascaradores no tonales por n. Par una dada
i, el rango de j puede ser reducido
para abarcar esas componentes de enmascaramiento que se hallan
entre –8 y +3 Bark desde i. Fuera de este
rango, LTtm y LTnm se consideran -µ
dB.

8. Determinación
del umbral de enmascaramiento
mínimo.

El mínimo nivel de enmascaramiento
LTmín(n) en la subbanda n se
determina a partir de la siguiente expresión:

LTmín(n) = MIN { LTg(i) }
[dB]

f(i) en la subbanda n

Donde f(i) es la frecuencia de la i-ésima muestra
frecuencial. Las f(i) están tabuladas en las tablas
D1.a, D1.b, D1.c para el Layer I y de las
tablas D1.d, D1.e y D1.f para Layer
II.

Un nivel mínimo de enmascaramiento (
LTmín(n) ) se computa para cada
subbanda.

9. Cálculo de la
relación Señal-Máscara
(SMR)

La relación señal máscara se
computa para cada subbanda (n) de la siguiente manera:

SMRsb(n) = Lsb(n) –
LTmín(n) en dB.

Modelo Psicoacústico
II

General

Este modelo es un modelo independiente y puede ser
ajustado a cualquiera de las capas de la Norma ISO/IEC 11172. La
descripción provee la suficiente
información para su utilización en las capas I y II
y para su uso en la capa III, las adaptaciones necesarias son
descriptas al final del presente capítulo.

El proceso de
cálculo de la generación del umbral tiene 3
entradas
. Estas son:

  • La longitud de desplazamiento (iblen) para el
    proceso de cálculo del umbral (donde
    384<iblen<640)
    . Este iblen debe mantenerse constante
    sobre cualquier aplicación del proceso de cálculo
    del umbral. Si, como sucede en layer III, resulta necesario
    calcular los umbrales para 2 longitudes de desplazamiento
    (iblen) diferentes, entonces dos procesos
    serán necesarios, cada uno corriendo con una longitud de
    desplazamiento fija. En el caso donde iblen esté fuera
    del rango (de 384 a 640) entonces será necesario
    calcular los umbrales psicoacústicos con una longitud de
    ventana diferente tanto como su iblen. Hay dos formas de hacer
    esto:
  • Usar una longitud de transformada diferente y
    recalcular los coeficientes de inicio para el modelo
    o,
  • Usar la misma longitud de transformadas pero una
    ventana tipo Hann más corta, para adaptar los datos al
    problema en cuestión.

La elección de uno u otro método depende
de la implementación.

  • Las muestras iblen más nuevas de la
    señal, con las muestras retrasadas
    (tanto en el
    banco de filtro o en el cálculo psicoacústico) de
    forma tal que la ventana del cálculo
    psicoacústico esté centrada en la ventana
    temporal de la aplicación.
  • La frecuencia de muestreo. Existe un conjunto
    de tablas provistas para las frecuencias de muestreo
    estándares. La frecuencia de muestreo, a igual que el
    iblen, deben necesariamente permanecer constantes a lo largo de
    un proceso de cálculo de umbral.

La salida para el modelo psicoacústico 2
es un conjunto de Relaciones Señal Máscara
(SMRn),
las que se adaptan a las capas como se
describe abajo.

Antes de correr el modelo, inicialmente, la matriz
utilizada para contener los datos de ventana de la FFT precedente
y las matrices que
contienen r (módulo) y f (fase) deben resetearse para
proveer un punto de inicio conocido.

En layer II, las relaciones de enmascarado
psicoacústico deben calcularse 2 veces para cada trama en
el codificador. La relación más estricta de cada
par de relaciones es utilizada para la asignación de bits
a las muestras (bit allocation). (recordar que en layer II se
puede transmitir la asignación [allocation] para un
conjunto de 12 o 36 muestras de acuerdo, justamente, a lo arriba
expuesto)

Comentarios sobre
notaciones

w indica que el cálculo se indexa
por frecuencia en la línea espectral de la FFT. (Un
índice de w=1 indica DC (direct current) y un
índice de w=513 se refiere a la línea
espectral de la frecuencia de Nyquist.

b indica que el cálculo esta
ordenado (indexado) en el dominio de la partición de
cálculo del umbral. En los casos donde el cálculo
incluye una convolución o suma en el dominio de la
partición de cálculo del umbral, entonces se
utiliza bb como variable de suma. La
numeración de la partición comienza en
1.

n indica que el cálculo
está ordenado (indexado) en el dominio de
asignación (allocation) del coder bit (o
codebook). Un índice de 1 corresponde a la banda
más baja el banco de filtros de subbanda.

Partes: 1, 2, 3, 4, 5
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter