Fish Audio Docs
Integration GuidesThird-Party Integrations

RimTalk TTS Setup Guide

Add Fish Audio as an OpenAI-compatible provider in the unofficial RimTalk TTS mod and assign a separate voice to each RimWorld colonist.

Connect Fish Audio TTS to RimTalk

RimTalk TTS can call Fish Audio through a custom OpenAI-compatible provider, allowing different RimWorld colonists to speak dialogue with assigned voices.

Check your RimTalk version first

This guide requires a RimTalk TTS build whose settings include Custom TTS Providers (Untested!) and Add New Custom Provider. This feature is currently part of the upstream project's development version. If those controls are missing, verify the source and version of the installed mod instead of entering these settings in the legacy built-in Fish Audio provider.

Before you begin

Prepare:

  1. Sufficient API credits;
  2. A dedicated API key for this RimTalk installation;
  3. At least one Fish Audio Voice ID;
  4. A RimTalk TTS build with custom provider support.

API keys are secrets. Create a separate key for each customer or device so its usage can be monitored and revoked independently. Never include a complete key in a public screenshot, chat transcript, mod archive, or Steam Workshop item. Revoke and replace any key that has already appeared in a screenshot.

For the first connection test, you can use the system test voice:

00a1b221-6137-4b73-ad62-b0cbce134167

Add a custom TTS provider

In the RimTalk TTS settings, open:

TTS Configuration → Custom TTS Providers → Add New Custom Provider

Enter these basic settings:

RimTalk settingValue
Provider nameFish Audio
Base URLhttps://fishaudio.org/v1
Endpoint path/audio/speech
Modelfishaudio-s21pro-flash
Default voice00a1b221-6137-4b73-ad62-b0cbce134167 (replace later)
Response formatmp3

The full URL shown by RimTalk should be:

https://fishaudio.org/v1/audio/speech

The model must be a public Fish Audio model ID such as fishaudio-s21pro-flash. Do not enter OpenAI's tts-1, the default OpenAI voice name alloy, or the s2.1-pro value used by RimTalk's legacy built-in Fish Audio provider.

Configure authentication and optional fields

Enter these authentication settings:

RimTalk settingValue
Requires API keyEnabled
API keyThe dedicated key created for RimTalk
Auth header nameAuthorization
Auth header prefixBearer followed by one space

The trailing space in the authentication prefix is required. RimTalk concatenates the prefix and API key directly; without it, the client sends an invalid BearerYOUR_API_KEY value.

Use these optional settings for the first integration:

SettingRecommended value
Send speedEnabled
TemperatureDisabled
Top PDisabled
Emotion/styleDisabled
Instruct textDisabled
StreamingDisabled
Custom request bodyDisabled
Timeout60 seconds
Generation cooldownKeep the default

Save the provider, then select the new Fish Audio custom provider in the speech provider list.

Add voices and assign colonists

The Default voice in the provider editor only initializes the provider. To use different voices for multiple colonists, return to RimTalk's voice model section:

  1. Add a voice model;
  2. Enter a recognizable display name such as “Young man” or “Doctor”;
  3. Enter the Fish Audio voice UUID as the Model ID, not the display name;
  4. Select one voice as the default;
  5. Assign each Pawn to the appropriate voice in the colonist voice settings.

The model and voice are separate values: fishaudio-s21pro-flash selects the TTS engine, while the voice UUID selects the resulting voice.

Test the integration

Start with one voice and one short line of dialogue from a single colonist. RimTalk should send an OpenAI-format request to /v1/audio/speech, wait for the complete MP3 response, and play it in the game.

Verify that:

  1. The request URL does not duplicate /v1 or /audio/speech;
  2. The request returns HTTP 200;
  3. The complete audio plays in RimWorld;
  4. The call and credit usage appear in API management;
  5. Each colonist uses the expected voice after you replace the test Voice ID.

RimTalk currently waits for a synchronous audio response and does not poll asynchronous jobs. Normal colonist dialogue is short enough for the synchronous endpoint. Shorten unusually long input instead of entering an Async Jobs URL.

Troubleshooting

  • 401 or invalid API key: verify that the key is complete and active, and that the auth prefix is Bearer plus one space.
  • 402 or insufficient credits: add API credits; subscription credits and API credits are separate balances.
  • 404: the Base URL should end at /v1, and the endpoint path should be only /audio/speech.
  • 400 or invalid model: use fishaudio-s21pro-flash, not tts-1 or s2.1-pro.
  • Invalid voice: Model ID in the voice list must contain a voice UUID, not a display name or TTS engine model.
  • Timeout after 30 seconds: set the RimTalk timeout to 60 seconds, use fishaudio-s21pro-flash, and test a short line first.
  • Successful request but no audio: select the custom provider, make sure the default voice is not NONE, and check Pawn voice assignments and game volume.
  • 429: keep the generation cooldown enabled and avoid triggering many simultaneous requests; retry later.