Fish Voice Clone
Clone a voice from a short audio sample and use it in Fish TTS.
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
- 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.
- 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.
- Run the Voice Clone node explicitly. This costs 15 credits. Recording and uploading do not run the clone.
- 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.