Sarà utile utilizzare un filtro passa banda che corrisponda alla larghezza di banda del parlato.
Se hai diversi microfoni (come è ora il caso sui cellulari), ci sono molti metodi simili all'ICA che possono trarne vantaggio - ma la tua domanda mi suggerisce che hai un solo input.
Quello che vuoi fare è la "separazione della sorgente a un microfono" (nome preso dalla rivoluzionaria carta di Roweis), chiamato anche "sensore singolo". Attenzione: questo è ben lungi dall'essere un problema risolto e tutte le ricerche in questo campo sono molto recenti, senza algoritmi o approcci che sono un "chiaro vincitore" (diversamente dai modelli di miscele gaussiane + FST sono stati per il riconoscimento vocale).
Un buon framework per farlo è attraverso il filtro Wiener. Vedi Benaroya et al. "Separazione della sorgente a sensore singolo basata sul filtro Wiener e STFT a più finestre" (Leggi le sezioni 1 e 2, non preoccuparti della cosa multiresoluzione a meno che tu non ne abbia davvero bisogno). In breve, calcoli lo STFT del tuo segnale e, per ogni frame STFT, provi a ottenere stime dello spettro della voce e dello spettro del rumore e usi il filtro Wiener per recuperare la migliore stima dello spettro della voce da questo (questo è simile a "mascherare" lo spettro).
Il problema è ora il seguente: dato un frame STFT, stimare il parlato e il componente del rumore da esso. L'approccio più semplice descritto nell'articolo di Benaroya è attraverso la quantizzazione vettoriale: prendi diverse ore di discorso da molti oratori, calcola la STFT, esegui LBG su di esso per trovare un libro di codici di 512 o 1024 cornici vocali tipiche; fare la stessa cosa per il rumore. Ora, dato un frame del tuo segnale di input, proiettalo non negativamente (una procedura di aggiornamento del gradiente moltiplicativo è descritta nel documento) sulle basi del parlato e del rumore, e ottieni le tue stime del parlato e del rumore. Se non vuoi occuparti della cosa della proiezione non negativa, usa solo il vicino più vicino. Questa è davvero la cosa più semplice che potrebbe funzionare nel reparto "separazione della sorgente a sensore singolo".
Si noti che un sistema di riconoscimento vocale potrebbe effettivamente fornire alcuni input per un sistema di separazione. Fai un primo passaggio di decodifica usando il tuo sistema di riconoscimento vocale. Per ciascun fotogramma, prendi il vettore MFCC medio dal gaussiano che ha ottenuto il punteggio migliore. Invertire ciò in uno spettro. Boom, hai una maschera che ti dà la posizione spettrale più probabile dei bit simili al parlato e puoi usarla come input per il filtro di Wiener. Questo suona un po 'come un cenno della mano, ma il geista è che per separare una fonte è necessario un buon modello per essa, e un sistema di riconoscimento vocale portato all'indietro è un inferno di un buon modello generativo per i segnali vocali.