Providers
s2.1-pro
The Fish Audio text-to-speech model s2.1-pro, with every setting it accepts, the allowed value and the default.
Fish Audio's current S2-Pro model, and the one OnCore runs. Supports OnCore's expressive delivery mode, and being in the S2-Pro family it accepts loudness normalisation.
Reached through the LiveKit Inference gateway.
Voice IDs for this provider are bare reference hashes with no model prefix. Fish Audio voices are cross-lingual, so the spoken language comes from the assistant rather than from the voice.
Settings#
Every setting is optional. Leave one out and OnCore sends nothing for it, so the Default applies. If invalid is what the provider does with a value it does not accept.
| Setting | Type | Allowed | Default | If invalid |
|---|---|---|---|---|
latency | string | normal, balanced, low | balanced | Refused, call fails |
temperature | float | 0 to 1 | 0.7 | Refused, call fails |
topP | float | above 0, up to 1 | 0.7 | Refused, call fails |
speed | float | 0.5 to 2.0 | 1.0 | Refused, call fails |
volume | float (dB) | -20 to 20 | 0.0 | Used as sent |
normalize | boolean | true or false | true | Used as sent |
normalizeLoudness | boolean | true or false | true | Used as sent |
chunkLength | int (characters) | 100 to 300 | 300 | Refused, call fails |
minChunkLength | int (characters) | 0 to 100 | 50 | Refused, call fails |
maxNewTokens | int | 0 or greater | 1024 | Used as sent |
conditionOnPreviousChunks | boolean | true or false | true | Used as sent |
earlyStopThreshold | float | 0 to 1 | 1.0 | Refused, call fails |
Overriding on a single call#
Return this from your assistant-request webhook to change these settings for one call only. The stored voice is left untouched, and the next call starts from it again.
{
"data": {
"overrides": {
"voice": {
"settings": {
"latency": "balanced",
"temperature": 0.8,
"topP": 0.9,
"speed": 1,
"volume": 1,
"normalize": true,
"normalizeLoudness": true,
"chunkLength": 200,
"minChunkLength": 50,
"maxNewTokens": 1024,
"conditionOnPreviousChunks": true,
"earlyStopThreshold": 1
}
}
}
}
}Send only the keys you want to change: anything you leave out keeps the value the assistant already has. Add "id" beside "settings" to swap the whole voice for another one from your catalogue at the same time.
topP: The lower bound is exclusive. Fish Audio documents the range as 0 to 1, but the gateway refuses exactly 0.
volume: The range is Fish Audio's documented one but is not enforced: a value well outside it is accepted and applied, so an extreme number will distort the audio rather than fail.
maxNewTokens: Audio tokens per text chunk, not text tokens. Fish Audio accepts any non-negative value, so an implausible one is applied rather than refused.
Next steps#
- xAI: text-to-speech from xAI.
- Providers introduction: per-call overrides, and how a wrong value behaves across providers.