cool-queen-46059
02/26/2026, 11:28 PMtall-airline-16756
02/26/2026, 11:29 PMtall-airline-16756
02/26/2026, 11:29 PMkrisp on SIP trunks and BVCTelephony() noise cancellation on the agent.
Quick summary of likely causes
• Using dual-channel (stereo) egress can result in each participant occupying a separate channel; some players or downmixing pipelines can cause perceived volume loss.
• Running Krisp on the SIP trunk plus BVCTelephony() on the agent means the audio is being processed twice; double noise suppression often reduces overall signal amplitude.
• Egress transcoding (the MP4 pipeline) can apply different handling than .ogg, and LiveKit does not provide an egress-level volume control to automatically normalize loudness.
Recommended diagnostic steps (in order)
1. Reproduce a baseline
◦ Record a short test with a single speaker using the old setup that sounded correct (if still available) and one with the new setup.
◦ While testing, confirm what the participants hear live in the room before saving recordings.
1. Isolate noise cancellation
◦ Temporarily disable Krisp on the SIP trunk, leaving only BVCTelephony() enabled. Test again.
◦ Then disable BVCTelephony() and enable only Krisp. Test again.
◦ If audio is noticeably louder with a single noise-cancellation layer, double-processing is the culprit.
1. Test mono vs stereo egress
◦ Request a mono (single-channel) MP4 export or ask your egress to downmix to mono for a test recording.
◦ If mono restores normal volume, the issue is stereo/dual-channel handling or player downmixing.
1. Compare client vs recording
◦ If participants hear normal volume in the room but the saved MP4 is quiet → problem occurs during egress/transcoding.
◦ If participants already hear the audio as quiet before recording → problem is at input/processing (mic levels, agent filters, or SIP trunk processing).
1. Inspect raw waveforms
◦ Download both the .ogg and MP4 audio tracks and view them in an audio editor (e.g., Audacity). Compare peak and RMS levels. If the MP4 waveform has much lower amplitude, it’s a capture/transcode or processing issue; if similar, the player may be downmixing/attenuating.
1. Check playback and client volume controls
◦ For testing, increase playback volume programmatically with RemoteAudioTrack.setVolume() in your client to see whether the recording’s volume can be corrected at playback time or if the file itself is low.
Actions to try immediately
• Turn off one of the noise-cancellation layers (either Krisp on SIP trunks or BVCTelephony on the agent). Do tests after each change.
• Produce a mono test recording (downmix) to confirm whether stereo handling is the issue.
• Compare the raw audio files in an editor to confirm where amplitude loss happens.
If you want, I can help further if you share:
• Whether participants hear normal volume in the room but only recordings are quiet, or if live audio is quiet too.
• The egress type you’re using (Track Composite, Room Composite, or single-track egress).
• A short sample (or waveform screenshot) of the .ogg vs MP4 output and the SIP/agent noise-cancellation settings (which one you prefer to keep).
Next steps I can help with
• Walk through how to change egress to mono for a quick test.
• Show how to temporarily disable Krisp or BVCTelephony() and what to look for.
• Interpret waveform screenshots or short audio samples you share to pinpoint whether loss is before or after egress.
Feel free to tell me which test you want to run first or paste the specific egress/agent settings you’re using and I’ll give step-by-step instructions.
Sources: Universal Egress | Universal Egress | Choosing the right noise cancellation for your agent | LiveKit | sip | livekit/livekit_composite | DeepWiki | client-sdk-android | livekit/livekit_composite | DeepWikicool-queen-46059
02/26/2026, 11:29 PMcool-queen-46059
02/26/2026, 11:39 PMtall-airline-16756
02/26/2026, 11:39 PMBVC is tuned for full‑band WebRTC audio and can aggressively suppress low‑energy or short utterances on narrowband telephony audio.
• Short words (single syllables, “yes”, “ok”) are already hard for VAD/STT; aggressive noise cancellation can reduce their amplitude below the detection threshold even though they remain audible in the raw recording.
Immediate actions to try
1. Switch to the telephony-optimized filter
◦ Replace BVC with BVCTelephony() for SIP/telephony participants. This model preserves short, narrowband speech better.
1. Test with noise cancellation off
◦ Temporarily disable noise cancellation for the call and replay test scenarios. If short words are detected without noise cancellation, the filter was removing them.
1. Tune silence/VAD settings
◦ Increase the minimum silence duration and endpointing delay slightly (example: raise min_silence_duration toward ~0.8–1.0s, increase min_endpointing_delay a bit) so brief pauses don’t trigger endpointing.
◦ Add small buffering or a short lookback before declaring silence if your logic supports it.
1. Add retry/reprompt logic
◦ Instead of ending on the first silence, prompt once or twice (or use a short confirmation prompt) before concluding the turn. This reduces false negatives from transient misses.
1. Validate STT behavior
◦ Test the same audio through alternate STT models (telephony-optimized models if available). Some STT providers detect short utterances more reliably on narrowband audio.
How to determine it’s resolved
• If live callers now hear normal audio and the agent detects those short words after switching to BVCTelephony() (or after disabling noise cancellation), the issue was the noise filter.
• If recordings still contain the words but live detection still misses them even with BVCTelephony() disabled, the problem is likely VAD/STT configuration (thresholds, segmentation) and you should tune VAD/endpointing and/or switch STT model.
If you want, I can:
• Walk you through changing the agent filter to BVCTelephony() in your configuration.
• Suggest exact VAD/endpointing parameter values to test (based on your current settings).
• Help interpret a short recording sample or waveform to confirm whether the energy of the short words is being suppressed prior to STT.
Which would you like to try first — switch to BVCTelephony() for SIP participants or run a quick test with noise cancellation disabled?
Sources: Choosing the right noise cancellation for your agent | LiveKit | Troubleshooting STT not picking up utterances | LiveKit | Improving voice AI's turn detection with transformers | How to implement call greeting retries in voice agents | LiveKit | How to detect and handle silence during calls | LiveKitcool-queen-46059
02/27/2026, 12:07 PMtall-airline-16756
02/27/2026, 12:07 PMBVCTelephony() both perform aggressive noise suppression. Running them together applies two layers of real‑time filtering and commonly reduces speech amplitude and clarity, which causes short words to be lost or VAD/STT to miss them.
• This double-processing is the most likely reason you were seeing audible words in recordings but the agent not detecting them.
Recommended approach
• Use exactly one noise-cancellation stage for a telephony participant:
◦ Prefer BVCTelephony() for SIP/telephony audio — it’s optimized for narrowband telephony and preserves short/quiet utterances better.
◦ Only enable Krisp if you have a specific need that BVCTelephony() cannot address, and then disable the BVC telephony filter.
How to test safely
1. Turn off Krisp on the SIP trunk and keep BVCTelephony() enabled. Run several short-utterance tests.
2. If you still have problems, disable noise cancellation entirely for a test to confirm whether any filter is suppressing speech.
3. If you prefer Krisp, enable Krisp and remove the BVC telephony filter and run the same tests to compare detection and perceived quality.
If you want, I can:
• Give step-by-step instructions to switch the telephony filter in your agent config.
• Suggest a short test checklist (sample phrases, VAD settings) to confirm which configuration gives the best detection for your use case.
Which test would you like to run first — switch to BVCTelephony() only or run a noise-cancellation‑off baseline?cool-queen-46059
03/11/2026, 6:54 PMtall-airline-16756
03/11/2026, 6:54 PMBVC or BVCTelephony() on agent? Both?)
2. Which egress/agent audio path are you using? (Direct telephony agent ingestion, SIP trunk into LiveKit, TrackComposite/RoomComposite egress, etc.)
3. Are callers hearing their own speech at normal volume during the live call? Or is everything quiet to them as well?
4. Do you have access to a short recording (10–20s) of a failing call you can share or summarize (e.g., “waveform shows very low peaks”)? If you can’t share audio, a screenshot of the waveform helps.
5. What STT/VAD system are you using for the agent? Any custom endpointing or silence thresholds configured?
Immediate next steps I recommend while you answer
• If you haven’t already: disable Krisp and BV C variants completely and retest. If disabling them restores detection for full sentences, re-enable only BVCTelephony() (not Krisp) and retest to find the best single filter.
• If disabling all filters does not help, capture a raw audio sample from the telephony input and inspect in an editor (Audacity): check RMS/peak levels and whether speech is present across expected frequency bands. If the sample is essentially flat/low, the problem is at the SIP gateway/mic or upstream codec/gain.
• If the raw sample looks fine but STT still fails, increase VAD/endpointing timeouts and reduce aggressiveness of energy thresholds so longer speech segments aren’t dropped.
I can:
• Walk you step-by-step to disable Krisp/BVC in your config and run a controlled test.
• Suggest concrete VAD/endpointing parameter values to try based on your current settings.
• Help interpret a waveform screenshot or a short sample and tell you whether the loss is from filtering, gain, or a codec issue.
Which would you like to do first — run the all-filters-off baseline test, or share your current config answers (Q1–Q5) so I can recommend precise changes?cool-queen-46059
03/11/2026, 8:07 PMtall-airline-16756
03/11/2026, 8:08 PM