← Back to Plugins
Voice

Fish Audio

Conan-Scott By Conan-Scott 👁 8 views ▲ 0 votes

Fish Audio TTS speech provider plugin for OpenClaw

Homepage GitHub

Install

openclaw plugins install @conan-scott/openclaw-fish-audio

README

# Fish Audio Speech β€” OpenClaw Plugin

[Fish Audio](https://fish.audio) TTS speech provider for [OpenClaw](https://openclaw.ai). High-quality voice cloning and text-to-speech with S2-Pro and S1 models.

## Features

- **Voice cloning** β€” use any Fish Audio voice (your own clones or community voices)
- **S2-Pro & S1 models** β€” latest Fish Audio TTS models
- **Format-aware output** β€” opus for voice notes (Telegram, WhatsApp), mp3 otherwise
- **Inline directives** β€” control voice, speed, model, latency, and sampling per-message
- **Voice listing** β€” browse your cloned voices and popular community voices via `/voice list`

## Installation

```bash
openclaw plugins install @conan-scott/openclaw-fish-audio
```

Then restart OpenClaw.

## Getting an API Key

1. Sign up at [fish.audio](https://fish.audio)
2. Go to **Account** β†’ **API Keys** β†’ **Create API Key**
3. Copy the key for configuration below

## Configuration

Add to your `openclaw.json`:

```json5
{
  messages: {
    tts: {
      provider: "fish-audio",
      providers: {
        "fish-audio": {
          apiKey: "your-fish-audio-api-key",
          voiceId: "reference-id-of-your-voice",
          model: "s2-pro",       // s2-pro (default) | s1
          latency: "normal",     // normal (default) | balanced | low
          // speed: 1.0,         // 0.5–2.0 (optional)
          // temperature: 0.7,   // 0–1 (optional)
          // topP: 0.8,          // 0–1 (optional)
        },
      },
    },
  },
}
```

Alternatively, set the `FISH_AUDIO_API_KEY` environment variable and configure only `voiceId`.

## Finding a Voice

Use the `/voice list` command in OpenClaw to browse available voices. The plugin shows:

1. **Your cloned/trained voices** (all pages, via `self=true`)
2. **Popular community voices** (top-ranked by score) as a fallback for new users

You can also browse voices at [fish.audio](https://fish.audio) and copy the voice ID from the URL.

## Inline Directives

All directive keys are provider-prefixed to avoid collisions with other speech providers. Both `fishaudio_*` and shorter `fish_*` aliases work.

```
[[tts:fishaudio_voice=<ref_id>]]         Switch voice
[[tts:fishaudio_speed=1.2]]              Prosody speed (0.5–2.0)
[[tts:fishaudio_model=s1]]               Model override
[[tts:fishaudio_latency=low]]            Latency mode
[[tts:fishaudio_temperature=0.7]]        Sampling temperature (0–1)
[[tts:fishaudio_top_p=0.8]]              Top-p sampling (0–1)
```

Short aliases: `fish_voice`, `fish_speed`, `fish_model`, `fish_latency`, `fish_temperature`, `fish_top_p`.

## Models

| Model | Description |
|-------|-------------|
| `s2-pro` | Latest high-quality model (default) |
| `s1` | Previous generation, lighter weight |

## Latency Modes

| Mode | Description |
|------|-------------|
| `normal` | Best quality, higher latency (default) |
| `balanced` | Balance between quality and speed |
| `low` | Fastest response, may reduce quality |

## Troubleshooting

- **No voice configured**: Set `voiceId` in config. Fish Audio has no universal default voice.
- **Empty voice list**: New users with no cloned voices will see popular community voices as a starting point.
- **API key missing**: Set either `apiKey` in config or `FISH_AUDIO_API_KEY` env var.

## License

MIT
voice

Comments

Sign in to leave a comment

Loading comments...