Está en la página 1de 13

DSP

COMPRESION DE VOZ

INTRODUCCION: Es improbable pensar en este tiempo la conveniencia de realizar transmisin de informacin multimedia en formato sin compresin. Principalmente, porque da a da son ms las aplicaciones en este contexto que requieren de un amplio rango de calidad y performance de acuerdo a los requerimientos de usuarios heterogneos. La alternativa es que sea posible la compresin masiva de los datos antes de efectuar su transmisin. MARCO TEORICO: Sin duda alguna, la voz es la forma ms natural y eficiente de comunicacin entre los seres humanos. Sin embargo, cada vez son ms frecuentes las situaciones en las que la comunicacin se establece con una mquina, o aquellas en las que una mquina puede ayudar a la comunicacin entre dos seres humanos. Si la persona y el ordenador estn en una misma ubicacin es posible usar diversos perifricos. Transcripcin automtica de conversaciones: a partir de las seales de voz de entrada es posible generar un fichero de texto de salida, fcilmente procesable dentro de un ordenador, y almacenable con un tamao sensiblemente menor. SNTESIS DE VOZ El objetivo de la sntesis de voz es conseguir que el ordenador lea un texto y lo reproduzca mediante un altavoz, de forma que no sea necesario leer de pantalla. Est relacionada con la codificacin, puesto que para vocabularios muy limitados es posible almacenar las diferentes realizaciones mediante una grabacin (comprimida o no), cuando el texto a sintetizar es muy amplio este sistema se vuelve inviable, puesto que sera tremendamente costoso almacenar en una memoria todas las palabras posibles. En estos casos, se han desarrollado sistemas de sntesis de voz que permitan transcribir un fichero de texto a una seal acstica semejante a la que se obtendra si una persona leyera dicho texto. Una de las aplicaciones ms importantes de la sntesis de voz es la ayuda a discapacitados.

MEJORA DE VOZ En muchos contextos la calidad de la seal de voz se degrada. En estos casos, se pueden aplicar tcnicas de procesado de seal para mejorar la calidad de la voz. Por ejemplo, eliminacin de ecos, ruidos, sustitucin de paquetes perdidos en telefona por conmutacin de paquetes, etc. COMPRESIN Las tcnicas de codificacin de voz pretenden reducir el volumen de informacin necesario para almacenar o transmitir una seal de voz, de forma que la prdida de calidad de la seal decodificada respecto a la seal sin comprimir sea lo menor posible. Por supuesto, deber mantenerse la inteligibilidad del mensaje, y existir un compromiso calidad versus tasa de compresin, complejidad computacional, etc. Para estudiar los diferentes algoritmos existentes, resulta til una primera clasificacin en dos grandes grupos: mtodos de codificacin de forma de onda, y mtodos paramtricos. Mientras que los primeros intentan reproducir fielmente la forma de onda de la seal a codificar, los segundos se basan en un modelo de produccin del habla, e intentan reproducir en el proceso de decodificacin una seal que al escucharla se parezca a la original, aunque existan distorsiones en la forma de onda generada. Las caractersticas y aplicaciones de cada uno de los mtodos sern muy diferentes. Al igual que las otras tcnicas de tratamiento digital de voz, el primer paso consiste en la digitalizacin de la seal analgica captada por un micrfono. El resultado de este primer paso son muestras PCM, que pueden considerarse como un primer formato digital a partir del cual se aplican algoritmos de compresin. La figura 1 resume mediante un ejemplo el proceso de conversin a muestras PCM, consistente en muestrear la seal analgica y aplicarle un cuantificador a los valores de amplitud.

Obsrvese que cada uno de los valores del cuantificador se representa mediante el tren de pulsos indicado en la tabla 1.

El valor de los niveles de salida del cuantificador depender del tipo de cuantificador (uniforme, no uniforme, adaptativo, etc.) as como del nmero de niveles y margen dinmico de la seal. En determinadas aplicaciones, de procesado de seal, se utilizan los cuantificadores vectoriales, cuyo funcionamiento es anlogo al cuantificador clsico (escalar) con la diferencia de que los valores de entrada y salida son grupos de muestras (vectores). Dependiendo de la aplicacin, la representacin PCM requerir un mayor o menor nmero de bits.

