II.- TEORÍA
1.- Introducción.
La transmisión de voz sobre la interfaz de radio de un sistema de comunicaciones móviles con un entorno cambiante, es bastante complicada. Se tienen una serie de inconvenientes, entre los que se encuentran la escasez de espectro disponible y los efectos nocivos de la propagación de la onda sobre la interfaz de radio. El primer problema hace necesaria la eficiencia espectral, que obliga a establecer la comunicación con un flujo de datos de baja velocidad, manteniendo un nivel de calidad comparable a la telefonía convencional (cuando no se presentan errores) y con mucha menor velocidad de transmisión. Esto se realiza con el codificador de voz de GSM, también llamado codificador de la fuente, que posteriormente será ampliamente descrito y que tiene una velocidad de 13 kbit/s. Esto permite que un número alto de usuarios utilicen el canal simultáneamente.
La eficiencia espectral hace necesaria además que el sistema de modulación usado tenga un ancho de banda relativamente estrecho y una baja radiación fuera de banda para reducir la interferencia en el canal de radio. Éste es un medio muy hostil en el que se presentan interferencias de otros usuarios, así como una gran cantidad de efectos entre los que se encuentran la atenuación debida a la distancia transmisor-receptor y las perturbaciones producidas por reflexión, difracción, scattering, efectos multipath, efecto Doppler, adición de señales espúreas y ruido[1]. Esto hace necesario el uso de un sistema de detección e incluso de corrección de errores, llamado codificación del canal, que añade redundancia a los datos producidos por el codificador de voz y permite reducir el número de errores en el receptor. En las siguientes secciones se ampliarán los conceptos apuntados.
2.- Procesado de Señal en GSM
2.1.- Introducción
Las especificaciones técnicas del estándar GSM se recogen en las recomendaciones del Instituto Europeo de Estándares de Telecomunicaciones ETSI ("European Telecommunciations Standards Institute")[2]. En el procesado de señal en GSM se tienen varias recomendaciones que se pueden agrupar en tres bloques fundamentales. El primero está formado por la codificación de la señal de voz, que se recoge en la recomendación ETSI GSM 06.10 "GSM Full Rate Speech Transcoding" y que describe el codificador RPE-LTP ("Regular Pulse Exciting – Linear Term Predictor") que se utiliza en GSM.
En el segundo bloque estarían los procedimientos aplicados para atenuar y tratar los errores y efectos nocivos producidos por el canal de radio. Por medio de la codificación del canal, descrita en la recomendación ETSI GSM 05.03 "Channel coding", se añade redundancia para detectar y corregir errores. Sin embargo si la señal que llega al receptor presenta muchos errores, la voz o ruido de confort se debe generar de datos anteriores para evitar efectos molestos al oyente, o en caso de que los errores sean muy numerosos, proceder al apagado de la señal de salida. Esta función se define en la recomendación ETSI GSM 06.11 "Substitution and Muting of Lost Frames".
El tercer bloque estaría formado por una característica que se añade por primera vez en los sistemas de comunicaciones móviles y que se conoce como transmisión discontinua (DTX, "Discontinuous Transmission"), que consiste en cortar la comunicación cuando no se tiene voz. Por ello es necesario un detector de actividad de voz (VAD, "Voice Activity Detection") que se define en la recomendación ETSI GSM 06.32 "Voice Activity Detection". Para evitar la molestia que supondría la desaparición del ruido cuando la transmisión se corta, se genera un ruido artificial cuando no se recibe señal. Este ruido se actualiza y se transmite regularmente al receptor. Esta función se define en la recomendación ETSI GSM 06.12 "Confort Noise Aspects".
En la figura 2.1 se muestran las funciones principales del procesado de la señal de voz en GSM.

