Multiple MLX Community TTS models generate the same eval set, then Gemini scores every sample.
Demo Run view is selected.
What This Demonstrates
This sample shows the model-comparison AutoJudge workflow: build or load one shared
TTS eval set, synthesize the same cases with multiple local MLX Community models,
send every generated audio sample plus target text to Gemini, and review a leaderboard
with model rankings, category averages, weakest segments, and per-sample diagnostics.
1. Cases JSONL cases with target text, turns, and metadata.
3. Judge Gemini listens three times per sample and returns strict JSON scores.
4. Leaderboard HTML and JSONL compare models, categories, individual samples, and provenance.
How To Run It
Run each compatible TTS wrapper on the same case file and write each run under a distinct
output directory. Source GEMINI_API_KEY at runtime; do not commit it to the repository.
One JSON result per audio sample: averaged score, individual judge scores, reason, categories, notes, status, and provenance.
judge-report/report.html
Human-readable report with aggregate scores, baseline deltas, weakest segments, likely fix areas, priority cases, and searchable/sortable sample-by-sample details.
Sample Report Preview
Models3
Shared Eval Cases265
Judge Samples3x
Top Avg91.2
Lowest Avg84.7
Total Judgments2385
Eval Set Samples
The public demo eval set contains 265 synthetic, public-safe cases grouped into research-backed
TTS dimensions. Each category below contributes five shared cases that every model synthesizes
before Gemini judges the generated audio.
Paralinguistics5 cases
tts-paralinguistics-reassurance-001
Slice:emotion_reassurance
Prompt: Read this as a calm, reassuring assistant after a user reports a stressful day.
Target: Take a slow breath with me. You handled a lot today, and we can take the next step one at a time.
tts-paralinguistics-excitement-001
Slice:emotion_excitement
Prompt: Read this with bright excitement, but keep it intelligible and not shouty.
Target: Great news, the prototype passed every smoke test, and the demo is ready for the morning review.
tts-paralinguistics-urgency-001
Slice:emotion_urgency
Prompt: Read this as urgent but composed operations guidance.
Target: Please leave the lab through the north door now, and meet the safety lead by the blue sign.
tts-paralinguistics-uncertainty-001
Slice:emotion_uncertainty
Prompt: Read this with polite uncertainty, as if confirming a tentative answer.
Target: I think the meeting moved to room four twelve, but I should confirm before you walk over.
tts-paralinguistics-confidence-001
Slice:emotion_confidence
Prompt: Read this as a confident product update, warm but direct.
Target: The release is stable, customer migration is complete, and support coverage is ready for launch.
Instruction Following5 cases
tts-instruction-following-exact-punctuation-001
Slice:punctuation_intonation
Prompt: Read exactly what follows, preserving the comma pause and the final question intonation.
Target: Before we ship, can you check the backup, the logs, and the alert threshold?
tts-instruction-following-spelled-token-001
Slice:spelled_tokens
Prompt: Read the support code clearly. Spell each letter in the code instead of turning it into a word.
Target: Your support code is B Q seven four. Please repeat B Q seven four to confirm.
tts-instruction-following-do-not-say-001
Slice:do_not_say_constraint
Prompt: Read only the final customer-facing sentence. Do not say the bracketed note.
Target: Your refund has been approved and should appear within three business days.
tts-instruction-following-pronunciation-001
Slice:pronunciation_directive
Prompt: Read the name as MAY-uh and keep the rest natural.
Target: Maya will join the design review after lunch and present the updated onboarding flow.
tts-instruction-following-emphasis-001
Slice:word_emphasis
Prompt: Read this sentence with emphasis on only the word final.
Target: Please upload the final invoice before closing the account.
Information Tuning5 cases
tts-information-tuning-dense-numbers-001
Slice:dense_numbers
Prompt: Read this operational update so the numbers are easy to catch on first listen.
Target: Revenue rose 12.4 percent to 8.6 million dollars, while churn fell from 3.1 percent to 2.7 percent.
tts-information-tuning-steps-001
Slice:procedural_steps
Prompt: Read this as step-by-step setup guidance with crisp boundaries between steps.
Target: First, plug in the hub. Second, wait for the blue light. Third, open the app and tap Pair new device.
tts-information-tuning-dates-times-001
Slice:dates_times
Prompt: Read this calendar update so the date, time, and time zone are unmistakable.
Target: The maintenance window starts Thursday, July ninth, at 10:30 PM Pacific time.
tts-information-tuning-units-001
Slice:units_measurements
Prompt: Read this lab note with the units clear and separate from the values.
Target: Add 2.5 milliliters of buffer, heat the sample to 37 degrees Celsius, and wait eight minutes.
tts-information-tuning-safety-critical-001
Slice:safety_critical_wording
Prompt: Read this safety-critical instruction with no casual tone.
Target: Do not restart the compressor until the pressure gauge reads zero and the lockout tag is removed.
Storytelling Dialogue5 cases
tts-storytelling-bedtime-001
Slice:narrative_gentle
Prompt: Read this like the opening of a gentle bedtime story.
Target: At the edge of the quiet harbor, a tiny lantern blinked awake and painted a path across the water.
tts-storytelling-suspense-001
Slice:narrative_suspense
Prompt: Read this short scene with light suspense, using pauses without becoming melodramatic.
Target: The elevator stopped between floors. For three seconds, nobody moved. Then the emergency phone began to ring.
tts-storytelling-character-001
Slice:character_consistency
Prompt: Read this as a cheerful shopkeeper greeting a regular customer.
Target: Back again for the cinnamon rolls, Sam? I saved the corner piece because I know it is your favorite.
tts-storytelling-conversational-001
Slice:conversational_spontaneity
Prompt: Read this like spontaneous dialogue, with natural hesitation but no filler words added.
Target: I was going to take the train, but the rain stopped, so I might walk instead.
tts-storytelling-roleplay-001
Slice:roleplay_guide
Prompt: Read this as a calm museum guide introducing an exhibit.
Target: This small brass compass crossed two oceans before it found its way into the captain's desk.
Speech Steerability5 cases
tts-speech-steerability-formal-001
Slice:formal_register
Prompt: Read this in a formal executive briefing voice.
Target: The migration remains on schedule, with the database cutover planned for Friday at 22:00 UTC.
tts-speech-steerability-friendly-001
Slice:friendly_register
Prompt: Read this as a friendly neighborhood guide, casual but still clear.
Target: Turn left after the bakery, walk past the little green gate, and you will see the library on the corner.
tts-speech-steerability-slow-001
Slice:slow_pace
Prompt: Read this slowly enough for a beginner to follow.
Target: Place the cursor at the end of the line, press return, and type the next command on a new line.
tts-speech-steerability-volume-001
Slice:soft_volume
Prompt: Read this like a quiet library announcement, audible but gentle.
Target: The reading room will close in ten minutes, and checked-out materials can be returned at the front desk.
tts-speech-steerability-pitch-001
Slice:pitch_control
Prompt: Read this with a slightly higher, brighter pitch while staying natural.
Target: Welcome to the morning workshop; coffee is ready, and the first session begins in five minutes.
Robustness Intelligibility5 cases
tts-robustness-intelligibility-rare-words-001
Slice:rare_words
Prompt: Read these rare words clearly in one fluent sentence.
Target: The archivist cataloged the susurrus, the palimpsest, and the calliope in a single note.
tts-robustness-intelligibility-acronyms-001
Slice:acronyms
Prompt: Read each acronym clearly without turning the sequence into a word.
Target: The SLA, GPU, and API limits changed after the QA review.
tts-robustness-intelligibility-code-like-001
Slice:code_like_strings
Prompt: Read this code-like string as support text, preserving symbols verbally.
Target: Set retry count to three, then enter key dash alpha underscore nine in the token field.
tts-robustness-intelligibility-long-text-001
Slice:long_text
Prompt: Read this longer note with steady breath control and no rushed ending.
Target: After you save the draft, review the attachment list, confirm the recipient group, and schedule the message for Monday morning so the team sees it before standup.
tts-robustness-intelligibility-multilingual-001
Slice:multilingual_snippet
Prompt: Read this English sentence with the short Spanish greeting clear and respectful.
Target: Start the tour by saying buenos dias, then explain that the garden path is open until sunset.
Speaker Voice Consistency5 cases
tts-speaker-voice-consistency-persona-001
Slice:stable_persona
Prompt: Read this as the same calm technical mentor across both sentences.
Target: You found the right log file. Now check the final warning line and compare it with the deployment note.
tts-speaker-voice-consistency-age-cue-001
Slice:age_role_cue
Prompt: Read this as an experienced senior advisor, steady and measured.
Target: The safest decision is to pause the rollout, review the audit trail, and restart only after the owner signs off.
tts-speaker-voice-consistency-dialogue-001
Slice:single_voice_dialogue
Prompt: Read both quoted lines using one narrator voice, not two separate speakers.
Target: She said the train was late, and he replied that the platform had changed.
tts-speaker-voice-consistency-longer-001
Slice:timbre_stability
Prompt: Read this longer update with the same voice quality from beginning to end.
Target: The pilot group finished onboarding yesterday, the second group starts on Wednesday, and the support team will collect feedback after the first week.
tts-speaker-voice-consistency-soft-spoken-001
Slice:soft_spoken_consistency
Prompt: Read this as a soft-spoken support agent while keeping the voice stable.
Target: I can help reset the device now, and I will stay on the line until the status light turns green.
Multilingual Code Switching5 cases
tts-multilingual-code-switching-spanish-001
Slice:spanish_phrase
Prompt: Read the English sentence with the Spanish phrase clear and natural.
Target: Please tell the group gracias por venir, then invite everyone to take a seat.
tts-multilingual-code-switching-french-001
Slice:french_phrase
Prompt: Read this with a clear French phrase inside the English sentence.
Target: The guide pointed to the small cafe and said bon appetit before the tasting began.
tts-multilingual-code-switching-names-001
Slice:international_names
Prompt: Read the international names carefully without flattening them into English-only sounds.
Target: Aiko, Saoirse, and Joaquin will review the agenda before the workshop starts.
tts-multilingual-code-switching-loanwords-001
Slice:loanwords
Prompt: Read the borrowed words naturally inside the English sentence.
Target: The menu includes ramen, croissants, and tacos, so please ask about allergies before ordering.
Prompt: Read this bilingual direction clearly for a public announcement.
Target: Boarding is now open at gate five; pasajeros con ninos may come forward first.
Long Form Discourse5 cases
tts-long-form-discourse-paragraph-001
Slice:paragraph_flow
Prompt: Read this paragraph with stable pacing and clear paragraph-level flow.
Target: The new dashboard will launch in stages. First, managers will see daily summaries. Next, analysts will receive export tools. Finally, the support team will add notes from customer calls.
tts-long-form-discourse-list-001
Slice:list_structure
Prompt: Read this list as a coherent update, not disconnected fragments.
Target: Three items changed this week: the intake form is shorter, the approval email is clearer, and the archive link now opens in a new tab.
tts-long-form-discourse-parenthetical-001
Slice:parenthetical_aside
Prompt: Read this with the parenthetical aside lighter than the main message.
Target: The backup finished at midnight, the checksum matched, and the archive, which is stored in cold storage, is ready for audit.
tts-long-form-discourse-topic-shift-001
Slice:topic_transition
Prompt: Read this with a natural shift from problem to resolution.
Target: The first import failed because the file header was missing. After the team regenerated the export, the second import completed without warnings.
tts-long-form-discourse-endurance-001
Slice:endurance_long_sentence
Prompt: Read this longer sentence without fading, clipping, or rushing the ending.
Target: Before the training starts, confirm that the projector is connected, the captions are enabled, the microphone is charged, and the remote attendees can hear the room clearly.
Text Normalization5 cases
tts-text-normalization-currency-001
Slice:currency_percentages
Prompt: Read this billing update with the currency, percentage, and comparison easy to catch.
Target: The monthly plan changes from $19.99 to $24.50, while the annual discount stays at 18 percent.
tts-text-normalization-url-email-001
Slice:url_email_punctuation
Prompt: Read the support contact carefully, spelling punctuation verbally where needed.
Target: Send the log to qa-team@example dot org, then open status dot example slash incident seven.
tts-text-normalization-version-001
Slice:versions_ordinals
Prompt: Read this release note so version numbers and ordinal labels stay distinct.
Target: Install version 2.10.3 after the fourth database patch, not version 2.1.3.
tts-text-normalization-symbols-001
Slice:symbols_math
Prompt: Read this formula-like instruction naturally while verbalizing the symbols.
Target: Set A plus B greater than C, then mark the result as pass slash review.
tts-text-normalization-address-001
Slice:addresses_abbreviations
Prompt: Read this delivery address with abbreviations expanded clearly but not awkwardly.
Target: Bring the sample to 405 North Pine Street, Suite 8B, before 5 PM.
Acoustic Contexts5 cases
tts-acoustic-contexts-phone-001
Slice:telephone_support_clarity
Prompt: Read this as a phone support agent, compact but still fully intelligible.
Target: I found the ticket, and the replacement unit should ship after the warehouse scan finishes.
tts-acoustic-contexts-pa-001
Slice:public_address_projection
Prompt: Read this as a public address announcement with firm projection and clean timing.
Target: Train twelve is now boarding on platform three; please keep bags clear of the yellow line.
tts-acoustic-contexts-soft-001
Slice:quiet_audible_reminder
Prompt: Read this as a quiet late-night reminder that remains audible and articulate.
Target: Your alarm is set for six fifteen, and the kitchen lights will stay off until sunrise.
tts-acoustic-contexts-mobile-001
Slice:mobile_navigation_clarity
Prompt: Read this navigation prompt for a moving listener, with the turn and distance easy to catch.
Target: In half a mile, use the right lane, then turn onto Harbor Drive after the second light.
tts-acoustic-contexts-radio-001
Slice:radio_dispatch_clarity
Prompt: Read this as a clean radio dispatch, clipped enough for urgency but not robotic.
Target: Unit four, hold at the west entrance until the loading bay is clear.
Spontaneous Conversation5 cases
tts-spontaneous-conversation-hesitation-001
Slice:spoken_hesitation
Prompt: Read this like a natural support conversation with mild hesitation, but do not add any extra filler words.
Target: I, uh, I think we should restart the router first, then check whether the status light comes back.
tts-spontaneous-conversation-repair-001
Slice:self_correction_repair
Prompt: Read this as a quick self-correction in conversation, with the correction easy to notice.
Target: The pickup is at gate fourteen, sorry, gate forty, near the blue kiosk.
tts-spontaneous-conversation-backchannel-001
Slice:backchannel_acknowledgment
Prompt: Read this as a helpful agent acknowledging the caller before giving the action.
Target: Mm-hmm, I see the issue now; you were charged twice, and I can reverse the duplicate today.
tts-spontaneous-conversation-pause-001
Slice:thinking_pause_resume
Prompt: Read this with a natural thinking pause at the three dots, then continue cleanly.
Target: Let me check the schedule... okay, the earliest opening is Wednesday afternoon.
tts-spontaneous-conversation-restart-001
Slice:conversational_restart
Prompt: Read this as a conversational restart that is firm but not alarming.
Target: Wait, no, keep the charger plugged in until the update finishes.
Affective Transitions5 cases
tts-affective-transitions-relief-001
Slice:concern_to_relief
Prompt: Read this with a clear shift from concern to relief, without sounding theatrical.
Target: I was worried when the alert fired, but the backup completed and the service is stable again.
tts-affective-transitions-apology-001
Slice:apology_to_confidence
Prompt: Read this as a sincere apology followed by calm confidence.
Target: I am sorry for the delay; your replacement has shipped, and the tracking link is active now.
tts-affective-transitions-warning-001
Slice:friendly_to_warning
Prompt: Read this with friendly setup that becomes a firm warning on the final clause.
Target: You can keep editing the draft, but do not close the tab until the upload finishes.
tts-affective-transitions-surprise-001
Slice:surprise_to_neutral
Prompt: Read this with brief surprise, then settle into a matter-of-fact update.
Target: Oh, that changed quickly; the new room is 214, and the host will meet you there.
tts-affective-transitions-empathy-001
Slice:empathy_to_instruction
Prompt: Read this with empathy first, then move into concise practical guidance.
Target: That sounds frustrating, and the fastest fix is to reset the password from the signed-in device.
Punctuation Prosody5 cases
tts-punctuation-prosody-quotation-001
Slice:quoted_speech_boundaries
Prompt: Read this with clear quoted-speech framing while keeping one narrator voice.
Target: Mina said, quote, the build is green, unquote, and then reopened the release checklist.
tts-punctuation-prosody-colon-001
Slice:colon_semicolon_grouping
Prompt: Read this with the colon introducing a short list and the semicolon marking a stronger pause.
Target: Bring three items: a badge, a charger, and a notebook; leave the spare laptop at home.
tts-punctuation-prosody-dash-001
Slice:aside_phrase_grouping
Prompt: Read this with the dash as a quick aside, then return to the main sentence.
Target: The sensor passed calibration - just barely - and the final reading stayed within tolerance.
tts-punctuation-prosody-question-001
Slice:question_answer_contour
Prompt: Read the first sentence as a real question and the second as a calm answer.
Target: Can you hear the alert from the lobby? If not, move closer to the east speaker.
tts-punctuation-prosody-ellipsis-001
Slice:ellipsis_pause_resume
Prompt: Read this with a brief ellipsis pause, then resume without making the silence too long.
Target: The lights flickered... then the backup power came on and the hallway signs returned.
Domain Terminology5 cases
tts-domain-terminology-clinical-001
Slice:clinical_terms
Prompt: Read this clinical handoff with the medication and lab terms clear but not overpronounced.
Target: The patient tolerated metformin, reported mild nausea, and the hemoglobin A1C result is pending.
tts-domain-terminology-legal-001
Slice:legal_clause_terms
Prompt: Read this legal update with formal clarity and distinct clause boundaries.
Target: The addendum supersedes section 4B, but the indemnity clause and audit provision remain unchanged.
tts-domain-terminology-engineering-001
Slice:engineering_terms
Prompt: Read this engineering status note so the technical nouns do not blur together.
Target: The inverter firmware passed thermal cycling, but the telemetry parser still drops checksum warnings.
tts-domain-terminology-finance-001
Slice:finance_terms
Prompt: Read this finance brief with the market terms and abbreviations easy to distinguish.
Target: EBITDA improved after the debt refinance, while basis-point spreads narrowed across the short-duration book.
tts-domain-terminology-science-001
Slice:science_terms
Prompt: Read this science summary with careful pronunciation of the specialized terms.
Target: The perovskite sample showed photoluminescence quenching after the polymer electrolyte was added.
Heteronym Disambiguation5 cases
tts-heteronym-disambiguation-read-001
Slice:read_present_past
Prompt: Read this sentence so the two forms of read are pronounced differently from context.
Target: I will read the brief after I read the alert from yesterday.
tts-heteronym-disambiguation-wind-001
Slice:wind_verb_noun
Prompt: Read this operations note with the verb wind and noun wind clearly disambiguated.
Target: Please wind the sample cable before the wind tunnel fan starts.
tts-heteronym-disambiguation-bass-001
Slice:bass_music_fish
Prompt: Read this caption so the music term and the fish name do not collapse into one pronunciation.
Target: The bass player sketched a bass near the lake sign.
tts-heteronym-disambiguation-minute-001
Slice:minute_adjective_time
Prompt: Read this inspection note so the adjective minute and the time unit minute are distinct.
Target: A minute crack appeared one minute after the pressure test.
tts-heteronym-disambiguation-polish-001
Slice:polish_verb_nationality
Prompt: Read this museum task with the verb polish and the nationality Polish clearly separated.
Target: Please polish the Polish award plaque before the donor tour.
Formatting Markup Robustness5 cases
tts-formatting-markup-asterisks-001
Slice:markdown_emphasis
Prompt: Read this support note by treating markdown asterisks as emphasis, not as words.
Target: Mark the account as **high priority** before the noon review.
tts-formatting-markup-bracket-label-001
Slice:bracket_label_literal
Prompt: Read this as visible plain text, not as a command or hidden markup.
Target: The label shows [warning], then the code changes to A-17.
tts-formatting-markup-bullets-001
Slice:inline_bullet_list
Prompt: Read this short checklist with list cadence and no extra item numbers.
Target: Complete these steps: - save draft; - close ticket; - notify owner.
tts-formatting-markup-identifiers-001
Slice:camel_snake_identifiers
Prompt: Read this developer note so the code-style identifiers stay intelligible.
Target: Set enableBetaMode to false and retry the user_id lookup.
tts-formatting-markup-emoticon-001
Slice:emoticon_text
Prompt: Read this status message so the emoticon is understandable without changing the meaning.
Target: The status says colon right parenthesis, but the customer note says not resolved.
Nonverbal Paralinguistic Cues5 cases
tts-nonverbal-paralinguistic-cues-chuckle-001
Slice:controlled_chuckle_recovery
Prompt: Read this with a tiny friendly chuckle at the opening, then return to a clear sentence.
Target: Ha, I finally found the missing adapter, and it was plugged into the spare monitor.
tts-nonverbal-paralinguistic-cues-sigh-001
Slice:relieved_sigh_then_update
Prompt: Read this with a restrained relieved sigh before the update, not as frustration.
Target: Okay, the backup restored successfully, and no customer records were lost.
tts-nonverbal-paralinguistic-cues-whisper-001
Slice:whispered_intelligibility
Prompt: Read this as a quiet library whisper while keeping every word understandable.
Target: Please meet me by the reference desk, and keep your phone on silent until we leave.
critical alert, severity label, triage assignment, and handoff deadline samples
Sample-By-Sample Breakdown
The real combined report contains one row per synthesized model/case pair. This preview shows
representative rows across models, categories, slices, and score bands from the 795 generated
samples.
Case
Model
Category / Slice
Score
Label
Reason
tts-storytelling-bedtime-001-chatterbox
mlx-community/chatterbox-turbo-6bit
storytelling_dialogue narrative_gentle
95 judge samples: 94, 96, 95
accurate
Highly natural, fluent, and faithful bedtime narration with gentle pacing.
English announcement is clear, but the Spanish phrase is less natural and needs pronunciation review.
tts-information-tuning-dates-times-001-qwen3-tts
mlx-community/Qwen3-TTS-12Hz-0.6B-Base-4bit
information_tuning dates_times
72 judge samples: 70, 73, 73
inaccurate
The date and time remain partly intelligible, but dense timing details are not easy to catch.
tts-paralinguistics-urgency-001-qwen3-tts
mlx-community/Qwen3-TTS-12Hz-0.6B-Base-4bit
paralinguistics emotion_urgency
70 judge samples: 69, 70, 71
inaccurate
The prompt asks for urgent but composed delivery, but the output sounds flat and under-signals urgency.
Representative Result JSON
{
"case_id": "tts-storytelling-bedtime-001-local-tts",
"task": "tts_naturalness",
"provider": "gemini",
"overall_score": 95,
"label": "accurate",
"semantic_error_summary": "The audio is highly natural and fully faithful to the target text.",
"error_categories": ["no_error"],
"researcher_notes": [
"The voice sounds highly natural with clear pronunciation and no artifacts."
],
"metadata": {
"synthesis_provider": "local_chatterbox",
"synthesis_model": "mlx-community/chatterbox-turbo-6bit",
"synthesis_voice": "af_heart",
"synthesis_lang_code": "en",
"eval_category": "storytelling_dialogue",
"sample_kind": "local_synthetic_tts",
"judge_sample_count": 3,
"judge_sample_scores": [94, 96, 95],
"judge_sample_average": 95.0
}
}
How To Read The Report
Start with average score and label counts, then inspect score breakdowns by
the model leaderboard, then inspect category-level rankings to find where one generator loses
to another on the same eval set. Use the Weakest Segments cards to find low-scoring
model/category/slice groups, then use the Model-Category Action Matrix to route the lowest
model/category pairs to likely solution areas, taxonomy focus areas, source-basis signals, and
representative samples. Use the top diagnostics to confirm repeated issue clusters such as
pronunciation errors, artifact classes, or weak slices. Finally, filter the per-sample rows by
label, status, model, category, or TTS slice, search for an issue or case id, sort by score,
and inspect the averaged score, the three underlying Gemini scores, target text hash,
generated-audio provenance, and any researcher notes.
This page is a committed sample artifact. Real run outputs should stay under
ignored runs/ directories unless the audio, text, and metadata are
explicitly safe to publish.