# Overview
Source: https://docs.mserve.ai/docs/voice
Summary: Text to speech, streaming, speech to text, cloning, and speech to speech. OpenAI and ElevenLabs request shapes, one key.
Availability: available
Last reviewed: 2026-08-25

## Two request shapes

Every voice route accepts both `Authorization: Bearer ms_…` and `xi-api-key: ms_…`, so the `openai` and `elevenlabs` SDKs both work with a base URL change. Request and response bodies match the OpenAI and ElevenLabs schemas.

| Capability       | OpenAI shape                                                                 | ElevenLabs shape                                                                                          |
| ---------------- | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| Text to speech   | `POST /openai/v1/audio/speech`                                               | `POST /elevenlabs/v1/text-to-speech/{voice_id}`, `/stream`, `/with-timestamps`, `/stream/with-timestamps` |
| Streaming        | `stream_format: "sse"`                                                       | `WS /elevenlabs/v1/text-to-speech/{voice_id}/stream-input`                                                |
| Speech to text   | `POST /openai/v1/audio/transcriptions`, `POST /openai/v1/audio/translations` | `POST /elevenlabs/v1/speech-to-text`                                                                      |
| Voices           | `voice` name in the request                                                  | `GET /elevenlabs/v1/voices`, `/{voice_id}`, `/settings/default`, `/{voice_id}/settings`                   |
| Cloning          |                                                                              | `POST /elevenlabs/v1/voices/add`, `/{voice_id}/edit`, `/settings/edit`, `DELETE`, samples                 |
| Speech to speech |                                                                              | `POST /elevenlabs/v1/speech-to-speech/{voice_id}`, `/stream`                                              |
| History          |                                                                              | `GET /elevenlabs/v1/history`, `/{item_id}`, `/{item_id}/audio`, `DELETE`                                  |
| Account          |                                                                              | `GET /elevenlabs/v1/user`, `GET /elevenlabs/v1/user/subscription`                                         |

## Models

| Model id | Name | License | GPU class | Cloning |
| --- | --- | --- | --- | --- |
| `kokoro-82m` | Kokoro 82M | Apache-2.0 | RTX 4090 | Preset voices |
| `chatterbox` | Chatterbox | MIT | RTX 4090 | Yes |
| `chatterbox-vc` | Chatterbox Voice Conversion | MIT | RTX 4090 | Preset voices |

Preset voices use `kokoro-82m`. Cloned voices use `chatterbox`. Speech to speech uses `chatterbox-vc`. ElevenLabs `eleven_*` model ids and OpenAI `tts-1` names resolve to the right model for the voice you pick.

## Voices

27 preset voices. Every ElevenLabs premade id and OpenAI voice name below resolves to one of them, so existing code keeps working. Unknown ids return `404`, never a default voice.

| Voice id | Name | Voice | ElevenLabs premade id | OpenAI name |
| --- | --- | --- | --- | --- |
| `af_heart` | Heart | female, american | Rachel `21m00Tcm4TlvDq8ikWAM` | `coral` |
| `af_bella` | Bella | female, american | Domi `AZnzlk1XvdvUeBnXmlld` |  |
| `af_nicole` | Nicole | female, american | Aria `9BWtsMINqrJLrRacOk9x` |  |
| `af_sarah` | Sarah | female, american | Sarah `EXAVITQu4vr4xnSDxMaL` |  |
| `af_sky` | Sky | female, american | Elli `MF3mGyEYCl7XYWbV9V6O` | `shimmer` |
| `af_nova` | Nova | female, american |  | `nova` |
| `af_alloy` | Alloy | female, american |  | `alloy` |
| `af_aoede` | Aoede | female, american | Matilda `XrExE9yKIg1WjnnlVkGX` |  |
| `af_jessica` | Jessica | female, american | Jessica `cgSgspJ2msm6clMCkdW9` |  |
| `af_kore` | Kore | female, american | Laura `FGY2WhTYpPnrIDTdsKH5` |  |
| `af_river` | River | female, american | River `SAz9YHcvj6GT2YYXdXww` |  |
| `am_adam` | Adam | male, american | Josh `TxGEqnHWrfWFTfGW9XjX`, Adam `pNInz6obpgDQGcFmaJgB` |  |
| `am_michael` | Michael | male, american | Antoni `ErXwobaYiN019PkbXgAt`, Chris `iP95p4xoKVk53GoZ742B` | `verse` |
| `am_echo` | Echo | male, american | Will `bIHbv24MWmeRgasZH58o` | `echo` |
| `am_eric` | Eric | male, american | Sam `yoZ06aMxZJJ28mfd3POQ`, Eric `cjVigY5qzO86Huf0OWal` |  |
| `am_liam` | Liam | male, american | Liam `TX3LPaxmHKxFdv7VOQHJ` |  |
| `am_onyx` | Onyx | male, american | Roger `CwhRBWXzGAHq8TQ4Fs17`, Brian `nPczCjzI2devNBz1zQrb` | `ash`, `onyx` |
| `am_fenrir` | Fenrir | male, american | Arnold `VR6AewLTigWA4xSOukaG` |  |
| `am_puck` | Puck | male, american | Charlie `IKne3meq5aSn9XLyUdCD` |  |
| `bf_emma` | Emma | female, british | Charlotte `XB0fDUnXU5powFXDhCwa` | `sage` |
| `bf_isabella` | Isabella | female, british |  |  |
| `bf_alice` | Alice | female, british | Alice `Xb7hH8MSUJpSbSDYk0k2` |  |
| `bf_lily` | Lily | female, british | Lily `pFZP5JQG7iQjIQuC4Bku` |  |
| `bm_george` | George | male, british | George `JBFqnCBsd6RMkjVDRZzb`, Bill `pqHfZKP75CvOlQylNhV4` |  |
| `bm_lewis` | Lewis | male, british | Callum `N2lVS1w4EtoT3dr4eOWO` |  |
| `bm_daniel` | Daniel | male, british | Daniel `onwK4e9ZLuTAKqWW03F9` |  |
| `bm_fable` | Fable | male, british |  | `ballad`, `fable` |

## Output formats

Every ElevenLabs `output_format` value is accepted: `mp3_{22050|24000|44100}_{32..192}`, `pcm_{8000..48000}`, `opus_48000_{32..192}`, `ulaw_8000`, `alaw_8000`, `wav_*`. OpenAI `response_format` values map onto it:

| `response_format` | Served as       |
| ----------------- | --------------- |
| `mp3`             | `mp3_44100_128` |
| `opus`            | `opus_48000_64` |
| `aac`             | `mp3_44100_128` |
| `flac`            | `wav_24000`     |
| `wav`             | `wav_24000`     |
| `pcm`             | `pcm_24000`     |

Audio streams from the first chunk on every route.

## Pricing

| Model | Model id | Price | Unit |
| --- | --- | --- | --- |
| Kokoro 82M | `kokoro-82m` | $3.00 per 1M characters | Input characters |
| Chatterbox | `chatterbox` | $6.00 per 1M characters | Input characters |
| Chatterbox Voice Conversion | `chatterbox-vc` | $0.060 per minute | Input audio, billed per second |

- [Text to Speech](/docs/voice/text-to-speech): Both shapes, timestamps, SSE.

- [Streaming input](/docs/voice/streaming): WebSocket for voice agents.

- [Speech to Text](/docs/voice/speech-to-text): Transcribe and translate.

- [Custom Voices](/docs/voice/custom-voices): Clone from samples.
