Skip to content
Agentmart
Submit a tool

venice-audio-voice-changer

Async speech-to-speech voice conversion via Venice — re-record a source recording in a different voice while keeping delivery and timing.

Skill by veniceai

IndexedMIT★ 155
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/veniceai-venice-audio-voice-changer

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Async speech-to-speech voice conversion via Venice — re-record a source recording in a different voice while keeping delivery and timing. Covers POST /audio/voice-changer/quote (unauthenticated), /queue (multipart file or JSON audio_url), /retrieve and /complete, how to discover voice-changer models (model_spec.voice_changer on /models?type=music), accepted formats, the source-length cap, whole-minute billing, refunds, and what each endpoint refuses. Note that no voice-changer model is currently open to regular API keys.

Use cases: backend, productivity

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/venice-audio-voice-changer

What's inside

Skill name
venice-audio-voice-changer
Description
Async speech-to-speech voice conversion via Venice — re-record a source recording in a different voice while keeping delivery and timing. Covers POST /audio/voice-changer/quote (unauthenticated), /queue (multipart file or JSON audio_url), /retrieve and /complete, how to discover voice-changer models (model_spec.voice_changer on /models?type=music), accepted formats, the source-length cap, whole-minute billing, refunds, and what each endpoint refuses. Note that no voice-changer model is currently open to regular API keys.
License
MIT
Instructions
192 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Venice Voice Changer (`/audio/voice-changer/*`)

Speech-to-speech conversion: upload a recording, get the same speech back in a different voice, with the original pacing, emotion and timing preserved. It's asynchronous, with its own quote → queue → retrieve → complete family (parallel to, but separate from, [`venice-audio-music`](../venice-audio-music/SKILL.md)).

> **Availability (checked 2026-09-30):** the endpoints are in the public API spec, but the only voice-changer model, `elevenlabs-voice-changer`, is not yet open to regular API keys. It is not listed by `GET /models`, and regular keys (or no key) get `404 "Specified model not found"` from every endpoint below. Before using this skill, confirm that a model with `model_spec.voice_changer: true` shows up in `GET /models?type=music` for your key; if none does, the feature isn't available to you.

| Method | Path | Auth | Notes |
|---|---|---|---|
| `POST` | `/api/v1/audio/voice-changer/quote` | **None required** (key optional) | Price for a source of N seconds. |
| `POST` | `/api/v1/audio/voice-changer/queue` | Bearer key or x402 (SIWX) | `multipart/form-data` (`file`) **or** JSON (`audio_url`). Charges and enqueues. 40 req/min per user. |
| `POST` | `/api/v1/audio/voice-changer/retrieve` | Bearer key or x402 (SIWX) | Status JSON or the converted audio. 120 req/min per user. |
| `POST` | `/api/v1/audio/voice-changer/complete` | Bearer key or x402 (SIWX) | Release the provider-held media. |

Each endpoint only accepts voice-changer models (`400` otherwise, naming the endpoint to use instead), and `/audio/quote`, `/audio/queue`, `/audio/retrieve`, `/audio/complete` refuse voice-changer models the same way.

## Use when

- You have a real recording (voice-over, dialogue, a take) and want it in another voice without re-performing it.
- You want to keep the timing of the original exactly — e.g. dubbing against picture.

For text → speech use [`venice-audio-speech`](../venice-audio-speech/SKILL.md); to create a reusable voice from a sample, see voice cloning there.

## Discover models

There is no `?type=voice-changer` filter. Voice-changer models are music-type models whose `model_spec` carries:

| Field | Meaning |
|---|---|
| `voice_changer` | `true` on voice-changer models only. |
| `accepted_audio_formats` | Containers accepted for the source, judged from the file's bytes (not its name or `Content-Type`). `mp4` covers M4A. |
| `max_source_audio_duration_seconds` | Longest source accepted; longer → `422` before any charge. |
| `supports_background_noise_removal` | Whether `remove_background_noise` is honored. |
| `supports_seed` | Whether `seed` is honored. |
| `voices`, `default_voice`, `supports_custom_voice_id` | Target voices; with `supports_custom_voice_id: true` you may pass a provider Voice ID. |
| `pricing.durations` | Whole-minute price tiers keyed by source length. |

