GOESB

Create a profile

A profile is pure configuration — no audio, no code. It says exactly how a benchmark runs and is scored: which runtime, which model, which language, which metrics. Prefer the in-browser builder to skip hand-writing YAML — this page is the reference for what each field means.

Fields

Validated against schemas/benchmark-profile.schema.json in the runner repo.

FieldRequiredNotes
idYesLowercase, hyphenated, unique, permanent — e.g. whisper-medium-nl-batch.
versionYesSemver (1.0.0). Any scoring/run-logic change needs a new version — profiles are never edited in place.
titleNoFree-text display name.
benchmark_typeYesbatch, streaming, or conversation.
languageNoBCP-47 (nl, nl-NL, en-US, ...). Any language is supported — none is hardcoded.
runtime.nameYesThe adapter id — faster-whisper, whisper.cpp, or vosk today.
runtime.min_versionNoMinimum adapter version this profile assumes.
model.nameYese.g. whisper-medium.
model.quantization / beam_size / temperature / vadNoModel-level knobs; only set what the runtime actually uses.
configuration.threads / chunk_ms / streamingNoRunner-level execution settings.
normalization.ruleset_idNoPer-language scoring ruleset, e.g. goesb-en-v1, goesb-nl-v1. New language usually means a new ruleset too.
scoring.primary_metricYesThe metric leaderboards rank by, e.g. wer.
scoring.tie_breakersNoOrdered list of metrics used to break ties.
metricsYesArray of metric ids this profile reports (min. 1).
changelogNoArray of {version, notes} — required once you bump version past 1.0.0.

Worked example

A real official profile — Whisper Medium, Dutch, batch:

id: whisper-medium-nl-batch
version: 1.0.1
title: Whisper Medium Dutch (Batch)
benchmark_type: batch
language: nl-NL
runtime:
  name: faster-whisper
  min_version: "1.0.0"
model:
  name: whisper-medium
  quantization: int8
  beam_size: 5
  temperature: 0.0
  vad: true
configuration:
  threads: 4
normalization:
  lowercase: true
  remove_punctuation: true
  expand_numbers: true
  ruleset_id: goesb-nl-v1
scoring:
  primary_metric: wer
  tie_breakers: [real_time_factor, energy_wh]
metrics: [wer, cer, real_time_factor, cpu_pct, ram_mb, energy_wh, temperature_c]
changelog:
  - version: 1.0.0
    notes: Initial profile.
  - version: 1.0.1
    notes: Added temperature_c (M2) now that the hwmon probe exists.

Submit it

No local git setup needed for a single file — the GitHub web editor works fine:

  1. Fork taktx-io/GOESB on GitHub.
  2. In your fork, create profiles/<your-id>/profile.yaml (press . on the repo page to open the in-browser editor, or use Add file → Create new file).
  3. Paste your YAML, matching the fields above.
  4. Commit directly to a new branch on your fork, then open a pull request.

Prefer the command line? Clone the repo (see the how-to guide), add your file, then:

goesb validate profiles/<your-id>/profile.yaml
python scripts/validate_assets.py

git checkout -b add-<your-id>-profile
git add profiles/<your-id>/profile.yaml
git commit -m "Add <your-id> profile"
git push -u origin add-<your-id>-profile
# then open a PR from your fork on GitHub

A reviewer checks it against the same criteria as any code contribution — security, neutrality, correctness, reproducibility — see the Contribute page.