Feature Request: OpenAI-compatible TTS endpoint for cloud API (api.fish.audio)
stale
## Summary
We'd love to use Fish Audio's cloud API (`api.fish.audio`) as a TTS provider in [OpenClaw](https://github.com/openclaw/openclaw), a popular open-source AI gateway with 30k+ stars. OpenClaw has built-in TTS support for OpenAI, ElevenLabs, Google, Microsoft, and MiniMax — all through a standardized speech provider interface.
Adding an **OpenAI-compatible TTS endpoint** (`POST /v1/audio/speech`) to the Fish Audio cloud API would allow Fish Audio to work as a drop-in TTS provider in OpenClaw and any other application that supports the OpenAI TTS API format.
## Why This Matters
- **OpenClaw has thousands of users** who could instantly use Fish Audio for voice messages across Telegram, Discord, WhatsApp, Signal, Slack, and 10+ other channels
- **Zero integration work** for end users — just point `messages.tts.providers.openai.baseUrl` at `https://api.fish.audio` and set the voice ID
- Fish Audio's S2 Pro model achieves the **lowest WER on Seed-TTS Eval** among all models — this quality deserves wider reach
- Discussion #933 asked about this for self-hosted setups, but the cloud API (`api.fish.audio`) would have much broader impact
## Proposed Endpoint
```
POST https://api.fish.audio/v1/audio/speech
Content-Type: application/json
Authorization: Bearer <token>
{
"model": "s2-pro",
"input": "Hello world",
"voice": "98655a12fa944e26b274c535e5e03842",
"response_format": "opus"
}
```
Where `voice` maps to Fish Audio's `reference_id`. This follows the [OpenAI TTS API spec](https://platform.openai.com/docs/api-reference/audio/createSpeech).
## Current Workaround
We currently call Fish Audio's native `/v1/tts` endpoint via a custom Python script with msgpack serialization. It works but requires manual exec pipelines and can't use OpenClaw's built-in TTS delivery system (which handles voice note formatting, streaming, and multi-channel delivery automatically).
## Impact
This would make Fish Audio accessible to the entire OpenClaw ecosystem with a single config change:
```json
{
"messages": {
"tts": {
"auto": "inbound",
"provider": "openai",
"providers": {
"openai": {
"baseUrl": "https://api.fish.audio",
"apiKey": "your-fish-key",
"model": "s2-pro",
"voice": "98655a12fa944e26b274c535e5e03842"
}
}
}
}
}
```
Happy to help test if you decide to implement this!
1 条评论