`elevenlabs-voice-changer` supports: formats `mp3`, `wav`, `ogg`, `mp4`, `aac`; max source 300 s; noise removal and seed supported; the curated ElevenLabs voices (`Aria` default, `Roger`, `Sarah`, …) or any ElevenLabs Voice ID; output `mp3`. Read its price tiers from `pricing.durations` rather than hard-coding them.

## Lifecycle

### 1. `POST /audio/voice-changer/quote`

```bash
curl https://api.venice.ai/api/v1/audio/voice-changer/quote \
  -H "Content-Type: application/json" \
  -d '{ "model": "elevenlabs-voice-changer", "duration_seconds": 52 }'
```

Response: `{ "quote": <USD>, "duration_seconds": 52 }`.

| Field | Notes |
|---|---|
| `model` | Required. A voice-changer model. |
| `duration_seconds` | **Required.** Positive integer or numeric string, ≤ `max_source_audio_duration_seconds`. |

This is an estimate for the length you declare. The actual charge uses the length Venice measures when you queue; if both round up to the same whole minute the price is identical.

### 2. `POST /audio/voice-changer/queue`

Supply the source **exactly once** — a multipart `file` or a JSON `audio_url`. Both or neither → `400`.

```bash
# Upload
curl https://api.venice.ai/api/v1/audio/voice-changer/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -F "model=elevenlabs-voice-changer" \
  -F "file=@take-03.wav" \
  -F "voice=Roger" \
  -F "remove_background_noise=true"

# By URL
curl https://api.venice.ai/api/v1/audio/voice-changer/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "elevenlabs-voice-changer",
    "audio_url": "https://example.com/take-03.mp3",
    "voice": "Roger",
    "seed": 42
  }'
```

Response:

```json
{ "model": "elevenlabs-voice-changer", "queue_id": "…", "status": "QUEUED", "duration_seconds": 52 }
```

`duration_seconds` is the source length measured server-side — the exact quantity billed.

| Field | Notes |
|---|---|
| `model` | Required. |
| `file` | Multipart source recording, max 25 MB. |
| `audio_url` | Public `http(s)` URL. Venice fetches it (30 s timeout, 25 MB cap), validates the bytes, and forwards only the bytes — the URL itself is never passed to the provider. |
| `voice` | 1–60 chars. A curated voice or provider Voice ID. Defaults to `default_voice`. Not checked against `voices` at queue time — an unknown Voice ID fails with `400` at queue or on retrieve. |
| `remove_background_noise` | Boolean (`"true"` / `"false"` in multipart). |
| `seed` | Non-negative integer, for reproducible output. |

The body is strict — unknown fields → `400`. Format, length, seed and balance are checked **before** you're charged. A voice the provider rejects at queue time returns `400`, and any charge is refunded immediately.

### 3. `POST /audio/voice-changer/retrieve`

```bash
curl https://api.venice.ai/api/v1/audio/voice-changer/retrieve \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"elevenlabs-voice-changer","queue_id":"..."}' \
  --output converted.mp3
```

- Still running: `200` `{"status":"PROCESSING","average_execution_time":<ms>,"execution_duration":<ms since queued>}`.
- Done: `200` with the audio bytes, plus `x-venice-audio-format`, `x-venice-inference-time` (s), `x-venice-model-id`, `x-venice-model-name`, and `x-venice-audio-duration` when known.
- Failed: an error status with `{ "error": "…", "credits_refunded": true|false }`. If the provider accepted then failed the job, the charge is refunded; when `credits_refunded` is `false`, the message says whether anything is owed. The verdict is stored, so later polls return the same answer without a second refund.
- `delete_media_on_completion: true` releases the provider copy as soon as the audio is returned.

**The audio is delivered once.** After a successful download, the next retrieve for that `queue_id` returns `404`. Save the bytes on the first success.

### 4. `POST /audio/voice-changer/complete`

From veniceai/skills, MIT.

More from veniceai/skills

Signals

Stars
155
Forks
26
Open issues
1
Last commit (this folder)
Oct 2, 2026 (25 days ago)
Last release
Oct 5, 2026 (22 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from veniceai

Cite this page

venice-audio-voice-changer skill. Agent Mart. https://agentmart.dev/skills/veniceai-venice-audio-voice-changer (last updated 2026-10-24)