Audioverwerking met Gemini
Gemini begrijpt audio als native modaliteit: spraak transcriberen, toon en sentiment analyseren, muziek beschrijven en vragen beantwoorden over de inhoud. Dat onderscheidt het van klassieke speech-to-text, waarbij je eerst transcribeert en dan pas analyseert. Gemini doet beide tegelijk, in een enkele stap.
Veelvoorkomende toepassingen zijn het automatiseren van vergadernotities, klantenservicegesprekken analyseren, podcasts samenvatten, audio doorzoekbaar maken en meertalige transcriptie.
De voorbeelden hieronder gebruiken de actuele Google Gen AI SDK (google-genai) en het stabiele model gemini-3.5-flash (stand juni 2026). De oudere google-generativeai-bibliotheek en modellen uit de 2.0-reeks zijn uitgefaseerd.
Audio uploaden via de Files API
Je uploadt een audiofragment eerst naar de Files API en wacht tot de verwerking klaar is. Voor verzoeken die samen groter zijn dan 20 MB is de Files API verplicht. Kleinere fragmenten mag je ook inline als bytes meesturen.
from google import genai
import os
import time
client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])
audio_file = client.files.upload(file="vergadering.mp3")
while audio_file.state.name == "PROCESSING":
print("Wacht op verwerking...")
time.sleep(3)
audio_file = client.files.get(name=audio_file.name)
if audio_file.state.name == "FAILED":
raise ValueError("Audio-upload mislukt")
print(f"Bestand klaar: {audio_file.uri}")
Na het uploaden gaat de status van PROCESSING naar ACTIVE. Pas dan kun je het bestand gebruiken in een generate_content-aanroep.
Installeer de juiste SDK
Gebruik pip install google-genai (let op het koppelteken). Het oudere pakket google-generativeai is gedeprecieerd; nieuwe projecten horen op de Gen AI SDK te draaien.
Spraak transcriberen
response = client.models.generate_content(
model="gemini-3.5-flash",
contents=[
audio_file,
"Transcribeer dit audiofragment volledig. Gebruik spreker-labels "
"(Spreker 1:, Spreker 2:) als er meerdere sprekers zijn.",
],
)
print(response.text)
Voor gestructureerde transcriptie met tijdstempels geef je het gewenste formaat expliciet mee in de prompt:
response = client.models.generate_content(
model="gemini-3.5-flash",
contents=[
audio_file,
"""Transcribeer dit audiofragment met tijdstempels per zin.
Formaat: [MM:SS] Spreker: Tekst
Voorbeeld: [01:23] Jan: Goedemorgen iedereen.""",
],
)
Je kunt Gemini ook naar een specifiek tijdsbereik laten kijken, bijvoorbeeld door in je prompt te vragen om alleen het deel tussen 02:30 en 03:29 te transcriberen.
Vergadernotities automatiseren
Een veelgebruikt patroon is een functie die een opname inleest en gestructureerde notities als JSON teruggeeft:
import json
def process_meeting_recording(audio_path: str) -> dict:
audio_file = client.files.upload(file=audio_path)
while audio_file.state.name == "PROCESSING":
time.sleep(5)
audio_file = client.files.get(name=audio_file.name)
response = client.models.generate_content(
model="gemini-3.5-flash",
contents=[
audio_file,
"""Analyseer deze vergaderopname en geef:
1. Samenvatting (max 200 woorden)
2. Actiepunten (wie doet wat wanneer)
3. Genomen beslissingen
4. Openstaande vragen
Geef uitsluitend JSON terug met de keys:
summary, action_items, decisions, open_questions""",
],
)
return json.loads(response.text)
Taal hoef je niet op te geven
Gemini herkent de gesproken taal automatisch. Wil je de uitvoer in een specifieke taal, noem die dan expliciet in je prompt (bijvoorbeeld "antwoord in het Nederlands").
Sentiment en toonanalyse
response = client.models.generate_content(
model="gemini-3.5-flash",
contents=[
audio_file,
"""Analyseer het sentiment en de emotionele toon van dit fragment:
- Algeheel sentiment (positief, neutraal of negatief)
- Emoties per spreker
- Energieniveau van het gesprek
- Stressindicatoren
Geef een score van 1 tot 10 voor de klanttevredenheid.""",
],
)
Meertalige audio
Gemini verwerkt audio in een groot aantal talen. Je kunt in een enkele aanroep zowel transcriptie in de originele taal als een vertaling vragen:
response = client.models.generate_content(
model="gemini-3.5-flash",
contents=[
audio_file,
"Transcribeer dit fragment in de oorspronkelijke taal en geef "
"daarna een Nederlandse vertaling.",
],
)
Audiofragmenten doorzoeken
def search_audio_content(audio_file, query: str) -> str:
response = client.models.generate_content(
model="gemini-3.5-flash",
contents=[
audio_file,
f"Zoek in dit audiofragment naar alle verwijzingen naar: {query}. "
f"Geef de tijdstempels en de context van elke verwijzing.",
],
)
return response.text
Een opname stap voor stap verwerken
Van bestand naar bruikbaar antwoord
- Installeer de SDK met
pip install google-genaien zet je sleutel in de omgevingsvariabeleGEMINI_API_KEY. - Upload de opname met
client.files.upload(file=...)en bewaar de teruggegeven referentie. - Wacht in een lus tot
audio_file.state.namegelijk is aanACTIVE; haal de status op metclient.files.get(name=...). - Roep
client.models.generate_content(model="gemini-3.5-flash", contents=[audio_file, prompt])aan met een duidelijke instructie. - Lees het resultaat uit
response.text, of parse het als JSON wanneer je om gestructureerde uitvoer hebt gevraagd.
Kosten en limieten
Onderstaande waarden gelden voor de Gemini API in juni 2026. Audio wordt geteld als 32 tokens per seconde.
| Aspect | Waarde |
|---|---|
| Max audioduur | 9,5 uur audio per verzoek |
| Files API verplicht vanaf | totaal verzoek groter dan 20 MB |
| Max bestandsgrootte | 2 GB per bestand |
| Opslag per project | 20 GB |
| Bewaarperiode Files API | 48 uur, daarna automatisch verwijderd |
| Tokenkosten audio | 32 tokens per seconde (1.920 per minuut, circa 115.200 per uur) |
| Ondersteunde formaten | WAV, MP3, AIFF, AAC, OGG Vorbis, FLAC |
Reken vooraf je tokens uit
Een uur audio kost al circa 115.200 inputtokens, los van de tekstprompt en het antwoord. Lange opnamen lopen snel op in kosten. Knip waar mogelijk naar het relevante fragment of vraag eerst een korte samenvatting voordat je een volledige transcriptie genereert.
Kan Gemini muziek analyseren of alleen spraak?
Gemini kan ook muziek beschrijven, zoals genre, instrumentatie, tempo en sfeer. Het is geen muziekherkenningstool zoals Shazam, maar het geeft wel uitgebreide muzikale beschrijvingen.
Hoe ga ik om met slechte audiokwaliteit?
Vraag Gemini expliciet om onzekere woorden te markeren met [onverstaanbaar] of [?]. Dat geeft een eerlijker beeld dan gokken bij ruis of een matige opname.
Welk model en welke SDK moet ik gebruiken?
Gebruik de Google Gen AI SDK (pip install google-genai) en het stabiele model gemini-3.5-flash. De oudere bibliotheek google-generativeai en modellen uit de 2.0-reeks zijn uitgefaseerd.
Moet ik altijd de Files API gebruiken?
Niet altijd. Voor verzoeken die samen groter zijn dan 20 MB is de Files API verplicht. Kleinere fragmenten mag je ook inline als bytes meesturen, maar de Files API is voor opgenomen audio meestal de eenvoudigste route.
Kan ik real-time audio streamen?
Voor real-time audio gebruik je de Gemini Live API. De Files API is bedoeld voor reeds opgenomen audio, niet voor live streams.
Wat zijn de privacyimplicaties van audio uploaden?
Geüploade bestanden staan tot 48 uur op Google-servers en worden daarna automatisch verwijderd. Voor gevoelige opnamen, bijvoorbeeld medisch of juridisch, overweeg je Vertex AI met data residency en VPC Service Controls.