Skip to main content

Speech billing estimate

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

FieldTypeRequiredDefaultDescription
versionIntegerno1Pricing table format version.
currencyStringno"CNY"Currently CNY only.
asOfStringno"2026-10-25"Reference date of the price list; does not mean live official prices.
ratesArraynoSee the bundled price listList of price entries, see the table below.

rates entries​

FieldTypeRequiredDefaultDescription
providerStringrequired for a valid entryemptyProvider ID.
modelStringrequired for a valid entryemptyModel name.
regionStringrequired for a valid entryemptyRegion.
unitStringrequired for a valid entryomittedcharacters, tokens or calls; case-insensitive.
unitsPositive integerrequired for a valid entryno valid defaultNumber of units the price applies to.
inputNon-negative decimal number or stringrequired for a valid entryomittedPrice of the input characters / tokens / calls.
outputNon-negative decimal number or stringrequired for a valid entryomittedPrice of output tokens; must be 0 for units other than tokens.

Entries are matched by provider, model and region; when the price is missing or the billing unit does not match, only usage is recorded and the amount stays unpriced; duplicate entries keep the first one. A missing price is never treated as free. Prices are local estimates, not the provider's bill, and asOf in the bundled table only indicates the reference date. A completed NLS recognition is estimated as calls.

Bundled default file​

config/system/system-speech-pricing.json
{
"version": 1,
"currency": "CNY",
"asOf": "2026-10-25",
"rates": [
{
"provider": "aliyun",
"model": "qwen3-tts-flash",
"region": "beijing",
"unit": "CHARACTERS",
"units": 10000,
"input": 0.8,
"output": 0
},
{
"provider": "aliyun",
"model": "qwen3-tts-flash",
"region": "singapore",
"unit": "CHARACTERS",
"units": 10000,
"input": 0.733924,
"output": 0
},
{
"provider": "aliyun",
"model": "qwen-audio-3.1-tts-flash",
"region": "beijing",
"unit": "TOKENS",
"units": 1000000,
"input": 1.5,
"output": 12
},
{
"provider": "aliyun",
"model": "qwen-audio-3.1-tts-flash",
"region": "singapore",
"unit": "TOKENS",
"units": 1000000,
"input": 1.677,
"output": 13.636
},
{
"provider": "aliyun",
"model": "qwen-audio-3.1-tts-plus",
"region": "beijing",
"unit": "CHARACTERS",
"units": 10000,
"input": 1.4,
"output": 0
},
{
"provider": "aliyun",
"model": "qwen-audio-3.1-tts-plus",
"region": "singapore",
"unit": "CHARACTERS",
"units": 10000,
"input": 2.19,
"output": 0
},
{
"provider": "aliyun",
"model": "qwen-audio-3.0-tts-plus",
"region": "beijing",
"unit": "CHARACTERS",
"units": 10000,
"input": 1.4,
"output": 0
},
{
"provider": "aliyun",
"model": "qwen-audio-3.0-tts-plus",
"region": "singapore",
"unit": "CHARACTERS",
"units": 10000,
"input": 1.49884,
"output": 0
},
{
"provider": "aliyun",
"model": "qwen-audio-3.0-tts-flash",
"region": "beijing",
"unit": "CHARACTERS",
"units": 10000,
"input": 1,
"output": 0
},
{
"provider": "aliyun",
"model": "qwen-audio-3.0-tts-flash",
"region": "singapore",
"unit": "CHARACTERS",
"units": 10000,
"input": 1.12413,
"output": 0
},
{
"provider": "aliyun-nls",
"model": "sentence-recognition",
"region": "shanghai",
"unit": "CALLS",
"units": 1000,
"input": 3.5,
"output": 0
},
{
"provider": "aliyun-nls",
"model": "sentence-recognition",
"region": "beijing",
"unit": "CALLS",
"units": 1000,
"input": 3.5,
"output": 0
},
{
"provider": "aliyun-nls",
"model": "sentence-recognition",
"region": "shenzhen",
"unit": "CALLS",
"units": 1000,
"input": 3.5,
"output": 0
}
]
}