What you'll build
A Telegram bot that receives your voice message, clones it into any AI voice using ElevenLabs, saves the output to Google Drive, and sends the cloned audio back — all in under 20 seconds. Eight n8n nodes. Zero code required.
Here's the full workflow at a glance:
`Telegram message received
↓
Security check (your ID only)
↓
Route by message type (voice / text / image)
↓
Fetch actual audio file from Telegram servers
↓
POST to ElevenLabs speech-to-speech API
↓
Upload cloned audio to Google Drive
↓
Send cloned audio back to Telegram chat`
Step 1 — Create your Telegram bot
Open Telegram → search @botfather → send /newbot → follow prompts → copy the bot token.
Find your own Telegram user ID by messaging @userinfobot. You'll need this in Step 3.
Step 2 — Set up the n8n canvas
Log into n8n → New Workflow → name it Voice Clone Bot.
Add the Telegram Trigger node:
Credential: paste your bot token
Updates to listen for: message
This is the entry point. Every incoming message wakes the workflow.
Step 3 — Add the security gate
Without this, anyone who finds your bot burns through your ElevenLabs credits.
Add a Code node → rename it Sanitize → paste this:
javascript
`javascript
const allowedId = 123456789; // replace with your Telegram user ID
const senderId = $input.first().json.message.from.id;
if (senderId !== allowedId) {
throw new Error('Unauthorized sender');
}
return $input.all();`
Replace 123456789 with your actual ID from @userinfobot.
Step 4 — Route by message type
Add a Switch node with three outputs:
OutputConditionFieldVoiceExistsmessage.voiceTextExistsmessage.textImageExistsmessage.photo
Voice messages take the active path for this workflow.
Step 5 — Fetch the audio file
Telegram webhooks only send a file reference ID, not the actual audio. You need a separate fetch step.
Add a Telegram node:
Resource: File
Operation: Get
File ID: {{ $json.message.voice.file_id }}
This pulls the real MP3 from Telegram's servers.
Step 6 — Call the ElevenLabs API
Add an HTTP Request node with these exact settings:
`plaintext
Method: POST
URL: https://api.elevenlabs.io/v1/speech-to-speech/{voice_id}
Authentication: Header Auth
Header name: xi-api-key
Header value: [your ElevenLabs API key]
Body type: Multipart Form Data
Fields:
- audio: [binary from previous node]
- model_id: eleven_english_sts_v2
Response format: File
`
Find {voice_id} in your ElevenLabs dashboard under Voices. For a Morgan Freeman-style voice, search the public voice library. For your own cloned voice, upload a 30-second sample first.
Step 7 — Save to Google Drive
Add a Google Drive node:
Operation: Upload
File name: cloned_{{ $json.message.voice.file_unique_id }}.mp3
Drive folder: create one called ElevenLabs in your My Drive
Dynamic file names prevent overwrites and make your library searchable later.
Step 8 — Send the cloned audio back
Add a final Telegram node:
Operation: Send Audio
Chat ID: {{ $('Telegram Trigger').first().json.message.chat.id }}
Binary data: toggle ON
Input field: output from ElevenLabs node
Step 9 — Wire it up and test
Connect all 8 nodes in sequence. Toggle the workflow active (top right — turns blue).
Open Telegram → send your bot a voice message → wait 15–20 seconds → play the response.
That's not your voice anymore.
What tends to break
"Unauthorized sender" error on your own messages — Double-check you used the ID from @userinfobot, not your phone number.
ElevenLabs returns 422 — Check that model_id is exactly eleven_english_sts_v2. Older model strings are deprecated.
Google Drive upload fails — Make sure you completed the OAuth connection inside n8n credentials, not just pasted an API key.
No audio sent back — Binary Data toggle must be ON in the final Telegram node. Easy to miss.
What this unlocks
Once running:
Record one voiceover → clone into 5 voices → A/B test conversion
Generate client audio deliverables in seconds
Build a searchable Drive library of every voice clip you produce
Full guide + workflow JSON
I kept the node configs tight here. The full guide on the Elevoras blog includes every screenshot, the complete node settings, and a workflow JSON you can import directly into n8n without building from scratch:
Full n8n + ElevenLabs Voice Clone Bot guide →
Building something with n8n? Drop it in the comments — happy to look at your workflow.
Top comments (0)