Roblox Speech-to-Text API (October 2026): AudioSpeechToText Setup, Rate Limits, Languages, and Voice Commands
Posted: Sat Oct 24, 2026 4:44 pm
Quick Summary
Roblox has two separate objects for voice, and confusing them wastes an afternoon. AudioTextToSpeech turns a string into speech audio and is the one you use for narration, NPC dialogue and tutorial readouts. AudioSpeechToText does the opposite: it takes audio in and gives you a string out. This post covers the second one only.
The asymmetry is worth knowing before you start. The text-to-speech object is a player-style object with a full playback API: Play(), Pause(), LoadAsync(), GetWaveformAsync(), plus Pitch, Speed, PlaybackSpeed, Volume, Looping, TimePosition and TimeLength. The speech-to-text object has three properties, no playback methods and one event. You are not playing anything. You are reading a transcript.
Both objects live inside the audio object system, so both are wired the same way: a Wire carries a stream from a SourceInstance to a TargetInstance. Roblox groups audio objects by what they do to a stream: produce, consume, modify, or carry.
The three objects you wire together
Speech-to-text needs exactly three objects under SoundService, according to the Creator Hub audio objects guide:
Setting it up in Studio
The properties you can read
The whole public surface of the class is small. Enabled is a boolean that turns processing on or off. Text is the string result of the conversion, and the sample code clears it back to an empty string after each read so the next utterance is not appended to the last one. VoiceDetected is a read-only boolean that tells you whether speech is currently being heard, which is what you want for a push-to-talk style indicator.
There are no playback methods and no per-request options. You cannot set a language, a confidence threshold or a list of expected words. Whatever the recogniser hears is what lands in Text.
Rate limits, latency and cost
Two things stand out. The rate limit scales with your player count rather than being a flat number, so a game that is quiet at 200 players can still hit the ceiling once it breaks out.
If you need more than the free baseline, Extended Services is the route, and the eligibility bar is high: the account must be ID-verified and 18 or older, located in a supported country, have a valid email address, not be banned or moderated, and have accepted the terms. The minimum monthly budget you can set per resource is 0.50 USD, and Roblox emails you at 80 percent and again at 100 percent of a budget.
Languages
The speech-to-text side detects the spoken language from the audio and transcribes it, so no configuration is required. The Creator Hub audio objects page lists 17 supported languages:
The language gap is also the clearest sign that the two APIs are at different stages. The February 2026 full release announcement for speech-to-text still described support for additional languages beyond English as future work, while the current Creator Hub page lists 17. The announcement is the older document.
Why voice commands miss, and how to fix it
The recogniser returns a transcript, not a command. If your game has a door that opens on "open sesame", a player saying "open a sesame" gets nothing, and neither does one saying "opens sesame". The docs have a section for exactly this problem, called filtering for similar words, and the recipe is manual:
Age checks, permissions and privacy
Microphone access is gated. The speech-to-text FAQ states the API is available for experiences of all content maturity levels, but users must be 13 or older and verified before Roblox will give the experience access to their microphone. Verification requirements vary by region: users in some countries can use phone number verification, while others must use ID verification. If a player has not completed the required verification for their region, the API will not work for them.
The Voice FAQ lists the countries where voice chat is available to age-checked 13 plus users, and says users outside that list should use ID Verification to enable it. Voice chat runs on Desktop, Mobile, VR, Playstation and Xbox.
On the player side, the mic toggle sits in the upper left corner of the screen and controls mute state for both speech-to-text and voice chat in experiences that use both. Roblox recommends push-to-talk alongside speech-to-text for reliable voice detection, and the full release notes credit improved echo cancellation with reducing false positives from speaker audio. That improvement was live on most platforms as of the February 2026 update, with Windows and iOS still pending at the time it was written.
One privacy point is often raised and worth stating plainly. A developer on the full release thread reported that push-to-talk does not stop the speech-to-text pipeline from hearing audio, so a player who believes they are muted may still trigger the API. Roblox has not confirmed this in writing, so treat it as something to test in your own experience rather than as documented behaviour.
For the model side, the speech-to-text FAQ says the API is trained on publicly available open-source datasets. The Voice FAQ covers something different: Roblox may use voice data for speech-to-text transcription to improve products, and you can turn that off under Settings, then Privacy and content maturity, then Communication, then Voice data usage. One is training data, the other is your voice chat recordings.
FAQ
Is Roblox speech-to-text free?
Yes, the baseline is free. The limits are 10 seconds of audio per request and 1 + (5 x concurrent users) requests per minute. Extended Services lets you buy more, starting at 0.50 USD per month per resource, and speech-to-text is priced at 1.00 USD per 1 million extended requests.
Does speech-to-text need voice chat to be on?
Not for the API to work, but the setup overlaps. Enabling the microphone in experience settings also enables voice chat by default. Turn off EnableDefaultVoice under VoiceChatService, or disconnect the player's AudioDeviceInput from their AudioEmitter, and keep UseAudioApi enabled. The mic toggle then controls mute state for both.
Which languages does it support?
Seventeen: Arabic, Chinese (Simplified), Chinese (Traditional), English, French, German, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Spanish, Russian, Thai, Turkish and Vietnamese. The language is detected from the audio, so you do not set it.
Why does my voice command only work sometimes?
Because the API returns a transcript and your game has to decide what it means. Use the filtering for similar words approach: lowercase, strip punctuation, split into words, then match against a sanitised reference table. Exact matching is simplest, and custom similarity logic covers the near misses.
Can I use it for subtitles on NPC dialogue?
That is one of the three uses Roblox itself lists for the API, alongside voice-controlled game mechanics and dynamic conversations with NPCs. The text arrives in the Text property and you render it wherever you like.
Do players have to be verified to use it?
Yes. Users must be 13 or older and verified before Roblox grants microphone access, and the verification method depends on their region. If a player has not completed it, the feature will not work for them.
Sources
- Roblox's speech-to-text API is called AudioSpeechToText. It is a converter, not a player. It takes audio from a microphone and writes the words into a Text property. Its sibling, AudioTextToSpeech, does the reverse.
- Setting it up takes three audio objects: AudioDeviceInput to capture the mic, AudioSpeechToText to convert, and a Wire between them. You also switch VoiceChatService.UseAudioApi to Enabled and turn on Enable Microphone in the experience settings.
- The free baseline allows 10 seconds of audio per request and a rate of 1 + (5 x concurrent users) requests per minute, so an experience with 10,000 concurrent players gets 50,001 requests per minute.
- The API understands 17 spoken languages, including Chinese in two written forms, and it detects the language from the audio itself. There is no language setting to configure.
- Accuracy is the hard part. Transcripts are free-form text, so any game using voice commands has to filter for near-miss words itself. Roblox provides no weighted word list.
Roblox has two separate objects for voice, and confusing them wastes an afternoon. AudioTextToSpeech turns a string into speech audio and is the one you use for narration, NPC dialogue and tutorial readouts. AudioSpeechToText does the opposite: it takes audio in and gives you a string out. This post covers the second one only.
The asymmetry is worth knowing before you start. The text-to-speech object is a player-style object with a full playback API: Play(), Pause(), LoadAsync(), GetWaveformAsync(), plus Pitch, Speed, PlaybackSpeed, Volume, Looping, TimePosition and TimeLength. The speech-to-text object has three properties, no playback methods and one event. You are not playing anything. You are reading a transcript.
Both objects live inside the audio object system, so both are wired the same way: a Wire carries a stream from a SourceInstance to a TargetInstance. Roblox groups audio objects by what they do to a stream: produce, consume, modify, or carry.
The three objects you wire together
Speech-to-text needs exactly three objects under SoundService, according to the Creator Hub audio objects guide:
- AudioDeviceInput is the microphone. It is a physical hardware device in the real world, and its Player property tells Roblox whose microphone to listen to.
- AudioSpeechToText is the converter. It reads the stream and writes the recognised words into its Text property.
- Wire carries the stream from the input to the converter.
Setting it up in Studio
- Open your experience in Studio and publish it. Microphone permissions are tied to the published experience, not to a local file.
- Go to File, then Experience Settings, then Communication, and turn on Enable Microphone. On the older menu path this is Game Settings, then Communication, then Enable Microphone.
- Select VoiceChatService in the Explorer and set UseAudioApi to Enabled. If you want players to use speech-to-text without broadcasting their voice to everyone, leave this on and instead turn off EnableDefaultVoice under VoiceChatService, or disconnect the player's AudioDeviceInput from their AudioEmitter.
- Under SoundService, insert an AudioDeviceInput, an AudioSpeechToText and a Wire.
- Set the Wire's SourceInstance to the AudioDeviceInput and its TargetInstance to the AudioSpeechToText.
- Set AudioSpeechToText.Enabled to on.
- Set the input's Player property at runtime, for example audioDeviceInput.Player = game.Players.LocalPlayer. Without this the object does not know whose microphone to open.
The properties you can read
The whole public surface of the class is small. Enabled is a boolean that turns processing on or off. Text is the string result of the conversion, and the sample code clears it back to an empty string after each read so the next utterance is not appended to the last one. VoiceDetected is a read-only boolean that tells you whether speech is currently being heard, which is what you want for a push-to-talk style indicator.
There are no playback methods and no per-request options. You cannot set a language, a confidence threshold or a list of expected words. Whatever the recogniser hears is what lands in Text.
Rate limits, latency and cost
| Item | Limit | Where the number comes from |
| Audio per request | 10 seconds maximum | Speech-to-Text full release FAQ, DevForum |
| Request rate | 1 + (5 x concurrent users) per minute | AudioSpeechToText class reference |
| Latency | Under 500 ms for most text, after audio input completes | Speech-to-Text full release FAQ, DevForum |
| Free baseline | Included at no charge | Speech-to-Text full release FAQ, DevForum |
| Extra capacity | Extended Services, 1.00 USD per 1 million requests | Creator Hub, Extended Services pricing |
| Text-to-speech rate, for comparison | 1 + (6 x concurrent users) per minute, and 5.00 USD per 1 million extended requests | Text-to-Speech full release post, DevForum |
| Text-to-speech length | 300 characters per request | AudioTextToSpeech class reference |
If you need more than the free baseline, Extended Services is the route, and the eligibility bar is high: the account must be ID-verified and 18 or older, located in a supported country, have a valid email address, not be banned or moderated, and have accepted the terms. The minimum monthly budget you can set per resource is 0.50 USD, and Roblox emails you at 80 percent and again at 100 percent of a budget.
Languages
The speech-to-text side detects the spoken language from the audio and transcribes it, so no configuration is required. The Creator Hub audio objects page lists 17 supported languages:
- Arabic
- Chinese (Simplified)
- Chinese (Traditional)
- English
- French
- German
- Indonesian
- Italian
- Japanese
- Korean
- Polish
- Portuguese
- Spanish
- Russian
- Thai
- Turkish
- Vietnamese
The language gap is also the clearest sign that the two APIs are at different stages. The February 2026 full release announcement for speech-to-text still described support for additional languages beyond English as future work, while the current Creator Hub page lists 17. The announcement is the older document.
Why voice commands miss, and how to fix it
The recogniser returns a transcript, not a command. If your game has a door that opens on "open sesame", a player saying "open a sesame" gets nothing, and neither does one saying "opens sesame". The docs have a section for exactly this problem, called filtering for similar words, and the recipe is manual:
- Take the Text output and sanitise it: strip punctuation, convert to lowercase, split on whitespace to get a table of words.
- Sanitise and tokenise each of your reference strings the same way and store them in a separate table.
- Compare the two tables. For simple checks, compare for an exact match. For looser matching, write your own logic to accept substitutions such as "colour" for "color", or to match a subset of words and calculate a similarity score.
Age checks, permissions and privacy
Microphone access is gated. The speech-to-text FAQ states the API is available for experiences of all content maturity levels, but users must be 13 or older and verified before Roblox will give the experience access to their microphone. Verification requirements vary by region: users in some countries can use phone number verification, while others must use ID verification. If a player has not completed the required verification for their region, the API will not work for them.
The Voice FAQ lists the countries where voice chat is available to age-checked 13 plus users, and says users outside that list should use ID Verification to enable it. Voice chat runs on Desktop, Mobile, VR, Playstation and Xbox.
On the player side, the mic toggle sits in the upper left corner of the screen and controls mute state for both speech-to-text and voice chat in experiences that use both. Roblox recommends push-to-talk alongside speech-to-text for reliable voice detection, and the full release notes credit improved echo cancellation with reducing false positives from speaker audio. That improvement was live on most platforms as of the February 2026 update, with Windows and iOS still pending at the time it was written.
One privacy point is often raised and worth stating plainly. A developer on the full release thread reported that push-to-talk does not stop the speech-to-text pipeline from hearing audio, so a player who believes they are muted may still trigger the API. Roblox has not confirmed this in writing, so treat it as something to test in your own experience rather than as documented behaviour.
For the model side, the speech-to-text FAQ says the API is trained on publicly available open-source datasets. The Voice FAQ covers something different: Roblox may use voice data for speech-to-text transcription to improve products, and you can turn that off under Settings, then Privacy and content maturity, then Communication, then Voice data usage. One is training data, the other is your voice chat recordings.
FAQ
Is Roblox speech-to-text free?
Yes, the baseline is free. The limits are 10 seconds of audio per request and 1 + (5 x concurrent users) requests per minute. Extended Services lets you buy more, starting at 0.50 USD per month per resource, and speech-to-text is priced at 1.00 USD per 1 million extended requests.
Does speech-to-text need voice chat to be on?
Not for the API to work, but the setup overlaps. Enabling the microphone in experience settings also enables voice chat by default. Turn off EnableDefaultVoice under VoiceChatService, or disconnect the player's AudioDeviceInput from their AudioEmitter, and keep UseAudioApi enabled. The mic toggle then controls mute state for both.
Which languages does it support?
Seventeen: Arabic, Chinese (Simplified), Chinese (Traditional), English, French, German, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Spanish, Russian, Thai, Turkish and Vietnamese. The language is detected from the audio, so you do not set it.
Why does my voice command only work sometimes?
Because the API returns a transcript and your game has to decide what it means. Use the filtering for similar words approach: lowercase, strip punctuation, split into words, then match against a sanitised reference table. Exact matching is simplest, and custom similarity logic covers the near misses.
Can I use it for subtitles on NPC dialogue?
That is one of the three uses Roblox itself lists for the API, alongside voice-controlled game mechanics and dynamic conversations with NPCs. The text arrives in the Text property and you render it wherever you like.
Do players have to be verified to use it?
Yes. Users must be 13 or older and verified before Roblox grants microphone access, and the verification method depends on their region. If a player has not completed it, the feature will not work for them.
Sources
- Creator Hub, AudioSpeechToText engine reference (properties, rate limit formula, code sample)
- Creator Hub, Audio objects guide, speech-to-text section (setup steps, 17 languages, similar-word filtering)
- Creator Hub, Add speech-to-text tutorial (LocalScript wiring, Open Sesame gameplay example)
- DevForum, Speech-to-Text API full release (10 second limit, latency, echo cancellation, Extended Services)
- DevForum, Speech-to-Text API beta announcement (observability dashboards, microphone setup, safety filtering)
- Creator Hub, Extended Services (eligibility, budgets, speech-to-text pricing)
- Roblox Support, Voice FAQ (age and region requirements, mic toggle, voice data settings)
- Creator Hub, AudioTextToSpeech engine reference (the other half of the pair, for comparison)
- DevForum, Text-to-Speech API full release (1 + 6 x CCU rate limit and 300 character limit, for comparison)