音声強調 — DeepFilterNet3

DeepFilterNet3を使用して音声録音から背景ノイズを除去します。モデルは効率的な推論のためにCoreML経由でNeural Engine上で実行され、すべての信号処理(STFT、ERBフィルターバンク、ディープフィルタリング)はAccelerate/vDSP経由でCPU上で実行されます。

アーキテクチャ

DeepFilterNet3は、スペクトルエンベロープ強調ときめ細かいスペクトル詳細回復を分離するデュアルデコーダーアーキテクチャを使用します。

ステージ詳細
STFTvDSP経由の短時間フーリエ変換
エンコーダー4つのSepConv2dレイヤー + SqueezedGRU
ERBデコーダーERBスケール周波数バンドに適用されるシグモイドマスク
DFデコーダー5タップ複素フィルタリング係数
iSTFT時間領域信号を再構築する逆STFT

ERBデコーダーは、Equivalent Rectangular Bandwidth (ERB)スケールでゲインマスクを推定し、広範なスペクトル整形を処理します。DFデコーダーはきめ細かい詳細のための5タップ複素フィルタリング係数を予測し、周波数領域で学習されたフィルターを直接適用します。

処理パイプライン

  1. STFT — vDSPを使用してノイズのある音声を時間周波数表現に分解
  2. ERB特徴量 — STFTビンをERBスケール周波数バンドにマッピング
  3. ニューラルネットワーク — エンコーダーがNeural Engine上で特徴量を処理。ERBとDFのデコーダーが強調パラメーターを予測
  4. ERBマスキング — シグモイドゲインマスクを適用してスペクトルエンベロープ内のノイズを抑制
  5. ディープフィルタリング — 5タップ複素係数を適用してきめ細かいスペクトル詳細を回復
  6. iSTFT — 強調されたスペクトルからクリーンな音声を再構築

モデルバリアント

バリアントサイズ精度
INT8 (デフォルト)約2.2 MB8ビット量子化
FP32約4.3 MB完全精度

モデルは約2.1Mのパラメーターを持ちます。INT8バリアントはデフォルトで使用され、半分のサイズで同等の品質を提供します。

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 FP32 model variant
.build/release/speech denoise noisy.wav --model fp32

オプション

オプション説明
--output, -o出力ファイルパス(デフォルトは<input>_denoised.wav
--modelモデルバリアント:int8(デフォルト)またはfp32
重要

DeepFilterNet3は、MLX経由のGPUではなく、CoreML経由でNeural Engine上で実行されます。つまり、他のGPUベースのモデル(ASR、TTS)が実行されている間でも効率的に動作します。metallibコンパイルは不要です。

モデルダウンロード

モデルサイズHuggingFace
DeepFilterNet3 (CoreML FP16)約4.2 MBaufklarer/DeepFilterNet3-CoreML

他のモデルとの組み合わせ

音声強調は、他のモデルの前処理ステップとして特に有用です:

# Denoise then transcribe
.build/release/speech denoise noisy.wav -o clean.wav
.build/release/speech transcribe clean.wav

Swift API

import SpeechEnhancement

let model = try await SpeechEnhancer.fromPretrained()
let cleanAudio = try model.enhance(audio: noisySamples, sampleRate: 48000)

Android、Linux と Windows (ONNX Runtime経由)でも利用可能です。