REST-API · OpenAPI 3.1 · MCP-server

API voor ontwikkelaars

Zet bestanden, links en tekst om in akkoorden en songteksten, en lees en vul je songbook vanuit een script of een assistent.

  • Gratis niveau
  • Dezelfde engine als de app
  • Officiële MCP-server
Basis-URL https://jam-jam.org/api/v1 openapi.json llms.txt

Wat de API kan

Elke mogelijkheid wordt ontgrendeld door een scope die je aanvinkt bij het maken van je sleutel.

Conversie

Audio, pdf, afbeeldingen, tekst of een link naar songbook, pdf, MIDI, MusicXML en meer.

convert:writeconvert:read

Privé-songbook

Je nummers en playlists opvragen, lezen, aanmaken, bewerken en ordenen.

carnet:readcarnet:write

Openbare profielen

Alleen lezen: profielen, gepubliceerde nummers, volgers. Geen audiospoor.

social:read

Stemscheiding

Een conversie (output=stems) scheidt zang en begeleiding; de tool /stem-tool splitst in twee of vier sporen. Met een API-sleutel vereisen beide een Premium-account.

stems:write Premium-API-sleutel

Audiowachtrij

Akkoord- en tekstanalyse in dezelfde wachtrij als de app.

audio:writequeue:read

AI-muziekdetectie

Een aanwijzing voor AI-generatie bij een bestand, een Spotify-link, een directe audiolink of een ISRC.

Limieten, quota en privacy

AI-muziek komt steeds vaker voor. Jam Jam helpt je aanwijzingen te vinden: plak een link of upload een bestand voor een indicatieve uitslag.

Max. 100 MB · Max. 10 min · Spotify, directe audiolink of ISRC. YouTube wordt niet ondersteund. Spotify-links worden mogelijk alleen op basis van een fragment geanalyseerd.

Eén wachtend of actief bestand per account. Premium-accounts krijgen voorrang in de wachtrij.

Bezoeker: 2 scans/dag en 5/maand. Gratis account: 5/dag en 50/maand. Premium: 30/dag en 300/maand. Gedeelde limieten voor site, app en API; mislukte scans tellen niet. Reset om middernacht UTC en op de eerste dag van de maand UTC.

Audio wordt voor analyse naar onze aanbieder SH Labs gestuurd. Die zegt geen audio te bewaren of voor modeltraining te gebruiken. Bij uitval kan een bestand lokaal worden geanalyseerd als de reservedienst beschikbaar is. Tijdelijke bestanden worden na verwerking, fout of annulering verwijderd. Je account bewaart naam of link, datum, status en resultaat 90 dagen; gastresultaten 24 uur. Gastlimieten gebruiken een token en gepseudonimiseerde netwerkcode, zonder het IP-adres onversleuteld te bewaren.

Deze index is geen kansberekening of bewijs. Een lage index garandeert geen menselijke oorsprong.

Ontdek de tool
audio:writequeue:read

Ondersteunde formaten

De volledige, actuele lijst, met exacte limieten en wat deze server daadwerkelijk levert, staat altijd op GET /formats. Kort samengevat:

Invoerformaten

  • Audio- en videobestanden
  • Pdf: akkoorden, teksten, bladmuziek, tabulatuur, gescand songbook
  • Afbeeldingen: akkoorden, teksten, bladmuziek, tabulatuur
  • Platte tekst, ChordPro, OnSong
  • Links en zoeken op het web (page-link, web-search)
  • MusicXML, MIDI
  • JamSong, gemengde .zip, songbook (pivot)

Uitvoerformaten

  • Songbook (JSON-pivot, altijd beschikbaar)
  • Pdf: akkoorden, teksten, bladmuziek, tabulatuur, raster
  • PNG, HTML, platte tekst, ChordPro
  • chords-lab, chords-csv, toonsoort en BPM
  • MusicXML, MIDI (Premium)
  • Gesynchroniseerde teksten: .lrc, .srt
  • Karaokevideo (.mp4), begeleidingsaudio, JamSong

In vier stappen aan de slag