Algunos ejemplos son: Seal de voz transmitida por una lnea telefnica RDSI: 8 bits por muestra (cuantificacin logartmica) y 8kHz de frecuencia de muestreo. Seal de un CD: 16 bits por muestra y 44.1 kHz de frecuencia de muestreo En estudios de grabacin, suelen usarse grabaciones a 20 bits por muestra, que tras hacer las mezclas, se estampan en CDs a 16 bits por muestra.

CODIFICADORES DE FORMA DE ONDA An en el caso de utilizar una frecuencia de muestro de 8KHz (ancho de banda de 4KHz) y 8 bits por muestra para representar una seal de voz, la tasa de bits resultante es de 64Kbps, lo cual resulta excesivo en mltiples aplicaciones. Por ello, se han desarrollado tcnicas que permitan una mejor representacin de la seal de voz, eliminando la redundancia presente entre muestras consecutivas. Una primera posibilidad es usar un codificador DPCM o PCM diferencial, consistente en codificar para cada muestra una versin cuantificada de la diferencia entre su valor real y el valor obtenido mediante un proceso de prediccin. La prediccin est formada por una combinacin de muestras anteriores (y por tanto ya codificadas previamente y disponibles en el decodificador). La figura 2 muestra el esquema DPCM. En el caso de utilizar un cuantificador

o/y un predictor adaptativo, el esquema se denomina DPCM adaptativo, o abreviadamente ADPCM.

La figura 3 muestra un ejemplo de codificacin delta adaptativa de una frase de voz muestreada a 16kHz. La figura muestra la seal original, la codificada, el valor del paso de cuantificacin (delta) y el error de reconstruccin (diferencia entre la seal original y la reconstruida).

CODIFICADORES PARAMTRICOS Los esquemas de codificacin paramtrica se basan en la obtencin de los parmetros de un modelo de produccin de seal de voz. En el emisor se analiza la seal de voz, correspondiente a un segmento temporal considerado estacionario, y se obtiene el conjunto de parmetros que lo han generado. Estos parmetros son los que se transmiten y el receptor reproduce con ellos una seal de caractersticas anlogas a la seal original.

La figura 4 esquematiza varios modelos paramtricos para codificar voz.

EVALUACIN DE LOS CODIFICADORES Para evaluar la calidad de la voz codificada existen diversos sistemas. Uno de ellos consiste en realizar pruebas comparativas entre dos codificadores (que se deseen comparar) realizando audiciones de una misma seal codificada por ambos mtodos. Entonces, se evala el porcentaje de oyentes que han preferido (considerado de ms calidad) cada uno de ellos, y el porcentaje de indecisos Cuando el nmero de codificadores a comparar es elevado, se realiza una audicin de todos ellos, y los oyentes los puntan de acuerdo con la tabla 2.

A parte de la calidad y la tasa de bits tambin son importantes la complejidad computacional (que condiciona directamente el coste del equipo) y el retardo necesario para realizar el procesado de las muestras, puesto que ste se aade a los retardos de transmisin, y si es elevado puede ser molesto y requerir el uso de canceladores de eco, lo cual incrementa el coste de los equipos. La tabla 3 compara los principales esquemas de codificacin.

La tabla 4 resume los principales estndares de codificacin de audio.

DIAGRAMA DE FLUJO:

SEGMENTO DE MEMORIA DE PROGRAMA PARA CDIGO

Programa Principal

Subrutina que va ser utilizado o llamada en otros archivos de enlace

Llamada a subrutina

Subrutinas de interrupcin que va a ser utilizada o llamada en otros archivos de enlace

Llamda subrutina

Inicializacin de parmetros para la tarjeta

Obtiene la direccion de muestras y coloca en el registro base b0

Cuenta inicial y modo inicial

Obtiene la longitud de muestras y coloca en el registro longitud I0

Activacin de flag 2&0 como salida, irq1 activacion por flanco