Figura 2.1.- Funciones de procesado de voz en GSM
En las siguientes secciones se describen las diferentes funciones de procesado de la señal de voz.
2.2.- Codificación de la señal de voz
2.2.1 Introducción
En este capítulo se estudian los procedimientos aplicados para la codificación de la señal de voz en GSM. Inicialmente se realiza una breve descripción de las características de la señal de voz y de los diversos métodos de codificación. Posteriormente se realiza una amplia descripción del método de codificación usado en GSM.
2.2.1.1-Características de la señal de voz
Los sonidos pueden clasificarse de forma genérica en sonoros y no-sonoros. En los primeros se abren y cierran las cuerdas vocales, modificando el área de la tráquea y produciendo un tren de impulsos cuasi-periódicos. El período o frecuencia fundamental de este tren de impulsos se conoce con el nombre de pitch, y su valor está comprendido entre 50 y 400 Hz para los hombres y es superior en mujeres y niños. En los sonidos no-sonoros el aire fluye libremente hasta alcanzar el tracto vocal al permanecer abiertas las cuerdas vocales. Finalmente, la variación voluntaria del tracto vocal, junto con el estado variante de las cuerdas, produce la voz
El tracto vocal actúa como una cavidad resonante para los sonidos sonoros, estando centradas las frecuencias de resonancia para la mayoría de la gente en 500 Hz y sus armónicos pares. Esta resonancia produce grandes picos en el espectro resultante, a los cuales se les llama formantes. Además la señal tiene una naturaleza paso-baja y a partir de unos 4 KHz comienza a predominar el ruido.
En cambio, el segmento de voz no-sonoro presenta una estructura ruidosa tanto en el dominio del tiempo como en el de la frecuencia, no teniéndose formantes. Además la energía de la señal es mucho menor que la de los sonidos sonoros.
2.2.1.2- Métodos de codificación
Los distintos métodos de codificación tratan de eliminar la redundancia de la señal y así poder reducir al mínimo el número de bits usados para codificar cada muestra. Un método de codificación se evalúa con las siguientes características:
· Velocidad de transmisión ("Bit rate")
· Calidad de la voz reconstruida
· Complejidad de la implementación
· Retardo introducido
· Robustez ante la aparición de errores en el canal e interferencia acústicas
Los codificadores se pueden clasificar en tres grupos:
Por otra parte, la codificación de la forma de onda en el dominio de la frecuencia por transformada consiste en una transformación por bloques, de forma que se realiza una transformación a un dominio diferente y se codifican los coeficientes de la transformación. Esta forma de codificación es muy compleja, y como ejemplos se tienen las técnicas DCT ("Discrete Cosine Transform") y DFT ("Discrete Fourier Transform")[4].
El vocoder más utilizado es el de predicción lineal LPC("Linear Predictive Code"), que supone que cada muestra puede obtenerse a partir de una combinación lineal de las anteriores, aceptándose un filtro todo polos para modelar el tracto vocal. La expresión para realizar la decodificación sería la siguiente:
![]()
donde sn es la muestra actual, sn-i son las muestras precedentes, ai son los coeficientes del filtro, que se calculan para minimizar el error entre la muestra actual y su predicción, y p es el orden del filtro. Este método permite generar una señal inteligible con un bajo bit rate (del orden de 2.4 Kbps.), aunque su naturalidad es baja.
Aunque el concepto de codificación residual se usa también en ADPCM, RELP es
diferente en el hecho de que la codificación del residuo se basa en el espectro en lugar de
en la forma de onda. RELP opera en el rango de 6 a 9.6 Kbps.
- MPLP ("Multi_Pulse Linear Prediction"). Los vocoders clasifican los sonidos en sonoros y no-sonoros, pero no consideran una mezcla de ambos, por lo que su calidad es baja. Para solucionar este problema se utiliza el codificador multipulso.
El período de pitch produce una correlación de retardo largo que no se elimina con el filtro LPC. Esta correlación puede hacerse desaparecer usando un segundo predictor lineal, llamado predictor de pitch o filtro de pitch, cuya expresión es la siguiente:
![]()
donde b i son los coeficientes del filtro, M es el factor que tiene en cuenta el retardo de término largo e i varía entre uno y el orden del filtro. La salida de este predictor es aproximadamente ruido gaussiano.
En este codificador se pasa a los dos filtros una serie de impulsos (entre cuatro y seis) como excitación. La posición y amplitudes se determinan usando un procedimiento de análisis por síntesis, consistente en elegir el conjunto de impulsos que produce el menor error entre la señal original y la reconstruida a partir de ellos. La calidad de los codificadores MPLP es muy buena a partir de bit rates de 9.6 Kbps.
Una variación del codificador MPLP consiste en elegir como secuencia de excitación patrones de pulsos regularmente espaciados. Es el codificador llamado RPE ("Regular Pulse Excitación"), que es usado en GSM. Un factor típico de espaciado de los pulsos es 3-4, siendo actualizada la posición del primer pulso cada 5 ms. El número de pulsos existentes cada 5 ms es del orden de 10-13, obteniéndose sus amplitudes mediante la resolución de un conjunto de ecuaciones lineales.
- CELP ("Code Excited Linear Prediction"). En este codificador la secuencia de excitación del filtro de pitch se elige de lo que se conoce como "diccionario". El diccionario está formado por un conjunto de secuencias de ruido blanco gaussiano, cada una identificada por un índice dentro del mismo. Se realiza un proceso de análisis por síntesis para determinar la secuencia de ruido y las ganancias óptimas. Al receptor por tanto, sólo se le envía el índice del diccionario y la ganancia. Este tipo de codificadores consigue buena calidad de voz a 4.8 Kbps, aunque presenta el inconveniente de que la búsqueda en el diccionario requiere mucho cómputo.
2.2.1.3.- Funcionamiento de la codificación - decodificación de la voz
La Figura 2.2 muestra los componentes necesarios en el proceso de codificación y decodificación de la voz en GSM.

