Nieuws & Analyses

Offline spraakassistent bouwen met Gemma en Ollama

Een spraakassistent die volledig op je eigen computer draait: Whisper luistert, Gemma denkt via Ollama en Piper praat Nederlands terug. Zo bouw je hem.

Offline spraakassistent bouwen met Gemma en Ollama

Een spraakassistent die je mails laat samenvatten of een tekst laat herschrijven, zonder dat er één opname je computer verlaat: dat bouw je tegenwoordig met drie gratis onderdelen. Whisper zet je stem om naar tekst, Gemma bedenkt het antwoord via Ollama en Piper spreekt het uit. Geen cloud, geen abonnement, en na de downloads ook geen internet.

Hoe de keten werkt

De opbouw is altijd hetzelfde: microfoon → spraakherkenning → taalmodel → spraaksynthese → luidspreker. Elk onderdeel kun je later vervangen door een beter exemplaar zonder de rest om te gooien. Dat maakt dit een opstelling die je jaren kunt blijven gebruiken.

Gemma is de familie open modellen van Google. Het 12B-model is volgens Google klein genoeg om lokaal te draaien met ongeveer 16 GB geheugen, en valt onder de Apache 2.0-licentie, dus ook commercieel gebruik mag (Bron: Google). Google bouwde zelfs audio-invoer in het model zelf (Bron: Hugging Face). Toch gebruik je hier een losse spraakherkenner, want in de Ollama-library staat bij elke Gemma-variant alleen tekst en beeld als invoer (Bron: Ollama).

💡 Beginner-tip: STT staat voor speech-to-text (spraak naar tekst), TTS voor text-to-speech (tekst naar spraak). Samen zijn ze de oren en de mond van je assistent; Gemma is het brein ertussen. Nog nooit een lokaal model gedraaid? Begin dan met onze gids Ollama installeren.

Stap 1: installeer Ollama en haal Gemma binnen

Ollama is er voor macOS, Windows en Linux. Op Mac en Linux installeer je het met curl -fsSL https://ollama.com/install.sh | sh, op Windows met de installer of via PowerShell (Bron: Ollama). Daarna typ je in een terminal:

ollama run gemma4:12b

Ollama downloadt het model eenmalig en opent een chat. Werkt dat, dan staat het brein van je assistent. Sluit af met /bye; het model blijft beschikbaar voor andere programma’s. Heb je minder dan 16 GB geheugen, kies dan een kleinere variant uit de tabel onderaan.

Stap 2: spraakherkenning met faster-whisper

Voor het luisterwerk gebruik je faster-whisper, een snellere herbouw van OpenAI’s Whisper die ook op een gewone processor draait (Bron: faster-whisper). Whisper verstaat Nederlands; je geeft dat met language="nl" mee zodat hij niet hoeft te raden.

pip install faster-whisper ollama sounddevice piper-tts

Dit installeert in één keer ook de Python-bibliotheek van Ollama (Bron: ollama-python), sounddevice voor de microfoon en Piper voor de stem. Liever C++ dan Python? Dan is whisper.cpp het alternatief. Dat project heeft een whisper-stream-voorbeeld dat je microfoon continu uitschrijft (Bron: whisper.cpp). Meer over Whisper zelf lees je op de Whisper-toolpagina.

Stap 3: een Nederlandse stem met Piper

Piper is een lichte, lokale spraaksynthesizer, tegenwoordig onderhouden door de Open Home Foundation onder een GPL-3.0-licentie (Bron: Piper). Er zijn Nederlandse stemmen voor Nederland en voor Vlaanderen (Bron: Piper voices). Download er een in de map waar je script komt te staan en test hem:

python3 -m piper.download_voices nl_NL-pim-medium
python3 -m piper -m nl_NL-pim-medium -- 'Hallo, ik draai helemaal offline.'

Direct afspelen vraagt ffplay (onderdeel van FFmpeg) op je systeem (Bron: Piper CLI). Hoor je niets, installeer dan eerst FFmpeg.

Stap 4: knoop het aan elkaar

Dit script neemt vijf seconden op, laat Whisper uitschrijven, stuurt de tekst naar Gemma en laat Piper het antwoord uitspreken. Het onthoudt het gesprek, dus je kunt doorvragen.

import subprocess
import sounddevice as sd
from faster_whisper import WhisperModel
from ollama import chat

stt = WhisperModel("small", device="cpu", compute_type="int8")
gesprek = [{"role": "system", "content": "Je bent een behulpzame assistent. Antwoord kort en in het Nederlands."}]

while True:
    input("Druk op Enter en praat vijf seconden...")
    audio = sd.rec(5 * 16000, samplerate=16000, channels=1, dtype="float32")
    sd.wait()
    segmenten, _ = stt.transcribe(audio.flatten(), language="nl")
    vraag = " ".join(s.text for s in segmenten).strip()
    print("Jij:", vraag)
    gesprek.append({"role": "user", "content": vraag})
    antwoord = chat(model="gemma4:12b", messages=gesprek).message.content
    gesprek.append({"role": "assistant", "content": antwoord})
    print("Gemma:", antwoord)
    subprocess.run(["python3", "-m", "piper", "-m", "nl_NL-pim-medium", "--", antwoord])

