boundless-author-7811
04/14/2026, 6:34 AMtall-airline-16756
04/14/2026, 6:34 AMtall-airline-16756
04/14/2026, 6:34 AMroom_options.audio_input.noise_cancellation, so it applies before audio reaches a realtime model (Google/OpenAI/etc.). If you want, tell me which SDK/language and which realtime model you’re using and I’ll show the exact config snippet.
Sources: Google AI and LiveKit | LiveKit Documentation | Agents telephony integration | LiveKit Documentation | examples/voice_agents | livekit/livekit_composite | DeepWiki | SIP Telephony and Encryption, with interactive elementsboundless-author-7811
04/14/2026, 6:35 AMtall-airline-16756
04/14/2026, 6:35 AMboundless-author-7811
04/14/2026, 6:37 AMtall-airline-16756
04/14/2026, 6:37 AMroom_options.audio_input.noise_cancellation. That runs before audio reaches the realtime model.
Suggested next step (Python snippet to try):
1. In your agent code when creating/joining the room, set room options like:
from room_io import RoomOptions, AudioInputOptions
from noise_cancellation import BVC, BVCTelephony
import rtc
room_options = RoomOptions(
audio_input=AudioInputOptions(
noise_cancellation=lambda params: BVCTelephony()
if params.participant.kind == rtc.ParticipantKind.PARTICIPANT_KIND_SIP
else BVC()
)
)
# pass room_options into your Room/agent start call
Notes and alternatives:
• That snippet shows using built-in BVC/BVCTelephony modules if you have them available locally. If those modules are Cloud-only or unavailable in your self-hosted runtime, you must integrate a third‑party library or client-side preprocessing.
• Client-side options: enable WebRTC AEC/ANS in the browser/client or run a local noise-suppression library (e.g., RNNoise, WebRTC audio processing) before sending audio to the agent.
• If you want, tell me whether noise_cancellation modules exist in your local packages (or share the error/output you get when using the snippet) and I’ll give exact Docker/requirements changes or an alternative integration path., with interactive elementsboundless-author-7811
04/14/2026, 6:38 AMawait session.start(
agent=agent,
room=ctx.room,
room_options=room_io.RoomOptions(
audio_input=room_io.AudioInputOptions(
noise_cancellation=dtln.noise_suppression(
strength=0.6,
debug_logging=True,
),
),
),
)tall-airline-16756
04/14/2026, 6:39 AMdtln.noise_suppression config.
Short answer: that setup is supported. dtln.noise_suppression(...) runs in the agent’s audio input pipeline and works with realtime models in self‑hosted/local Docker as long as the noise‑cancellation plugin is installed.
What to check next:
• Ensure the noise cancellation plugin is installed in your environment:
uv add "livekit-agents[silero,turn-detector]" "livekit-plugins-noise-cancellation" python-dotenv
• Make sure your Docker image/container includes those packages (install them in your Dockerfile or requirements).
• Confirm your agent logs show DTLN initializing (debug_logging=True will help).
If you see errors or no effect, tell me:
• the container logs around agent startup,
• any traceback or plugin import error,
and I’ll help you debug the exact cause.
Sources: Agent session | LiveKit Documentation | Build a multilingual voice agent that automatically switches languages | Li... | Realtime models overview | LiveKit Documentation | Voice AI quickstart | LiveKit Documentation, with interactive elementsboundless-author-7811
04/14/2026, 6:39 AMtall-airline-16756
04/14/2026, 6:40 AMpython -c "import livekit.plugins.dtln as dtln; print(dtln)"
◦ If that raises ImportError, the plugin isn’t installed in the image.
1. Ensure your Docker image installs the noise plugin (example additions):
◦ Install livekit-plugins-noise-cancellation (or use the uv command you ran) in your Dockerfile or requirements so the container has DTLN.
1. Enable debug logging for the agent process and Python logging:
◦ Set environment vars or logging config so DEBUG logs are emitted (you already set debug_logging=True in DTLN; also ensure root logger level is DEBUG).
1. Check agent startup logs for plugin init lines or import errors:
◦ Share the container logs around agent start (first 50–200 lines) if nothing obvious appears.
◦ Look for ImportError, ModuleNotFoundError, or warnings about missing dependencies.
1. Verify your code path is actually used:
◦ Add a quick runtime assert/print right before session.start:
print("DTLN config:", dtln.noise_suppression)
• Or temporarily replace noise_cancellation= with a small lambda that logs to confirm the room_options branch runs.
If you paste the agent startup log or the ImportError / traceback you see, I’ll pinpoint the fix (Dockerfile change, missing package, or logging config).
, with interactive elementsboundless-author-7811
04/14/2026, 6:41 AMtall-airline-16756
04/14/2026, 6:41 AMRUN pip install livekit-agents[silero,turn-detector] livekit-plugins-noise-cancellation python-dotenv
Add any extra system packages your base image needs for torch.
2) Rebuild & run the Playground image
• Rebuild your Docker image and start the container you use for local testing.
3) Enable debug logging
• Ensure Python logging and the agent emit DEBUG logs. For quick testing set:
export LOGLEVEL=DEBUG
# or configure Python logging.basicConfig(level=logging.DEBUG)
You already set debug_logging=True in DTLN; the container must also allow DEBUG-level output.
4) Verify import and initialization inside the container
• Exec into the running container and run:
python -c "import livekit.plugins.dtln as dtln; print('DTLN ok', dtln.noise_suppression)"
• Check agent startup logs for lines about initializing DTLN or for ImportError/ModuleNotFoundError.
5) Quick runtime check in your code
• Add a warmup print before start to confirm the configured callable is present:
print("DTLN callable:", dtln.noise_suppression)
If after this you still see no DTLN logs, please paste:
• the container startup logs (first ~200 lines), and
• output of the import check command above.
I’ll use those to pinpoint the missing package, dependency, or logging configuration.
, with interactive elements