Coloca el valor del incremento del puntero I0

Encendido de LED Activacion de flag1 como entrada La frecuencia de muestreo 8KHz Apagado del led flag 1

Habilitacion de interrupciones globales y anidades

Retorno de subrutina

SUBRUTINA DE INTERRUPCION

MOVE

Compara registros r0 y r1

Ingreso de seal de voz por canal izquierdo(microfono) y se carga en el registro r14 Carga el registro r13 en buffer de salida la seal de voz por canal izquierdo Carga el registro r13 en buffer de salida la seal de voz por canal derecho

si

Menor o igual que cero ir a continuar

Compara registro r4 y r2

si

Menor o igual a cero ir a move

Desplaza el campo de bits colocados en r13 y lo desplaza r16, lo que modifica en r12

Ingreso de seal de voz por canal izquierdo(microfono) y se carga en el registro r14 Carga el registro r14 en buffer de salida la seal de voz por canal izquierdo

Reailza la operacin de or entre r14 y r12

Almacena r14 distorcionado en el vector proceso

Carga el registro r14 en buffer de salida la seal de voz por canal derecho

Se decrememta el valor de desplazamiento

Se incrementa el valor de desplazamiento Salto a retorno

Salta a retorno

CONTINUAR

Salir

Compara registros r4 y r2 si

Extrae de r13 un campo de 8 bits desde la posicion del bit 16 y lo coloca en r14

Menor o igual que cero ir a salir

Carga el registro r14 en buffer de salida la seal de voz por canal izquierdo

Ingreso de seal de voz por canal izquierdo(microfono) y se carga en el registro13

Carga el registro r14 en buffer de salida la seal de voz por canal derecho

Extrae de r13 un campo de 8 bits desde la posicion del bit 0 y lo coloca en r14

Se decrementa el valor de desplazamiento

Carga el registro r14 en buffer de salida la seal de voz por canal izquierdo

Retorno

Carga el registro r14 en buffer de salida la seal de voz por canal derecho

Retorno de interrupcion

Fin de segmento Se incrementa el valor de desplazamiento

Salta a retorno

CODIGO DEL PROGRAMA:


#include "def21060.h" #define TAPS 4000 .seg/dm seg_dmda; .EXTERN setup_1847;/*rutina para inicializar el conversor AD1847*/ .EXTERN spt0_asserted;/*transmision a traves del SPORT0 usado para inicializar el AD1847*/ .EXTERN rx_buf;/*rx_buf[1]=datos del canal izquierdo de A/D, rx_buf[2]=datos del canal izquierdo de A/D*/ .EXTERN tx_buf;/*tx_buf[1]=datos del canal izquierdo de D/A, tx_buf[2]=datos del canal izquierdo de D/A*/ .VAR muestra[taps]; .endseg; .segment /pm seg_pmco; /* SEGMENTO DE MEMORIA DE PROGRAMA PARA CDIGO*/ .global main; /* Subrutina que va ser utilizado o llamada en otros archivos de enlace*/ .global input_samples; /*Subrutinas de interrupcin que va a ser utilizada o llamada en otros archivos de enlace*/ init_21k;/*Inicializacin de parmetros para la tarjeta*/ r4=0; r8=0; /*Cuenta inicial y modo inicial */ bit set mode2FLG0O|FLG2O|FLG3O|IRQ1E; /*Activacin de flag 2&0 como salida, irq1 activacion por flanco*/ bit cir mode2 FLG1O; /* Activacion de flag1 como entrada*/ bit set astat FLG2|FLG3; /*Apagado del led flag 1*/ bit set mode 1 IRPTEN|NESTM; /*Habilitacion de interrupciones globales y anidades* rts; /* Retorno de subrutina*/ main: call init_21k; /*Llamada a subrutina*/ call setup_1847; /* Llamada a subrutina*/ r1=0; r0=TAPS+TAPS; r4=2; r2=1; r13=0; r14=0; b0=muestra; /*Obtiene la direccion de muestras y coloca en el registro base b0*/ l0=TAPS; /* Obtiene la longitud de muestras y coloca en el registro longitud I0 */ m0=1; /*Coloca el valor del incremento del puntero I0*/ m1=-1; bit clr astat FLG2|FLG3; /*Encendido de LED*/ wait: idle; jump wait; /*La frecuencia de muestreo 8KHz*/ input_samples: /*SUBRUTINA DE INTERRUPCION*/