Conversie is asynchroon: indienen, volgen, ophalen.

  1. Sleutel maken

    Instellingen › API-sleutels. Prefix jj_live_, één keer getoond, 5 sleutels per account, intrekbaar.

    Beheer mijn API-sleutels
  2. Indienen

    Een bestand, een URL of tekst, met het gewenste uitvoerformaat.

    POST /jobs
  3. Volgen

    Poll met inachtneming van Retry-After, of open een Server-Sent Events-stream.

    GET /jobs/{id}GET /jobs/{id}/events
  4. Ophalen

    Het resultaat blijft 24 uur beschikbaar, daarna 410 Gone.

    GET /jobs/{id}/result

Voorbeelden

Volledige aanroepen, klaar om zo te kopiëren.

De formaten opvragen die deze server levertcurl

curl https://jam-jam.org/api/v1/formats

Een bestand omzetten naar pdfcurl

curl -X POST https://jam-jam.org/api/v1/jobs \
  -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
  -F [email protected] \
  -F inputFormat=pdf-songbook \
  -F output=pdf-songbook

Een URL omzetten naar een songbookcurl

curl -X POST https://jam-jam.org/api/v1/jobs \
  -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/tabs/amazing-grace", "output": "songbook"}'

Voortgang volgen (SSE of polling)curl

# Server-Sent Events
curl -N -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
  https://jam-jam.org/api/v1/jobs/jb_123/events

# Polling
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
  https://jam-jam.org/api/v1/jobs/jb_123

Het resultaat downloadencurl

curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
  -OJ https://jam-jam.org/api/v1/jobs/jb_123/result

Python (requests)python

import time
import requests

API = "https://jam-jam.org/api/v1"
HEADERS = {"Authorization": "Bearer jj_live_xxxxxxxxxxxxxxxx"}

# 1. Discover formats
formats = requests.get(f"{API}/formats").json()

# 2. Submit a conversion
resp = requests.post(
    f"{API}/jobs",
    headers=HEADERS,
    json={"url": "https://example.com/tabs/amazing-grace", "output": "songbook"},
)
resp.raise_for_status()
job = resp.json()

# 3. Poll until done (or use GET /jobs/{id}/events for SSE)
while job["phase"] not in ("done", "failed", "cancelled"):
    time.sleep(job.get("etaS", 2))
    job = requests.get(f"{API}/jobs/{job['id']}", headers=HEADERS).json()

# 4. Fetch the result
if job["phase"] == "done":
    songbook = requests.get(f"{API}/jobs/{job['id']}/result/songbook", headers=HEADERS).json()
    print(songbook["songs"][0]["title"])
else:
    print("failed:", job.get("problem"))

Een nummer analyseren met AI-muziekdetectiecurl

# Availability and remaining quota (no key needed)
curl https://jam-jam.org/api/v1/ai-music/availability

# Analyze a file
curl -X POST https://jam-jam.org/api/v1/ai-music/jobs \
  -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
  -F "[email protected]"

# Analyze a Spotify link
curl -X POST https://jam-jam.org/api/v1/ai-music/jobs \
  -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://open.spotify.com/track/2JUDGXTQYGQZrVVUgq40Ke"}'

# History, current analysis, one analysis
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
  https://jam-jam.org/api/v1/ai-music/history
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
  https://jam-jam.org/api/v1/ai-music/jobs
curl -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
  https://jam-jam.org/api/v1/ai-music/jobs/JOB_ID

# Cancel
curl -X DELETE -H "Authorization: Bearer jj_live_xxxxxxxxxxxxxxxx" \
  https://jam-jam.org/api/v1/ai-music/jobs/JOB_ID

Codevoorbeelden

Direct uitvoerbare voorbeelden in curl, JavaScript en Python, open source onder de MIT-licentie:

jam-jam-api-examples

Assistenten en MCP

Een assistent leest het contract en bouwt zelf zijn aanroepen. De officiële MCP-server geeft hem 42 kant-en-klare tools.

Voor AI-agents

Lees eerst GET /openapi.json: het documenteert de aanbevolen aanroepvolgorde (formaten ontdekken, indienen, volgen, ophalen), authenticatie en quota in een x-agent-guide-blok dat bedoeld is om door een model te worden verwerkt. Het llms.txt op deze site vermeldt elke conversiemogelijkheid als eigen item.

