Naar inhoud
lightbulb Welkom op de nieuwe kennisbank | We hebben de docs volledig vernieuwd met meer dan 160 features. Bekijk wat nieuw isarrow_forward

Audio verwerken met de Gemini API

Transcribeer spraak, analyseer toon en beantwoord vragen over audiofragmenten met de Gemini API en de Files API, in een enkele multimodale stap.

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.

lightbulb

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)
lightbulb

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

  1. Installeer de SDK met pip install google-genai en zet je sleutel in de omgevingsvariabele GEMINI_API_KEY.
  2. Upload de opname met client.files.upload(file=...) en bewaar de teruggegeven referentie.
  3. Wacht in een lus tot audio_file.state.name gelijk is aan ACTIVE; haal de status op met client.files.get(name=...).
  4. Roep client.models.generate_content(model="gemini-3.5-flash", contents=[audio_file, prompt]) aan met een duidelijke instructie.
  5. 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
warning

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.