Skip to content

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.

SettingTypeAllowedDefaultIf invalid
latencystringnormal, balanced, lowbalancedRefused, call fails
temperaturefloat0 to 10.7Refused, call fails
topPfloatabove 0, up to 10.7Refused, call fails
speedfloat0.5 to 2.01.0Refused, call fails
volumefloat (dB)-20 to 200.0Used as sent
normalizebooleantrue or falsetrueUsed as sent
normalizeLoudnessbooleantrue or falsetrueUsed as sent
chunkLengthint (characters)100 to 300300Refused, call fails
minChunkLengthint (characters)0 to 10050Refused, call fails
maxNewTokensint0 or greater1024Used as sent
conditionOnPreviousChunksbooleantrue or falsetrueUsed as sent
earlyStopThresholdfloat0 to 11.0Refused, 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.

json
{
  "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#