MCP-server

Sleutel gelezen uit JAM_JAM_API_KEY: alleen de tools die de scopes toestaan verschijnen. Hij volgt niemand, liket niets en publiceert niets uit zichzelf.

Claude DesktopClaude CodeCursor
In detail

Een officiële Model Context Protocol-server stelt de API aan een assistent beschikbaar als 42 tools met het voorvoegsel jj_: conversie van bestanden en tekst, lezen en ordenen van je privé-songbook, lezen van publieke profielen, stemscheiding, audioanalyse en wachtrij, detectie van AI-muziek en Mastering. Hij leest je API-sleutel uit de omgevingsvariabele JAM_JAM_API_KEY en toont alleen de tools die de scopes van die sleutel toestaan. Hij regelt polling, quotafouten en bestandsresultaten voor je, zodat een assistent zoals Claude Desktop, Claude Code of Cursor een bestand kan converteren of je songbook kan ordenen zonder dat jij HTTP-code hoeft te schrijven. Hij volgt nooit iemand, geeft geen likes en publiceert uit zichzelf geen nummer.

Installatieshell
npx -y @jam-jam/convert-mcp

Pakketpagina op npm: npmjs.com/package/@jam-jam/convert-mcp

Configuratie (Claude Desktop, Claude Code, Cursor)json
{
  "mcpServers": {
    "jam-jam": {
      "command": "npx",
      "args": ["-y", "@jam-jam/convert-mcp"],
      "env": {
        "JAM_JAM_API_KEY": "jj_live_xxxxxxxxxxxxxxxx"
      }
    }
  }
}

Tools en vereiste scopes 42

Conversie

formaten, bestanden, tekst en jobstatus.

  • jj_list_formatsgeen scope
  • jj_convert_fileconvert:write
  • jj_convert_textconvert:write
  • jj_get_jobconvert:read
Quota geen scope

wat de sleutel mag doen en hoeveel er nog over is.

  • jj_check_usage
Privé-songbook, lezen carnet:read

nummers en afspeellijsten.

  • jj_list_songs
  • jj_get_song
  • jj_list_playlists
  • jj_get_playlist
Privé-songbook, schrijven carnet:write

nummers en afspeellijsten aanmaken, wijzigen en verwijderen.

  • jj_create_song
  • jj_update_song
  • jj_delete_song
  • jj_create_playlist
  • jj_update_playlist
  • jj_delete_playlist
Publieke profielen, lezen social:read

profielkaarten, gepubliceerde nummers en afspeellijsten, volgers en gevolgden.

  • jj_get_profile
  • jj_list_profile_songs
  • jj_list_profile_playlists
  • jj_list_followers
  • jj_list_following
Stemscheiding

mogelijkheden, jobs en bestanden.

  • jj_stems_capabilitiesconvert:read
  • jj_stems_separatestems:write
  • jj_stems_get_jobconvert:read
  • jj_stems_list_jobsconvert:read
  • jj_stems_get_fileconvert:read
  • jj_stems_cancel_jobstems:write
Audioanalyse en wachtrij

een bestand analyseren, jobs weergeven, lezen en annuleren.

  • jj_audio_analyzeaudio:write
  • jj_queue_listqueue:read
  • jj_queue_get_jobqueue:read
  • jj_queue_cancel_jobaudio:write
Detectie van AI-muziek

beschikbaarheid, analyse, geschiedenis en jobs.

  • jj_ai_music_availabilityqueue:read
  • jj_ai_music_analyzeaudio:write
  • jj_ai_music_currentqueue:read
  • jj_ai_music_get_jobqueue:read
  • jj_ai_music_historyqueue:read
  • jj_ai_music_cancel_jobaudio:write
Mastering

mogelijkheden, presets, rendering, jobstatus en annulering.

  • jj_mastering_capabilitiesgeen scope
  • jj_list_mastering_presetsmastering:read
  • jj_create_mastering_presetmastering:write
  • jj_master_audiomastering:write
  • jj_mastering_get_jobmastering:read
  • jj_mastering_cancel_jobmastering:write

Endpointreferentie

Alle aangeboden routes, per familie, met scope en quotum. Het volledige contract is leidend.