Figura 2.2.- Procesado de la señal de voz
El sonido se convierte en una señal eléctrica mediante el micrófono. La señal de entrada se filtra, de forma que sólo contenga componentes en frecuencia por debajo de unos 4 KHz. La señal en banda base de telefonía se reduce al mínimo ancho de banda entre 300 Hz y 3.4 KHz, suficientes para el reconocimiento inteligente de la voz. Después del filtrado, se muestrea con un convertidor analógico digital a una frecuencia de 8 KHz, y se cuantiza linealmente con 13 bits, por lo que la velocidad de transmisión en este primer nivel es de 104 kbps. Esta interfaz en el proceso de codificación de la voz se llama interfaz de audio digital ("Digital Audio Interface" ó DAI). Pero, 104 kbps es una velocidad demasiado alta para ser transmitida a través de la interfaz de radio. Por esto se utiliza el codificador RPE-LTP que reduce significativamente esta velocidad, manteniendo únicamente las componentes relevantes de la DAI.
2.2.2- Codificador por excitación de pulsos regulares y predicción de periodo largo (RPE-LTP).
El modo de funcionamiento del codificador se recoge en la recomendación ETSI GSM 06.10 "GSM Full Rate Speech Transcoding". El codificador RPE-LTP es un codificador híbrido o paramétrico que utiliza un predictor lineal para eliminar la correlación entre tramas y que mejora la calidad de la señal con un predictor de retardo largo y una secuencia de excitación de patrones de pulsos regularmente espaciados.
El diagrama del codificador RPE-LTP se muestra en la figura 2.3. En éste se observan cuatro bloques funcionales. Estos son el preprocesamiento, análisis LPC ("Linear Prediction Coding"), filtro de predicción de retardo largo LTP ("Long Term Predictor") y cálculo RPE ("Regular Pulse Exciting"). A continuación se detalla el funcionamiento de estos bloques.

