Orpheus 3B API
AvailableOrpheus 3B is an expressive English text-to-speech model built on Llama. It supports inline emotion tags such as <laugh> and <sigh> and produces natural, characterful speech. Served on the OpenAI-compatible speech endpoint.
Quickstart
Set INFERENCE_API_KEY to your key from the API Keys page, then run:
curl https://api.inferenceapis.com/v1/audio/speech \
-H "Authorization: Bearer $INFERENCE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "canopylabs/orpheus-3b-0.1-ft",
"input": "Hello! This is Orpheus 3B speaking.",
"voice": "tara",
"response_format": "mp3"
}' --output speech.mp3
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.inferenceapis.com/v1",
api_key=os.environ["INFERENCE_API_KEY"],
)
with client.audio.speech.with_streaming_response.create(
model="canopylabs/orpheus-3b-0.1-ft",
voice="tara",
input="Hello! This is Orpheus 3B speaking.",
response_format="mp3",
) as response:
response.stream_to_file("speech.mp3")
import fs from "node:fs";
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.inferenceapis.com/v1",
apiKey: process.env.INFERENCE_API_KEY,
});
const audio = await client.audio.speech.create({
model: "canopylabs/orpheus-3b-0.1-ft",
voice: "tara",
input: "Hello! This is Orpheus 3B speaking.",
response_format: "mp3",
});
fs.writeFileSync("speech.mp3", Buffer.from(await audio.arrayBuffer()));
Endpoint
Content-Type: application/json
/openai/v1/… is accepted too, so Groq-style base URLs work with only the host changed.
Model IDs and aliases
Send any of these as model; they all resolve to this model.
| ID | Note |
|---|---|
canopylabs/orpheus-3b-0.1-ft | Canonical |
orpheus | Alias |
orpheus-3b | Alias |
Request body
| Parameter | Type | Description |
|---|---|---|
model required |
string | Model ID: canopylabs/orpheus-3b-0.1-ft |
input required |
string | The text to speak. Up to 20,000 characters per request. |
voice |
string | Voice id. Default tara. See the voice list below. |
response_format |
string | mp3 (default), wav or raw (PCM). |
speed |
number | Playback speed multiplier, e.g. 1.1. |
language |
string | Language hint for multilingual voices, e.g. en, ja. |
Voices
Click a voice to copy its id. Hear them in the playground.
Response
Binary audio (Content-Type: audio/mpeg for mp3, audio/wav for wav).
Headers:
X-Usage-Characters: 42 # characters billed for this request
Pricing
| Price | $19.5 / 1M characters |
| Billing | Pay as you go from prepaid credits. No subscription, no daily request or token cap. See all pricing. |
Notes
- Billing is per character of input text.
- Generation is slow: in our measurement a 300-character paragraph took about 58 seconds to synthesize, versus under a second for Kokoro. Use Orpheus for pre-rendered narration where expressiveness matters, not for interactive replies.
Compare Orpheus 3B with…
Languages
Per-language voice lists and samples: text-to-speech languages.
Errors
Errors use the OpenAI envelope: {"error": {"message", "type", "code"}}. 401 missing or invalid key · 402 insufficient_balance · 404 model_not_found · 503 model_unavailable. See the error reference and provider error guides.
