This workflow corresponds to n8n.io template #6419 — we link there as the canonical source.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "czQrkJi2yAvqGLRZ",
"name": "AI Audio Translator with Text-to-Speech",
"tags": [],
"nodes": [
{
"id": "e767e593-cbdf-402f-948e-77deb877b223",
"name": "Receive Audio File",
"type": "n8n-nodes-base.webhook",
"position": [
100,
540
],
"parameters": {
"path": "audio-translator",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "65ba3207-f498-44cb-b4f9-a2691fd5f823",
"name": "Transcribe Audio to Text",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
360,
540
],
"parameters": {
"options": {},
"resource": "audio",
"operation": "transcribe",
"binaryPropertyName": "audiofile"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"typeVersion": 1.8
},
{
"id": "363e96e1-6e76-4f32-9e0f-57d5b852cda2",
"name": "Translate and Structure Text",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
600,
540
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "GPT-4.1"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are a translator. You receive a text and 2 languages.\nYour task is to understand the text that you received, structure it to a normal form, remove unnecessary repetitions. One language - in which the text is, translate the text into the second language, from those that you received.\nReturn the result in the format json\nWith the following fields:\nStructured incoming text in the field:\"structuringMessage\"\nTranslated text in the field: \"translateMessage\"\n\nInput text:{{ $json.text }}\nLanguages: {{ $('Receive Audio File').item.json.body.languages }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "1c6bc4a8-92d6-46f1-9dd9-fed63d5a5d6f",
"name": "Workflow Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-500,
-20
],
"parameters": {
"color": 3,
"width": 500,
"height": 1200,
"content": "## AI Audio Translator with Text-to-Speech\n\nThis workflow automatically transcribes audio files, translates the content between languages, and generates speech from the translated text.\n\n### Who's it for\n- Content creators working with multilingual content\n- Businesses needing audio translation services\n- Educational platforms with international audiences\n- Anyone needing quick audio-to-audio translation\n\n### How it works\n1. **Receive audio file** via webhook with language parameters\n2. **Transcribe audio** to text using OpenAI Whisper\n3. **Translate and structure** the text using GPT-4\n4. **Generate speech** from translated text\n5. **Upload to S3** for storage and delivery\n6. **Return results** with both text versions and audio URL\n\n### How to set up\n1. Create OpenAI API credentials\n2. Set up AWS S3 bucket with public read permissions\n3. Configure webhook path\n4. Test with POST request containing:\n - Audio file (binary)\n - Languages parameter (e.g., \"English, Spanish\")\n\n### Requirements\n- OpenAI API key (for Whisper and GPT-4)\n- AWS account with S3 access\n- S3 bucket for audio storage\n\n### How to customize\n- Change GPT model for different translation quality\n- Adjust voice settings in text-to-speech\n- Add language detection if source unknown\n- Implement file size limits\n- Add webhook authentication"
},
"typeVersion": 1
},
{
"id": "e0a40de0-9532-407a-8c73-44ead921ac1a",
"name": "Send Translation Results",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1760,
540
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={\n \"StructuringMessage\": \"{{ $('Prepare Response Data').item.json.structuringMessage }}\",\n \"translateMessage\": \"{{ $('Prepare Response Data').item.json.translateMessage }}\",\n\"audiofile\":\"https://YOUR-BUCKET-NAME.s3.YOUR-REGION.amazonaws.com/{{ $('Prepare Response Data').item.json.audiofilename }}\"\n}"
},
"typeVersion": 1.4
},
{
"id": "e7786e6a-9457-41e0-8f99-34e697100ec5",
"name": "Prepare Response Data",
"type": "n8n-nodes-base.set",
"position": [
980,
540
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "158ffe09-151f-40e5-bd48-85cdf8d83123",
"name": "structuringMessage",
"type": "string",
"value": "={{ $json.message.content.structuringMessage }}"
},
{
"id": "ae21f76c-b9f0-4c87-8d02-3f261df27d6f",
"name": "translateMessage",
"type": "string",
"value": "={{ $json.message.content.translateMessage }}"
},
{
"id": "d85be708-67ba-473c-8673-72fa0840ffdd",
"name": "audiofilename",
"type": "string",
"value": "={{ $now.toString().replace(/[^a-zA-Z0-9]/g, '') }}.mp3"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1ad5cc4c-58e7-4cbb-981c-df5283ba4691",
"name": "Step 1 - Transcription",
"type": "n8n-nodes-base.stickyNote",
"position": [
280,
240
],
"parameters": {
"height": 280,
"content": "## 1. Audio Transcription\n\nUses OpenAI Whisper to convert speech to text. Supports multiple languages and accents.\n\n**Tip**: Enable retry on fail for better reliability with larger files."
},
"typeVersion": 1
},
{
"id": "10866a78-388a-42ff-b643-11f43ddcb67b",
"name": "Generate Translated Audio",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1260,
540
],
"parameters": {
"input": "={{ $json.translateMessage }}",
"options": {},
"resource": "audio"
},
"typeVersion": 1.8
},
{
"id": "797172cf-9200-4ccc-b54f-f57791d295b2",
"name": "Upload Audio to S3",
"type": "n8n-nodes-base.awsS3",
"position": [
1520,
540
],
"parameters": {
"fileName": "={{ $('Prepare Response Data').item.json.audiofilename }}",
"operation": "upload",
"bucketName": "YOUR-BUCKET-NAME",
"additionalFields": {
"acl": "publicRead"
}
},
"typeVersion": 2
},
{
"id": "5c457981-1032-45fd-bdf9-32499d5de85b",
"name": "Step 2 - Translation",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
240
],
"parameters": {
"width": 320,
"height": 300,
"content": "## 2. Translation & Structuring\n\nGPT-4 processes the transcribed text to:\n- Remove repetitions and filler words\n- Structure the content properly\n- Translate to target language\n\nReturns JSON with both versions."
},
"typeVersion": 1
},
{
"id": "771c99ac-ab21-4287-a040-2b12babafac4",
"name": "Step 3 - Audio Generation",
"type": "n8n-nodes-base.stickyNote",
"position": [
1160,
220
],
"parameters": {
"height": 300,
"content": "## 3. Audio Generation\n\nConverts translated text to speech using OpenAI's TTS.\n\n**Customization options**:\n- Voice selection\n- Speed adjustment\n- Audio quality settings"
},
"typeVersion": 1
},
{
"id": "7ee14a51-7e89-460b-b647-1cc6c67a752d",
"name": "Step 4 - Storage",
"type": "n8n-nodes-base.stickyNote",
"position": [
1460,
220
],
"parameters": {
"width": 440,
"height": 300,
"content": "## 4. Storage & Delivery\n\nUploads to S3 with public read access for easy sharing.\n\n**Important**: Replace 'YOUR-BUCKET-NAME' and region in the response URL!"
},
"typeVersion": 1
},
{
"id": "1b12775a-0736-4930-9931-2fc01949c62a",
"name": "Security Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
740,
800
],
"parameters": {
"color": 5,
"width": 600,
"height": 200,
"content": "\u26a0\ufe0f **Security Configuration Required**\n1. Replace 'YOUR-BUCKET-NAME' with your S3 bucket name\n2. Update S3 region in the response URL\n3. Set up proper webhook authentication\n4. Configure CORS if needed for web access"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "a8dc5123-0faf-40bf-80f2-6a5fe1ffeb4b",
"connections": {
"Receive Audio File": {
"main": [
[
{
"node": "Transcribe Audio to Text",
"type": "main",
"index": 0
}
]
]
},
"Upload Audio to S3": {
"main": [
[
{
"node": "Send Translation Results",
"type": "main",
"index": 0
}
]
]
},
"Prepare Response Data": {
"main": [
[
{
"node": "Generate Translated Audio",
"type": "main",
"index": 0
}
]
]
},
"Transcribe Audio to Text": {
"main": [
[
{
"node": "Translate and Structure Text",
"type": "main",
"index": 0
}
]
]
},
"Generate Translated Audio": {
"main": [
[
{
"node": "Upload Audio to S3",
"type": "main",
"index": 0
}
]
]
},
"Translate and Structure Text": {
"main": [
[
{
"node": "Prepare Response Data",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automatically transcribes audio files, translates the content between languages, and generates natural-sounding speech from the translated text - all in one seamless process.
Source: https://n8n.io/workflows/6419/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
User Signup & Verification: The workflow starts when a user signs up. It generates a verification code and sends it via SMS using Twilio. Code Validation: The user replies with the code. The workflow
This powerful n8n automation workflow is designed to execute advanced B2B lead enrichment and hyper-personalization for cold email outreach. By orchestrating a complex chain of data scraping, AI analy
Eu Clara – Funil Kiwify Completo. Uses postgres, openAi, httpRequest, gmail. Webhook trigger; 70 nodes.
This workflow bridges the gap between raw product data and revenue sales tools. It automates the entire Product Qualified Lead (PQL) lifecycle—from real-time intent routing to churn prevention—reducin
Lua Nova - Sistema Completo. Uses postgres, httpRequest, openAi. Webhook trigger; 55 nodes.