Figura 2.3.- Diagrama de bloques del codificador RPE-LTP
2.2.2.1- Preprocesamiento ("pre-processing").
Cada 20 ms, se toman 160 valores de muestras del ADC y se almacenan en una memoria intermedia. El primer paso es el filtrado de la señal de entrada para eliminar el offset. Esto se realiza con la siguiente expresión:
sof(n) = so(n) - so(n-1)+a * sof(n-1)
a =32735*2-15
donde so(n) es la muestra de entrada actual, so(n-1) es la muestra precedente y sof(n) es la muestra de salida sin offset.
A continuación se realiza otro filtrado que reduce el rango dinámico de la señal y eleva las zonas de los formantes a frecuencias altas. Este filtrado recibe el nombre de pre-énfasis de primer orden y se realiza porque el análisis LPC modela peor las amplitudes bajas de los formantes a altas frecuencias. La expresión usada es la siguiente:
sps(n) = sof(n) - b * sof(n-1)
b =28180*2-15
donde sps(n) es la muestra filtrada resultante y sof(n) es la muestra libre de offset.
La señal resultante se divide en bloques de 160 muestras que se almacenan en un buffer y se le aplica una ventana de Hamming[5] para disminuir el efecto producido en el dominio de la frecuencia por la oscilación de Gibbs[5], causada por el truncamiento de la señal de voz fuera de la trama analizada. La ventana de Hamming tiene un efecto de estrechamiento en lo bordes, mientras que no tiene efecto en la zona central. La señal resultante se obtiene de la siguiente forma:
n=1...160
donde sps(n) representa la muestra n-ésima del segmento de voz después del preénfasis, spsw(n) es la muestra resultante de aplicar la ventana y c2 es una constante con valor 1.5863, que se determina imponiendo la condición de que la potencia permanezca constante. La ventana se realiza con el término del paréntesis, que toma un valor bajo para los valores de n de los extremos del intervalo y por otro lado, toma un valor alto para los valores de n del centro del intervalo.
2.2.2.2- Análisis LPC.
Para cada segmento de L=160 muestras se calculan nueve coeficientes de autocorrelación R(k) de la siguiente forma:
![]()
A partir de los coeficientes de autocorrelación, se obtienen ocho coeficientes de reflexión ki usando la recursión de Schur, que es equivalente al algoritmo de Durbin[5]. El diagrama de flujo de la recursión de Schur se muestra en la figura 2.4.

Figura 2.4.- LPC usando la recursión de Schur
Los coeficientes de reflexión se convierten en los logarithmic area ratios (LAR(i)), debido a sus mejores propiedades de cuantización. Se definen por la siguiente expresión:
![]()
Para simplificar la implementación en tiempo real, se usa una aproximación lineal por trozos con cinco segmentos:
Los parámetros LAR tienen diferentes rangos dinámicos y diferentes funciones densidad de probabilidad, por lo que se les asignan 6, 5, 4 y 3 bits respectivamente a los primer, segundo, tercero y cuarto par de coeficientes LAR. Los coeficientes LAR cuantizados LAR’(i) se decodifican localmente en el conjunto LAR’’(i). Para mitigar los cambios abruptos en la envolvente de la señal de voz en los bordes de las tramas, los parámetros LAR se interpolan linealmente y en los extremos de las tramas se usa este conjunto de parámetros. A continuación se calculan los coeficientes de reflexión localmente decodificados k’(i), realizando la conversión inversa a la realizada anteriormente. Con estos coeficientes se realiza el filtrado, utilizando las siguientes expresiones, con lo que se obtiene el residuo STP rSTP(n).