Conversie (jobs) 6

Methode Pad Scope Quotum
POST /jobsDien een conversie in: een bestand (multipart/form-data), een URL of platte tekst/ChordPro (application/json). Bij output=stems zijn ook de scope stems:write en een Premium-API-sleutel nodig, met een eigen quotum (200/UTC-dag). convert:write quotum: conversie
GET /jobs/{id}Jobstatus (fase, percentage, stappen). Pollen met inachtneming van de Retry-After-header. convert:read quotum: geen
DELETE /jobs/{id}Annuleert een job en verwijdert de bijbehorende bestanden; vergoedt het quotum alleen als de job nog in de wachtrij stond. convert:write quotum: geen
GET /jobs/{id}/eventsAlternatief voor polling via Server-Sent Events: state-, done-, error- en keep-alive-ping-events. convert:read quotum: geen
GET /jobs/{id}/resultDownload het belangrijkste artifact (of een specifiek via ?artifact=). Beschikbaar tot 24 uur na het aanmaken van de job. convert:read quotum: geen
GET /jobs/{id}/result/songbookDe canonieke JSON-pivot van het songbook (akkoorden, songtekst, structuur), altijd beschikbaar zodra de job klaar is. convert:read quotum: geen

Formaten 1

Methode Pad Scope Quotum
GET /formatsRegister van de input/output-paren die deze server daadwerkelijk levert, met limieten (maxBytes, maxPages, maxDurationS). publiek (geen sleutel nodig) quotum: geen

Gebruik en quota 1

Methode Pad Scope Quotum
GET /me/usageJe quotasaldo (conversie, lezen, schrijven, stems) en de scopes die jouw identiteit daadwerkelijk kan uitoefenen, in één aanroep. convert:read quotum: geen

Songbook, lezen 4

Methode Pad Scope Quotum
GET /me/songsToont de nummers in je privésongbook, gepagineerd via een ondoorzichtige cursor; gebruik updatedSince voor een incrementele export. carnet:read quotum: lezen
GET /me/songs/{songId}Eén volledig nummer uit je songbook, inclusief akkoorden, songtekst en structuur. carnet:read quotum: lezen
GET /me/playlistsToont de afspeellijsten in je songbook, plat en met meervoudig lidmaatschap, dezelfde paginering als nummers. carnet:read quotum: lezen
GET /me/playlists/{playlistId}Eén afspeellijst en de bijbehorende nummers, in volgorde, in samenvatting. carnet:read quotum: lezen

Songbook, schrijven 8

Methode Pad Scope Quotum
POST /me/songsVoegt een nummer toe aan je songbook, dezelfde pivot-payload die een conversie oplevert. Stel Idempotency-Key in om duplicaten te vermijden. carnet:write quotum: schrijven
PUT /me/songs/{songId}Vervangt een nummer volledig (declaratief); maakt het aan onder dat id als het nog niet bestaat. carnet:write quotum: schrijven
PATCH /me/songs/{songId}Werkt alleen de verzonden velden bij (toonsoort, kapo, bpm, playlistIds...); publiceert of depubliceert het nummer ook op je profiel. carnet:write quotum: schrijven
DELETE /me/songs/{songId}Verwijdert een nummer uit je songbook; zacht, idempotent, en het verlaat ook elke afspeellijst. carnet:write quotum: schrijven
POST /me/playlistsMaakt een afspeellijst aan; songIds is de geordende lijst van nummers die deze bevat, exact bewaard zoals verzonden. carnet:write quotum: schrijven
PUT /me/playlists/{playlistId}Vervangt een afspeellijst volledig (declaratief); songIds is verplicht. carnet:write quotum: schrijven
PATCH /me/playlists/{playlistId}Hernoemt, wijzigt de cover-emoji of herordent de nummers van een afspeellijst volledig. carnet:write quotum: schrijven
DELETE /me/playlists/{playlistId}Verwijdert de afspeellijst zelf; de nummers blijven in je songbook en in hun andere afspeellijsten staan. carnet:write quotum: schrijven

Sociaal, alleen lezen 5

