L'utilisation d'un filtre passe-bande correspondant à la bande passante de la parole vous aidera.
Si vous avez plusieurs microphones (comme c'est le cas actuellement sur les téléphones portables), il existe une multitude de méthodes de type ICA qui peuvent en profiter - mais votre question me laisse entendre que vous n'avez qu'une seule entrée.
Ce que vous voulez faire, c'est une "séparation de source à un microphone" (nom tiré du document révolutionnaire de Roweis), également appelé "capteur unique". Attention: c'est loin d'être un problème résolu, et toutes les recherches dans ce domaine sont très récentes, aucun algorithme ou approche n'étant un "gagnant clair" (contrairement aux modèles de mélange gaussiens + FST pour la reconnaissance vocale).
Un bon cadre pour le faire est le filtrage de Wiener. Voir Benaroya et al. "Séparation de source de capteur unique basée sur le filtrage de Wiener et STFT à fenêtres multiples" (lisez les sections 1 et 2, ne vous embêtez pas avec la solution multirésolution, sauf si vous en avez vraiment besoin). En bref, vous calculez le STFT de votre signal, et pour chaque trame STFT, vous essayez d'obtenir des estimations du spectre vocal et du spectre de bruit, et vous utilisez le filtrage de Wiener pour récupérer la meilleure estimation du spectre vocal à partir de cela (ce s'apparente à un "masquage doux" du spectre).
Votre problème est maintenant le suivant: étant donné une trame STFT, estimez la parole et la composante de bruit à partir de celle-ci. L'approche la plus simple décrite dans l'article de Benaroya passe par la quantification vectorielle - prenez plusieurs heures de parole par de nombreux locuteurs, calculez le STFT, exécutez LBG dessus pour trouver un livre de codes de 512 ou 1024 trames vocales typiques; faites la même chose pour le bruit. Maintenant, étant donné une trame de votre signal d'entrée, projetez-le de manière non négative (une procédure de mise à jour du gradient multiplicatif est décrite dans l'article) sur les bases de la parole et du bruit, et vous obtenez vos estimations de la parole et du bruit. Si vous ne voulez pas vous occuper de la projection non négative, utilisez simplement le voisin le plus proche. C'est vraiment la chose la plus simple qui pourrait éventuellement fonctionner dans le département "séparation de source à capteur unique".
Notez qu'un système de reconnaissance vocale pourrait en effet fournir une entrée pour un système de séparation. Faites un premier décodage à l'aide de votre système de reconnaissance vocale. Pour chaque image, prenez le vecteur MFCC moyen du gaussien qui a obtenu le meilleur score. Inversez cela dans un spectre. Boom, vous avez un masque vous donnant l'emplacement spectral le plus probable des bits de type vocal, et vous pouvez l'utiliser comme entrée pour le filtrage de Wiener. Cela ressemble un peu à un geste de la main, mais le géiste est que pour séparer une source, vous avez besoin d'un bon modèle pour elle, et un système de reconnaissance vocale repris à l'envers est un enfer d'un bon modèle génératif pour les signaux vocaux.