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:
- Sufficient API credits;
- A dedicated API key for this RimTalk installation;
- At least one Fish Audio Voice ID;
- 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-b0cbce134167Add a custom TTS provider
In the RimTalk TTS settings, open:
TTS Configuration → Custom TTS Providers → Add New Custom ProviderEnter these basic settings:
| RimTalk setting | Value |
|---|---|
| Provider name | Fish Audio |
| Base URL | https://fishaudio.org/v1 |
| Endpoint path | /audio/speech |
| Model | fishaudio-s21pro-flash |
| Default voice | 00a1b221-6137-4b73-ad62-b0cbce134167 (replace later) |
| Response format | mp3 |
The full URL shown by RimTalk should be:
https://fishaudio.org/v1/audio/speechThe 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 setting | Value |
|---|---|
| Requires API key | Enabled |
| API key | The dedicated key created for RimTalk |
| Auth header name | Authorization |
| Auth header prefix | Bearer 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:
| Setting | Recommended value |
|---|---|
| Send speed | Enabled |
| Temperature | Disabled |
| Top P | Disabled |
| Emotion/style | Disabled |
| Instruct text | Disabled |
| Streaming | Disabled |
| Custom request body | Disabled |
| Timeout | 60 seconds |
| Generation cooldown | Keep 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:
- Add a voice model;
- Enter a recognizable display name such as “Young man” or “Doctor”;
- Enter the Fish Audio voice UUID as the Model ID, not the display name;
- Select one voice as the default;
- 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:
- The request URL does not duplicate
/v1or/audio/speech; - The request returns HTTP
200; - The complete audio plays in RimWorld;
- The call and credit usage appear in API management;
- 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
Bearerplus 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, nottts-1ors2.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
60seconds, usefishaudio-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.