ELO-330: Programación de Sistemas
Tarea 3: Comparación de algoritmos de Detección de la Actividad de la Voz implementado con hebras

Objetivos: En esta tarea usted aplicará: creación de hebras, manejo de acceso a datos compartidos, integración de servicios provistos por otras aplicaciones. En este caso se solicitará servicios de GNU octave para hacer un gráfico.

Introducción

En esta tarea su grupo estudiará el comportamiento de dos algoritmos para detectar silencio en señal de audio. Lo importante no es el algorritmo en sí, sino la programación de una solución de este tipo. En la tarea 2 se conoció dos algoritmos para la detección de los momentos de habla dentro de uan señal de voz (voice activity detection). Un algoritmo usa el valor rms (root mean square) de la señal paquetizada el cual es comparado con un umbral para decidir presencia de voz. Otro algoritmo mide la distribución del espectro de la señal como el cociente entre el espectro presente en baja frecuencia respecto del espectro total. Esta tarea pide implementar ambos algoritmos en hebras independientes para cada paquete de audio. La hebra principal, o una tercera hebra según su diseño, generará un gráfico para identificar la relación entre los resultados de detección de cada algoritmo.

Nombre:  vadc : Voice Activity Detection Comparison
Sintaxis: vadc <audio file> <packet size> <rms threshold> <low-frequency spectral fraction> [s]
  Audio file: es el archivo de audio a procesar. Se trata de un archivo de datos de audio mono canal, en formato PCM, little endian, con signo y de 16 bits. La frecuencia de muestreo debe ser de 8KHz.
  packet size: para  facilitar el cómputo de la FFT (fast fourier transform)  considere tamaños de paquetes potencias de 2. Valores recomendados son 128 y 256 muestras.
  rms threshold: corresponde al umbral sobre el cual se considerará detección de voz para ese paquete.
 low-frequency spectral fraction: corresponde a la fracción del espectro de baja frecuencia (entre 125 [Hz] y 1000 [Hz]) respecto del total del espectro. Esto es la suma de los módulos de las componentes espectrales en ese rango dde frecuencia dividido por la suma del módulo de todas las componentes espectrales.
  s: cuando esta opción está presente el programa corre en modalidad no hebra.
Descripción
  
Este programa procesa todo el archivo de audio y genera una tabla por consola y su gráfico 3D. La estructura de la tabla es:
RMS\distribución espectral
Detecta silencio
Detecta voz
Detecta silencio
(número de paquetes en que ambos algoritmos detectan silencio)
RMS detecta silencio y dist.Espectral detecta voz
Detecta voz
RMS detecta voz y dist.Espectral detecta silencio (número de paquetes en que ambos algoritmos detectan voz)

El gráfico 3D muestra en su base las cuatro opciones de la tabla y en el eje Z se muestran barras de altura segun cada entrada de la tabla.
Además el programa muestra por consola el tiempo real transcurrido desde que el inicio del programa hasta antes de generar el gráfico (se excluye comunicación con octave).

Evaluación de la Tarea y qué entregar: revisar las instrucciones para entregar y evaluar su tarea. En los criterios de evaluación la opción con hebras tiene peso 50 y la sin hebras sólo 10% (total 60%)

Recomendaciones
* Para analizar un archivo de audio, este código puede ser de ayuda.
* Para el cómputo de la FFT utilice el siguiente código (compilelo separadamente y lo vincula al ligar su ejecutable) [2]
* Otro punte sobre fft lo puede ver aquí (local).
* Revise uso de octave y ejemplo para generar gráficos.
* Sobre la generación de archivos de audio en Linux: Usted puede usar arecord Por ejemplo, para grabar un archivo de audio, usted puede usar:
$arecord --format=S16_LE -t raw Mi_Audio.raw
* Más ayuda puede ser incluida en la medida que surjan vuestras preguntas.
* Haga su tarea de a poco y con tiempo. Con gusto atenderé todas sus preguntas en especial en clases y horas de atención en oficina.

Referencias
[1] I.D. Lee, H.P. Stern, and S.A. Mahmoud, “A Voice Activity Detection Algorithm for Communication Systems with Dynamically Varying Background Acoustic Noises,” Proc. Veh. Technol. Conf., vol. 2, 1998, pp. 1214-1218.
[2]  Paul Bourke, D F T (Discrete Fourier Transform), F F T (Fast Fourier Transform), June 1993