Restauration de la parole — Sidon

Restaurez une parole bruitée, réverbérée ou à bande limitée en audio propre à 48 kHz avec Sidon — un modèle unique qui combine débruitage, déréverbération et extension de bande passante. Il s'exécute entièrement sur l'appareil (CoreML sur Apple Silicon, ONNX Runtime ailleurs). Parce qu'il reconstruit la parole à partir de représentations apprises plutôt que de simplement masquer le bruit, il est particulièrement efficace pour préparer une référence de clonage vocal : il nettoie l'enregistrement tout en préservant l'identité du locuteur.

Quand utiliser Sidon plutôt que DeepFilterNet3

L'amélioration de la parole (DeepFilterNet3) est un minuscule suppresseur de bruit en temps réel. Sidon est un modèle de restauration générative plus lourd : il supprime aussi la réverbération et reconstruit les détails haute fréquence jusqu'à 48 kHz. Utilisez DeepFilterNet3 pour la suppression de bruit en direct, et Sidon pour le nettoyage hors ligne de références et d'enregistrements d'archives.

Architecture

Sidon est un pipeline à deux étapes : un prédicteur de caractéristiques auto-supervisé nettoie la représentation de la parole, et un vocodeur neuronal resynthétise un signal propre à partir de celle-ci.

ÉtapeDétails
Front-endCaractéristiques log-mel w2v-BERT 2.0 SeamlessM4T (16 kHz → 160 dimensions)
Prédicteurw2v-BERT 2.0 (8 couches) avec une tête de nettoyage affinée par LoRA → caractéristiques nettoyées
VocodeurLe décodeur DAC resynthétise l'audio à 48 kHz à partir des caractéristiques nettoyées

Le pipeline est 16 kHz audio → features → predictor → DAC decoder → 48 kHz audio. Au total ≈ 246M de paramètres (193,6M pour le prédicteur + 52,4M pour le vocodeur).

Pipeline de traitement

  1. Extraction de caractéristiques — Calcule les caractéristiques log-mel w2v-BERT 2.0 à partir de l'entrée à 16 kHz (Accelerate/vDSP sur Apple, C++ sur les autres plateformes)
  2. Prédicteur — L'encodeur w2v-BERT adapté par LoRA convertit les caractéristiques bruitées/réverbérées en caractéristiques propres
  3. Vocodeur — Le décodeur DAC reconstruit un signal propre à 48 kHz à partir des caractéristiques nettoyées
  4. Découpage en blocs — Les audios plus longs sont traités par fenêtres fixes (~10 s) puis assemblés sur la trame temporelle à 48 kHz

Qualité

Sur un extrait de référence réverbéré, la restauration améliore la qualité perceptuelle tout en préservant l'identité du locuteur (MOS sans référence) :

AudioDNSMOS OVRLUTMOSCosinus de locuteur
Entrée (réverbérée)2.902.99
Restauré par Sidon3.293.400.79

Le gain le plus important concerne le score d'arrière-plan (réverbération supprimée). La similarité du locuteur est préservée, ce qui est essentiel lors du nettoyage d'une référence de clonage.

Variantes du modèle

La quantification compresse le prédicteur ; le vocodeur DAC reste à une précision plus élevée (qualité audio). Sur Apple, l'int8 utilise une palettisation k-means ; sur ONNX, l'int8 est appliqué uniquement aux poids, par canal.

FormatPrécisionTaille du bundle
CoreMLint8 (prédicteur) + FP16 (vocodeur)~407 Mo
CoreMLFP16~713 Mo
ONNXint8 (prédicteur) + FP16 (vocodeur)~286 Mo
ONNXFP16~470 Mo
ONNXFP32~939 Mo

Utilisation en 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
Important

Sidon produit de l'audio à 48 kHz quel que soit le taux d'échantillonnage d'entrée (il suréchantillonne et restaure la bande passante). C'est un modèle de restauration hors ligne — plus lourd que DeepFilterNet3 — et il est préférable de l'exécuter sur un fichier plutôt que sur un flux en direct.

Téléchargements des modèles

ModèleFormatHuggingFace
Sidon (CoreML)fp16 + int8aufklarer/Sidon-CoreML
Sidon (ONNX)int8 + fp16 + fp32soniqo/Sidon-ONNX

Combinaison avec d'autres modèles

Sidon est particulièrement utile comme étape de prétraitement :

API Swift

import SpeechRestoration

let restorer = try await SpeechRestorer.fromPretrained()
let cleanAudio = try restorer.restore(audio: noisySamples, sampleRate: 16000)

Également disponible sur Android, Linux et Windows via Speech Core (ONNX Runtime). Construit sur Sidon (MIT).