# Noise Cancellation

The Noise Cancellation feature in our [Flutter Video SDK](https://getstream.io/video/sdk/flutter) can be enabled by adding the `stream_video_noise_cancellation` package to your project and by having it enabled in the Stream dashboard. This package leverages noise cancellation technology developed by [krisp.ai](https://krisp.ai).

## Installation

### Adding the SDK to Your Project

To add the `stream_video_noise_cancellation` dependency, update your `pubspec.yaml` file:

```yaml
dependencies:
  stream_video_noise_cancellation: ^latest
```

Alternatively, you can add it via the command line:

```shell
flutter pub add stream_video_noise_cancellation
```

## Integration

To enable noise cancellation in your app, set the `NoiseCancellationAudioProcessor` instance from the `stream_video_noise_cancellation` package as the `audioProcessor` in `StreamVideoOptions` when initializing `StreamVideo`:

```dart
import 'package:stream_video_push_notification/stream_video_push_notification.dart';

StreamVideo(
  apiKey,
  user: user,
  options: StreamVideoOptions(
    audioProcessor: NoiseCancellationAudioProcessor(),
  ),
  ...
);
```

Once integrated, you can use the `Call` API to toggle the filter and monitor feature availability.

### Feature availability

Noise cancellation settings can be accessed within `CallState`. The `noiseCancellation` configuration contains a `mode` property that indicates availability:

```dart
final noiseCancellationMode = call.state.value.settings.audio.noiseCancellation?.mode;

//or listen for state changes
final subscription = _call!.state.listen((state) {
  final mode = state.settings.audio.noiseCancellation?.mode;
});

subscription.cancel();
```

- `.available`
  The featue has been enabled on the dashboard and it's available for the call. In this case, you are free to present any noise cancellation toggle UI in your application.

- `.disabled`
  The feature hasn't been enabled on the dashboard or the feature isn't available for the call. In this case, you should hide any noise cancellation toggle UI in your application.

- `.autoOn`
  Similar to `.available` with the difference that if possible, the StreamVideo SDK will enable the filter automatically, when the user join the call.

<admonition type="tip">

While noise cancellation may be enabled, it is a resource-intensive process. It is recommended to enable it only on devices that support advanced audio processing.

You can check if a device supports advanced audio processing with `deviceSupportsAdvancedAudioProcessing()` method on your StreamVideo instance.

This method returns `true` if the iOS device supports Apple's Neural Engine or if an Android device has the `FEATURE_AUDIO_PRO` feature enabled. Devices with this capability are better suited for handling noise cancellation efficiently.

For optimal performance, consider testing different device models or implementing a benchmarking mechanism.

</admonition>

<admonition type="note">

For `.autoOn` mode to function properly:

- A `NoiseCancellationAudioProcessor` must be set as the `audioProcessor` in your `StreamVideo` instance.
- The device must support advanced audio processing.

</admonition>

### Activate/Deactivate the filter

To enable noise cancellation during a call, use:

```dart
call.startAudioProcessing();
```

To disable noise cancellation, call:

```dart
call.stopAudioProcessing();
```

You can always check if noise cancellation is enabled or not by:

```dart
final isNoiseCancellationActive = call.state.value.isAudioProcessing;
```


---

This page was last updated at 2026-03-13T13:17:59.379Z.

For the most recent version of this documentation, visit [https://getstream.io/video/docs/flutter/guides/camera-and-microphone/noise-cancellation/](https://getstream.io/video/docs/flutter/guides/camera-and-microphone/noise-cancellation/).