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§
- Denoise
Error - ノイズ抑制のエラー型。
Constants§
- FRAME_
SIZE - RNNoise の 1 フレームのサンプル数/ch (48kHz で 10ms)。処理遅延もこの固定値。