0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Speech Enhancement]DeepFilterNet解説 - 軽量リアルタイム特化の実力派

0
Posted at

一言で言うと

「ノートPCのCPUでリアルタイム動作する、実用性重視のノイズ除去モデル」


基本情報

┌─────────────────────────────────────────────────────────┐
│                                                         │
│  モデル名: DeepFilterNet(v1 / v2 / v3)               │
│  開発者: Hendrik Schröter et al.                       │
│  所属: Friedrich-Alexander-Universität / WS Audiology  │
│  初出: ICASSP 2022                                     │
│  ライセンス: MIT License(オープンソース)             │
│                                                         │
│  GitHub: https://github.com/Rikorose/DeepFilterNet     │
│  論文: https://arxiv.org/abs/2110.05588                │
│                                                         │
└─────────────────────────────────────────────────────────┘

なぜDeepFilterNetなのか

┌─────────────────────────────────────────────────────────┐
│                                                         │
│  【問題意識】                                           │
│                                                         │
│  SOTAモデルは性能は高いが...                           │
│  ・計算量が大きすぎてリアルタイム処理できない          │
│  ・GPUがないと動かない                                 │
│  ・補聴器やエッジデバイスには載せられない              │
│                                                         │
│  【DeepFilterNetの解決策】                              │
│                                                         │
│  ・人間の聴覚特性(ERB)を活用して計算量削減           │
│  ・Deep Filteringで効率的に音声強調                    │
│  ・Full-band(48kHz)対応でありながら軽量              │
│                                                         │
│  → CPU単独でリアルタイム動作を実現                     │
│                                                         │
└─────────────────────────────────────────────────────────┘

アーキテクチャ

┌─────────────────────────────────────────────────────────┐
│                                                         │
│  【2段階処理】                                          │
│                                                         │
│  Stage 1: ERB Gain(スペクトル包絡の強調)             │
│  ├─ 入力をERBスケール(32バンド)に変換               │
│  ├─ 人間の周波数知覚をモデル化                        │
│  └─ 粗い強調を実行                                    │
│                                                         │
│  Stage 2: Deep Filtering(調波成分の強調)             │
│  ├─ 音声の周期的成分(ハーモニクス)を強調            │
│  ├─ 複素フィルタで位相も考慮                          │
│  └─ 細かい強調を実行                                  │
│                                                         │
└─────────────────────────────────────────────────────────┘

図解:処理フロー

入力(ノイズ入り48kHz音声)
      │
      ▼
┌─────────────┐
│    STFT     │  短時間フーリエ変換
└─────────────┘
      │
      ├────────────────────────┐
      ▼                        ▼
┌─────────────┐         ┌─────────────┐
│ ERB Encoder │         │ DF Encoder  │
│ (32バンド)  │         │ (96バンド)  │
└─────────────┘         └─────────────┘
      │                        │
      ▼                        ▼
┌─────────────┐         ┌─────────────┐
│  GRU層      │         │  GRU層      │
└─────────────┘         └─────────────┘
      │                        │
      ▼                        ▼
┌─────────────┐         ┌─────────────┐
│ ERB Gains   │         │ Deep Filter │
│ (粗い強調)  │         │ (精密強調)  │
└─────────────┘         └─────────────┘
      │                        │
      └────────────┬───────────┘
                   ▼
            ┌─────────────┐
            │   iSTFT     │  逆変換
            └─────────────┘
                   │
                   ▼
      出力(クリーンな48kHz音声)

Deep Filteringとは

┌─────────────────────────────────────────────────────────┐
│                                                         │
│  【従来のマスク処理】                                   │
│                                                         │
│  Y(t,f) × M(t,f) = X̂(t,f)                              │
│                                                         │
│  各時間-周波数ビンに対して点ごとにマスクを掛ける        │
│  → 時間方向の相関を活用できない                        │
│                                                         │
│  ────────────────────────────────────────────          │
│                                                         │
│  【Deep Filtering】                                     │
│                                                         │
│  X̂(t,f) = Σ H(t,f,τ) × Y(t-τ,f)                       │
│            τ                                            │
│                                                         │
│  複数の時間フレームから複素フィルタで推定               │
│  → 音声の調波構造(ハーモニクス)を活用できる          │
│  → 位相の復元も自然に行える                            │
│                                                         │
└─────────────────────────────────────────────────────────┘

ERB(Equivalent Rectangular Bandwidth)

┌─────────────────────────────────────────────────────────┐
│                                                         │
│  【人間の聴覚特性】                                     │
│                                                         │
│  人間の耳は、低周波数ほど細かく、高周波数ほど          │
│  粗く周波数を知覚する(対数的)。                      │
│                                                         │
│  周波数 (Hz):  100   500   1k   2k    4k    8k   16k   │
│  ERBバンド:    ████ ███ ██ ██  ███  ████ █████        │
│               (細かい)  →  →  →  →  (粗い)            │
│                                                         │
│  【DeepFilterNetでの活用】                              │
│                                                         │
│  ・481周波数ビン → 32 ERBバンドに圧縮                  │
│  ・人間に重要でない情報は粗く処理                      │
│  ・計算量を大幅削減しつつ知覚品質を維持                │
│                                                         │
└─────────────────────────────────────────────────────────┘

バージョンの違い

