
AI Audio Translator with Text-to-Speech
描述
分类
🤖 AI & Machine Learning
使用的节点
n8n-nodes-base.setn8n-nodes-base.awsS3n8n-nodes-base.webhookn8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNote@n8n/n8n-nodes-langchain.openAi
价格免费
浏览量0
最后更新11/28/2025
workflow.json
{
"id": "czQrkJi2yAvqGLRZ",
"meta": {
"instanceId": "4933ec690637fb3b400e75b72209b423e4ae85e2088079d2359ab06d8bdb7716"
},
"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
],
"webhookId": "47b1daa6-5891-4616-95d0-99354cb66934",
"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": {
"id": "FGtyFYOoZEwXYHKN",
"name": "OpenAi account"
}
},
"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": {
"id": "FGtyFYOoZEwXYHKN",
"name": "OpenAi account"
}
},
"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": "⚠️ **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,
"pinData": {},
"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
}
]
]
}
}
}