Workflow n8n

Automatisation audio avec n8n : transcription et génération vocale

Ce workflow n8n a pour objectif d'automatiser le processus de transcription audio et de génération de voix. Dans un contexte où les entreprises cherchent à améliorer leur efficacité et à réduire le temps consacré à la gestion des contenus audio, ce workflow se révèle particulièrement utile pour les équipes de communication, de marketing ou de formation. En intégrant des outils avancés comme OpenAI et ElevenLabs, il permet de transformer des fichiers audio en texte, puis de générer une voix synthétique à partir de ce texte, facilitant ainsi la création de contenus accessibles et engageants.

  • Étape 1 : Le workflow débute par un déclencheur manuel, permettant à l'utilisateur d'exécuter le processus à tout moment.
  • Étape 2 : Ensuite, plusieurs notes autocollantes sont créées pour organiser visuellement les informations.
  • Étape 3 : Le flux se poursuit avec la transcription de l'audio via une requête HTTP, qui envoie le fichier audio à un service de transcription.
  • Étape 4 : Le texte transcrit est ensuite traité par le modèle de chat d'OpenAI pour enrichir le contenu.
  • Étape 5 : Une fois le texte préparé, le workflow génère un audio en français à partir de ce texte, avant de le traduire en anglais si nécessaire.
  • Étape 6 : Enfin, le nom du fichier est ajouté pour une meilleure gestion des ressources. Les bénéfices de ce workflow sont multiples : il permet non seulement de gagner du temps en automatisant des tâches répétitives, mais aussi d'améliorer la qualité des contenus produits. En intégrant des technologies de pointe, les entreprises peuvent offrir des expériences utilisateur enrichies et accessibles, tout en optimisant leurs processus internes.
Tags clés :automatisationaudion8ntranscriptiongénération vocale
Catégorie: Manual · Tags: automatisation, audio, n8n, transcription, génération vocale0

