Aprimoramento de fala — DeepFilterNet3
Remova ruido de fundo de gravacoes de fala usando o DeepFilterNet3. O modelo roda no Neural Engine via CoreML para inferencia eficiente, enquanto todo o processamento de sinais (STFT, banco de filtros ERB, deep filtering) roda na CPU via Accelerate/vDSP.
Todo o caminho DSP segue o libdf: escala de análise 1/960, alpha de normalização 0.99, taps do filtro profundo com preenchimento de zeros e ordem correta das matrizes NumPy C/Fortran. Em um subconjunto fixo de 20 clipes do VoiceBank-DEMAND, o Swift obteve PESQ 3,097, STOI 0,964 e SI-SDR 19,12 dB, contra 3,029, 0,962 e 18,31 dB do DF3 oficial em Python.
Amostra antes/depois
Um clipe de fala com ruído processado com DeepFilterNet3 para ouvir o denoiser CoreML antes de executá-lo localmente.
Arquitetura
DeepFilterNet3 usa uma arquitetura de decodificador duplo que separa o aprimoramento do envelope espectral da recuperacao de detalhe espectral fino.
| Estagio | Detalhes |
|---|---|
| STFT | Short-time Fourier transform via vDSP |
| Codificador | 4 camadas SepConv2d + SqueezedGRU |
| Decodificador ERB | Mascara sigmoid aplicada a bandas de frequencia em escala ERB |
| Decodificador DF | Coeficientes de filtragem complexos de 5 taps |
| iSTFT | STFT inversa para reconstruir o sinal no dominio do tempo |
O decodificador ERB estima uma mascara de ganho na escala Equivalent Rectangular Bandwidth (ERB), lidando com modelagem espectral ampla. O decodificador DF preve coeficientes de filtragem complexos de 5 taps para detalhes finos, aplicando filtros aprendidos diretamente no dominio da frequencia.
Pipeline de processamento
- STFT — Decompoe o audio ruidoso em representacao tempo-frequencia usando vDSP
- Features ERB — Mapeia bins STFT para bandas de frequencia em escala ERB
- Rede neural — O codificador processa features no Neural Engine; os decodificadores ERB e DF prevem parametros de aprimoramento
- Mascaramento ERB — Aplica mascara de ganho sigmoid para suprimir ruido no envelope espectral
- Deep Filtering — Aplica coeficientes complexos de 5 taps para recuperacao de detalhe espectral fino
- iSTFT — Reconstroi audio limpo a partir do espectro aprimorado
Modelo
| Variante | Tamanho | Precisao |
|---|---|---|
| Padrão | ~2.2 MB | Pesos paletizados de 8 bits, cálculo FP16 |
Uso do CLI
# Denoise audio (output to _denoised.wav)
.build/release/speech denoise noisy.wav
# Specify output file
.build/release/speech denoise noisy.wav -o clean.wav
# Use another compatible HuggingFace repository
.build/release/speech denoise noisy.wav --model owner/DeepFilterNet3-CoreML
Opcoes
| Opcao | Descricao |
|---|---|
--output, -o | Caminho do arquivo de saida (padrao <input>_denoised.wav) |
--model | ID de repositório de modelo HuggingFace compatível (padrão: aufklarer/DeepFilterNet3-CoreML) |
DeepFilterNet3 roda no Neural Engine via CoreML, nao na GPU via MLX. Isso significa que funciona eficientemente mesmo enquanto outros modelos baseados em GPU (ASR, TTS) estao rodando. Nao e necessaria compilacao de metallib.
Downloads de modelos
| Modelo | Tamanho | HuggingFace |
|---|---|---|
| DeepFilterNet3 (CoreML, paletizado em 8 bits) | ~2.2 MB | aufklarer/DeepFilterNet3-CoreML |
Combinando com outros modelos
O aprimoramento de fala e particularmente util como etapa de pre-processamento antes de outros modelos:
- Antes da transcricao — Remova ruido do audio antes de rodar o ASR para melhorar a WER em gravacoes ruidosas
- Antes do embedding de falante — Audio mais limpo produz embeddings de falante mais confiaveis
- Antes da diarizacao — A remocao de ruido pode melhorar a precisao de segmentacao
# Denoise then transcribe
.build/release/speech denoise noisy.wav -o clean.wav
.build/release/speech transcribe clean.wav
API Swift
import SpeechEnhancement
let model = try await SpeechEnhancer.fromPretrained()
let cleanAudio = try model.enhance(audio: noisySamples, sampleRate: 48000)
Também disponível no Android e no Linux e Windows via Speech Core (ONNX Runtime).