Source: https://ailoot.ai/models/en/canopylabs-orpheus-3b-0-1-ft/
Canonical: https://ailoot.ai/models/en/canopylabs-orpheus-3b-0-1-ft/
Language: en

# Canopy Labs: Orpheus 3B

[Markdown](https://ailoot.ai/models/en/canopylabs-orpheus-3b-0-1-ft/index.md) · [JSON](https://ailoot.ai/models/en/canopylabs-orpheus-3b-0-1-ft/facts.json)

## [Canopy Labs: Orpheus 3B](https://ailoot.ai/models/en/canopylabs-orpheus-3b-0-1-ft/)

Canopy Labs’ Orpheus 3B fine-tuned English speech model turns written lines into expressive audio. Eight preset voices and nonverbal tags support narration, dialogue and spoken application responses.

- [**Ailoot Ultra · Text to speech** `POST /v1/audio/speech` `canopylabs/orpheus-3b-0.1-ft`](https://ailoot.ai/models/en/canopylabs-orpheus-3b-0-1-ft/#method-0)

About the model

This description covers the model’s capabilities. Available in Ailoot inputs, outputs and options are listed for the selected method below.

Orpheus 3B 0.1 Fine-Tuned is Canopy Labs’ English text-to-speech model for everyday synthesis. It belongs to the Orpheus family built on a Llama 3B backbone and focuses on natural intonation, rhythm and expressive delivery. The input is the text to be spoken, with a selected speaker; the output is speech audio. The manufacturer also lists zero-shot voice cloning for this exact fine-tuned model. Its published fine-tuned synthesis example uses preset speakers, while reference-conditioned text–speech prompting is documented separately for the pretrained edition. This fine-tuned edition is distinct from the pretrained model and the separately released multilingual research models.

#### Choose a speaker and prepare the line

The manufacturer lists eight English preset voices: tara, leah, jess, leo, dan, mia, zac and zoe. Its prompt convention places the speaker name before the spoken text, separated by a colon. The reference speech-generation workflow can add that formatting when the voice is supplied separately. Select a speaker for the intended piece and keep that choice consistent across connected passages.

For a short explainer, write the final narration rather than an instruction asking the model to invent the explanation. A useful spoken line is: “Choose the folder you want to share, check who can open it, and save the changes.” For dialogue, prepare each speaker’s line explicitly and retain the punctuation that helps the delivery. An abbreviation, date or product name should be written in the form you want the listener to hear, particularly when its written shorthand would be ambiguous.

#### Expressive and nonverbal cues

Orpheus documents the tags \<laugh\>, \<chuckle\>, \<sigh\>, \<cough\>, \<sniffle\>, \<groan\>, \<yawn\> and \<gasp\>. They give the text an explicit nonverbal event at the relevant point. A short conversational passage can place a chuckle before a light remark or a sigh before a reflective sentence. Use the cue where it belongs in the performance and keep the actual words of the line clear.

These are speech-generation cues, not a general instruction language for editing an existing recording. For a voice-over, begin with readable copy and add only the expressive events the scene needs. Listen to the complete line to judge whether the event, emphasis and pacing support the meaning. A narration task may call for a steady voice, while a character line may benefit from a specific nonverbal cue.

#### Streaming and the audio result

The manufacturer supplies both a non-streaming notebook and a streaming speech example. Streaming returns successive audio chunks as the passage is generated. In the published example, those chunks are written into a mono WAV file at 24,000 Hz with 16-bit samples. Those file settings describe the reference workflow; the useful result is a playable recording whose words, speaker and delivery can be checked against the script.

For a longer narration, prepare coherent passages with clear sentence boundaries and keep a copy of the final script beside the audio. Review the start and end of each passage, the pronunciation of important names and the transition between adjacent recordings. The manufacturer’s sampling guidance specifies a repetition penalty of at least 1.1 for stable generation in its reference implementation and notes that sampling choices can affect speaking speed. The sample’s configured model length is an inference setting, rather than an established maximum narration duration.

#### Edition boundaries

This profile concerns the fine-tuned English model with its documented preset speakers. The pretrained model has its own text-and-speech conditioning workflow; multilingual releases have language-specific speakers and tags. Selecting this English edition does not combine those separate profiles. A practical deliverable is a spoken script, an intentional preset voice and audio that has been reviewed for the wording and performance required by the piece.

**Ailoot Ultra · Text to speech** `POST /v1/audio/speech` `canopylabs/orpheus-3b-0.1-ft`

[`canopylabs/orpheus-3b-0.1-ft`](https://ailoot.ai/models/en/#m=canopylabs%2Forpheus-3b-0.1-ft&route=Ultra&caller=canopylabs%2Forpheus-3b-0.1-ft&fmt=speech)

Canopy Labs /`canopylabs/orpheus-3b-0.1-ft`

### Overview

Canopy Labs’ Orpheus 3B fine-tuned English speech model turns written lines into expressive audio. Eight preset voices and nonverbal tags support narration, dialogue and spoken application responses.

Accepted inputs

Text

Results

Audio

### Available in Ailoot · inputs & methods

**Ailoot Ultra · Text to speech** `POST /v1/audio/speech`

Input types

`text`

Output types

`audio`

Output format

mp3

| Field | Type | Requirement | Values & limits | Default |
| --- | --- | --- | --- | --- |
| Field`model` | Type`string` | RequirementRequired | Values & limits canopylabs/orpheus-3b-0.1-ft | Default— |
| Field`input` | Type`string` | RequirementRequired | Values & limits Minimum length: 1 Unit: Unicode characters | Default— |
| Field`voice` | Type`string` | RequirementRequired | Values & limits tara, leah, jess, leo, dan, mia, zac | Default— |
| Field`response_format` | Type`string` | RequirementRequired | Values & limits mp3 | Default— |

Input material combinations

**text\_to\_speech** · Required: input

Method parameters and lifecycle

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, input, voice, response\_format |
| Parameter`voice_ids` | Contracttara, leah, jess, leo, dan, mia, zac |
| Parameter`response_format` | Contractmp3 |
| Parameter`max_input_characters` | Contractnull |
| Parameter`other_options` | Contractfalse |
| Parameter`input` | Contractexact UTF-8 text; Unicode character count without normalization |
| Parameter`material_types` | Contracttext |

Lifecycle: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · actual returned task\_id or media library record

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

Select exact voice from this model profile.

Input characters and audio seconds are different meters.

### Pricing

Tariff references do not add request options. Supported parameters are listed for the selected method.

Fast mode

Not specified When fast mode is selected

Flex mode

Not specified When flex mode is selected

Maximum reasoning effort

Not specified When maximum reasoning effort uses the default adjustment

#### Ailoot rates

#### Prices by configuration

Match each charge to the conditions shown. Use one rate for each set of alternative configurations.

| Configuration | Rate schedule | Billable quantity | Billing unit | Charge |
| --- | --- | --- | --- | --- |
| ConfigurationBase token rates | Rate scheduleBase rate | Billable quantity— | Billing unit— | Charge Input · Input tokens **—** / 1K tokens Output · Output tokens **—** / 1K tokens Input · Cache read **—** / 1K tokens Input · Cache write **—** / 1K tokens Input · Cache write, 1 hour **—** / 1K tokens |
| ConfigurationUltra | Rate schedule— | Billable quantityEach Unicode code point counts as one character, including Han characters. | Billing unitper 1000 input character | Charge Input · input character **$0.03** per 1000 input character |

#### Reference tariff details

Model-level reference schedules do not change method selection, quotes or charges. Active charges use the selected Ailoot method rates.

Canopy Labs: Orpheus 3B

#### Prices by configuration

| Configuration | Billing conditions | Charge |
| --- | --- | --- |
| ConfigurationCanopy Labs: Orpheus 3B · Default configuration | Billing conditionsDefault configuration | Charge Input · Input characters **$0.000014** per input character |

Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. [How reservation and settlement work →](https://ailoot.ai/docs/en/billing/reserve/)

### Example requests

#### Ailoot Ultra · Text to speech

curl

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}"
export AILOOT_VOICE_ID
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "canopylabs/orpheus-3b-0.1-ft", "input": "Good afternoon! This is a short voice take."}')
voice=os.environ["AILOOT_VOICE_ID"]
allowed=json.loads('["tara", "leah", "jess", "leo", "dan", "mia", "zac"]')
if voice not in allowed: raise SystemExit("Choose an accepted voice ID from this exact model profile")
p["voice"]=voice
p["response_format"]="mp3"
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o speech.mp3
```

### Receive and save results

#### Ailoot Ultra · Text to speech

mp3

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

Other content reads

Media libraryTask statusAsset details

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o media-assets.json
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_MEDIA_TASK_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_MEDIA_TASK_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/tasks/$resource_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o media-task.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-task.json").read_text())))
PY_RESULT
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_ASSET_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_ASSET_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/assets/$resource_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o media-asset.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-asset.json").read_text())))
PY_RESULT
```

##### Keep all completed results

Keep every complete returned response, file and content part.

Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.

##### If the original response needs checking

Retain original operation\_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route.

Response fields

| Field | Type |
| --- | --- |
| Field`binary audio` | Typebytes |
| Field`response headers` | Typeheaders |

Errors and next steps

| Response | Condition | Next step |
| --- | --- | --- |
| Response400 · `invalid_request_error` | ConditionInvalid required fields, material representation or parameter value | Next stepCorrect the indicated fields before a new creation request. |
| Response`server_error` | ConditionThe returned response says the operation or result requires a check | Next stepKeep the original returned operation/task ID, request headers and response; continue supported reads of that original operation. Do not resubmit the creation request. |

### Aliases

#### Model aliases

**Ailoot Ultra** [`canopylabs/orpheus-3b-0.1-ft`](https://ailoot.ai/models/en/#m=canopylabs%2Forpheus-3b-0.1-ft&route=Ultra&caller=canopylabs%2Forpheus-3b-0.1-ft&fmt=speech)

#### Method path aliases

Use the method paths shown above.

#### Related caller IDs

[`canopylabs/orpheus-3b-0.1-ft`](https://ailoot.ai/models/en/#m=canopylabs%2Forpheus-3b-0.1-ft&route=Ultra&caller=canopylabs%2Forpheus-3b-0.1-ft&fmt=speech)

FAQ · Canopy Labs: Orpheus 3B

What inputs and results are available?

`POST /v1/audio/speech` · `canopylabs/orpheus-3b-0.1-ft`: `text` → `audio`

Which fields does the request use?

`POST /v1/audio/speech` · `canopylabs/orpheus-3b-0.1-ft`: `model`, `input`, `voice`, `response_format`

Connect Ailoot to Claude Code, OpenCode, Hermes or your own app.

## The company and its project portfolio

The company and its project portfolio: millions of customers; monthly sales in the billions.

## Buy tokens at a discount.

Subscription discounts for regular use. Promo codes offer up to 50% off token purchases.

Subscription

Choose a discounted plan for your regular requests.

Promo code: up to 50% off

Enter your code at checkout. The price updates to reflect the current promotion.

Spending in your history

The model, tokens and amount are recorded for each request.

[Choose a subscription](https://ailoot.ai/docs/en/billing/subscriptions/) · [View model prices](https://ailoot.ai/models/en/)

## Connect the API to a product you sell.

Use Ailoot in SaaS, apps and bots under its official service offer and licence agreement. Request a reseller licence for resale.

Commercial application

Add text, image, video and audio generation to paid features in your service.

Reseller licence

Send a description of your project and how you provide access. Request written terms for use and resale.

Documents on the website

The service offer, licence agreement and data processing policy are available before you connect.

[Request a reseller licence](mailto:support@ailoot.ai) · [Service offer and licence agreement](https://ailoot.ai/legal/offer?lang=en)

## Ailoot · The company and its project portfolio





Ailoot combines established operating experience, a large client base, stable service and ongoing KPI control.





The company and its project portfolio: millions of customers; monthly sales in the billions.





Ailoot brings that operating experience to API access for AI features in customer products, agents, applications and automations.
