Repository navigation
StreamLite 3.0.0
-
Self-calibrating multi-mic. With two or more microphones, Calibrate... in the Microphones list runs a
20-second test. Everyone is quiet for 3 seconds, then each person talks on their own mic in turn. StreamLite
measures:- each voice's level and each room's noise
- how much every mic hears the other people (the "bleed" between desks)
It then suggests volumes that even the voices out, and turns on a smarter auto mix. That mix takes the measured
bleed out of each mic's level, so a mic gets the mix for its own person's voice only. You see the result first:
levels, bleed, the doubling left before and after, and how two people talking at once are kept. You choose whether
to use it, and every volume stays editable afterwards.- Tested with two mics hearing each other at -4 and -6 dB, one person 8 dB quieter. The copy of a voice from the
other mic drops from +12 dB with the plain auto mix to -21 dB. Two people talking at once both keep at least 37%
of the mix. - It allows for the added mics arriving 10-20 ms after microphone 1 (their sync buffer and the distance between
desks), so the end of a word isn't doubled either.
-
Outputs in sync. Bluetooth and some USB headphones play later than others, so two people heard the same game a
moment apart. Sync outputs... in the Outputs list fixes that, and the delays are saved per device:- Measure: hold each output's headphones against your microphone and click Measure. StreamLite plays a few
clicks on that output only, through its real path, and times them with the mic (to the millisecond in the tests). - Line them up: holds the faster outputs back, so everyone hears the same moment.
- By ear: play test clicks on every output at once and move each output's delay slider until you hear one click.
On the test PC the speakers played 33-37 ms after the USB headphones. A 100 ms delay setting moved them by 99-101 ms.
- Measure: hold each output's headphones against your microphone and click Measure. StreamLite plays a few
-
Health page. A new page shows what StreamLite is doing right now, refreshed every second:
- Microphone: mode (exclusive with its packet size, or shared and why), and real latency (capture + buffer +
cable, plus the noise remover's own delay). - Dropouts since start and the buffer kept in reserve.
- Noise removal: the engine really running (DeepFilterNet on the GPU / CPU with its time per frame, or RNNoise
standing in and why). - Added mics and outputs: their state.
- Game audio: delay and dropouts.
- Camera: frame rate.
- Resources: StreamLite's own CPU, RAM and video memory.
Below it, What happened explains in plain words every time StreamLite switched to a slower or less capable path,
or back. For example: the mic went to shared mode because another app has it, which adds about 10 ms. Copy puts
everything on the clipboard for a bug report. - Microphone: mode (exclusive with its packet size, or shared and why), and real latency (capture + buffer +
-
One-click setup check (top of the Health page). It checks everything between your mic and your friends and
between your games and your ears:- the drivers (VB-CABLE, Hi-Fi Cable, Equalizer APO and whether it's on for your headphones)
- the physical mic (running, not blocked by Windows privacy, not sending pure silence)
- the virtual mic end to end: a short test tone is recorded back from "StreamLite - In" exactly as Discord would
get it. This only happens while no app is recording your mic, so nobody hears it. - its Windows volume
- your headphones end to end (a quiet tone through the game device, recorded back from the headphones)
- Windows' default devices
- which mic Discord and OBS really record from, read from Windows' audio sessions
- the camera
Every problem comes with its fix: install the missing driver, open the right settings, set the volume to 100,
restart the mic or 3D audio, or exactly which menu to change in Discord / OBS. After an update StreamLite runs the
check once by itself (without tones) and says so in the window if something broke.
StreamLite.exe --setup-checkwrites the full check tosetup-check.txtfor bug reports. -
Compare noise removal on the same recording. The voice test on the Microphone page has a new Compare row:
- Compare: play your recording with another noise remover (none, RNNoise, Classic, DeepFilterNet on the CPU or
GPU) and switch while it loops - the same sentence, back to back. Your live mic keeps its settings until you click
Use this one. - Same loudness (on by default) plays every version, and the Original, at your recording's speech loudness, so
you judge the sound and not the volume. The window shows the gain it uses. - Your recording is kept on this PC (
voice-sample.wavnext to the settings, never sent anywhere), so you can compare
again another day.
- Compare: play your recording with another noise remover (none, RNNoise, Classic, DeepFilterNet on the CPU or
-
Personalize 3D (3D Audio page). A 3-minute blind listening test.
- Each trial: footsteps play from in front, behind, left, right, above or below, each time with a different
setting in random order, and you click where you heard them. - Round 1: no 3D at all (left/right panning only), the Neumann KU100 head and the KEMAR head. Plus the footsteps
as a 7.1 game sends them: panned between speakers, through StreamLite's real game path with your settings. It
shows how well you place game sounds - left/right and front/behind come through, above/below can't. - Round 2: the head that worked best for you with cue sharpening off, 35% and 70%.
- Fair comparison: every version plays at the same loudness, so louder never wins by accident.
- Result: how many you placed right with each setting, your front/behind and above/below mix-ups, and whether 3D
actually helps you compared with no 3D. - Saved per pair of headphones: the best setting switches with your headphones, and changing the head model or
cue sharpening by hand updates it.
- Each trial: footsteps play from in front, behind, left, right, above or below, each time with a different
-
What the game really sends (3D Audio page). StreamLite now says exactly what it gets from the game playing right
now, read from the channels that carry sound:- A 7.1 / 5.1 channel mix, with the channels in use: StreamLite places each sound at its exact angle around
you. A channel mix carries no height, so above / below only come from games with their own 3D. - Stereo: the game's own 3D (HRTF) or plain stereo, kept as it is - with a hint to set the game to 7.1.
Some games can send "audio objects" with full 3D positions. Windows only hands those to spatial sound engines
registered with Microsoft (Windows Sonic, Dolby Atmos, DTS), not to other apps, so 7.1 stays StreamLite's path.
If Windows spatial sound is switched on for "StreamLite - Out" (games then mix their objects down before StreamLite
gets them) or for your headphones (3D made 3D twice), the 3D page, the setup check and the Health page warn you and
say how to switch it off. In the tests, a sound panned by a 7.1 mix comes out at the same left/right level as the
head model placing it directly (4.3 vs 4.3 dB), and in front / behind each sound like their direct placement.
More in docs/game-spatial-audio.md. - A 7.1 / 5.1 channel mix, with the channels in use: StreamLite places each sound at its exact angle around
-
Export and import your setup (Settings > Your setup). A
.streamlitefile holds:- your mic chain (noise removal, gate, compressor, de-esser, auto level, voice EQ) and every microphone's volume and EQ
- every output's volume, EQ and sync delay
- your headphones' corrections and personal 3D
- the 3D sound settings, game profiles with their apps, the apps kept out of 3D, hotkeys and the camera look
Devices are kept by name only: no device IDs and no file paths (a custom head model or background picture stays
on your PC), so the file is safe to share. StreamLite refuses to write a file that would contain either.
Import shows what's in the file first, part by part, each with its own switch. Every device is matched by name on
this PC ("Microphone (Yeti Nano)" finds "Yeti Nano") and you can pick another one or leave it out. Profiles merge:
ones with the same name take the file's EQ and apps, yours stay. Undo import puts every setting back exactly as
it was before. -
Auto EQ when apps overlap (Speakers & Headphones > Game profiles).
- Why this EQ: under "Now using" StreamLite says which app picked the profile and what else is in use, for
example "cs2 is running. Also in use: Spotify (Music), Discord (Chat) - lower in your priority order". - Your priorities: Priority... lists every profile with apps. The one higher in the list wins when several
are in use: a game while it runs, music while it plays, a chat app while it's open. Move Music above your games
if you want your music EQ while a game idles in the background. A game profile added later joins the games. - No flip-flopping: a switch happens once the new profile wins two checks in a row (3-6 seconds). A launcher
or updater that's open for a moment no longer flips your EQ. Picking a profile by hand still switches at once. - Same loudness for every profile (on by default). Each profile's EQ changes the loudness a little, so going
from a game to music could jump in volume by up to 2.3 dB with the built-in profiles. StreamLite measures each
one with your headphones' correction under it (pink noise, K-weighted like a loudness meter) and turns the
louder ones down to match, never up. In the test the spread drops to 0.4 dB. A profile of your own with a huge
boost doesn't make every other one quieter. - Tested: a simulated 10 minutes with a game, Spotify and Discord overlapping switches exactly 3 times, once for
each real change (game quit, music paused, music back) and never between songs. A switch mid-sound through the
3D path (game settings to natural) makes no click, gap or level jump.
- Why this EQ: under "Now using" StreamLite says which app picked the profile and what else is in use, for
-
Tested on three hardware tiers, every release. A new automated performance test (
test/PerfTest.cs) runs
everything at once in real time under a game's load:- the mic chain with two added mics
- 3D audio with two added outputs
- StreamLite Camera at 30 fps
It does this on three tiers:
- low: 2 CPU threads, no graphics card
- mid: 4 threads, a 4 GB card
- high: a 32-thread CPU with a 16 GB card
It measures dropouts, processing time, latency, CPU, RAM and video memory, and compares each release with the one
before. 3.0.0 vs 2.7.0:- no dropouts on any tier
- mid and high use the same CPU and memory as 2.7.0
- the low tier dropped from 57% to 13% of the CPU (see the camera below)
The mic keeps real time on CPU cores 24x slower than the test PC's (7x with DeepFilterNet), and 3D audio on cores
7x slower. Details and numbers: docs/performance.md. -
Defaults tuned from the measurements:
- Camera without a graphics card: the effects manage only 2-8 fps on a CPU, even a 16-core one, and took half
the CPU. Now, when they can't reach 20 fps, StreamLite Camera plays your camera without effects at the full 30 fps
(about 3% of the CPU) and says why on the Camera page and the Health page. On the test PC's webcam: 8 fps with
effects on the CPU, 30 fps without them. - DeepFilterNet on the CPU stays the default from 8 CPU threads. It keeps real time even on 2 threads, but costs
15% of one core, and the 8-thread rule keeps it under 6% of the CPU on budget CPUs while you game. - 4K camera capture stays the default on a graphics card: it costs only 6% more GPU time than 1080p.
- Camera without a graphics card: the effects manage only 2-8 fps on a CPU, even a 16-core one, and took half
-
Fix: with no game sound playing, the footsteps test (and the sync clicks) went to the headphones in 20-40 ms
bursts. The buffers could run dry between bursts and drop bits of the sound. StreamLite now keeps them fed block by
block.
Credits
No new third-party code, models or data. Added: the ITU-R BS.1770 loudness weighting, which StreamLite now uses to play every game profile at the same loudness.
AI models and measured data
- DeepFilterNet 3 - AI noise removal (studio-quality model). Hendrik Schröter, Tobias Rosenkranz, Alberto N. Escalante-B., Andreas Maier. MIT or Apache-2.0. Model / data.
- torchDF - Streaming ONNX export of DeepFilterNet 3 (the model file StreamLite runs). grazder. MIT or Apache-2.0.
- RNNoise - Light AI noise removal (C# port of v0.1.1 and its trained model). Jean-Marc Valin, Mozilla, Xiph.Org Foundation. BSD-3-Clause. Model / data.
- SADIE II HRTF database - 3D audio: measured head responses (KU100 dummy head, KEMAR). University of York - C. Armstrong, L. Thresh, D. Murphy, G. Kearney. Apache-2.0.
- Robust Video Matting (Windows) - AI camera: cuts you out of the room (blur, green screen, picture, video). Shanchuan Lin, Linjie Yang, Imran Saleemi, Soumyadip Sengupta (ByteDance). GPL-3.0. Model / data.
- Ultra-Light-Fast-Generic-Face-Detector-1MB (UltraFace) (Windows) - AI camera: face tracking. Linzaer. MIT. Model / data.
- SoundGuys headphone measurements - Built-in correction for the Sennheiser MOMENTUM 5 (B&K 5128 measurement). SoundGuys. Measurement used with thanks.
Libraries and runtimes
- ONNX Runtime - Runs the AI models (and, from 2.3.0, optimizes the Low VRAM model files). Microsoft. MIT.
- DirectML (Windows) - Runs the AI models on any DirectX 12 graphics card. Microsoft. Microsoft Software License Terms (redistributable).
- .NET runtime (Linux) - Runs StreamLite for Linux (included). .NET Foundation and contributors. MIT.
- Avalonia UI (Linux) - The Linux interface. AvaloniaUI OÜ and contributors. MIT.
- SkiaSharp / HarfBuzzSharp (Linux) - Drawing and text for the Linux interface (Skia, HarfBuzz). Microsoft / .NET Foundation; Google (Skia); the HarfBuzz authors. MIT; BSD-3-Clause (Skia); MIT (HarfBuzz).
- Inter (Linux) - Interface font. Rasmus Andersson. SIL Open Font License 1.1.
- PipeWire / PulseAudio (Linux) - Linux audio (your system's libpulse and pactl). Wim Taymans and the PipeWire contributors; the PulseAudio developers. MIT / LGPL-2.1.
Code, ideas and research
- EarTrumpet (Windows) - How per-app audio routing works on Windows. File-New-Project. MIT.
- Impulcifer - HeSuVi 14-channel HRIR track order. Jaakko Pasanen. MIT.
- VCamSample (Windows) - Structure of the Windows 11 virtual camera. Simon Mourier. MIT.
- Guided Image Filtering (Windows) - AI camera: denoise, skin smoothing and crisp cut-out edges. Kaiming He, Jian Sun, Xiaoou Tang. Published research.
- ITU-R BS.1770 loudness weighting - K-weighting: every game profile matched to the same loudness. International Telecommunication Union. Published standard. New in 3.0.0.
Downloaded when you ask for them
- AutoEq - Headphone corrections for thousands of headphones (Find my headphones). Jaakko Pasanen and the measurement contributors (oratory1990, crinacle, Rtings, Innerfidelity...). MIT. Model / data.
- VB-CABLE and Hi-Fi Cable (Windows) - The virtual mic cable and the 3D game audio device. VB-Audio Software (Vincent Burel). Donationware - please support VB-Audio.
- Equalizer APO (Windows) - System-wide headphone EQ. Jonas Thedering. GPL-2.0.
Built with
- WiX Toolset (Windows) - The Windows installer (MSI). .NET Foundation and contributors. MS-RL.
- Zig (Windows) - Builds the virtual camera's native DLL. Andrew Kelley and the Zig contributors. MIT.
- appimagetool (Linux) - The Linux AppImage. Simon Peter and the AppImage contributors. MIT.
- ONNX - Builds and adapts the model files (tools/make_camfx.py). ONNX Project Contributors (LF AI & Data). Apache-2.0.
- NumPy - Model-building scripts. NumPy Developers. BSD-3-Clause.
- onnxconverter-common - Half-precision Low VRAM model files. Microsoft. MIT.
Which file do I need?
| Your system | File |
|---|---|
| Windows 10/11 | StreamLite-*-x64.msi. If SmartScreen warns you, click More info → Run anyway. |
| Windows, no install | StreamLite-*-win-x64-portable.zip |
| Ubuntu / Debian / Mint / Pop!_OS | streamlite_*_amd64.deb, then run sudo apt install ./streamlite_*_amd64.deb |
| Fedora / openSUSE | streamlite-*.x86_64.rpm |
| Arch / Manjaro / EndeavourOS | PKGBUILD, then run makepkg -si |
| Any Linux | StreamLite-*-x86_64.AppImage, or the linux-x64.tar.gz with ./install.sh |
SHA256SUMS.txt lists the checksums of every file. Already have StreamLite? It updates itself when it starts.
New here? Read the manual. Something wrong? Use the
bug report.