Livekit Noise Filter for Flutter LiveKit SDK

Currently supports iOS/macOS/Android/Web

For Flutter web, ensure the bundled Krisp JS SDK modules (krispsdk.mjs, usermedia.mjs) are served correctly from /assets/packages/livekit_noise_filter/assets/krisp/dist/. The noise cancellation models themselves are not bundled, the SDK downloads them on demand at runtime.

Audio chain

This package runs as the default audio capture processor in the Flutter app. The mic stream is processed by the noise filter (native on iOS/macOS/Android) before the LiveKit client publishes.

flowchart LR
  subgraph client["Flutter app"]
    Mic["Microphone"] --> Capture["Audio capture"]
    Capture --> Filter["livekit_noise_filter (processor)"]
    Filter --> LK["LiveKit Room"]
    LK --> Publish["Publish track"]
  end
  Publish --> Room["LiveKit room"]

How to use

You can add the livekit noise filter to your existing LiveKit app using the following steps.

  • add livekit_noise_filter to your pubspec.yaml
dependencies:
  livekit_noise_filter: ^0.1.0
  • Set livekit noise filter before connecting to room

final liveKitNoiseFilter = LiveKitNoiseFilter();

final room = Room(
      roomOptions: RoomOptions(
        defaultAudioCaptureOptions: AudioCaptureOptions(
          processor: liveKitNoiseFilter,
        ),
      ),
    );
await _room!.connect(url, token);
await _room!.localParticipant!.setMicrophoneEnabled(true);
  • You can turn the filter on or off to check that it is working properly.
liveKitNoiseFilter.setBypass(true | false);