# Audio verwerken met de Gemini API [[TOC]] ## 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. ```python 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. :::tip title="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 ```python 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: ```python 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: ```python 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) ``` :::tip title="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 ```python 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: ```python 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 ```python 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 :::howto title="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 | :::warn title="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. ::: :::faq ### 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. :::