Skip to content

StreamLite 3.0.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 02:09
· 4 commits to main since this release
  • 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.

  • 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.

  • 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-check writes the full check to setup-check.txt for 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.wav next to the settings, never sent anywhere), so you can compare
      again another day.
  • 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.
  • 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.

  • Export and import your setup (Settings > Your setup). A .streamlite file 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.
  • 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.
  • 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.