┌─────────────┬────────────────────────────────────────────┐
│ バージョン  │ 特徴                                       │
├─────────────┼────────────────────────────────────────────┤
│ v1 (2022)   │ 初版、基本的なDeep Filtering               │
│             │ ICASSP 2022で発表                          │
├─────────────┼────────────────────────────────────────────┤
│ v2 (2022)   │ 組み込みデバイス向けに最適化               │
│             │ Raspberry Pi 4でリアルタイム動作           │
│             │ Declipping(音割れ修復)に対応             │
├─────────────┼────────────────────────────────────────────┤
│ v3 (2023)   │ 知覚品質をさらに向上                       │
│             │ Perceptually Motivated設計                 │
│             │ INTERSPEECH 2023で発表                     │
└─────────────┴────────────────────────────────────────────┘

性能

【VoiceBank+DEMAND ベンチマーク】

┌─────────────────┬───────┬───────┬───────┬───────┐
│ モデル          │ PESQ  │ STOI  │ CSIG  │ CBAK  │
├─────────────────┼───────┼───────┼───────┼───────┤
│ Noisy (入力)    │ 1.97  │ 0.92  │ 3.35  │ 2.44  │
├─────────────────┼───────┼───────┼───────┼───────┤
│ DeepFilterNet   │ 2.81  │ 0.94  │ 4.14  │ 3.31  │
│ DeepFilterNet2  │ 3.08  │ 0.95  │ 4.37  │ 3.56  │
│ DeepFilterNet3  │ 3.03* │ -     │ -     │ -     │
├─────────────────┼───────┼───────┼───────┼───────┤
│ FRCRN           │ 3.24  │ 0.96  │ 4.51  │ 3.71  │
│ MP-SENet        │ 3.60  │ 0.96  │ 4.64  │ 3.83  │
└─────────────────┴───────┴───────┴───────┴───────┘

* v3は知覚品質重視の設計のため単純比較は難しい

【計算効率】

┌─────────────────┬────────────┬────────────┬──────────┐
│ モデル          │ パラメータ │ RTF (CPU)  │ 遅延     │
├─────────────────┼────────────┼────────────┼──────────┤
│ DeepFilterNet2  │ 2.3M       │ 0.04       │ 5ms      │
│ DeepFilterNet3  │ 2.0M       │ 0.19       │ 5ms      │
├─────────────────┼────────────┼────────────┼──────────┤
│ FRCRN           │ 5.0M       │ 高い       │ 高い     │
│ MP-SENet        │ 2.3M       │ GPU必要    │ 高い     │
└─────────────────┴────────────┴────────────┴──────────┘

RTF (Real-Time Factor): 1秒の音声を処理するのに何秒かかるか
RTF < 1 でリアルタイム処理可能

インストールと使い方

# PyPIからインストール
pip install deepfilternet

# または conda
conda install -c conda-forge deepfilternet
# Pythonでの使用
from df import enhance, init_df

# モデル初期化
model, df_state, _ = init_df()

# ファイルを強調
from df.io import load_audio, save_audio

audio, sr = load_audio("noisy.wav", sr=df_state.sr())
enhanced = enhance(model, df_state, audio)
save_audio("enhanced.wav", enhanced, sr)
# コマンドラインツール
deep-filter noisy.wav -o enhanced.wav

# 複数ファイルを一括処理
deep-filter *.wav -o output_dir/

# ポストフィルタ有効化
deep-filter noisy.wav --pf -o enhanced.wav

対応フォーマット

┌─────────────────────────────────────────────────────────┐
│                                                         │
│  【入力】                                               │
│  ・サンプリングレート: 48kHz(推奨)                   │
│    ※ 16kHzも内部でアップサンプリングして処理          │
│  ・チャンネル: モノラル                                │
│  ・フォーマット: WAV                                   │
│                                                         │
│  【出力】                                               │
│  ・サンプリングレート: 入力と同じ                      │
│  ・チャンネル: モノラル                                │
│                                                         │
└─────────────────────────────────────────────────────────┘

ユースケース

┌─────────────────────────────────────────────────────────┐
│                                                         │
│  【最適なユースケース】                                 │
│                                                         │
│  ✓ オンライン会議のノイズ除去                          │
│  ✓ ポッドキャスト・動画の後処理                        │
│  ✓ 補聴器・イヤホンのリアルタイム処理                  │
│  ✓ エッジデバイス(Raspberry Pi等)での動作            │
│  ✓ CPU環境での大量ファイル処理                         │
│                                                         │
│  【向いていないケース】                                 │
│                                                         │
│  ✗ 最高品質が必要な場合 → MP-SENet等を検討            │
│  ✗ 話者分離が必要 → 音源分離モデルを使用              │
│  ✗ 音楽のノイズ除去 → 専用モデルを使用                │
│                                                         │
└─────────────────────────────────────────────────────────┘

強みと弱み

【強み】
✓ CPU単独でリアルタイム動作(RTF 0.04)
✓ 低遅延(5ms)で会話に使える
✓ 48kHz Full-band対応
✓ オープンソース(MIT License)
✓ インストールが簡単
✓ Declipping(音割れ修復)にも対応

【弱み】
✗ PESQスコアはSOTAに及ばない
✗ 残響除去は限定的
✗ モノラル専用(ステレオは分割処理)

まとめ

項目 内容
コンセプト 軽量・リアルタイム・実用重視
アーキテクチャ ERB Gains + Deep Filtering の2段階
PESQ 約3.0(v2/v3)
RTF 0.04(CPU単独でリアルタイム)
遅延 5ms
サンプリングレート 48kHz対応
最適用途 オンライン会議、補聴器、エッジデバイス

参考文献


Speech Enhancementシリーズ、お役に立てたらフォローお願いします!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?