Generate Text-to-Speech Using Elevenlabs via API

Instantly convert text to natural-sounding speech using Elevenlabs' powerful AI voices directly from a simple API call. This workflow leverages an n8n webhook to receive text input, then sends this text to the Elevenlabs API via an HTTP Request node to generate an audio file. The generated audio is then returned to the original caller through the Respond to Webhook node, providing a quick and efficient way to integrate high-quality text-to-speech into any application or system. Businesses can use this for dynamic voiceovers in marketing materials, accessibility features on websites, or automated customer service responses, eliminating the need for manual voice recording and significantly reducing content creation time and costs. This automation streamlines the process of adding realistic voice narration, making content more engaging and accessible without complex development.

6 nodeswebhook trigger159 views0 copiesAI

Workflow JSON

{"nodes": [{"id": "73b64763-5e18-4ff1-bb52-ba25a08d3c3a", "name": "If params correct", "type": "n8n-nodes-base.if", "position": [500, 200], "parameters": {"options": {}, "conditions": {"options": {"leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "2e968b41-88f7-4b28-9837-af50ae130979", "operator": {"type": "string", "operation": "exists", "singleValue": true}, "leftValue": "voice_id", "rightValue": ""}, {"id": "ad961bc9-6db8-4cac-8c63-30930e8beca7", "operator": {"type": "string", "operation": "exists", "singleValue": true}, "leftValue": "text", "rightValue": ""}]}}, "typeVersion": 2}, {"id": "39079dec-54c5-458e-afa1-56ee5723f3a3", "name": "Respond to Webhook", "type": "n8n-nodes-base.respondToWebhook", "position": [960, 180], "parameters": {"options": {}, "respondWith": "binary"}, "typeVersion": 1.1}, {"id": "b6a344f4-28ac-41a7-8e6a-a2782a5d1c68", "name": "Webhook", "type": "n8n-nodes-base.webhook", "position": [300, 200], "webhookId": "5acc6769-6c0f-42a8-a69c-b05e437e18a9", "parameters": {"path": "generate-voice", "options": {}, "httpMethod": "POST", "responseMode": "responseNode"}, "typeVersion": 2}, {"id": "a25dec72-152b-4457-a18f-9cbbd31840ec", "name": "Generate voice", "type": "n8n-nodes-base.httpRequest", "position": [740, 180], "parameters": {"url": "=https://api.elevenlabs.io/v1/text-to-speech/{{ $json.body.voice_id }}", "method": "POST", "options": {}, "jsonBody": "={\n \"text\": \"{{ $json.body.text }}\"\n} ", "sendBody": true, "sendHeaders": true, "specifyBody": "json", "authentication": "genericCredentialType", "genericAuthType": "httpCustomAuth", "headerParameters": {"parameters": [{"name": "Content-Type", "value": "application/json"}]}}, "credentials": {"httpCustomAuth": {"id": "", "name": "[Your httpCustomAuth]"}}, "typeVersion": 4.2}, {"id": "e862955e-76d9-4a24-9501-0d5eb8fbe778", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [280, -360], "parameters": {"width": 806.0818150700699, "height": 495.17470523089514, "content": "## Generate Text-to-Speech Using Elevenlabs via API\nThis workflow provides an API endpoint to generate speech from text using [Elevenlabs.io](https://elevenlabs.io/), a popular text-to-speech service.\n\n### Step 1: Configure Custom Credentials in n8n\nTo set up your credentials in n8n, create a new custom authentication entry with the following JSON structure:\n```json\n{\n \"headers\": {\n \"xi-api-key\": \"your-elevenlabs-api-key\"\n }\n}\n```\nReplace `\"your-elevenlabs-api-key\"` with your actual Elevenlabs API key.\n\n### Step 2: Send a POST Request to the Webhook\nSend a POST request to the workflow's webhook endpoint with these two parameters:\n- `voice_id`: The ID of the voice from Elevenlabs that you want to use.\n- `text`: The text you want to convert to speech.\n\nThis workflow has been a significant time-saver in my video production tasks. I hope it proves just as useful to you!\n\nHappy automating! \nThe n8Ninja"}, "typeVersion": 1}, {"id": "275ca523-8b43-4723-9dc4-f5dc1832fcd1", "name": "Error", "type": "n8n-nodes-base.respondToWebhook", "position": [740, 360], "parameters": {"options": {}, "respondWith": "json", "responseBody": "{\n \"error\": \"Invalid inputs.\"\n}"}, "typeVersion": 1.1}], "pinData": {}, "connections": {"Webhook": {"main": [[{"node": "If params correct", "type": "main", "index": 0}]]}, "Generate voice": {"main": [[{"node": "Respond to Webhook", "type": "main", "index": 0}]]}, "If params correct": {"main": [[{"node": "Generate voice", "type": "main", "index": 0}], [{"node": "Error", "type": "main", "index": 0}]]}}}

How to Import This Workflow

  1. 1Copy the workflow JSON above using the Copy Workflow JSON button.
  2. 2Open your n8n instance and go to Workflows.
  3. 3Click Import from JSON and paste the copied workflow.

Don't have an n8n instance? Start your free trial at n8nautomation.cloud

Ready to automate with n8n?

Get affordable managed n8n hosting with 24/7 support.