Aprimoramento de fala
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.
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
Variantes do modelo
| Variante | Tamanho | Precisao |
|---|---|---|
| INT8 (padrao) | ~2.2 MB | Quantizado 8-bit |
| FP32 | ~4.3 MB | Precisao total |
O modelo tem aproximadamente 2.1M parametros. A variante INT8 e usada por padrao e fornece qualidade equivalente com metade do tamanho.
Uso do CLI
# Denoise audio (output to _denoised.wav)
.build/release/audio denoise noisy.wav
# Specify output file
.build/release/audio denoise noisy.wav -o clean.wav
# Use FP32 model variant
.build/release/audio denoise noisy.wav --model fp32
Opcoes
| Opcao | Descricao |
|---|---|
--output, -o | Caminho do arquivo de saida (padrao <input>_denoised.wav) |
--model | Variante de modelo: int8 (padrao) ou fp32 |
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 FP16) | ~4.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/audio denoise noisy.wav -o clean.wav
.build/release/audio transcribe clean.wav
API Swift
import SpeechEnhancement
let model = try await DeepFilterNet3.loadFromHub()
let cleanAudio = try await model.denoise(audioFile: "noisy.wav")
try cleanAudio.write(to: "clean.wav")
Tambem disponivel em Android e Linux via ONNX Runtime.