Sử dụng bộ lọc băng thông phù hợp với băng thông của lời nói sẽ giúp ích.
Nếu bạn có một số micrô (như trường hợp trên điện thoại di động), có một phương pháp giống như ICA có thể tận dụng lợi thế đó - nhưng câu hỏi của bạn gợi ý cho tôi rằng bạn chỉ có một đầu vào.
Những gì bạn muốn làm là "tách nguồn một micrô" (tên được lấy từ bài viết đột phá của Roweis), còn được gọi là "cảm biến đơn". Cảnh báo: đây không phải là một vấn đề được giải quyết và tất cả các nghiên cứu trong lĩnh vực này là rất gần đây, không có thuật toán hay cách tiếp cận nào là "người chiến thắng rõ ràng" (không giống như các mô hình hỗn hợp gaussian + FST đã được nhận dạng giọng nói).
Một khung tốt để làm điều đó là thông qua bộ lọc Wiener. Xem Benaroya et al. "Tách nguồn cảm biến đơn dựa trên bộ lọc Wiener và nhiều cửa sổ STFT" (Đọc phần 1 & 2, đừng bận tâm đến điều đa biến trừ khi bạn thực sự cần nó). Nói tóm lại, bạn tính toán STFT của tín hiệu của bạn và đối với từng khung STFT, bạn cố gắng lấy ước tính của phổ giọng nói và phổ nhiễu và bạn sử dụng bộ lọc Wiener để khôi phục ước tính tốt nhất của phổ thoại từ đó (điều này giống như "mặt nạ mềm" phổ).
Vấn đề của bạn bây giờ là như sau: đưa ra một khung STFT, ước tính lời nói và thành phần nhiễu từ nó. Cách tiếp cận đơn giản hơn được mô tả trong bài báo của Benaroya là thông qua lượng tử hóa Vector - mất nhiều giờ phát biểu của nhiều diễn giả, tính toán STFT, chạy LBG trên đó để tìm một cuốn sách mã gồm 512 hoặc 1024 khung nói điển hình; làm điều tương tự cho tiếng ồn. Bây giờ, được đưa ra một khung tín hiệu đầu vào của bạn, chiếu nó không âm (một quy trình cập nhật độ dốc nhân được mô tả trong bài viết) lên các cơ sở tiếng nói và tiếng ồn, và bạn có được ước tính tiếng nói và tiếng ồn của mình. Nếu bạn không muốn đối phó với điều không chiếu, chỉ cần sử dụng người hàng xóm gần nhất. Đây thực sự là điều đơn giản nhất có thể hoạt động trong bộ phận "tách nguồn cảm biến đơn".
Lưu ý rằng một hệ thống nhận dạng giọng nói thực sự có thể cung cấp một số đầu vào cho một hệ thống phân tách. Thực hiện một bước giải mã đầu tiên bằng hệ thống nhận dạng giọng nói của bạn. Đối với mỗi khung, lấy vectơ MFCC trung bình từ gaussian có điểm cao nhất. Đảo ngược nó trở lại thành một quang phổ. Boom, bạn có một mặt nạ cung cấp cho bạn vị trí phổ có khả năng nhất của các bit giống như lời nói và bạn có thể sử dụng nó làm đầu vào cho bộ lọc Wiener. Điều này nghe có vẻ giống như vẫy tay, nhưng nhà địa chất học là để tách một nguồn bạn cần một mô hình tốt cho nó, và một hệ thống nhận dạng giọng nói được đưa về phía sau là một mô hình phát âm tốt cho tín hiệu giọng nói.