Methode Pad Scope Quotum
GET /users/{handle}Publieke profielheader van een account op basis van handle; een privéaccount dat je niet volgt levert een gesloten kaart op (geen bio, geen tellers). social:read quotum: lezen
GET /users/{handle}/songsNummers die een account op zijn profiel heeft gepubliceerd; audioPlayable is alleen waar als jullie elkaar wederzijds volgen. social:read quotum: lezen
GET /users/{handle}/playlistsAfspeellijsten die een account heeft gepubliceerd; songCount telt alleen wat jij daadwerkelijk kunt zien. social:read quotum: lezen
GET /me/followersAccounts die jou volgen; status=accepted (standaard) of requested. social:read quotum: lezen
GET /me/followingAccounts die jij volgt; status=requested toont de nog openstaande verzoeken naar privéaccounts. social:read quotum: lezen

Audiowachtrij en stems 4

Methode Pad Scope Quotum
POST /audioPlaatst automatische akkoord- en songtekstanalyse, gevolgd door uitlijning, in de wachtrij voor een nummer dat al in je songbook staat. Dezelfde wachtrij als de app; songId moet van jou zijn. audio:write quotum: geen
GET /queueDe audioverwerkingswachtrij van jouw account: actief, in de wachtrij (met rank) en de afgelopen 7 dagen voltooid. queue:read quotum: geen
GET /queue/{id}Eén audiowachtrijjob, alleen die van jou; dezelfde niet-onderscheidbare 404 voor een onbekende job of die van iemand anders. queue:read quotum: geen
DELETE /queue/{id}Annuleert een van je audiowachtrijjobs; vergoedt alleen als de analyse nog niet was voltooid. audio:write quotum: geen

Stemscheiding 6

Methode Pad Scope Quotum
GET /stem-tool/capabilitiesControleer de beschikbaarheid, limieten, modellen en het quotum voor stemscheiding van de aanroeper. convert:read quotum: geen
GET /stem-tool/jobsBekijk de privé-opdrachten voor stemscheiding van de aanroeper, met een optionele paginacursor. convert:read quotum: geen
POST /stem-tool/jobsUpload een audiobestand en splits het in twee of vier stems. API-sleutels vereisen Premium. stems:write quotum: stems
GET /stem-tool/jobs/{id}Bekijk de status, voortgang en beschikbare bestanden van een eigen opdracht. convert:read quotum: geen
DELETE /stem-tool/jobs/{id}Annuleer een eigen opdracht voor stemscheiding. stems:write quotum: geen
GET /stem-tool/jobs/{id}/files/{name}Ontvang een tijdelijk ondertekende download-URL voor een MP3-stem of ZIP-archief. convert:read quotum: geen

Met een API-sleutel vereisen al deze routes een Premium-account; anders is het antwoord een 403 (api-premium-required). De limieten van de aanroeper staan in GET /stem-tool/capabilities.

Mastering 8

Methode Pad Scope Quotum
GET /mastering/capabilitiesLimieten, bereiken van instellingen, loudnessdoelen, ingebouwde presets en renderrecht. publiek (geen sleutel nodig) quotum: geen
GET /mastering/presetsJe masteringpresets ophalen. mastering:read quotum: geen
POST /mastering/presetsEen masteringpreset aanmaken (Idempotency-Key verplicht). mastering:write quotum: geen
DELETE /mastering/presets/{id}Een van je masteringpresets verwijderen. mastering:write quotum: geen
POST /mastering/jobsAudio uploaden en een mastering starten met een preset of instellingen. mastering:write quotum: mastering (3/week gratis, onbeperkt met Premium)
GET /mastering/jobs/{id}De status van een masteringtaak ophalen. mastering:read quotum: geen
DELETE /mastering/jobs/{id}Een masteringtaak annuleren. mastering:write quotum: geen
GET /mastering/jobs/{id}/resultDe gemasterde WAV downloaden. mastering:read quotum: geen

AI-muziekdetectie 7 + 1 intern

