Chrome haalt stilletjes een AI-model binnen tegen echo in je videocalls
Google Chrome op desktop downloadt zonder melding een klein AI-model dat een deel van de echo-onderdrukking in videocalls overneemt. Dat ontdekte WebRTC-specialist Philipp Hancke, die zijn analyse op 6 oktober 2026 publiceerde op de vakblog webrtcHacks. Het neurale model van 425 kB draait bij elke webpagina die je microfoon gebruikt, van Google Meet tot Jitsi, en onderdrukt in zijn metingen duidelijk meer echo dan de klassieke filter. Er is geen schakelaar, geen documentatie en geen licentie. Edge, Firefox en Safari krijgen het model niet.
Of: waarom de beste verbetering aan je videocalls niet in de release notes stond
Google heeft je videocalls in Chrome beter gemaakt. Niemand heeft het je verteld: geen melding, geen blogpost, geen regel in de release notes. Het meetinstrument dat ontwikkelaars gebruiken om echo te volgen, zegt zelfs dat het iets slechter gaat. En wie dezelfde call in Edge voert, met exact dezelfde broncode, krijgt de verbetering niet.
Neurale echo-onderdrukking in Chrome: wat Philipp Hancke vond
Eerst: wat echo in een videocall is
Je klant praat. Zijn stem komt uit je luidsprekers, loopt door je kamer, valt in je microfoon en vertrekt weer naar hem. Hij hoort zichzelf terug, met een kleine vertraging. Dat is akoestische echo, en elke videocall moet ze wegwerken voor ze vertrekt.
Browsers doen dat sinds ongeveer 2018 met AEC3, de echo-onderdrukking van libwebrtc, de open bibliotheek achter bijna alle videocalls op het web. AEC3 werkt in twee stappen:
- Een lineaire filter. Die weet wat er uit je luidsprekers kwam, voorspelt hoe dat in je microfoon terechtkomt en trekt die voorspelling af, in blokjes van 4 milliseconden.
- Een onderdrukker. Wat de filter mist, blijft als restecho hangen. Een schatter berekent per frequentieband hoeveel restecho er nog zit, en de onderdrukker draait die banden zachter.
Die tweede stap is een gok, en een moeilijke. Draai je te hard, dan verdwijnt ook je eigen stem, vooral als jullie tegelijk praten. Draai je te zacht, dan blijft de echo hoorbaar.
Wat Chrome er stilletjes in zette
Precies die schatter heeft Chrome vervangen door een neuraal netwerk. Hancke vond het via een bugmelding over een vertraging bij het openen van de microfoon, die verwees naar een al gelanceerde functie: „ML-based residual echo estimation”. Hij haalde het bestand uit zijn eigen Chrome en ontleedde het.1
- Klein: 425 kB, ongeveer 256.000 parameters. Ter vergelijking: Gemini Nano, het taalmodel dat Chrome ook lokaal installeert, weegt zo’n 4 GB.
- Zuinig: het geluid wordt in drie frequentiebanden gesplitst, elk met een eigen kleine keten van drie LSTM-lagen, een type netwerk dat goed is in signalen die in de tijd verlopen. Volgens Hancke kost het zo’n 0,16 procent van één processorkern.
- Overal actief: het model draait bij elke pagina die je microfoon opvraagt, zonder schakelaar en zonder dat de site erom moet vragen. Google Meet, Jitsi en een hobbyproject krijgen exact dezelfde filter.
- Stil geleverd: Chrome haalt het op bij
optimizationguide-pa.googleapis.com, de dienst die ook andere modellen naar de browser stuurt. De „pa” staat volgens de broncode van Chromium voor „private API”.2
Ik ging zelf kijken. Op mijn computer, onder Linux met Chrome 154, stond het bestand er sinds 1 oktober: model.tflite, 425.264 bytes, in de map optimization_guide_model_store/71.
Hoe goed het werkt
Hancke testte het model op zo’n 500 opnames uit de AEC Challenge van Microsoft, een openbare testverzameling voor echo-onderdrukking. De resultaten zijn, in zijn eigen woorden, indrukwekkend:
- 5,4 dB meer echo-onderdrukking in de mediaan, en bijna 10 dB in de opnames waar de klassieke filter het moeilijk had. Een vuistregel: 10 dB minder klinkt ongeveer half zo luid.
- Geen verlies aan stem: als beide kanten tegelijk praten, blijft de stem van de spreker even luid.
- Minder fouten in spraakherkenning: bij matige echo daalt het aandeel verkeerd getranscribeerde woorden voor een spraakassistent ongeveer met de helft.
Dit is geen gimmick. Het is goed werk, en dat maakt de manier waarop het geleverd werd des te vreemder.
De meter die de verkeerde kant op wijst
Ontwikkelaars volgen de kwaliteit van een call via getStats(), een functie die de browser laat rapporteren hoe het gaat. Niets in die cijfers vertelt welke schatter er draaide. Erger: de enige statistiek die kan bewegen, echoReturnLossEnhancement, gaat achteruit.
Denk aan een poetsploeg met een stofzuiger en een controleur. De stofzuiger doet de grove klus. De controleur loopt daarna rond en wijst aan waar nog stof ligt, en daar wordt nagewerkt. Chrome heeft een veel betere controleur aangenomen. Omdat die zo goed is, slaat de stofzuiger een tweede ronde over die hij vroeger deed.3 De kamer is schoner dan ooit. Maar de enige meter in het gebouw weegt de stofzak, en die is lichter.
Volgens Hancke kan Chrome daardoor in de statistieken een halve decibel minder echo lijken te onderdrukken dan vroeger, of dan Edge, terwijl het er in werkelijkheid meer wegwerkt.
Alleen in Chrome, en waarom dat ertoe doet
Hier wordt het verhaal minder technisch en meer principieel. Sinds Google libwebrtc in 2011 openbaar maakte, delen alle browsers dezelfde basis voor geluid in videocalls. De code valt onder een BSD-licentie, en iedereen die ze gebruikte, kreeg dezelfde echo-onderdrukking. Dat is ongeveer het dichtst dat het web ooit bij een gemeenschappelijk goed is gekomen.
Het nieuwe model breekt dat patroon:
- Edge is uit dezelfde Chromium-code gebouwd, met de functie ook aan. Het krijgt niets, omdat het geen klant is van de Google-dienst die het model levert.
- Electron-apps, desktop-apps die intern een Chromium-browser gebruiken, krijgen het om dezelfde reden niet.
- Firefox en Safari gebruiken libwebrtc, maar zonder model. Ze draaien de AEC3 van 2018.
De koppeling in de code is open: wie libwebrtc gebruikt, kan er in principe een eigen model op aansluiten.4 Het model zelf staat in geen enkele openbare opslagplaats en heeft geen licentie. Het zit alleen in Google Chrome op desktop.
Waarom het stil en alleen in Chrome gebeurde, weet niemand buiten Google. Volgens Hancke is het enige spoor een intern document met „analyse en goedkeuringen”, gelinkt vanuit de Chromium-wijziging die de functie standaard aanzette, en niet openbaar.
Niet het eerste model dat Chrome ongevraagd binnenhaalt
In mei 2026 ontdekte privacyonderzoeker Alexander Hanff dat Chrome zonder te vragen een bestand van zo’n 4 GB op schijf zet, weights.bin, met daarin Gemini Nano, het lokale taalmodel van Google. Wie het wiste, kreeg het later terug. Hanff vond dat moeilijk te rijmen met de Europese regels over opslag op het toestel van de gebruiker.
Google antwoordde dat het Gemini Nano al sinds 2024 aanbiedt voor onder meer oplichtingsdetectie, „zonder je gegevens naar de cloud te sturen”, en dat het sinds februari geleidelijk de mogelijkheid uitrolt om het model uit te zetten en te verwijderen in de instellingen van Chrome, onder Systeem.
Het echomodel is zo’n tienduizend keer kleiner, en het werkt op je eigen computer met hetzelfde geluid dat AEC3 altijd al verwerkte. Het patroon is wel hetzelfde: je browser wordt een verzendkanaal voor modellen die Google bijwerkt wanneer het wil. Voor het echomodel bestaat er volgens Hancke geen schakelaar.
Kmo-Kristof: Wij werken met Edge, dat stond standaard op onze laptops. Krijgen wij die nieuwe echofilter ook?
Security-Sofie: Edge is uit dezelfde code gebouwd, en de functie staat er ook aan.
Kmo-Kristof: Mooi.
Security-Sofie: Alleen komt het model nooit aan. Het wordt geleverd door een dienst van Google die alleen Chrome bedient. Je hebt de brievenbus, niet het abonnement op de krant.
Kmo-Kristof: En wat merk ik daarvan?
Security-Sofie: Jij niets. Je klant hoort zichzelf wat vaker terug.
Wat het betekent voor je zaak
Voor wie in de browser vergadert, met Google Meet, Jitsi of de webversie van een ander platform, zijn er vier praktische gevolgen.
- Je browserkeuze bepaalt mee hoe je klinkt. De echo-onderdrukking aan jouw kant beschermt je gesprekspartner. Wie op Chrome vergadert, stuurt doorgaans minder restecho door dan een collega op Edge, Firefox of Safari met dezelfde luidsprekers.
- Een headset blijft de eenvoudigste oplossing. Zonder luidsprekers in de kamer is er nauwelijks echo om weg te werken, welk model er ook draait.
- Vertrouw de echostatistiek niet blind. Wie een eigen webtoepassing voor calls of een spraakassistent bouwt, kan uit
getStats()niet afleiden welke filter er draaide, en ziet in Chrome mogelijk een slechter cijfer voor een beter resultaat. - Weet wat je browser binnenhaalt. Open
chrome://version, zoek het profielpad en ga één map hoger (onder Windows is dat de mapUser Data). Daar staatoptimization_guide_model_store, met een submap per model. Wie een IT-beleid of een software-inventaris bijhoudt, zet de browser er voortaan bij als software die zichzelf aanvult.
De betere controleur
Chrome heeft de echo-onderdrukking van het web verbeterd, en dat is goed nieuws voor iedereen die in de browser vergadert. Het heeft dat gedaan zonder het te zeggen, alleen voor zichzelf, met een model dat niemand anders mag gebruiken, en met een meter die het tegendeel aangeeft. De controleur is beter dan ooit. Hij werkt alleen nog voor één poetsfirma, en hij heeft zijn naam niet op de deur gezet.
Hancke schrijft dat hij geen audiospecialist is. Hij liet Claude, de AI-assistent van Anthropic, het binaire modelbestand ontleden en zich de werking ervan uitleggen. Zo weet hij dat het netwerk 321 bewerkingen telt, zonder convolutie of attention, de twee bouwstenen die je in grotere modellen meestal tegenkomt. ↑
Dezelfde dienst levert ook modellen voor andere functies van Chrome, zoals het indelen van pagina’s. Het echomodel staat in submap
71. Op mijn computer staan er meer dan twintig zulke submappen. ↑Technisch:
echoReturnLossEnhancementmeet hoeveel echo de lineaire filter wegwerkt, vóór de onderdrukker. Met het model actief slaat AEC3 een terugvaloptie over op een tweede, grovere filter. Het signaal na de lineaire stap is daardoor iets luider, terwijl het eindresultaat na de onderdrukker veel stiller is. ↑De koppeling,
NeuralResidualEchoEstimator, staat sinds oktober 2025 in de openbare code van WebRTC. Een ontwikkelaar vroeg toen op het forum van het project welk TFLite-bestand ze verwachtte. De vraag bleef onbeantwoord. ↑
Bronnen
- Google Chrome downloads a new neural AEC while you are not looking (webrtcHacks, Philipp Hancke, 6 oktober 2026)
- AEC3: Add an AEC3 config specific to NeuralResidualEchoEstimator (WebRTC, commit van 3 oktober 2025)
- Chrome downloads a 4GB AI file without user consent, researcher alleges (Engadget, 6 mei 2026)