2.2.2.3-
Filtro de predicción de retardo largo LTP.El error de predicción de retardo largo se minimiza por aquel retardo D, que maximiza la correlación cruzada entre el residuo actual rSTP(n) y los residuos previamente recibidos y almacenados rSTP(n-D). El proceso se realiza dividiendo las 160 muestras del residuo de retardo largo en cuatro subsegmentos de N=40 muestras, y para cada uno de estos se calcula una correlación cruzada entre el subsegmento actual y las 128 muestras de residuos STP rSTP(n) precedentes. El máximo de la correlación se encuentra para un retardo D, que con mucha probabilidad corresponde al período de pitch o a un múltiplo de éste. Entonces se puede eliminar buena parte de la redundancia si se resta el segmento altamente correlacionado multiplicado por un factor de ganancia G, que es la correlación cruzada normalizada obtenida para el retardo D. Una vez que los parámetros G y D del filtro LTP han sido calculados, se cuantizan para dar G’ y D’, donde G se cuantiza con sólo dos bits y D con siete.
Los parámetros LTP cuantizados (G’ y D’) se decodifican localmente para dar el par (G’’, D’’) y así producir el residuo localmente decodificado STP r’STP(n) para su uso en los siguientes subsegmentos y así almacenar la historia de la señal. El residuo rLTP(n) se calcula como la diferencia entre el residuo STP rSTP(n) y la estimación r’’STP(n), que se obtiene con los parámetros localmente decodificados (G’’, D’’) de la siguiente forma:
rLTP(n)= rSTP(n)- r’’STP(n) n=1...40
r’’STP(n)= G’’r’STP(n-D) n=1...40
donde r’STP(n-D) representa un segmento de la historia pasada almacenado en el buffer de búsqueda. Finalmente, el contenido de este buffer se actualiza usando el residuo LTP localmente decodificado r’LTP(n) y la estimación del residuo STP r’’STP(n), para formar r’STP(n):
r’STP(n)= r’LTP(n)+ r’’STP(n) n=1...40
2.2.2.4- Cálculo RPE.
El residuo LTP rLTP(n) se pesa con un filtro fijo que es esencialmente un filtro paso baja con una frecuencia de corte de 4KHz/3=1.33 KHz y así se puede realizar una decimación por un factor de 3. La señal residuo filtrada rFLTP(n) se descompone en tres excitaciones candidatas, descartando la muestra número 40. Se calculan las energías E1, E2, y E3 de cada secuencia decimada, y la que presenta mayor energía se elige como representante del residuo LTP. Los pulsos de excitación son posteriormente normalizados a la máxima amplitud vmax(k) de las 13 muestras, y son cuantizadas uniformemente con tres bits, mientras que el máximo de la amplitud se cuantiza logarítmicamente con seis bits. Como se tienen tres posibles posiciones iniciales de la secuencia decimada elegida, se necesitan dos bits para codificar la posición inicial de cada subsegmento. Esto se conoce como posición de grid. Las amplitudes de los pulsos b (k,i), la posición de grid y los máximos de la amplitud son localmente decodificados para obtener el residuo r’LTP(n), donde la secuencia decimada se rellena con ceros.
En la tabla 2.1 se muestra la asignación de bits a cada parámetro y la secuencia de 260 bits de salida para un período de 20 ms, que es equivalente a la codificación de L=160 muestras, por lo que el bit rate de transmisión es 13 kbit/s.
=====================================================================
Parámetro Número de Nombre Nombre Número Bit nº
parámetro de parámetro de variable de bit (LSB-MSB)
=====================================================================
1 LAR 1 6 b1 – b6
2 LAR 2 6 b7 – b12
PARÁMETROS 3 Log Area LAR 3 6 b13 – b17
4 ratios LAR 4 5 b18 – b22
DEL FILTRO 5 1-8 LAR 5 4 b23 – b26
6 LAR 6 4 b27 – b30
7 LAR 7 3 b31 – b33
8 LAR 8 3 b34 – b36
Sub-trama nº 1
=====================================================================
PARÁMETROS 9 retardo LTP N1 7 b37 – b43
LTP 10 ganancia LTP b1 2 b44 – b45
---------------------------------------------------------------------------------------------------------------------
11 posición de grid RPE M1 2 b46 – b47
PARÁMETROS 12 amplitud de bloque Xmax1 6 b48 – b53
RPE 13 pulso RPE nº 1 x1(0) 3 b54 – b56
14 pulso RPE nº 2 x1(1) 3 b57 – b59
... ... ...
25 pulso RPE nº 13 x1(0) 3 b90 – b92
Sub-trama nº 2
=====================================================================
PARÁMETROS 26 retardo LTP N2 7 b93 – b99
LTP 27 ganancia LTP b2 2 b100 – b101
---------------------------------------------------------------------------------------------------------------------
28 posición de grid RPE M1 2 b102 – b103
PARÁMETROS 29 amplitud de bloque Xmax2 6 b104 – b109
RPE 30 pulso RPE nº 1 x2(0) 3 b110 – b112
31 pulso RPE nº 2 x2(1) 3 b113 – b115
... ... ...
42 pulso RPE nº 13 x2(0) 3 b146 – b148
Sub-trama nº 3
=====================================================================
PARÁMETROS 43 retardo LTP N3 7 b149 – b155
LTP 44 ganancia LTP b3 2 b156 – b157
---------------------------------------------------------------------------------------------------------------------
45 posición de grid RPE M1 2 b158 – b159
PARÁMETROS 46 amplitud de bloque Xmax1 6 b160 – b165
RPE 47 pulso RPE nº 1 x3(0) 3 b166 – b168
48 pulso RPE nº 2 x3(1) 3 b169 – b171
... ... ...
59 pulso RPE nº 13 x3(0) 3 b202 – b204
Sub-trama nº 4
=====================================================================
PARÁMETROS 60 retardo LTP N4 7 b205 – b211
LTP 61 ganancia LTP b4 2 b212 – b213
---------------------------------------------------------------------------------------------------------------------
62 posición de grid RPE M4 2 b214 – b215
PARÁMETROS 63 amplitud de bloque Xmax4 6 b216 – b221
RPE 64 pulso RPE nº 1 x4(0) 3 b222 – b224
65 pulso RPE nº 2 x4(1) 3 b225 – b227
... ... ...
76 pulso RPE nº 13 x4(0) 3 b258 – b260
Tabla 2.1 Parámetros del codificador de voz y asignación de bits
A los datos procedentes de la codificación de la fuente (ver figura 2.2), se les aplica la codificación del canal que se estudiará más adelante. La codificación del canal añade redundancia de nuevo a la señal, pero lo hace de forma que en el receptor se puedan eliminar ciertos errores causados por el canal de transmisión. La codificación del canal incrementa el bit rate a 22.8 kbps.
2.2.3.- Decodificador por excitación de pulsos regulares y predicción de periodo largo (RPE-LTP).
El diagrama de bloques del decodificador RPE-LTP se muestra en la figura 2.5. Este tiene una estructura inversa a la del codificador. Los bloques funcionales son decodificación RPE, síntesis del filtro LTP, síntesis del filtro STP y postprocesado.

