🎙️ Voice Commands
Install the optional model
Models are not bundled with the phone. Download them manually from the optional model downloads and setup guide. The phone never downloads an external model automatically.
- Download English vosk-model-small-en-us-0.15.tar.gz.
- Upload that file without extracting or renaming it to
yseries/ui/build/voice/vosk-model-small-en-us-0.15.tar.gz. For standalone YPhone useyphone/ui/build/voice/; for standalone YFlip useyflip-phone/ui/build/voice/. Use your actual phone resource folder if renamed. Do not put it in the props resource. - Keep
Config.VoiceCommands.Enabled = true,DefaultLanguage = 'en', and the EnglishModelUrl = 'voice/vosk-model-small-en-us-0.15.tar.gz'inconfig/config.voiceCommands.lua. If you already saved dashboard settings, select/enable English there too. - Restart your phone resource (
restart yseries,restart yphone, orrestart yflip-phone). Players open Settings > Voice commands on either YOS or Humanoid, choose English and enable recognition. Wait for Ready, then hold the talk key and sayphone open. Players cannot install server files; send this guide to the server owner.
English SHA-256: 80bd593276e4bdd46223ae7649066d1e5a0ce3be1281490abc68c3cab19f6990 (41,160,778 bytes).
Spanish profiles and saved preferences remain supported. Install the optional
Spanish vosk-model-small-es-0.42.tar.gz
unchanged in the same ui/build/voice/ directory before selecting Spanish. Its SHA-256 is
d9b03fceb51a05d71f0bd648cccc2e5eb80f3f3ac39d65fe60f95fc698c8a54c (39,799,547 bytes).
Owners offering only English can disable Spanish in the dashboard. A missing selected model
shows setup guidance and cannot start recognition.
For other languages, use a small Vosk model with dynamic vocabulary support. The official
Vosk downloads commonly provide ZIP files, which are
not loader-compatible. Extract the ZIP outside the resource, then run
tar -czf my-model.tar.gz model-folder from the directory containing the extracted folder.
The archive must contain one model folder with am/final.mdl, conf/model.conf,
conf/mfcc.conf, the graph files and any ivector files beneath it. Renaming a ZIP is not
conversion. Preserve the model's license. Add a language profile with Label, ModelUrl,
Keyword and RejectionPhrases, restart, then enable its translated commands in the dashboard.
Custom local voice/*.tar.gz filenames remain supported; remote URLs were not supported
by the server configuration and are not enabled by this change.
Source builds: keep all model archives backed up outside ui/public, ui/build and
release staging. Run npm ci and npm run build in ui, then upload the models to
ui/build/voice/ again. Rebuilding replaces ui/build. The build rejects archives placed
in ui/public/voice, and release packaging excludes model binaries even if stale files
remain in an input folder. Do not add models to the distributable source ZIP.
Recognition runs locally with vosk-browser; no audio or transcripts are uploaded. Only action
IDs, language and configuration revision are sent to the server. Adding phrases does not
train new words; keywords must exist in the selected model. Both optional models use Apache
License 2.0. Their original files are unchanged, repackaged as tar.gz for vosk-browser.
Attribution and license are in ui/build/voice/NOTICE.txt and LICENSE-2.0.txt, and in the
optional download release.
Player and admin controls
Control the phone through in-game voice chat. Recognition runs locally, without an API key or audio uploads.
- Open Settings > Voice commands on either Humanoid or YOS.
- Enable Voice commands, select a language, and allow microphone access if prompted.
- Wait for Ready. Hold your talk key, say
phone openorphone close, then release it.
Default English commands (replace phone with your keyword):
Change your keyword in the same settings and press Save. For example, assistant changes phone open to assistant open. Reset restores the default. Say the complete command; the keyword alone does nothing.
Preferences are saved locally. Each player uses one recognition language at a time. Turning the feature off releases the microphone. Nearby players can still hear spoken commands through voice chat.
If recognition fails, check the Settings error, microphone permissions, selected language, and displayed command examples.
Open the admin dashboard (access command) and select Voice commands.
- Enable or disable the feature server-wide.
- Choose available languages, the default language, and default keywords.
- Add, edit, disable, or remove commands.
To add a command, enter a unique ID, choose its function, add a phrase such as {keyword} help, then enable it and save. {keyword} uses the player's keyword; phrases without it stay unchanged.
Use different phrases for different commands. Each enabled language needs an enabled command. Rejection phrases are phrases to ignore, such as do not open {keyword}. Start with the default confidence of 0.60; increasing it may reject valid speech too.
Dashboard changes apply when saved. Lua function changes and new language models require a resource restart. If another admin saved first, refresh before saving again.
Dashboard settings are stored in server/custom/voiceCommands.runtime.json and override the initial config/config.voiceCommands.lua, except that Config.VoiceCommands.Enabled = false always disables the feature and hides its Settings entry on both phone systems. Keep the runtime file, custom functions, and added models when updating.
Existing saved configurations keep their command list after an update. Add any new defaults through the dashboard using their functions and phrases above.
Add functions inside the existing YSeriesVoiceActions table in:
Keep the existing entries. For example:
Restart yseries, then select show_help in the admin function dropdown and assign a phrase such as {keyword} help.
Functions receive the player's server source. Return true on success or false, 'Reason' when unavailable. Validate permissions and gameplay conditions inside the function. For client behavior, trigger an event handled in client/custom.
The function list loads only at resource startup. Before removing a function, remove or reassign commands that use it. Custom Lua files remain outside escrow; no separate resource or UI rebuild is needed.
English is the default; no models are bundled. See the installation steps above. Another language needs a Vosk model: a ready-made language pack that converts speech into text. You do not need to train it or record voice samples.
- Download a model from the official Vosk model list. Choose a small model for your language that supports dynamic vocabulary (configurable phrases). Not every model supports this.
- Prepare the archive. The phone needs
.tar.gz, a compressed file like ZIP. If the download is a ZIP, extract it first, then pack the extracted model folder as.tar.gz. Renaming.zipto.tar.gzdoes not convert it. Keep the model's license information with its files. - Install it in
ui/build/voice/. For source builds, upload it toui/build/voice/after building; never place models inui/public/voice/. - Register the language in
Config.VoiceCommands.Languages, insideconfig/config.voiceCommands.lua. Copy the English profile and change its language ID,Label,ModelUrl(for example,voice/my-model.tar.gz), defaultKeyword, andRejectionPhrases(phrases to ignore). LeaveEnabled = falsewhile preparing it. - Restart
yseries. Add the language in the admin dashboard, enter translated command phrases, assign their actions, enable it, and save.
To create the archive, open a terminal in the directory containing the extracted model folder and run:
Replace model-folder with the extracted folder's name. Use the output filename in ModelUrl.
Players can then select it in Settings. This selection is separate from the phone's display language.
You choose the command phrases and default keyword; players can change their keyword. These words must be supported by the model. Adding phrases does not train new words. Model files remain editable outside escrow.