De WhisperModel-aanroep met device="cpu" en compute_type="int8" komt rechtstreeks uit de faster-whisper-documentatie; met een NVIDIA-kaart zet je device="cuda" (Bron: faster-whisper). Het eerste gebruik downloadt het Whisper-model, daarna kan de wifi uit.

⚡ Gevorderden: Piper laadt zijn stem bij elke aanroep opnieuw, wat merkbare vertraging geeft. De Piper-docs raden voor herhaald gebruik de ingebouwde webserver aan (Bron: Piper CLI). Wil je Gemma de audio rechtstreeks laten horen, dan kan dat via Hugging Face Transformers, tot 30 seconden per fragment (Bron: Hugging Face).

Wat je realistisch mag verwachten

Hoe snel het voelt, hangt vooral af van je geheugen en je GPU. Op een laptop krijg je eerder een kort denkmoment dan een vlot gesprek; korte vragen, samenvattingen en herschrijfwerk gaan prima. Een groter Whisper-model verstaat je beter maar rekent langer, dus begin met small en schuif op als je merkt dat hij woorden mist.

De winst zit in controle: geen maandbedrag, geen limieten en gevoelige gegevens die thuis blijven. Wil je een stap verder, kijk dan naar een AI-agent die je data nooit verlaat. Zoek je juist stemklonen of dubben, dan is VoiceStudio de lokale route, en Transformers.js laat spraakherkenning zelfs in de browser draaien. Wat Gemma 12B als model kan en waarom het voor je privacy uitmaakt, lees je bij Het Laatste AI Nieuws. Welke andere open modellen lokaal goed draaien, staat in ons overzicht van open-weight modellen.

Stand van zaken — bijgewerkt 2026-10-07

Alles hierboven blijft staan, ongeacht welk model er draait. De cijfers en versies hieronder zijn de bederfelijke laag.

OnderwerpStand
Nieuwste Gemma-taalmodelGemma 4 12B (3 juni 2026); geen opvolger, alleen EmbeddingGemma 2 (6 oktober 2026) (Bron: Google)
Gemma-varianten in Ollamagemma4:e2b, e4b, 12b, 26b, 31b; 12b is 7,7 tot 8,0 GB met 256K context (Bron: Ollama)
Invoer in OllamaTekst en beeld, geen audio (Bron: Ollama)
Geheugenrichtlijn Gemma 4 12BOngeveer 16 GB VRAM of unified memory (Bron: Google)
Licentie Gemma 4Apache 2.0
faster-whisper-modellenOnder meer small, turbo, large-v3, distil-large-v3
Piperpip install piper-tts, GPL-3.0, repo OHF-Voice/piper1-gpl
Nederlandse Piper-stemmennl_NL: alex, mls, pim, ronnie; nl_BE: nathalie, rdh (Bron: Piper voices)
#gemma#ollama#spraakassistent#whisper#piper#lokale-ai#privacy

Veelgestelde vragen

Kan ik een spraakassistent volledig offline draaien?
Ja. Je hebt drie onderdelen nodig die alle drie lokaal draaien: faster-whisper of whisper.cpp om je stem naar tekst om te zetten, een taalmodel als Gemma via Ollama om te antwoorden, en Piper om dat antwoord uit te spreken. Alleen voor het downloaden van de modellen en stemmen heb je eenmalig internet nodig. Daarna kun je de wifi uitzetten en blijft alles werken.
Welke hardware heb ik nodig voor Gemma als spraakassistent?
Google mikt met Gemma 4 12B op machines met ongeveer 16 GB werkgeheugen of videogeheugen, zoals een recente MacBook met Apple Silicon of een pc met een losse GPU. Heb je minder geheugen, kies dan een kleinere Gemma-variant in Ollama. Spraakherkenning en Piper zijn licht en draaien ook op een gewone processor. De actuele modelgroottes staan in de Stand van zaken onderaan.
Kan Gemma niet zelf naar audio luisteren?
Het model kan het wel: Google bouwde audio-invoer in, en volgens Hugging Face doet het spraakherkenning op fragmenten tot 30 seconden. Maar in de Ollama-library staat bij elke Gemma-tag alleen tekst en beeld als invoer. Wie via Ollama werkt, laat de spraak dus eerst door Whisper omzetten. Rechtstreeks audio voeren kan via bijvoorbeeld Hugging Face Transformers, maar dat vraagt meer programmeerwerk.
Welke Nederlandse stem kies ik in Piper?
Piper heeft voor nl_NL onder meer de stemmen alex, mls, pim en ronnie, en voor nl_BE nathalie en rdh. Download er een met python3 -m piper.download_voices, bijvoorbeeld nl_NL-pim-medium, en luister een paar zinnen. Smaak verschilt; de demo op de Piper-site laat je stemmen vooraf beluisteren.