Использование фильтра полосы пропускания, соответствующего пропускной способности речи, поможет.
Если у вас есть несколько микрофонов (как в случае с мобильными телефонами), существует множество методов, подобных ICA, которые могут воспользоваться этим, но ваш вопрос подсказывает мне, что у вас есть только один вход.
То, что вы хотите сделать, это «разделение источников с одним микрофоном» (название взято из революционной статьи Роуиса), также называемое «одним датчиком». Предупреждение: это далеко не решаемая проблема, и все исследования в этой области проводятся совсем недавно, при этом ни один алгоритм или подход не являются «явным победителем» (в отличие от моделей гауссовой смеси + FST предназначены для распознавания речи).
Хорошая основа для этого - фильтрация Винера. Смотри Benaroya et al. «Разделение источника с одним датчиком на основе фильтрации Винера и STFT с несколькими окнами» (Прочтите разделы 1 и 2, не беспокойтесь о мультиразрешениях, если вам это действительно не нужно). Короче говоря, вы вычисляете STFT вашего сигнала, и для каждого кадра STFT вы пытаетесь получить оценки спектра голоса и спектра шума, и вы используете фильтрацию Винера, чтобы восстановить наилучшую оценку спектра голоса из этого (это сродни "мягкому маскированию" спектра).
Теперь ваша проблема заключается в следующем: учитывая STFT-кадр, оцените речь и составляющую шума из него. Более простой подход, описанный в статье Benaroya, заключается в векторном квантовании - многим ораторам нужно несколько часов речи, вычислить STFT, запустить LBG, чтобы найти кодовую книгу из 512 или 1024 типичных речевых кадров; сделать то же самое для шума. Теперь, учитывая кадр вашего входного сигнала, спроецируйте его неотрицательно (процедура мультипликативного обновления градиента описана в статье) на основы речи и шума, и вы получите оценки речи и шума. Если вы не хотите иметь дело с неотрицательной проекцией, просто используйте ближайшего соседа. Это действительно самая простая вещь, которая может сработать в отделе «разделения источников с одним датчиком».
Обратите внимание, что система распознавания речи действительно может обеспечить некоторый ввод для системы разделения. Сделайте первый проход декодирования, используя вашу систему распознавания речи. Для каждого кадра возьмите средний вектор MFCC от гауссиана, который получил лучший результат. Инвертировать это обратно в спектр. Бум, у вас есть маска, дающая вам наиболее вероятное спектральное положение речевых битов, и вы можете использовать ее в качестве входа для фильтрации Винера. Это звучит немного похоже на махание рукой, но суть в том, что для разделения источника вам нужна хорошая модель для него, а система распознавания речи, взятая в обратном направлении, является адской хорошей генеративной моделью для речевых сигналов.