{
  "name": "Transcribe & translate audio between languages with OpenAI & S3 storage",
  "nodes": [
    {
      "id": "e767e593-cbdf-402f-948e-77deb877b223",
      "name": "Receive Audio File",
      "type": "n8n-nodes-base.webhook",
      "position": [
        100,
        540
      ]
    },
    {
      "id": "65ba3207-f498-44cb-b4f9-a2691fd5f823",
      "name": "Transcribe Audio to Text",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        360,
        540
      ]
    },
    {
      "id": "363e96e1-6e76-4f32-9e0f-57d5b852cda2",
      "name": "Translate and Structure Text",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        600,
        540
      ]
    },
    {
      "id": "1c6bc4a8-92d6-46f1-9dd9-fed63d5a5d6f",
      "name": "Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -500,
        -20
      ],
      "parameters": {
        "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 "
      }
    },
    {
      "id": "e0a40de0-9532-407a-8c73-44ead921ac1a",
      "name": "Send Translation Results",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1760,
        540
      ]
    },
    {
      "id": "e7786e6a-9457-41e0-8f99-34e697100ec5",
      "name": "Prepare Response Data",
      "type": "n8n-nodes-base.set",
      "position": [
        980,
        540
      ]
    },
    {
      "id": "1ad5cc4c-58e7-4cbb-981c-df5283ba4691",
      "name": "Step 1 - Transcription",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        280,
        240
      ],
      "parameters": {
        "width": null,
        "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."
      }
    },
    {
      "id": "10866a78-388a-42ff-b643-11f43ddcb67b",
      "name": "Generate Translated Audio",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1260,
        540
      ]
    },
    {
      "id": "797172cf-9200-4ccc-b54f-f57791d295b2",
      "name": "Upload Audio to S3",
      "type": "n8n-nodes-base.awsS3",
      "position": [
        1520,
        540
      ]
    },
    {
      "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 "
      }
    },
    {
      "id": "771c99ac-ab21-4287-a040-2b12babafac4",
      "name": "Step 3 - Audio Generation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1160,
        220
      ],
      "parameters": {
        "width": null,
        "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"
      }
    },
    {
      "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!"
      }
    },
    {
      "id": "1b12775a-0736-4930-9931-2fc01949c62a",
      "name": "Security Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        740,
        800
      ],
      "parameters": {
        "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 neede"
      }
    }
  ],
  "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
          }
        ]
      ]
    }
  }
}