Skip to content
Resonance LogsUser guide

Skills, overlays, capture…

On this page

Generate cues with an online Fish Audio voice

Related page: Voices and phrases
Scenario: you'd rather not install the voice model (or your GPU is modest and local generation is slow), and want to use a ready-made voice from the Fish Audio voice library instead. Most cues should use one main voice; only the "Tina's ready" cue should switch to a Japanese voice speaking Japanese.
Each line is requested once at generation time and saved locally, so cues play in game without any network access. HTTP services don't need the voice model, but Enable voice broadcasting in Overview & Playback still has to be on.

Step 1: Get a key and voice IDs

  1. Sign in to Fish Audio, create a key on the API Keys page and copy it. The API is billed by usage; see the official site for pricing.
  2. Open the voice you want in the voice library. The address looks like https://fish.audio/m/0f08cacd3e354471a4b94dd00b4cc4a3; the string after /m/ is the voice ID.
  3. Find a Japanese voice the same way and note its ID, for example c5c17c9709384ba9a4b294662a2af0b1.

Step 2: Add the service

Open VoiceModel & Voices, choose the preset OpenAI-compatible API in HTTP voice services and click Add service. The preset already uses POST, a JSON body and Bearer {secret} authentication, so only these fields need changing:
FieldValue
Namefish audio
Concurrency2 (default)
MethodPOST
URLhttps://api.fish.audio/v1/tts
KeyThe key from step 1
HeadersKeep Authorization = Bearer {secret}; click Add header and add model = s2.1-pro
BodyEncoding JSON, content below
ResponseAudio file
Body:
json
{
  "text": "{text}",
  "reference_id": "{voice}",
  "format": "mp3"
}
  • {text} becomes the phrase text and {voice} the voice ID filled in per language below. Quotes and line breaks are escaped automatically.
  • Use mp3 or wav for format. Fish Audio can also return opus and pcm, but the app doesn't support those formats.
  • The model header picks the model. See the Fish Audio API reference for the available values.
At the bottom of the form, fill in {lang} and {voice} per language:
Language{lang}{voice}
Chinesezh0f08cacd3e354471a4b94dd00b4cc4a3
Englishen0f08cacd3e354471a4b94dd00b4cc4a3
Japanesejac5c17c9709384ba9a4b294662a2af0b1
This body doesn't use {lang}, so any value will do. If you only have one main voice, you can use the same ID for several languages.
Fish Audio service setup

Step 3: Test and save

  1. In Test, choose English, keep the default text and click Generate & play. If you hear the line and a success message with its length appears below, the setup works.
  2. Switch to Japanese, enter a Japanese line (such as "ティナ、準備完了") and test again to confirm the Japanese voice is used.
  3. Click Save.
When a test fails, the status code and reason returned by the service appear below the form:
MessageCause
HTTP 401Wrong key, or the Authorization value isn't Bearer {secret} (with one space after Bearer)
HTTP 402Not enough balance on your Fish Audio account
Other HTTP 4xxThe voice ID or body is wrong; fix it according to the returned reason
Audio decoding failsformat is set to opus or pcm; change it back to mp3
Connection failed or timed outThis computer can't reach api.fish.audio; check your network

Step 4: Use Fish Audio by default

  1. Open Phrase Library, choose HTTP service in Batch generate, then pick "fish audio".
  2. Tick the phrases to generate and click Start generating.
  3. This choice is remembered. Clicking Generate missing voices in Broadcast Overview later also generates with Fish Audio.
Each phrase uses the row for its own language. With the app in English, auto-generated and custom-text cues are English phrases, so they all use the English row's voice.

Step 5: Give only the Tina cue a Japanese voice

  1. Open Live MonitorBuff Monitor, expand Voice Broadcast and find "Time Stasis (Tina CD)" (set up as in Voice reminder when Tina's CD is ready).
  2. In Broadcast on expiry, choose Custom text and enter "ティナ、準備完了".
  3. Set Generation voice to "fish audio" and Generation language to Japanese.
  4. Click Generate audio, then Preview once it's done.
This cue uses the Japanese row's {lang} and {voice}; every other cue is still generated with the step 4 setting. Auto-generated cues can pick their own Generation voice too, but only Custom text can change Generation language, which is why this step uses custom text. To undo it, set Generation voice back to Use global settings.

Notes

  • Each phrase is one request. Text containing ${remodelLevel} expands into several phrases (one per tier), with one request each; see Fantasy tier placeholder.
  • After changing a voice ID, model, the body or the URL, audio generated with this service shows Needs regeneration and needs regenerating. Changing only the key doesn't.
  • Batch generation stops immediately on HTTP 401 or HTTP 402, keeping the audio already generated. HTTP 429 / HTTP 503 (service busy) are retried automatically; if they happen often, set Concurrency to 1.
  • Services and keys stay on this computer and aren't included when you share a loadout. After a teammate imports the loadout, the step 5 cue's Generation voice shows Service unavailable; they need to add their own service and pick it again.
Resonance Logs
Privacy Policy