Skip to main content

Speech synthesis and narration

File: config/system/system-speech.json. Side: client. A missing file is read after being copied from the file of the same name under the JAR's defaults.

FieldTypeRequiredDefaultDescription
enabledBooleannofalseEnables narration; information such as the API key must still be valid.
providerStringno"aliyun"Provider ID; aliyun is built in.
apiKeyStringno""Personal Bailian API key, kept only on the client.
regionStringno"beijing"Service region; must match the key / voice.
workspaceStringno""Optional Workspace ID.
modelStringno"qwen3-tts-flash"Synthesis model, qwen3-tts-flash by default.
voiceStringno"Cherry"Default or custom voice ID; must match the model.
languageStringno"Client"Client follows the client language, or a synthesis language supported by the service, such as Auto, Chinese or English.
volumeIntegerno80Narration volume, 0–100.
cacheEnabledBooleannofalseLocal audio cache, off by default.
questRequirementsBooleannotrueNarrate quest requirements.
questRewardsBooleannotrueNarrate quest rewards.
questDescriptionBooleannofalseNarrate the filtered quest background, off by default.
notificationSoundEnabledBooleannotrueSound when a notification is first expanded, at 75% of the narration volume.

These credentials and the speech usage belong only to the current client and are not synced to the server. Prefer editing them in the speech tab of /system settings; settings are marked and saved automatically after being submitted. Closing a notification, confirming early or switching the speech session cancels the corresponding narration.

Bundled default file​

config/system/system-speech.json
{
"enabled": false,
"provider": "aliyun",
"apiKey": "",
"region": "beijing",
"workspace": "",
"model": "qwen3-tts-flash",
"voice": "Cherry",
"language": "Client",
"volume": 80,
"cacheEnabled": false,
"questRequirements": true,
"questRewards": true,
"questDescription": false,
"notificationSoundEnabled": true
}