Stop Shipping English-Only Roblox NPC VO After TTS Languages Expand 2026
![]()
Here is the take: on August 11, 2026, Roblox text-to-speech started supporting ten languages in addition to English. From that day forward, shipping English-only NPC voice stopped being a default and became a decision — one you should be able to defend in writing, in a standup, in a partner call.
I am not saying every experience must voice every line in ten languages. I am saying the sentence “we only do English VO” now needs a reason next to it, and “we never thought about it” is not a reason. Most teams I watch do not have a reason. They have a habit.
This article is the refusal. It is not the multi-language TTS keep/hold evening, which teaches you the LocaleId-to-VoiceID smoke on a throwaway place. It is not the free localization toolkit listicle, which inventories the docs and utilities. This URL argues the position, gives you the audit that finds English-only leaks in a live experience, tiers which lines are worth speaking first, and hands you a script for saying no to “English is fine, everyone speaks English.”
Why this matters now
The update note is short and specific. Roblox amended the Text-to-Speech API full release announcement on August 11, 2026: the API “now supports 10 languages in addition to English: Spanish, German, Italian, French, Chinese, Hindi, Japanese, Arabic, Korean, and Portuguese.” The languages update thread carries the detail, and the Weekly Recap for August 10–14 pushed it in front of creators who do not read announcement threads.
Three things changed at once, and the combination is what removes your excuse:
- Coverage. Ten non-English languages, including the four largest non-English player blocks most Roblox experiences already serve.
- Capacity. The full-release post publishes the formula: max requests per minute per experience = 1 + 6 × number of concurrent users, with a 300-character cap per request. An experience with 10,000 CCU is allowed north of 60,000 requests per minute. Baseline utilization is free.
- Evidence. Creator Hub added Monitoring → Text-to-Speech dashboards showing request volume by API type and response/error rates by status code. You can now measure the thing instead of arguing about it.
Before August, “multi-language VO is expensive and unproven” was a defensible engineering position. After August, it is a claim that contradicts a published formula and a free dashboard. That is the whole argument. Everything below is how to act on it without overpromising.
What I am not claiming
- Not that synthetic speech equals human voice acting. It does not.
- Not that translation is free. Strings are labor; voice is the cheap part now.
- Not that every bark deserves ten languages. Most deserve two or three.
- Not that you should wire TTS to open player chat. See the moderation section.
The claim I am refusing
“Our players are mostly English speakers, so English-only VO is fine.”
Three problems with that sentence.
First, it is usually unmeasured. Teams say it without opening a locale breakdown. Player.LocaleId is right there. If your answer to “what share of sessions are non-English locale?” is a shrug, you do not have a player-base argument, you have a vibe.
Second, it confuses text with voice. Plenty of experiences already localize UI strings through localization tables and automatic translation, then narrate those same tutorials in English through TTS. The player reads Portuguese and hears British male #1. That is not “English-only by choice,” that is an inconsistency nobody audited.
Third, it borrows credibility from a cost that no longer exists. English-only used to mean “we cannot afford ten VO casts.” Nobody was ever going to hire ten casts for shopkeeper barks. The real comparison is synthetic English versus synthetic localized, and the delta there is a string table plus a VoiceID map — not a recording budget.
I have written this refusal pattern before for a different folklore: stop quoting the 90 FPS Steam Frame number and read Steamworks instead. Same disease, different platform. A team repeats a cost or requirement they never re-checked, and the docs quietly moved.
The excuse ladder
Every English-only defense I hear climbs one of these rungs. Here is what the primary sources actually say.
| Excuse | Reality check |
|---|---|
| “TTS only does English.” | Ten additional languages shipped August 11, 2026 per the full-release update. |
| “The rate limits will kill us.” | Published formula is 1 + 6 × CCU requests/minute per experience; 300 characters per request. Small experiences are constrained; mid-size ones are not. |
| “We cannot measure the impact.” | Creator Hub Monitoring → Text-to-Speech shows request counts by API type and error rates by status code. |
| “Moderation risk is too high.” | Text and audio output are filtered before processing by default. Risk concentrates in asset generation from player input — which you should not do anyway. |
| “It will make our experience Restricted.” | Per the official FAQ, including TTS does not by itself change Content Maturity. Only unlimited open-ended AI conversation triggers Restricted. |
| “Our VoiceIDs are hardcoded, it is a rewrite.” | It is a lookup table and one property assignment. See the keep/hold evening. |
| “Synthetic accents will embarrass us.” | Legitimate — for flagship cinematics. Not for a vendor telling you a potion costs 40 coins. |
| “We do not have translated strings.” | The honest one. Say this instead of the other seven. |
Notice the ladder collapses to one real constraint: strings. Voice stopped being the bottleneck; text was always the bottleneck. Which is why the argument “we do not do localized VO” is usually a confession that you do not do localization, told in a way that sounds technical.
What TTS fixes and what it does not
Be honest in both directions or nobody will believe the pro-localization case either.
| Fixes | Does not fix |
|---|---|
| Voicing dynamic, per-player, per-state lines you could never pre-record | Translation quality of the source strings |
| Voicing tutorials and accessibility narration that change every patch | Cultural adaptation, idiom, humor, names |
| Voicing long-tail NPC barks nobody would fund a cast for | Proper nouns and invented place names — staff have acknowledged unusual words are a known model limitation |
| Removing the “record a new WAV” tax on every dialogue edit | Voice-direction nuance for a flagship cinematic |
| Accessibility for players who cannot or prefer not to read | Your missing localization table entries |
The proper-noun limitation deserves emphasis because it is the failure your community will screenshot. If your world is full of invented place names, TTS will mangle some of them in every language, English included. That is an argument for a pronunciation-tuning pass on key names, not an argument for English-only.
The audit — find where English-only leaks
Run this on a live experience in about 40 minutes. It is a read-only pass; you are counting surfaces, not shipping code. Beginners can do it with the Explorer window and a notebook.
Step 1 — Log locales. Add a temporary LocalScript that prints Players.LocalPlayer.LocaleId on join, or read your existing analytics locale split. Write down the top five non-English locales by session share. If you cannot get this in a day, that alone is the finding.
Step 2 — Inventory speech surfaces. Walk the experience and list every place a voice speaks. In most experiences it is five categories:
| Surface | Typical count | Localized text today? | Localized voice today? |
|---|---|---|---|
| Tutorial / onboarding narration | 5–20 lines | Often yes | Almost never |
| NPC vendor / quest barks | 20–200 lines | Sometimes | Almost never |
| System announcements (round start, events) | 5–30 lines | Often yes | Almost never |
| Accessibility narration (UI read-out) | Varies | Yes if built | Almost never |
| Error / warning voice cues | 3–10 lines | Rarely | Almost never |
Step 3 — Mark the mismatches. Any row where text is localized and voice is not is an inconsistency bug, not a feature gap. Fix those first — they are the cheapest wins and the most embarrassing to leave.
Step 4 — Count characters. Sum the characters of your tutorial and top-20 bark lines. Compare against the 300-character-per-request cap; anything longer must be split into multiple requests. This is where you learn whether your writing style is TTS-compatible before you promise anything.
Step 5 — Estimate request load. Take peak CCU, apply 1 + 6 × CCU, and compare to a realistic per-session play count. Most experiences discover they are nowhere near the ceiling; some chat-heavy ones discover they were planning something the limits were explicitly designed to prevent.
Step 6 — Write the finding. One paragraph: locale split, surface count, mismatch count, headroom. That paragraph is what you bring to the meeting instead of an opinion.
Tier your lines — the part most posts skip
“Localize everything” fails. Tier it.
Tier A — localize voice now. High-frequency, short, functional, already-translated lines: tutorial steps, round-start announcements, vendor prices, objective reminders. These are heard by every player, cost almost nothing per line, and are where synthetic delivery is least noticeable because the content is functional.
Tier B — localize voice next sprint. Repeated flavor barks for the NPCs players interact with most. Localize the top 20 by play count, not the whole script. Play count beats word count for prioritization every time.
Tier C — leave English (or leave silent). Flagship cinematic performances, comedy bits that depend on delivery, boss taunts with heavy idiom, and anything where a bad synthetic read is worse than a subtitle. Write down that this is a choice with a reason. That is what makes it defensible.
Tier D — do not voice at all. Player-authored text. Chat. Anything a stranger types. See moderation below.
A team that ships Tier A in two weeks and documents Tier C as deliberate is in a strictly better position than a team that argues about a full localization program for a quarter and ships nothing.
Rate-limit math you can quote in the meeting
The formula from the full-release post is worth internalizing because it changes the shape of the conversation:
max requests per minute per experience = 1 + 6 × concurrent users
max characters per request = 300 (both real-time and asset generation)
Work an example. At 200 CCU, you are allowed 1 + 6 × 200 = 1,201 requests per minute. If a typical session hears a voiced line every 30 seconds, 200 concurrent players generate roughly 400 requests per minute. You are at a third of the ceiling — and localizing those same lines into three languages does not multiply your request count, because each player still hears one line. That is the point people miss in the meeting: localization does not multiply requests, it re-routes them. A Spanish player hearing one Spanish bark is one request, exactly like the English bark they would have heard instead.
Where you do multiply cost is asset generation. GenerateSpeechAsset produces saved audio that counts against your existing audio upload quota, and per-language variants of the same line are separate assets. That is a real budget conversation — and a good reason to keep dynamic, per-player lines on the real-time path and reserve pre-generated assets for lines that never change.
Use the dashboards — argue with data
Creator Hub now exposes Monitoring → Text-to-Speech with two views: request volume broken down by API type (real-time versus asset generation), with a top line showing your CCU-derived ceiling, and response/error rates broken down by status code. Date range and interval are adjustable.
This matters for the opinion because it converts "localized VO is risky" into a measurable claim. Ship Tier A to one language, watch the error-rate panel for a week, and you either have a problem you can name by status code or you have a green chart to paste into the next planning doc. Teams that skip this step end up relitigating the same fear every quarter.
The parts that are genuinely restricted
I am arguing for localization, not recklessness. Four constraints deserve to be stated plainly, because a pro-localization post that hides them is not credible.
Client-only API. Roblox staff clarified in the release thread that text-to-speech is intended as a client-side API — audio is output on the client. Teams that architect server-side speech generation hit yields and errors and then blame the feature. Design your dialogue flow so the server decides what is said and the client speaks it.
Exploiter budget consumption. Because it is client-callable, a hostile client can burn your per-experience request budget. Gate speech triggers behind server-validated state where it matters, and treat a sudden request spike on the dashboard as a security signal, not just a performance one.
Asset generation moderation ownership. Real-time output and text are filtered by default, and for the real-time API you are not held responsible for rare violative output unless you deliberately engineer it. Saved assets are different: generated audio lands in your inventory, so moderation action attaches to your account. Roblox explicitly recommends against letting players type text that becomes a generated asset. Tier D exists for this reason.
Pronunciation. Uncommon words and proper nouns are a known weakness the team has said they are improving over time without a committed timeline. Budget a naming pass, or accept some mangling, or keep those specific lines text-only.
None of these are arguments for English-only. They are arguments for scoped localized voice — which is exactly what Tier A through Tier D encode.
When English-only is actually defensible
Three cases, and I will defend them with you:
- Tiny, single-market experiences where you have locale data showing a negligible non-English share and you have written that data down. Measurement makes the position legitimate.
- Flagship narrative work with directed human performances where synthetic localized reads would undercut the craft, and you localize subtitles instead. Voice stays English; text does not.
- Pre-launch prototypes where nothing is final. Just do not carry the habit into launch and then call it a strategy.
Notice all three require a sentence you could read aloud to a partner. "We never got around to it" is not on the list.
The CapEx four-liner
For the finance or publisher conversation:
- Scope — Tier A functional lines in the top two non-English locales by session share; Tier C documented as deliberate English.
- Cost — translation and QA labor for roughly 30–60 short strings; TTS baseline utilization itself is free within published rate limits, with paid expansion signposted via Roblox Extended Services in future.
- Evidence — locale split, surface audit, Monitoring dashboard error rate after one week, and two Play-captured recordings.
- Owner — a named localization lead who is also authorized to block "we are fully localized" from store copy until the audit is green.
That fourth line is the one that saves you. Most localization embarrassment is not a missing translation; it is a marketing claim that outran the build.
Two-week rollout (not an evening)
The keep/hold evening proves the mechanism in one sitting. This is what shipping looks like afterward.
| Days | Work | Done when |
|---|---|---|
| 1–2 | Locale split + surface audit | One paragraph of findings exists |
| 3–4 | Pick two target locales; extract Tier A strings | String list frozen and counted against 300 chars |
| 5–7 | Translate Tier A; load localization tables | Translator resolves entries with a pcall fallback |
| 8–9 | Map LocaleId → VoiceID from Creator Hub | Map is dated; no invented IDs |
| 10–11 | Wire and Play-test both locales on real devices | Two recordings captured |
| 12 | Watch Monitoring dashboard | Error rate flat; requests under ceiling |
| 13 | Write Tier C rationale | Deliberate English documented |
| 14 | File receipt; release marketing language reviewed | No unearned "fully localized" claim |
Fetch VoiceIDs from the Add text-to-speech tutorial on the day you wire them, and use the Localize with scripting guidance for GetTranslatorForPlayerAsync with a pcall and a locale-change listener. Do not paste a VoiceID table from a blog post — including this one — into production. Tables move.
The refusal script
Paste this in Discord or Slack when the habit reasserts itself:
Re: "English-only VO is fine"
Roblox TTS supports 10 languages besides English as of Aug 11 2026
(ES DE IT FR ZH HI JA AR KO PT). Baseline use is free; limit is
1 + 6 × CCU requests/min, 300 chars/request. Creator Hub has
Monitoring → Text-to-Speech dashboards.
Localizing does NOT multiply requests — each player still hears one line.
Ask before we keep English-only:
1) What is our non-English session share by LocaleId?
2) Which surfaces already have localized TEXT but English VOICE?
3) Which Tier A lines (tutorial, announcements, vendor) block on strings?
If the answer to (1) is "not sure", that's the work item.
Tier C English is fine — write down WHY.
It works because it does not moralize. It asks three answerable questions and concedes the legitimate case in the last line.
Failure modes
| Symptom | Cause | Fix |
|---|---|---|
| Foreign voice reading English text | VoiceID mapped, strings not translated | Load localization tables first |
| Localized UI, English narration | Nobody audited voice surfaces | Run the five-category inventory |
| Silence on some clients | Server-side speech attempt | Move speech to client per staff guidance |
| Request spike, errors climbing | Exploiter or unbounded trigger | Server-validate triggers; read the dashboard |
| Long lines truncated or rejected | Over the 300-character cap | Split into multiple requests |
| Mangled place names | Known proper-noun limitation | Rename, respell phonetically, or keep text-only |
| Moderation action on your account | Player text turned into saved assets | Never generate assets from player input |
| Store page says "fully localized" | Marketing outran the audit | Owner-gated claim in the CapEx four-liner |
What this article is not
| If you need… | Go here |
|---|---|
| A hands-on LocaleId → VoiceID smoke tonight | TTS languages keep/hold |
| A free tool inventory for localization work | 12 free Roblox TTS localization tools |
| Cross-platform localization QA tooling | 18 free localization QA tools |
| General Roblox learning path | Roblox guide |
| Somewhere to ask wiring questions | Game dev Discord communities |
This URL only argues the position and gives you the audit, the tiers, and the script.
Key takeaways
- Since August 11, 2026, Roblox TTS supports ten languages besides English, so English-only NPC voice is a decision that needs a written reason.
- The strongest English-only defenses collapse into one honest constraint: you do not have translated strings.
- Localized voice does not multiply your request count — each player still hears one line.
- The published ceiling is 1 + 6 × CCU requests per minute with 300 characters per request; most experiences have headroom they have never measured.
- Creator Hub Monitoring → Text-to-Speech turns "risky" into a chart with status codes.
- Text localized + voice English is an inconsistency bug, and it is the cheapest thing on your list to fix.
- Tier A (functional, high-frequency, already-translated) is where synthetic delivery is least noticeable and most valuable.
- Tier C English is legitimate for directed performance and idiom-heavy writing — if you document the reason.
- Never generate saved speech assets from player-typed text; moderation attaches to your account as the asset owner.
- TTS is a client-side API; design the server to decide what is said, not to say it.
- Proper nouns and invented names are a known model weakness; plan a naming pass rather than abandoning localization.
- Gate the phrase "fully localized" behind a named owner and a green audit, not behind enthusiasm.
FAQ
Does Roblox text to speech support languages other than English?
Yes. As of the August 11, 2026 update, the API supports ten languages in addition to English: Spanish, German, Italian, French, Chinese, Hindi, Japanese, Arabic, Korean, and Portuguese.
Is Roblox TTS free to use?
Baseline utilization is free, subject to published rate limits. The team has signposted paid expansion through Roblox Extended Services for experiences that outgrow the free limit.
What are the Roblox TTS rate limits?
A maximum of 300 characters per request, and requests per minute per experience calculated as 1 + 6 × concurrent users. Longer content must be split across multiple requests.
Will localizing my NPC voice multiply my API usage?
No. Each player hears one line regardless of language, so localization re-routes requests rather than multiplying them. Pre-generated assets are the exception, since per-language variants are separate saved assets against your audio quota.
Does adding text to speech make my experience Restricted?
No. Per the official FAQ, including a TTS component does not by itself change your Content Maturity rating. Only experiences allowing unlimited open-ended conversation with an AI model receive a Restricted rating.
Do I need to filter text before sending it to the TTS API?
Filtering of text and audio output happens by default before processing. You still should not allow player-typed text to become a saved generated asset, because moderation for saved assets attaches to your account.
Why does my server-side TTS call hang?
Text-to-speech is intended as a client-side API. Roblox staff clarified this in the release thread; move speech playback to the client and let the server decide what should be spoken.
How do I know which languages my players actually need?
Read Player.LocaleId and look at your session split before committing. A measured locale breakdown is what turns an English-only decision from a habit into a defensible position.
Why does TTS mispronounce my location names?
Uncommon words and proper nouns are an acknowledged limitation of the model, which the team has said improves over time without a committed timeline. Respell phonetically, rename, or keep those lines text-only.
Should I use synthetic voice for my main story cinematic?
Usually no. Directed human performance still wins for flagship narrative. Localize subtitles there and spend synthetic voice on tutorials, announcements, and high-frequency barks.
What is the fastest meaningful first step?
Find every surface where your text is already localized but the voice is English, and fix those. It is a consistency fix, the strings already exist, and it is visible to exactly the players you were ignoring.
How is this different from the TTS keep/hold article?
That article walks one evening of hands-on wiring and a KEEP/HOLD decision. This one argues why English-only is no longer a neutral default and gives you the audit, tier list, rollout, and refusal script to change it.
Related reading
- Roblox Text to Speech Languages - First Multi-Language NPC Keep Hold 2026 — the hands-on evening this opinion assumes you can run
- 12 Free Roblox Text to Speech Localization Tools After Language Expand - 2026 — the toolkit for the two-week rollout
- Stop Quoting Steam Frame 90 FPS Verified - Read Steamworks Instead 2026 — same refusal pattern, different stale folklore
- 18 Free Localization QA Tools for Indie Teams — QA layer beyond Roblox
- Roblox guide
- 25 Free Game Development Discord Servers
- Official: TTS API full release + Aug 11 update · New voices and languages · Add text-to-speech · Localize with scripting · Weekly Recap Aug 10–14