← Tools Portal

THE BLACKCAT Voice Studio

# THE BLACKCAT Voice Studio

## Purpose

Generate speech from text: voiceover for deliverables and character/UGC
voices. Paste text, pick a voice, press one button, get an MP3.

> Not to be confused with **Voice Extractor Studio**, which does the opposite
> (separates an existing voice from music). This one generates new speech.

## Providers

Three engines behind the same screen (`providers.py`). Pick a voice and the
Studio routes to whichever provider owns it.

- **edge-tts (free, default)**: ~90 curated neural voices (strong Spanish and
  Latino coverage, Argentine voices first). No key, works out of the box.
- **ElevenLabs (optional)**: highest-fidelity cloning. Best choice for a
  client's flagship voice. Key from `ELEVENLABS_API_KEY` or
  `studios/voice-studio/.elevenlabs-key`.
- **Fish Audio (optional)**: model **S2.1 Pro**, 83 languages, ~70-90ms
  time-to-first-audio, instant cloning from 10-30s of audio. Key from
  `FISH_API_KEY` or `studios/voice-studio/.fishaudio-key`. Get one at
  https://fish.audio/app/api-keys.

Every key is validated against its provider before being saved, stored with
permissions 600, git-ignored, and never committed.

### Which one to use

| Situation | Provider |
|---|---|
| Quick draft, internal check | edge-tts (free) |
| Client's flagship cloned voice | ElevenLabs |
| Long batches, many languages, cost matters | Fish Audio |

Cost reality check (2026-07): Fish Audio charges about **USD 15 per million
characters**; ElevenLabs overage runs **USD 240-300 per million**. For a big
voiceover batch that gap is the whole point of having both.

### Fish Audio: free vs paid model

- `s2.1-pro-free` (default): free under fair use, **no SLA**, and requests may
  be used to improve their model. Fine for drafts and experiments.
- `s2.1-pro`: the paid production model, billed per character. Tick **"Usar el
  modelo pago S2.1 Pro"** in Avanzado for client work - it carries an SLA and
  keeps requests out of their training.

Note: the free API tier was announced as open through 2026-07-24. After that
the same model stays available on the paid tier.

## Launch

```bash
scripts/open-voice-studio.command
```

Then open `http://127.0.0.1:8776`.

## Usage

1. Paste the script/text.
2. Search and pick a voice (filter by "argentina", "mujer", "ingles", a name,
   or a provider name).
3. Press **"Generar voz"**. Listen inline, download the MP3, or open the folder.

## Cloning a client's voice

In Avanzado, with at least one paid provider connected: pick the provider (a
chip row appears when both are connected), drop 1-3 minutes of clean audio,
name the voice, press **"Clonar voz"**. The sample streams straight to the
provider; nothing is stored here. The new voice appears in the list right away.

**Always clone with the person's permission.** Fish Audio does not enforce a
consent check the way ElevenLabs does, so the responsibility sits with the
operator.

**Privacy**: Fish Audio's API defaults new voice models to `public`, which
would list a client's voice on their discovery page. The Studio forces
`visibility=private` on every clone - do not remove that.

## Notes

- Generated audio lives in `output/` (git-ignored, local only).
- Text limit per generation: 5000 characters. Split longer scripts.
- Recipe from the field: to clone a natural-sounding voice, record a raw phone
  sample without editing (keep filler words and breaths).