---
title: 'Fish Voice Clone'
description: 'Clone a voice from a short audio sample and use it in Fish TTS.'
updated: 2026-09-24
---

# Fish Voice Clone

**Badge:** New  
**Node type:** `audio:fish_voice_clone`  
**Category:** `audio`

## Description

Clone a voice from an audio sample uploaded to your Wireflow account. Outputs a `voice_id` you can wire straight into the Fish TTS node on the same canvas.

The clone is private to your account and shows up in the Fish TTS voice dropdown after the run.

## Record and reuse a voice

1. Add an Import node. Upload audio, or choose **Record audio**, allow the microphone, and record 30-120 seconds of clean speech from one speaker. Stop, listen to the preview, then choose **Use recording**.
2. Connect the Import output to **Voice Sample** on a Fish Voice Clone node. Set **Voice Name** and check **I own this voice or have permission to clone it**.
3. Run the Voice Clone node explicitly. This costs 15 credits. Recording and uploading do not run the clone.
4. In a Fish TTS node, choose **Refresh voices** and select the saved private voice by name. You can reuse it in other workflows without running Voice Clone again.

The saved voice is account scoped. Uploaded source audio is hosted at a CDN URL; it is not private storage.

## API and agents

Upload the source audio through `POST /api/v1/media/upload-url`, PUT the bytes to the returned URL, then call `POST /api/v1/media/upload-url/complete`. Prepare a private draft with `POST /api/v1/voices/clone-workflow` using `{ "name": "My narration", "audioUrl": "<completed upload URL>", "consentConfirmed": true }`, or use MCP `prepare_voice_clone`. Preparing the draft costs no credits and does not clone the voice. Review its estimate, then use the returned workflow run endpoints when ready.

For REST estimate and run requests, send the draft's `nodeIds` as the body, for example `{ "nodeIds": ["clone-voice"] }`. MCP `run_workflow` takes the same list as the draft's `targetNodeIds` instead; the REST run route refuses that name. A REST run with `"dryRun": true` checks the plan without cloning. If a run response is uncertain, poll the original execution before submitting another clone.

List saved voices with `GET /api/v1/voices` or MCP `list_voices`. Reuse the returned voice ID in Fish TTS.

Existing saved voices keep working. Re-running an older clone node now requires explicit consent and a completed audio upload owned by your account. Upload legacy or external samples again once before cloning.

## Pricing

- **Cost:** 15 credits per run. A clone is a one-time cost. Using the voice afterwards is just the Fish TTS price (3 credits per run).

## Canvas ports

These appear as port handles on the left side of the node.

| ID          | Label            | Details                                                                                    |
| ----------- | ---------------- | ------------------------------------------------------------------------------------------ |
| `audio_url` | **Voice Sample** | `AUDIO` _(required)_. An owned upload with 30-120 seconds of clean speech from one speaker |

## Sidebar config

| ID                  | Label                                               | Details                                                           |
| ------------------- | --------------------------------------------------- | ----------------------------------------------------------------- |
| `title`             | **Voice Name**                                      | `TEXT`. How the voice is labelled in your voice list              |
| `consent_confirmed` | **I own this voice or have permission to clone it** | `BOOLEAN` _(required)_. Must be explicitly checked before running |

## Outputs

| ID         | Label        | Type   |
| ---------- | ------------ | ------ |
| `voice_id` | **Voice ID** | `TEXT` |

## Limits

- Sample must be a completed audio upload owned by your Wireflow account, **25 MB max**. External URLs must be uploaded to Wireflow first.
- The browser recorder stops after 120 seconds and uploads WAV audio. If recording is unavailable, upload a WAV, MP3, or M4A file.

## Notes

- Clean beats long. Background music, reverb, and two people talking all end up in the clone.
- One run makes one voice. Re-running with the same sample makes a second, separate voice.
- Only clone voices you have the right to clone.

---

Documentation index: fetch https://www.wireflow.ai/llms.txt for the full list of Wireflow docs.