Figura 2.5.- Diagrama de bloques del decodificador RPE-LTP
2.2.3.1- Decodificación RPE.
En el decodificador, las amplitudes de los pulsos b (k, i), la posición de grid y los máximos de la amplitud son localmente decodificados y se calculan las amplitudes de los pulsos actuales multiplicando su amplitud actual por la amplitud máxima del bloque. El modelo del residuo r’LTP(n) se recupera colocando apropiadamente las amplitudes de los pulsos de acuerdo con el grid inicial.
2.2.3.2- Síntesis del filtro LTP.
Inicialmente, los parámetros del filtro LTP (G’, D’) son cuantizados inversamente para derivar los parámetros del filtro LTP. A continuación, el modelo de excitación recuperado r’LTP(n) se usa para excitar el filtro y recuperar un nuevo subsegmento de longitud N=40 del residuo estimado STP r’STP(n). Para realizar esto se usa la historia del residuo STP recuperado r’STP(n), retardado por D’ muestras y multiplicado por G’, y así se obtiene la estimación del residuo STP r’’STP(n), de acuerdo con:
r’’STP(n)=G’ r’STP(n-D’)
y entonces r’’STP(n) se usa para calcular el residuo del subsegmento recuperado más reciente, como sigue:
r’STP(n)= r’’STP(n)+ r’LTP(n)
2.2.3.3- Síntesis del filtro STP.
Los parámetros LAR’(i) se decodifican usando el cuantizador inverso LAR para obtener los parámetros LAR’’(i), que se interpolan de nuevo en los bordes de la trama para prevenir cambios abruptos en las características de la envolvente de voz. Los parámetros interpolados se transforman en los coeficientes de reflexión y se realiza el filtrado usando las siguientes expresiones:

donde r’’STP(n) es el residuo STP y s’r(n) es la salida del filtro de síntesis. La estructura del filtro se muestra en la figura 2.6.

Figura 2.6.- Síntesis del filtro STP
2.2.3.4- Postprocesamiento.
El postprocesamiento se realiza usando el filtro inverso al filtro H(z) de pre-énfasis, que reducía el rango dinámico de la señal y elevaba las zonas de los formantes a frecuencias altas. Con este filtro se obtiene la señal de voz decodificada sro(n), usando la siguiente expresión:
sro(n) = s’r(n) + b * sro(n-1)
b =28180*2-15