comp(r0,r1); /*Compara registros r0 y r1*/ if le jump continuar; /* SI Menor o igual que cero ir a continuar*/ comp(r4,r2); /*Compara registro r4 y r2*/ if le jump move; /*SI Menor o igual a cero ir a move */ r14=dm(rx_buf+1); /*Ingreso de seal de voz por canal izquierdo(microfono) y se carga enel registr14*/ dm(tx_buf+1)=r14; /*Carga el registro r14 en buffer de salida la seal de voz por canal izquierdo*/ dm(tx_buf+2)=r14; /*Carga el registro r14 en buffer de salida la seal de voz por canal derecho*/ r2=r2+1; r1=r1+1; jump retorno; /* Salto a retorno*/ move: r13=dm(rx_buf+1);/*Ingreso de seal de voz por canal izquierdo(microfono) y se carga en el registro r14*/ dm(tx_buf+1)=r13; /*Carga el registro r13 en buffer de salida la seal de voz por canal izquierdo */ dm(tx_buf+2)=r13; /*Carga el registro r13 en buffer de salida la seal de voz por canal derecho */ r12=lshift r13 by r16; /*Desplaza el campo de bits colocados en r13 y lo desplaza r16, lo que modifica en r12*/ r14=r14 or r12; /*Reailza la operacin de or entre r14 y r12 */ dm(i0,m0)=r14; /*Almacena r14 distorcionado en el vector proceso*/ r2=r2-1; /*Se decrememta el valor de desplazamiento */ r1=r1+1; /*Se incrementa el valor de desplazamiento*/ r13=0; r14=0; jump retorno; /*Salta a retorno*/ continuar: comp(r4,r2); /*Compara registros r4 y r2*/ if le jump salir1;/* SI Menor o igual que cero ir a salir*/ r13=dm(i0,m0); /*Ingreso de seal de voz por canal izquierdo(microfono) y se carga enel registr13*/ r14=fext r13 by 0:16; /*Extrae de r13 un campo de 8 bits desde la posicion del bit 0 y lo coloca en
r14*/

dm(tx_buf+1)=r14;/*Carga el registro r14 en buffer de salida la seal de voz por canal izquierdo */ dm(tx_buf+2)=r14; /*Carga el registro r14 en buffer de salida la seal de voz por canal derecho*/ r2=r2+1; /*Se incrementa el valor de desplazamiento*/ jump retorno; /*Salta a retorno*/ salir1: r14=fext r13 by 16:16; /*Extrae de r13 un campo de 8 bits desde la posicion del bit 16 y lo coloca en r14*/ dm(tx_buf+1)=r14; /*Carga el registro r14 en buffer de salida la seal de voz por canal izquierdo */ dm(tx_buf+2)=r14; /*Carga el registro r14 en buffer de salida la seal de voz por canal derecho*/ r2=r2-1; /*Se decrementa el valor de desplazamiento*/ retorno: rti; /*Retorno de interrupcion */ nop;nop;nop; .endseg; /*Fin de segmento*/

CONCLUSIONES: Las tcnicas de codificacin de voz pretenden reducir el volumen de informacin necesario para almacenar o transmitir una seal de voz. En muchos contextos la calidad de la seal de voz se degrada. En estos casos, se pueden aplicar tcnicas de procesado de seal para mejorar la calidad de la voz

El valor de los niveles de salida del cuantificador depender del tipo de cuantificador (uniforme, no uniforme, adaptativo, etc.)

BIBLIOGRAFIA: http://www.jcee.upc.es/JCEE2001/PDFs2001/6mfaundez.pdf M. Fandez Sistemas de Comunicaciones, Marcombo 2001 M. Fandez Tratamiento digital de voz e imagen, Marcombo 2000

También podría gustarte