This question originally came up in our Slack community and the thread has been consolidated here for long-term reference.
What is the best practice for setting up noise cancellation in SIP with LiveKit Cloud?
Should I turn on both Krisp config on the SIP Trunk AND use BVCTelephony in code?
from livekit.plugins import noise_cancellation
await session.start(
room_input_options=room_io.RoomInputOptions(
noise_cancellation=noise_cancellation.BVCTelephony(),
),
)
Only use one noise cancellation method, not both.
For 1:1 calls (one user and one agent): Use BVCTelephony in your agent code. This is the recommended approach.
For multi-participant calls: Enable Krisp NC on the SIP trunk so it applies to the audio shared between all participants.
Both options use Krisp - the trunk setting is Krisp NC, and BVCTelephony is the telephony-optimized model.
About running both: There are no known actual issues if noise cancellation runs twice, but since the models aren’t designed for it, there may be negative effects in edge cases.
About echo cancellation: Echo cancellation is currently handled by the phone device itself. Results depend on specific hardware and OS. BVCTelephony may help a little with preventing the agent from hearing echoes, but it’s not designed for echo cancellation.