Usar un filtro de banda de paso que coincida con el ancho de banda del discurso ayudará.
Si tiene varios micrófonos (como ahora es el caso en los teléfonos celulares), existe una gran cantidad de métodos similares a ICA que pueden aprovechar eso, pero su pregunta me sugiere que solo tiene una entrada.
Lo que quiere hacer es "separación de fuente con un micrófono" (nombre tomado del innovador artículo de Roweis), también llamado "sensor único". Advertencia: esto está lejos de ser un problema resuelto, y toda la investigación en este campo es muy reciente, sin ningún algoritmo o enfoque que sea un "claro ganador" (a diferencia de los modelos de mezcla gaussiana + FST han sido para el reconocimiento de voz).
Un buen marco para hacerlo es a través del filtrado de Wiener. Ver Benaroya et al. "Separación de fuente de sensor único basada en el filtrado de Wiener y STFT de múltiples ventanas" (Lea las secciones 1 y 2, no se moleste con la resolución múltiple a menos que realmente la necesite). En resumen, calcula el STFT de su señal, y para cada cuadro STFT, intenta obtener estimaciones del espectro de voz y del espectro de ruido, y utiliza el filtrado de Wiener para recuperar la mejor estimación del espectro de voz a partir de esto (esto es similar a "enmascarar suavemente" el espectro).
Su problema ahora es el siguiente: dado un marco STFT, calcule el habla y el componente de ruido a partir de él. El enfoque más simple descrito en el artículo de Benaroya es a través de la cuantificación vectorial: tome varias horas de discurso por parte de muchos oradores, calcule el STFT, ejecute LBG para encontrar un libro de códigos de 512 o 1024 cuadros de voz típicos; haz lo mismo para el ruido. Ahora, dado un marco de su señal de entrada, proyecte de manera no negativa (se describe un procedimiento de actualización de gradiente multiplicativo en el documento) en las bases de voz y ruido, y obtendrá sus estimaciones de voz y ruido. Si no desea lidiar con la proyección no negativa, simplemente use el vecino más cercano. Esto es realmente lo más simple que podría funcionar en el departamento de "separación de fuente de sensor único".
Tenga en cuenta que un sistema de reconocimiento de voz podría proporcionar alguna entrada para un sistema de separación. Realice un primer paso de decodificación con su sistema de reconocimiento de voz. Para cada cuadro, tome el vector MFCC medio del gaussiano que obtuvo la mejor puntuación. Invierta eso nuevamente en un espectro. Boom, tiene una máscara que le brinda la ubicación espectral más probable de los bits de voz, y puede usarla como entrada para el filtrado de Wiener. Esto suena un poco como agitar las manos, pero lo importante es que para separar una fuente se necesita un buen modelo, y un sistema de reconocimiento de voz tomado al revés es un excelente modelo generativo para señales de voz.