Usar um filtro de banda passante que corresponda à largura de banda da fala ajudará.
Se você possui vários microfones (como é o caso agora em celulares), existem vários métodos semelhantes à ICA que podem tirar proveito disso - mas sua pergunta sugere que você tem apenas uma entrada.
O que você quer fazer é "separação da fonte com um microfone" (nome tirado do papel inovador da Roweis), também chamado de "sensor único". Aviso: isso está longe de ser um problema resolvido, e todas as pesquisas nesse campo são muito recentes, sem algoritmos ou abordagens que sejam "vencedores claros" (ao contrário dos modelos gaussianos de mistura + FST foram para reconhecimento de fala).
Uma boa estrutura para fazer isso é através da filtragem Wiener. Veja Benaroya et al. "Separação de fonte de sensor único com base na filtragem Wiener e STFT de janela múltipla" (Leia as seções 1 e 2, não se preocupe com o problema da multirresolução, a menos que você realmente precise). Em resumo, você calcula o STFT do seu sinal e, para cada quadro STFT, tenta obter estimativas do espectro de voz e do espectro de ruído e usa a filtragem Wiener para recuperar a melhor estimativa do espectro de voz ( é semelhante a "mascarar suavemente" o espectro).
Seu problema agora é o seguinte: dado um quadro STFT, estime o componente de fala e ruído a partir dele. A abordagem mais simples descrita no artigo de Benaroya é através da quantização vetorial - leve várias horas de fala por muitos oradores, calcule o STFT, execute LBG nele para encontrar um livro de códigos de 512 ou 1024 quadros de fala típicos; faça a mesma coisa com barulho. Agora, dado um quadro do seu sinal de entrada, projete-o de forma não negativa (um procedimento de atualização multiplicativa de gradiente é descrito no artigo) nas bases de fala e ruído e você obtém suas estimativas de fala e ruído. Se você não quiser lidar com a coisa de projeção não negativa, use o vizinho mais próximo. Essa é realmente a coisa mais simples que poderia funcionar no departamento de "separação de fonte de sensor único".
Observe que um sistema de reconhecimento de fala pode realmente fornecer alguma entrada para um sistema de separação. Faça uma primeira passagem de decodificação usando seu sistema de reconhecimento de fala. Para cada quadro, pegue o vetor MFCC médio do gaussiano que obteve a melhor pontuação. Inverta isso de volta para um espectro. Boom, você tem uma máscara fornecendo a localização espectral mais provável dos bits semelhantes à fala e pode usá-la como uma entrada para a filtragem Wiener. Isso soa um pouco como acenar com a mão, mas o geist é que, para separar uma fonte, você precisa de um bom modelo para isso, e um sistema de reconhecimento de fala retrocedido é um ótimo modelo generativo para sinais de fala.