Voice Cleaner

Autores

Problema

Muchos computadores actuales vienen con micrófonos de baja calidad por temas de presupuesto. Esto afecta de forma directa en la capacidad de ser entendido via VoIP o videochat. Parte de este problema pasa por la cantidad de ruido en la señal. Una solución sería aplicar un filtro a ésta mediante software especializado, pero el resultado no servirá como input para programas genéricos que deseen usar el input del micrófono.

Solución proyectada

Nuestra idea es generar una interfaz virtual que reciba el input del micrófono, filtre el ruido mediante DSP y luego exponga esta señal limpia al sistema operativo como una interfaz de audio nueva, logrando transparencia hacia otros programas que requieran el input del micrófono filtrado.

Después de un análisis técnico vemos como mejor camino usar la API provista por PulseAudio para generar un daemon que limpie la voz del micrófono y la coloque en un dispositivo virtual. La idea es obtener una cantidad pequeña de muestras del dispositivo físico de audio (el micrófono), a las cuales se les aplicará por FFT un filtro pasabandas a manera de eliminar los ruidos generados por ventiladores, utilizando como lenguaje de programación C para el daemon y bash para generar los dispositivos en el sistema de archivos. El objetivo de usar una cantidad pequeña de muestras es para reducir la latencia del dispositivo, dado que es inaceptable un retraso grande en una comunicación verbal.

Presentación explicativa

Adjunto está la presentación preparada sobre nuestra investigación técnica acerca de Voice Cleaner.

LINK

PDF

Estado de avance

Decididos a usar PulseAudio creemos que debería tomar unas 40 horas hombres terminar la aplicación.

Otros links de interés

Repositorio de nuestro proyecto

How it works: Linux audio explained

PulseAudio Wikipedia

Digital Music Composition/Making Sound

Ubuntu (Linux) Microphone Settings

Writing Audio Applications With JACK - A tutorial/journal