가이드 · 2026년 10월 15일

AI 노이즈 제거는 어떻게 작동할까

Voice Denoise는 공개된 음성 향상 모델 DeepFilterNet3를 브라우저에서 실행해 소음을 지웁니다. 목소리는 남기고 소음만 줄이는 일이 어떻게 가능한지, 그리고 이 방식으로 할 수 있는 일과 없는 일을 쉽게 풀었습니다.

소리를 아주 잘게 쪼개기

녹음 파일은 시간에 따라 변하는 하나의 파형입니다. 이 상태로는 목소리와 소음이 한데 섞여 있어 구분하기 어렵습니다. 그래서 먼저 소리를 짧은 조각으로 자르고, 조각마다 어떤 높이(주파수)의 소리가 얼마나 들어 있는지로 바꿉니다.

이렇게 보면 목소리와 소음의 모양이 다릅니다. 목소리는 기본 음높이와 그 배수(배음)에 해당하는 주파수에 에너지가 줄무늬처럼 모여 있고, 그 모양이 빠르게 바뀝니다. 선풍기나 에어컨 소리는 넓은 주파수에 고르게 퍼져 있고 시간이 지나도 비슷합니다.

예전 방식: 소음의 모양을 빼기

전통적인 잡음 제거는 말이 없는 구간에서 소음의 모양을 재 두었다가, 모든 조각에서 그만큼을 빼는 방식이었습니다(스펙트럼 차감). 소음이 일정할 때는 잘 되지만, 소음이 변하면 따라가지 못합니다. 또 빼는 양이 조금씩 어긋나 ‘뽀글뽀글’, ‘삐리릭’ 하는 잔여음(뮤지컬 노이즈)이 남기 쉽습니다.

DeepFilterNet3: 두 단계로 다듬기

DeepFilterNet3는 깨끗한 말소리에 여러 종류의 소음을 섞은 수많은 예시로 학습한 신경망입니다. 소음의 모양을 미리 재 둘 필요 없이, 조각마다 무엇이 목소리이고 무엇이 소음인지 스스로 판단합니다. 처리는 두 단계로 이루어집니다.

1단계 — 32개 대역의 음량 조절

주파수 전체를 사람 귀의 감각에 맞춰 32개 대역(ERB 대역)으로 묶습니다. 귀는 낮은 소리를 촘촘하게, 높은 소리를 넓게 구분하므로 낮은 쪽 대역은 좁고 높은 쪽 대역은 넓습니다. 신경망은 조각마다 각 대역을 얼마나 남길지 0에서 1 사이의 값으로 정하고, 이 값으로 소음이 많은 대역을 줄입니다. 큰 그림의 소음을 걷어내는 단계입니다.

2단계 — 낮은 대역의 정밀 복원(딥 필터링)

대역 단위로 줄이기만 하면 목소리의 배음 줄무늬 사이에 낀 소음까지는 지우지 못합니다. 그래서 목소리의 핵심 정보가 몰려 있는 0~4.8kHz 구간(주파수 성분 96개)은 따로 다룹니다. 각 성분마다 앞의 두 조각, 지금 조각, 뒤의 두 조각까지 다섯 조각의 값을 섞는 작은 필터를 신경망이 그때그때 만들어, 배음 사이의 소음을 걷어내고 목소리의 세밀한 구조를 되살립니다. 이것이 ‘딥 필터링’이라는 이름의 유래입니다.

신경망은 지금 조각을 판단할 때 20밀리초 뒤의 소리까지 참고합니다. 말이 시작되는 순간을 놓치지 않기 위해서입니다.

브라우저 안에서 돌아가는 이유

DeepFilterNet3는 매개변수가 약 200만 개, 모델 파일이 약 8.6MB인 작은 신경망입니다. 수억 개의 매개변수를 가진 대형 AI 모델과 달리 일반 PC와 휴대폰에서도 충분히 빠르게 돌아갑니다. Voice Denoise는 이 모델을 ONNX Runtime Web으로 브라우저 안(WebAssembly)에서 실행하므로, 음성 파일을 서버로 보낼 필요가 없습니다. 최근 PC 기준으로 20분 녹음을 처리하는 데 30초에서 1분 정도가 걸립니다.

할 수 있는 일과 한계

잘 지우는 소음

어려운 경우

더 알아보기

DeepFilterNet은 Hendrik Schröter 등이 공개한 오픈소스 음성 향상 모델로, 모델과 코드가 MIT 또는 Apache 2.0 라이선스로 GitHub에 공개되어 있습니다. Voice Denoise는 공식 모델의 학습된 값(가중치)을 그대로 쓰며, 같은 녹음을 공식 구현(PyTorch)으로 처리한 결과와 사실상 같은 결과가 나오는지 확인했습니다.

음성 노이즈 제거하러 가기

함께 보면 좋은 글