Skip to main content

Engineering

Multi-voice Reddit threads: usernames to voices

Familiar voices are grouped at a 0.82 median accuracy vs 0.34 for unfamiliar ones, so ThreadCast pins a consistent, deterministic voice to each Reddit username.

7 min read Updated Jun 5, 2026
ThreadCast voice picker showing five voices with toggles, mapped to different Reddit usernames.

Reddit threads are conversations. AMAs especially: one verified guest, dozens of questioners, every reply needs to be obviously not the previous one. A single robotic voice reading both sides of a 200-comment AMA sounds exhausting in about ninety seconds. So ThreadCast does not do that. Each unique commenter gets a consistent voice, deterministic across the entire thread and across every other thread you will ever read by them.

TL;DR. ThreadCast hashes each username with FNV-1a, maps the hash to a voice from your enabled voice set, and reuses that mapping forever. Same u/foo always maps to the same voice, every thread, every device. You can pick how many voices rotate (1 to 11), toggle individual voices, and pin specific voices to specific users via Author overrides.

Why does multi-voice make a difference?

The human ear locks onto voice identity fast. In a 2022 voice-sorting study, Memory & Cognition found that listeners familiar with a talker grouped that talker’s recordings at a 0.82 median accuracy, versus 0.34 for unfamiliar listeners. When u/AskMeAboutChimps answers a question and u/randomCuriousPerson follows up, your brain instantly knows who is talking, the same way you know which of two friends just spoke without looking up.

Single-voice narration loses that signal entirely. You hear a wall of paragraphs and have to actively track who is the OP. Multi-voice gives you back the conversational structure for free.

It also helps with scan listening. If you are playing a long thread in the background, multi-voice lets you tune in only when something catches your ear (different voice means different person, which means potentially worth your attention). Single-voice forces you to listen to everything. The effect compounds at night, when sleep mode slows the rate and layers ambient sound under the rotating voices.

How does ThreadCast pick a voice for a username?

A 32-bit hash. Each Reddit username is fed through FNV-1a, a fast non-cryptographic hash function. In 2026, the RFC Editor published it as RFC 9923, an informational reference (not a standards-track document), describing FNV as “fast” with “good dispersion.” The output is reduced modulo the number of enabled voices, and that index picks the voice. Same input always produces the same output, so u/foo gets the same voice on Tuesday’s thread that they got on Monday’s, on a different post, in a different subreddit, on a different device.

Why FNV-1a? Three things:

  1. Deterministic. No randomness. The mapping is reproducible without storing it anywhere.
  2. Distribution. It spreads usernames across voices evenly. With five voices enabled, our hash-bucket tests put roughly 20% of users on each voice, with no obvious clustering.
  3. Speed. It is a few cycles per character. We hash dozens of usernames per page; it is free in performance terms.

The OP gets a special pinned voice (configurable in settings) so they are always immediately identifiable as the original author. Everyone else rotates through the remaining enabled voices.

How do voice counts compare across engines?

It depends on the engine. The extension ships four on-device engines, all free: System voices (OS-dependent, rotate 3 to 5), AI neural CPU (5 hand-picked English voices), AI neural GPU Lite (5 English accents, a lighter install), and AI neural GPU (11 voices for the widest casting bench). The table below shows what to enable for each.

EngineVoices shippedRecommended rotationWhy
System voicesDozens (OS-dependent)3 to 5OS voices often sound similar at the edges; more than 5 reduces distinction
AI neural CPU5 hand-picked ENAll 5We picked 5 for clear timbre separation; use them all
AI neural GPU Lite5 EN accentsAll 5Lighter WebGPU install, quality close behind the full GPU tier
AI neural GPU11 EN5 to 8 typical, 11 for AMAsWider casting bench: 4 British + 2 American male + 5 American female

The popup has a slider for “How many voices to rotate” with a live preview. Drag it, listen to a few seconds, and stop where it sounds right. You can also toggle individual voices on or off if you do not like one specific voice in your enabled set, or if a voice is too similar to your own and feels weird.

For the engine details themselves, see our guide to ThreadCast’s voice engines.

Why not just use a random voice per comment?

We tried. It is worse. If u/foo posts three replies in a thread and each one sounds different, your brain reads it as three different people. The illusion of conversation breaks. Consistency is the whole point. The voice is the identity tag.

Random-per-comment also makes long threads with recurring users (active mods, AMA guests answering follow-ups) feel chaotic. Deterministic-per-username is the only mapping that scales.

How are male and female voices assigned to usernames?

ThreadCast supports gender-aware voice grouping for European usernames where the first name signals gender. We maintain a small dictionary of common French and English first names, built in part from the U.S. Social Security Administration’s Popular Baby Names data, a public-domain set drawn from a 100% sample of card applications as of March 2026, and check whether the username starts with one of them. If u/Sophie_2003 posts, ThreadCast prefers a female voice from your enabled set. If u/MarcusAurelius posts, ThreadCast prefers a male voice. If the username does not match the dictionary (which is most of them, since Reddit usernames are mostly opaque), ThreadCast falls back to plain hash-based assignment.

