erm: 음성 불필요한 요소 제거를 위한 로컬 CLI

개요

erm은 오디오 녹음에서 "um," "uh," "er"와 같은 음성 불필요한 요소(disfluencies)를 자동으로 제거하도록 설계된 로컬 명령줄 인터페이스(CLI)입니다. 들리는 클릭음이나 어색한 전환을 초래하는 단순한 컷팅 방식과 달리, erm은 전사(transcription) 기반 탐지 및 파형 분석과 룸톤(room-tone) 합성을 결합하여 매끄러운 편집을 생성합니다.

자동 오디오 컷팅의 기술적 과제

단순히 전사 기반으로 컷팅하는 방식—필러(filler) 단어의 타임스탬프를 식별하고 오디오를 자르는 것—은 다음 세 가지 주요 이유로 전문적인 결과물을 얻기에 불충분합니다:

  1. 전사 간극(Transcription Gaps): Whisper와 같은 음성-텍스트 변환 모델은 종종 전사에서 필러 단어를 자동으로 생략하여, 제거할 대상이 될 토큰이 남지 않게 됩니다.
  2. 파형 불연속성(Waveform Discontinuity): 임의의 타임스탬프에서 오디오를 자르면 파형에 "계단" 현상이 발생하며, 이는 인간의 귀에 클릭음으로 들립니다.
  3. 주변 소음 변화(Ambient Noise Shifts): 깔끔하게 이어 붙이더라도, 컷팅 전후의 배경 소음(룸톤)이 미세하게 달라져 오디오의 기저음(audio floor)에 인지 가능한 변화를 일으킵니다.

탐지 파이프라인

필러 단어의 높은 재현율(recall)을 보장하기 위해, erm은 4단계 탐지 전략을 사용합니다:

1. Whisper 전사

이 도구는 faster-whisper(medium.en 모델을 기본값으로 사용)를 사용하여 단어 수준의 타임스탬프를 생성합니다. 모델에 전사를 정리하지 않도록 특정 지침을 제공하여, 필러가 탐지 대상인 토큰으로 보존되도록 합니다.

2. 간극 채우기 분석(Gap Filler Analysis)

전사된 두 단어 사이의 일시 정지가 350ms를 초과하는 경우, erm은 해당 간극 내의 오디오를 분석합니다. Whisper가 침묵으로 보고한 곳에서 유성음(voiced sound)이 감지되면, 도구는 이를 모델이 전사에서 생략한 필러로 표시합니다.

3. 단어 내부 필러 탐지(Intra-word Filler Detection)

Whisper가 필러를 인접한 단어에 붙여버리는 경우(예: "in, uhhhhh"가 단일 "in" 토큰이 되는 경우), erm은 비정상적으로 긴 단일 토큰을 식별합니다. 이러한 토큰을 짧은 오디오 저하 지점에서 분할하고, 그중 어떤 세그먼트가 실제 단어인지 타당한 발음 길이를 기준으로 판단하여 나머지를 필러로 표시합니다.

4. 지속 시간 및 피치 테스트

텍스트가 시사하는 것보다 훨씬 더 오래 지속되는 단어의 경우, erm은 꼬리 부분에서 유성음을 스캔합니다. 화자가 단순히 천천히 말하는 것(가변적 음향 형태)과 "uhhhhh"와 같이 모음을 길게 끄는 것(안정적이고 단순한 음향 형태)을 구분하기 위해 피치 테스트를 적용합니다.

매끄러운 스플라이싱(Splicing) 구현

들리는 아티팩트(artifacts)를 제거하기 위해, erm은 최종 렌더링 전에 여러 정제 단계를 수행합니다:

파형 정렬 및 제로 크로싱(Zero-Crossing)

컷팅 끝점은 가장 조용한 근처 지점을 찾기 위해 최대 60ms까지 이동할 수 있습니다. 그 지점으로부터, 끝점은 파형이 0을 지나는 정확한 순간인 "제로 크로싱"에 맞춥니다. 두 제로 포인트를 연결하면 클릭음을 유발하는 파형 계단 현상을 방지할 수 있습니다.

동적 크로스페이딩(Dynamic Crossfading)

ffmpeg를 사용하여, erm은 두 오디오 세그먼트가 겹치는 부분에 크로스페이드를 적용합니다. 고정된 지속 시간을 사용하는 대신, 컷팅 크기에 따라 크로스페이드 길이를 조절하여(50ms에서 120ms 사이) 짧은 클립이 뭉개지거나 긴 클립에서 팝 노이즈가 발생하는 것을 방지합니다.

룸톤 합성(Room Tone Synthesis)

컷팅 전후의 배경 소음 변화를 가고리기 위해, erm은 원본 녹음의 조용한 구간을 자동으로 식별합니다. 이 "룸톤"은 전체 출력물 아래에 낮은 볼륨으로 루프 재생되어, 스플라이싱 전환을 숨기는 일관된 주변 환경음을 생성합니다.

운영 모드 및 검증

노이즈 제거 전략

노이즈 제거가 탐지 정확도를 위한 피치 및 볼륨 단서를 정보를 평탄화할 수 있기 때문에, erm은 네 가지 모드를 제공합니다. 기본값은 hybrid 모드이며, 이 모드에서는 정확도를 유지하기 위해 원본 오디오에서 탐지를 수행하지만, 최종 컷팅은 더 나은 음질을 위해 노이즈가 제거된 복사본에서 추출합니다.

검증(Validation)

validate 서브커맨드는 파일이 열리는지 확인하고, 출력된 결과물의 지속 시간이 컷팅된 길이의 합계만큼 입력값보다 짧아졌는지 확인하며, 정제된 파일을 다시 전사하여 필러가 제거되었는지 확인하여 출력물의 무결성을 보장합니다.

범위 및 한제한

erm은 언어가 아닌 소리만을 제거하는 데 엄격히 제한됩니다. 다음은 제거하지 않습니다:

  • 필러 구절(Filler phrases): "like," "you know," 또는 "I mean"은 의미론적 의미를 가질 수 있으므로 보존됩니다.
  • 편집적 오류(Editorial errors): 반복되는 단어, 잘못된 시작, 또는 긴 생각 중의 일시 정지 등은 그대로 유지됩니다. 이는 어떤 "테이크"가 더 우수한지 판단하는 데 편집적 판단이 필요하기 때문입니다.

커뮤니티 관점

이 도구는 콘텐츠 제작자에게 상당한 시간 절약을 제공하지만, 일부 사용자 및 언어학자들은 불필요한 요소가(disfluencies)-음성 언어에서 목적을 수행한다고 주장합니다.

"하지만 말하기에서는 [ums and ahs]가 다음 부분이 중요하다는 것을 나타내는 집중 포인트 역할을 할 수 있습니다."

다른 이들은 비원어민의 경우, 이러한 일시 정지는 인지적 전환을 것을 나타내며, 이를 제거할 경우 화자가 뚝뚝 끊기는 것처럼 들리거나 문장의 의도된 의미가 변할 수 있다고 언급합니다.

Sources