음성 복원 — Sidon
잡음이 있거나 잔향이 심하거나 대역이 제한된 음성을 깨끗한 48 kHz 오디오로 복원합니다. Sidon은 노이즈 제거, 잔향 제거, 대역폭 확장을 하나로 결합한 단일 모델입니다. 전적으로 온디바이스에서 실행됩니다(Apple Silicon에서는 CoreML, 그 외에서는 ONNX Runtime). 단순히 잡음을 마스킹하는 것이 아니라 학습된 표현으로부터 음성을 재구성하기 때문에 음성 복제 레퍼런스를 준비하는 데 특히 뛰어납니다. 화자의 정체성을 유지하면서 녹음을 정리합니다.
음성 향상 (DeepFilterNet3)은 아주 작고 실시간으로 동작하는 노이즈 억제기입니다. Sidon은 더 무거운 생성형 복원 모델로, 잔향까지 제거하고 고주파 디테일을 48 kHz로 재구축합니다. 실시간 노이즈 제거에는 DeepFilterNet3를, 레퍼런스 및 보관용 녹음의 오프라인 정리에는 Sidon을 사용하세요.
아키텍처
Sidon은 2단계 파이프라인입니다. 자기지도 학습 특징 예측기가 음성 표현을 정화하고, 신경망 보코더가 이를 기반으로 깨끗한 파형을 재합성합니다.
| 단계 | 세부 내용 |
|---|---|
| 프런트엔드 | w2v-BERT 2.0 SeamlessM4T log-mel 특징 (16 kHz → 160차원) |
| 예측기 | LoRA로 미세 조정된 정화 헤드를 가진 w2v-BERT 2.0 (8개 레이어) → 정화된 특징 |
| 보코더 | DAC 디코더가 정화된 특징으로부터 48 kHz 오디오를 재합성 |
파이프라인은 16 kHz audio → features → predictor → DAC decoder → 48 kHz audio입니다. 총 약 246M 파라미터(예측기 193.6M + 보코더 52.4M)입니다.
처리 파이프라인
- 특징 추출 — 16 kHz 입력으로부터 w2v-BERT 2.0 log-mel 특징을 계산(Apple에서는 Accelerate/vDSP, 다른 플랫폼에서는 C++)
- 예측기 — LoRA가 적용된 w2v-BERT 인코더가 잡음/잔향이 있는 특징을 깨끗한 특징으로 매핑
- 보코더 — DAC 디코더가 정화된 특징으로부터 깨끗한 48 kHz 파형을 재구성
- 청킹 — 더 긴 오디오는 고정 윈도우(약 10초)로 처리한 뒤 48 kHz 타임라인에서 이어 붙임
품질
잔향이 있는 레퍼런스 클립에서, 복원은 화자 정체성을 그대로 유지하면서 지각 품질을 끌어올립니다(무참조 MOS):
| 오디오 | DNSMOS OVRL | UTMOS | 화자 코사인 |
|---|---|---|---|
| 입력 (잔향 있음) | 2.90 | 2.99 | — |
| Sidon 복원 | 3.29 | 3.40 | 0.79 |
가장 큰 향상은 배경 점수(잔향 제거)에서 나타납니다. 화자 유사도가 유지되며, 이는 복제 레퍼런스를 정리할 때 가장 중요한 요소입니다.
모델 변형
양자화는 예측기를 압축하며, DAC 보코더는 오디오 품질을 위해 더 높은 정밀도를 유지합니다. Apple에서는 int8이 k-means 팔레타이제이션을 사용하고, ONNX에서는 int8이 채널별 가중치 전용입니다.
| 형식 | 정밀도 | 번들 크기 |
|---|---|---|
| CoreML | int8 (예측기) + FP16 (보코더) | 약 407 MB |
| CoreML | FP16 | 약 713 MB |
| ONNX | int8 (예측기) + FP16 (보코더) | 약 286 MB |
| ONNX | FP16 | 약 470 MB |
| ONNX | FP32 | 약 939 MB |
CLI 사용법
# Restore audio (denoise + dereverb) to clean 48 kHz
.build/release/speech restore noisy.wav -o clean.wav
# Clean a voice-cloning reference before TTS
.build/release/speech speak "Hello world" --voice-sample ref.wav --clean-reference
Sidon은 입력 샘플레이트와 관계없이 48 kHz 오디오를 출력합니다(업샘플링하고 대역폭을 복원합니다). DeepFilterNet3보다 무거운 오프라인 복원 모델로, 실시간 스트림보다는 파일에 대해 실행하는 것이 가장 좋습니다.
모델 다운로드
| 모델 | 형식 | HuggingFace |
|---|---|---|
| Sidon (CoreML) | fp16 + int8 | aufklarer/Sidon-CoreML |
| Sidon (ONNX) | int8 + fp16 + fp32 | soniqo/Sidon-ONNX |
다른 모델과 결합
Sidon은 전처리 단계로 가장 유용합니다:
- 음성 복제 전에 — 잡음/잔향이 있는 레퍼런스를 정리하여 복제본이 방의 특성이 아닌 목소리를 물려받도록 함
- 전사 전에 — 보관용 또는 원거리 녹음을 복원하여 ASR 정확도 개선
- 화자 임베딩 전에 — 더 깨끗한 오디오는 더 신뢰할 수 있는 임베딩을 생성
Swift API
import SpeechRestoration
let restorer = try await SpeechRestorer.fromPretrained()
let cleanAudio = try restorer.restore(audio: noisySamples, sampleRate: 16000)
Speech Core (ONNX Runtime)를 통한 Android, Linux 및 Windows에서도 사용할 수 있습니다. Sidon(MIT) 기반으로 구축되었습니다.