Workflow n8n audio, transcription, génération vocale : vue d'ensemble

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Workflow n8n audio, transcription, génération vocale : détail des nœuds

  • When clicking "Execute Workflow"

    Ce noeud déclenche manuellement l'exécution du workflow.

  • Sticky Note2

    Ce noeud crée une note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

  • Sticky Note3

    Ce noeud crée une note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

  • Sticky Note4

    Ce noeud crée une note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

  • Sticky Note

    Ce noeud crée une note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

  • Sticky Note1

    Ce noeud crée une note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

  • Transcribe audio

    Ce noeud effectue une requête HTTP pour transcrire de l'audio à partir d'une URL donnée.

  • OpenAI Chat Model1

    Ce noeud utilise le modèle de chat OpenAI pour générer des réponses basées sur des options spécifiées.

  • Set ElevenLabs voice ID and text

    Ce noeud définit l'ID de voix d'ElevenLabs et le texte à utiliser dans le workflow.

  • Generate French Audio

    Ce noeud effectue une requête HTTP pour générer de l'audio en français à partir d'une URL donnée.

  • Translate Text to English

    Ce noeud traduit un texte en anglais en utilisant un modèle de langage.

  • Translate English text to speech

    Ce noeud effectue une requête HTTP pour convertir un texte anglais en discours.

  • Add Filename

    Ce noeud exécute un code JavaScript pour ajouter un nom de fichier à une donnée.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "meta": {
    "instanceId": "408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "f2ec712a-5120-44d8-9581-285d8b866322",
      "name": "When clicking \"Execute Workflow\"",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -160,
        320
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b16a56a5-0b0c-43cc-952c-f6db1b63d1e9",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        20,
        60
      ],
      "parameters": {
        "color": 7,
        "width": 199.37543798209555,
        "height": 420.623805972039,
        "content": "1] In ElevenLabs, add a voice to your [voice lab](https://elevenlabs.io/voice-lab) and copy its ID. Open this node and add the ID there"
      },
      "typeVersion": 1
    },
    {
      "id": "08e26051-58e9-42c5-b198-7854ab3e58d6",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        60
      ],
      "parameters": {
        "color": 7,
        "width": 212,
        "height": 418,
        "content": "2] Get your ElevenLabs API key (click your name in the bottom-left of [ElevenLabs](https://elevenlabs.io/voice-lab) and choose ‘profile’)\n\nIn this node, create a new header auth cred. Set the name to `xi-api-key` and the value to your API key"
      },
      "typeVersion": 1
    },
    {
      "id": "de6eb950-862e-472b-8776-b45e3109561a",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        60
      ],
      "parameters": {
        "color": 7,
        "width": 392,
        "height": 415,
        "content": "3] In the 'credential' field of this node, create a new OpenAI cred with your [OpenAI API key](https://platform.openai.com/api-keys)"
      },
      "typeVersion": 1
    },
    {
      "id": "e1d8158a-ad82-4b65-a2a8-a8f86cafd970",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -280,
        20
      ],
      "parameters": {
        "color": 7,
        "width": 230.39134868652621,
        "height": 233.3354221029769,
        "content": "### About\nThis workflow takes some French text, and translates it into spoken audio.\n\nIt then transcribes that audio back into text, translates it into English and generates an audio file of the English text"
      },
      "typeVersion": 1
    },
    {
      "id": "9614bb02-3b9c-4c5d-b596-8f94704cdb8b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 906,
        "height": 498,
        "content": "### Setup steps"
      },
      "typeVersion": 1
    },
    {
      "id": "69ebcaf8-58ab-48ba-967a-a1f0497524bb",
      "name": "Transcribe audio",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        720,
        320
      ],
      "parameters": {
        "url": "https://api.openai.com/v1/audio/transcriptions",
        "method": "POST",
        "options": {
          "lowercaseHeaders": false
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            },
            {
              "name": "model",
              "value": "whisper-1"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "multipart/form-data"
            }
          ]
        },
        "nodeCredentialType": "openAiApi"
      },
      "credentials": {
        "openAiApi": {
          "id": "8gccIjcuf3gvaoEr",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "4109bccb-2bfd-454b-accb-074bd6980897",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        940,
        500
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "8gccIjcuf3gvaoEr",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "5178a17e-737c-4ad1-8f56-95707430e892",
      "name": "Set ElevenLabs voice ID and text",
      "type": "n8n-nodes-base.set",
      "position": [
        60,
        320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c0f610ff-e200-4e55-a140-e8a4d6fa0eed",
              "name": "voice_id",
              "type": "string",
              "value": "Xb7hH8MSUJpSbSDYk0k2"
            },
            {
              "id": "6755d8ae-e3df-465c-97ef-4f0187c31824",
              "name": "text",
              "type": "string",
              "value": "=Après, on a fait la sieste, Camille a travaillé pour French Today et j’ai étudié un peu, et puis Camille a proposé de suivre une visite guidée de l’Abbaye de Beauport qui commençait à 17 heures. On a marché environ vingt minutes, et je m’arrêtais souvent pour prendre des photos : la baie de Paimpol est si jolie ! Mais Camille m’a dit : « Dépêche-toi Sunny ! La visite guidée commence dans cinq minutes. » Donc, j’ai bougé mes fesses et on est arrivées à l’abbaye"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "7aafe155-28da-43f4-8305-2dc834f0d95a",
      "name": "Generate French Audio",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        300,
        320
      ],
      "parameters": {
        "url": "=https://api.elevenlabs.io/v1/text-to-speech/{{ $json.voice_id }}",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        },
        "jsonBody": "={\"text\":\"{{ $json.text }}\",\"model_id\":\"eleven_multilingual_v2\",\"voice_settings\":{\"stability\":0.5,\"similarity_boost\":0.5}}",
        "sendBody": true,
        "sendQuery": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "optimize_streaming_latency",
              "value": "1"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "audio/mpeg"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "wXsJ55OgKMW01nWm",
          "name": "ElevenLabs API Key"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a8e75db9-4164-4332-bec3-01f91f40127f",
      "name": "Translate Text to English",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        960,
        320
      ],
      "parameters": {
        "text": "=Translate to English:\n{{ $json.text }}",
        "promptType": "define"
      },
      "typeVersion": 1.5
    },
    {
      "id": "57ea8bc0-a372-41f8-9b7c-6aef0350d9eb",
      "name": "Translate English text to speech",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1320,
        320
      ],
      "parameters": {
        "url": "=https://api.elevenlabs.io/v1/text-to-speech/{{ $('Set ElevenLabs voice ID and text').first().json.voice_id }}",
        "method": "POST",
        "options": {},
        "jsonBody": "={\"text\":\"{{ $json[\"text\"].replaceAll('\"', '\\\\\"').trim() }}\",\"model_id\":\"eleven_multilingual_v2\",\"voice_settings\":{\"stability\":0.5,\"similarity_boost\":0.5}}",
        "sendBody": true,
        "sendQuery": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "optimize_streaming_latency",
              "value": "1"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "audio/mpeg"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "wXsJ55OgKMW01nWm",
          "name": "ElevenLabs API Key"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d6bb0022-8c51-41f1-9159-139a45457201",
      "name": "Add Filename",
      "type": "n8n-nodes-base.code",
      "position": [
        540,
        320
      ],
      "parameters": {
        "jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor (const item of $input.all()) {\n  item.binary.data.fileName = \"audio.mp3\";\n}\n\nreturn $input.all();"
      },
      "typeVersion": 2
    }
  ],
  "pinData": {},
  "connections": {
    "Add Filename": {
      "main": [
        [
          {
            "node": "Transcribe audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe audio": {
      "main": [
        [
          {
            "node": "Translate Text to English",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Translate Text to English",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Generate French Audio": {
      "main": [
        [
          {
            "node": "Add Filename",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Translate Text to English": {
      "main": [
        [
          {
            "node": "Translate English text to speech",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set ElevenLabs voice ID and text": {
      "main": [
        [
          {
            "node": "Generate French Audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \"Execute Workflow\"": {
      "main": [
        [
          {
            "node": "Set ElevenLabs voice ID and text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n audio, transcription, génération vocale : pour qui est ce workflow ?

Ce workflow s'adresse principalement aux équipes de communication, de marketing et de formation au sein d'entreprises de taille moyenne à grande. Il est conçu pour des utilisateurs ayant un niveau technique intermédiaire, intéressés par l'automatisation de processus liés à la gestion de contenus audio.

Workflow n8n audio, transcription, génération vocale : problème résolu

Ce workflow résout le problème de la gestion manuelle des fichiers audio, qui peut être chronophage et sujet à des erreurs. En automatisant la transcription et la génération vocale, il élimine les frustrations liées à ces tâches répétitives, permettant aux utilisateurs de se concentrer sur des activités à plus forte valeur ajoutée. Les résultats concrets incluent une réduction significative du temps de traitement et une amélioration de l'accessibilité des contenus.

Workflow n8n audio, transcription, génération vocale : étapes du workflow

Étape 1 : Le workflow commence par un déclencheur manuel qui permet à l'utilisateur de lancer le processus.

  • Étape 1 : Des notes autocollantes sont créées pour organiser les informations.
  • Étape 2 : L'audio est transcrit via une requête HTTP.
  • Étape 3 : Le texte transcrit est enrichi par le modèle de chat d'OpenAI.
  • Étape 4 : Un audio en français est généré à partir du texte.
  • Étape 5 : Le texte est traduit en anglais si nécessaire, et enfin, le nom du fichier est ajouté pour une gestion efficace des ressources.

Workflow n8n audio, transcription, génération vocale : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier l'URL de la requête HTTP pour la transcription audio en fonction de votre service de transcription préféré. Adaptez également les paramètres du modèle OpenAI pour ajuster le ton et le style du texte généré. Si vous souhaitez utiliser une autre langue, modifiez les étapes de traduction et de génération audio en conséquence. Pensez à sécuriser vos clés d'API et à monitorer le flux pour garantir une exécution fluide et sans erreurs.