You can disable gender-aware grouping in settings if you want pure hash-based distribution. We default it on because the few users it catches feel noticeably more natural.

Can I pin a specific voice to a specific user?

Yes. That is what Author overrides are for. Open Settings → Author overrides, type a username, pick the voice, save. From then on, that user always gets that voice on this device, regardless of the hash. If you have not set it up yet, install the ThreadCast extension and the override panel lives in the popup. Overrides are useful for:

  • AMA guests. Pin Cillian Murphy’s account to your favorite British voice before opening the AMA.
  • Recurring posters you follow. If u/AskMeAboutChimps keeps showing up in your r/IAmA reading, pick a voice you actually like for them.
  • Mods you trust. Subreddit moderators often write the most useful thread context. Pin a clear, calm voice to them.
  • Yourself. If you reply in threads you re-listen to, pin a voice to your own username.

Overrides are stored locally and (optionally) sync via Chrome’s built-in storage.sync API (Google, 2024). In an upcoming Premium release, overrides will also sync via your ThreadCast account, so the queue and preferences carry across your devices (the voices themselves always stay on-device).

What happens for one-letter or numeric usernames?

The hash works on any string, so even u/x or u/1234567 gets a deterministic voice assignment. We do not filter or blacklist any username. Every commenter gets a voice, no exceptions.

For deleted accounts ([deleted]), all of them collapse to the same voice (the hash of the literal string [deleted]), so you instantly hear “this is a deleted account” rather than wondering who that was.

Does the same username get the same voice across devices?

Yes, given the same enabled voice set. The hash is deterministic, the modulo math is deterministic, so the only variable is which voices you have enabled. On two devices with the same engine and the same enabled voices, u/foo will sound identical. If you enable different voices on a different device, the hash maps to the same index but the voice at that index might be different.

In practice, ThreadCast syncs your settings (including enabled voice set) via Chrome’s built-in sync, so most people see consistent voicing across their personal devices automatically.

Does multi-voice cost more performance?

Negligible. The hashing is microseconds; the only real cost is loading the voice you do not have warm yet. ThreadCast pre-warms the most-likely-next voices in the background while the current segment is playing, so by the time u/somerandomguy shows up three comments later, their voice is already loaded.

In our own testing on a mid-range laptop, switching voices mid-stream on AI neural CPU takes roughly 50ms (the model is shared, so only the voice embedding switches). On AI neural GPU, voice switching is essentially free in our measurements, since every voice embedding ships inside the same one-time model download (about 325MB for the full GPU tier).

Sources

  • Njie, S., Lavan, N., and McGettigan, C., “Talker and accent familiarity yield advantages for voice identity perception: A voice sorting study,” Memory & Cognition (2022). pmc.ncbi.nlm.nih.gov. Retrieved 2026-06-05.
  • Noll, L., Vo, K., Eastlake 3rd, D., and Hansen, T., “RFC 9923: The FNV Non-Cryptographic Hash Algorithm” (Informational), RFC Editor (2026). rfc-editor.org. Retrieved 2026-06-05.
  • Google, “chrome.storage API reference (Chrome Extensions)” (2024). developer.chrome.com. Retrieved 2026-06-05.
  • U.S. Social Security Administration, “Popular Baby Names” (2026). ssa.gov. Retrieved 2026-06-05.

Multi-voice is one of those features you do not notice until you turn it off. We doubt anyone will.

Frequently asked questions

Can I turn multi-voice off?

Yes. Settings → Multi-voice → 'Use one voice.' Set to your favorite voice and the entire thread reads in that voice. Useful if you find multi-voice distracting or you are on a long-haul flight and just want one consistent voice all night.

Why does the OP keep getting a different voice than the commenters?

That is the OP-pinned-voice feature. The original poster always gets a specific voice (configurable in Settings → Voices → 'OP voice'), separate from the rotating set. It makes the thread structure obvious: OP voice means original post and any OP follow-ups; rotating voices mean everyone else.

My author override did not apply. Why?

Open Settings → Author overrides and confirm the username matches exactly. Reddit usernames are case-insensitive but our override store is case-sensitive in some browsers. If u/Foo does not work, try u/foo. Bug fix in progress.

Does multi-voice work in sleep mode?

Yes. Sleep mode just slows the rate to 0.85× and layers ambient sound underneath; the voice rotation logic is identical.

Will multi-voice work on ThreadCast for Android?

Yes. Same hash, same mapping logic, ported to the native Android audio pipeline. The mobile app ships System voices free, with the AI tiers (AI Lite, AI Plus, AI Studio) in ThreadCast Premium. Author overrides will sync via your account across devices in an upcoming Premium release. iOS is planned.

ThreadCast Team · Pixel Labs

Written and reviewed by the engineers building ThreadCast at Pixel Labs. We ship the Chrome extension, the Android app, and the on-device voice engines, and we test every feature on real Reddit threads before writing about it. About us →

#Engineering #Voices

Listen to Reddit aloud — free, on-device, no account.

Four voice engines, multi-voice threads, sleep mode with ambient sounds. Works on Chrome, Edge, Brave, and every Chromium browser.

Add ThreadCast to Chrome