Methode Pad Scope Quotum
GET /ai-music/availabilityBeschikbaarheid van de tool, geaccepteerde formaten en resterende quota van het account of de bezoeker. publiek (geen sleutel nodig) quotum: geen
POST /ai-music/jobsDient een audiobestand, een Spotify-link, een directe audiolink of een ISRC in. Eén onafgeronde taak per account; YouTube wordt niet ondersteund. audio:write quotum: AI-detectie
GET /ai-music/jobsVindt je lopende of meest recente analyse. queue:read quotum: geen
GET /ai-music/jobs/{id}Volgt een analyse en leest het verslag. queue:read quotum: geen
DELETE /ai-music/jobs/{id}Annuleert een analyse en verwijdert de tijdelijke bestanden. audio:write quotum: geen
GET /ai-music/historyPrivégeschiedenis van de laatste 90 dagen, in pagina’s van 30; account vereist, geen audio bewaard. queue:read quotum: geen
DELETE /ai-music/history/{id}Verwijdert een scan uit je geschiedenis; het quotum van een geslaagde analyse wordt niet teruggegeven. audio:write quotum: geen
GET /ai-music/source/{token}/{filename}Tijdelijk adres, voorbehouden aan de detectiedienst en hooguit 180 seconden geldig: geen enkele client roept het aan. intern quotum: geen

Status en specificatie 2

Methode Pad Scope Quotum
GET /healthServicestatus en gereedheid per engine (OMR, audio, video...); geen authenticatie vereist. publiek (geen sleutel nodig) quotum: geen
GET /openapi.jsonDit contract, als machineleesbare JSON. publiek (geen sleutel nodig) quotum: geen

Volledig machineleesbaar contract, altijd gesynchroniseerd met deze tabel:

https://jam-jam.org/api/v1/openapi.json OpenAPI-contract

Quota en limieten

Het exacte saldo staat in GET /me/usage en in de X-Quota-*-headers van elk antwoord.

Conversie

Gratis account
6 / week
Premium
500 / maand
Zonder sleutel of sessie
3 / 24 u

Dezelfde teller als de songbook-export in de app.

Lezen en schrijven

per UTC-dagGratis accountPremium
Leesacties (songbook, profielen)2.00020.000
Schrijfacties (songbook)2005.000

X-Read-Quota-* · X-Write-Quota-*

Sporen via een conversie

POST /jobs · output=stems

Premium-API-sleutel vereist: zonder Premium is het antwoord een 403 (premium-required).

Premium
200 per UTC-dag

Door deze routes aan te roepen bevestig je dat je de rechten hebt op de verzonden audio.

In detail
  • POST /jobs met output=stems levert een .zip: vocals, accompaniment en manifest.json.
  • Vereiste scopes: stems:write en convert:write.
  • Een aparte teller, los van die van de conversies, geteld per UTC-dag (geen voortschrijdende 24 uur).
  • Niet te verwarren met de tool Stemscheiding (/stem-tool/*): daar vereist een API-sleutel een Premium-account, met eigen limieten (GET /stem-tool/capabilities).

Een API-sleutel verkrijgen

Maak een gratis Jam Jam-account, open dan Instellingen, API-sleutels in de app (mobiel of web) en maak een sleutel aan. Die begint met jj_live_ en wordt maar één keer getoond: kopieer hem meteen. Tot 5 sleutels per account, op elk moment intrekbaar.

Fouten

Elke fout, op elke route, is een application/problem+json-object (RFC 9457) met een stabiel code-veld waarop een client kan vertakken: quota-exhausted, rate-limited, unsupported-pair, not-found... De volledige catalogus staat in het OpenAPI-schema (components.schemas.Problem).

Bewaartermijn

Geüploade bestanden en gegenereerde resultaten worden 24 uur na het aanmaken van de job verwijderd. Niets wordt langer bewaard, inclusief mislukte jobs. Het ophalen van een resultaat na dat venster levert 410 Gone op.

Open source-credits

Deze API steunt op echte open source-engines. Eerlijk gebruikt, met naam gecrediteerd:

Modellen en data

Sprekerdetectie (Studio): stemafdrukmodel WeSpeaker ResNet34-LM, WeNet-project (github.com/wenet-e2e/wespeaker), getraind op VoxCeleb (VGG, Universiteit van Oxford), licentie CC BY 4.0 (creativecommons.org/licenses/by/4.0/). Gewijzigd door Jam Jam: gewichten omgezet naar halve precisie.