Skip to main content

Crate flexaudio_denoise

Crate flexaudio_denoise 

Source
Expand description

flexaudio-denoise — RNNoise (nnnoiseless) によるオフラインのノイズ抑制アドオン。

flexaudio-core には依存せず、±1.0 正規化・48kHz interleaved の &[f32] だけを 受け取る。モデル重みは nnnoiseless クレート (BSD-3-Clause) に埋め込まれているので、 実行時のモデルファイルもネットワークも要らない。マイク録音の定常ノイズ (ファン・空調・キーボード打鍵など) の低減を想定している。

§遅延と持ち越しのセマンティクス

RNNoise は 480 サンプル (48kHz で 10ms) 固定のフレームでしか処理できないため、 Denoiser::process は内部でフレームに切り、端数を次回呼び出しへ持ち越す。 呼び出し粒度に依存しない固定遅延の設計で、出力は常に「入力をちょうど FRAME_SIZE サンプル/ch 遅らせた列」になる:

  • process は渡されたバッファと同じ長さをインプレースで返す。ストリーム先頭の FRAME_SIZE サンプル/ch は遅延の詰め物 (無音 0.0)。
  • Denoiser::flush が末尾の FRAME_SIZE サンプル/ch を返してストリームを 閉じる。つまり総出力 = 総入力 + FRAME_SIZE サンプル/ch。

チャンクの切り方を変えても出力列はビット単位で一致する。

§

use flexaudio_denoise::{Denoiser, FRAME_SIZE};

let mut dn = Denoiser::new(1).unwrap();
let mut chunk = vec![0.0f32; 1000]; // ±1.0 正規化 mono 48kHz
dn.process(&mut chunk).unwrap();    // インプレース (先頭 480 サンプルは遅延の無音)
let tail = dn.flush();              // 残りの 480 サンプル/ch
assert_eq!(tail.len(), FRAME_SIZE);

Structs§

Denoiser
ストリーミングのノイズ抑制器。ステレオはチャンネル独立に 2 インスタンスの RNNoise 状態で処理する (チャンネル間のクロストークなし)。

Enums§

DenoiseError
ノイズ抑制のエラー型。

Constants§

FRAME_SIZE
RNNoise の 1 フレームのサンプル数/ch (48kHz で 10ms)。処理遅延もこの固定値。