Public
Remixed
Accent & dialect guessing game — listen and guess the region
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.

Where Are You From?

An accent & dialect guessing game. Listen to a short spoken clip and guess which accent / region it's from — British vs. Australian English, French vs. Québécois, Brazilian vs. European Portuguese, and more.

The "clips" are generated on the fly by your browser's built-in speech synthesizer using regional locale voices (en-GB, fr-CA, ja-JP, …). That means:

  • No audio files to host and nothing to download.
  • The voices are computer-generated, so no real person is being recorded or labeled.
  • The game is about language and place (dialect/accent), not about people's identities.

How to play

  1. Press Start quiz.
  2. A clip plays automatically — press 🔊 to replay it.
  3. Pick the accent you think you heard from the four choices.
  4. Build a streak for bonus points. After 10 rounds, save your score to the leaderboard.

Voices vary by device

Available locale voices depend on your operating system and browser. If your device only has a few regional voices installed, the quiz automatically hides the accents it can't pronounce and tells you so. Chrome, Edge, and Safari tend to ship the widest selection.

Architecture

Rendering mermaid diagram...

File structure

index.ts                      ← Hono server: serves frontend + leaderboard API
frontend/
  index.html                  ← HTML shell (Twind + React)
  index.tsx                   ← React entrypoint
  accents.ts                  ← accent list (locales, flags) + phrases
  speech.ts                   ← Web Speech API wrapper + voice matching
  game.ts                     ← round building + scoring (pure logic)
  components/
    App.tsx                   ← layout
    Game.tsx                  ← the quiz: rounds, scoring, results, leaderboard

Extending it

  • Add accents/languages: append to ACCENTS in frontend/accents.ts and, for a new language, add phrases under the matching language key in PHRASES.
  • Change round count or scoring: TOTAL_ROUNDS in Game.tsx, scoreForAnswer in game.ts.
  • Harder mode: raise numChoices in makeRound, or group similar accents (e.g. only English variants) as distractors.