AutomationFlowsAI & RAG › Vocal N8n

Vocal N8n

vocal_n8n. Uses telegramTrigger, telegram, httpRequest, chainLlm. Event-driven trigger; 8 nodes.

Event trigger★★★★☆ complexityAI-powered8 nodesTelegram TriggerTelegramHTTP RequestChain LlmLm Chat Mistral Cloud
AI & RAG Trigger: Event Nodes: 8 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Chainllm → HTTP Request recipe pattern — see all workflows that pair these two integrations.

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 →

Download .json
{
  "name": "vocal_n8n",
  "nodes": [
    {
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.telegramTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        0
      ],
      "id": "b55c8008-e8be-49f7-afa3-57a4a24c4306",
      "name": "Telegram Trigger",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resource": "file",
        "fileId": "={{$json.message.voice.file_id}}",
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1.2,
      "position": [
        208,
        0
      ],
      "id": "f8723fd8-8f15-413d-af42-0bfdce1a8692",
      "name": "Get a file",
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "language": "pythonNative",
        "pythonCode": "item = _items[0]\nbinary_data = item['binary']['data']\n\n# Modifier le nom du fichier\nbinary_data['fileName'] = 'audio.opus'\n\nreturn [item]"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        416,
        0
      ],
      "id": "ae7b767a-2d42-40f2-8f5b-846a89bf811f",
      "name": "Rename file"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.groq.com/openai/v1/audio/transcriptions",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "multipart/form-data"
            }
          ]
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "parameterType": "formBinaryData",
              "name": "file",
              "inputDataFieldName": "=data"
            },
            {
              "name": "model",
              "value": "whisper-large-v3"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        640,
        0
      ],
      "id": "7812a200-6cc0-4d07-976b-9ed957b073e7",
      "name": "Audio to text Groq",
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Tu es un ing\u00e9nieur workflow n8n expert, sp\u00e9cialis\u00e9 dans la g\u00e9n\u00e9ration de code JSON valide et pr\u00eat \u00e0 l'emploi.\n\nTON UNIQUE T\u00c2CHE :\nTransformer la description textuelle fournie par l'utilisateur en un objet JSON n8n complet et valide.\n\nR\u00c8GLES STRICTES DE SORTIE :\n1. FORMAT : Tu DOIS sortir UNIQUEMENT l'objet JSON.\n2. PAS DE TEXTE SUPPL\u00c9MENTAIRE : Tu NE DOIS inclure AUCUN texte d'introduction, conclusion, explication, pas de retour \u00e0 la ligne ou d\u00e9marquage Markdown (NE JAMAIS utiliser ```json ou ```).\n3. VALIDATION : Le JSON g\u00e9n\u00e9r\u00e9 DOIT \u00eatre pr\u00eat \u00e0 \u00eatre import\u00e9 directement via l'API n8n.\n4. D\u00c9CLENCHEUR : Chaque workflow DOIT commencer par un n\u0153ud d\u00e9clencheur ('trigger'), tel que 'Webhook', 'Manual Trigger', ou 'Cron'.\n5. Rajoute la cl\u00e9 settings avec les valeurs n\u00e9cessaires basic pour que la requete soit accept\u00e9e par l'api de n8n.\n6. Ne rajoute aucune autre cl\u00e9 dans le json final que name; nodes et settings.\n\nSTRUCTURE DU WORKFLOW (JSON) :\n* Utilise la version '1' pour le format de l'interface ('version').\n* Utilise 'node' comme type de n\u0153ud pour les fonctions standards (Set, Code, HTTP Request).\n* Rajoute le nom du worflow dans une cl\u00e9 name \u00e0 la racine de la r\u00e9ponse json.\n* Voici un example de body json tu dois remplacer uniquement les cl\u00e9s nodes, name et connections si c'est necessaires mais pas settings. Tu dois absolument ajouter les informations de formatting json avant et apr\u00e8s.\n```json{\n  \"name\": \"Workflow 1\",\n  \"nodes\": [\n  ],\n  \"connections\": {\n  },\n  \"settings\": {\n    \"saveExecutionProgress\": true,\n    \"saveManualExecutions\": true,\n    \"saveDataErrorExecution\": \"all\",\n    \"saveDataSuccessExecution\": \"all\",\n    \"availableInMCP\": false\n  }\n}```\n\nINSTRUCTIONS SP\u00c9CIFIQUES POUR LES N\u0152UDS :\n* N\u0152UDS DE D\u00c9CLENCHEMENT (TRIGGERS) : Toujours utiliser l'option 'manual' pour 'triggerFunction' sauf si sp\u00e9cifi\u00e9.\n* N\u0152UD HTTP : Pour les appels API (ex: Groq, OpenAI), utilise le n\u0153ud 'n8n-nodes-base.httpRequest'. Assure-toi que les champs 'url' et 'method' sont correctement d\u00e9finis.\n* CONNEXIONS : Assure-toi que les n\u0153uds sont correctement reli\u00e9s en utilisant l'index de sortie (0).\n* DONN\u00c9ES BINAIRES : Pour les n\u0153uds qui manipulent des fichiers, utilise les champs 'binaryData' et assure-toi que les expressions binaires sont correctement \u00e9chapp\u00e9es (ex: '={{$binary.data}}').\n* EXPRESSIONS : Utilise le format d'expression n8n standard (ex: {{ $json.fieldName }}).\n\nEXEMPLE (Ne g\u00e9n\u00e8re PAS l'exemple, c'est pour r\u00e9f\u00e9rence seulement) :\nSi l'utilisateur demande : \"Un workflow qui re\u00e7oit des donn\u00e9es via un webhook et renvoie \"OK\" au client.\"\nTu dois g\u00e9n\u00e9rer le JSON COMPLET pour un n\u0153ud Webhook suivi d'un n\u0153ud Respond to Webhook.\n\nDESCRIPTION DE L'UTILISATEUR (Ceci est le texte que tu vas recevoir et traiter) :\n{{ $json.text }}",
        "batching": {}
      },
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "typeVersion": 1.8,
      "position": [
        848,
        0
      ],
      "id": "302fd361-049f-41b7-9237-24b01941e865",
      "name": "Basic LLM Chain"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatMistralCloud",
      "typeVersion": 1,
      "position": [
        848,
        208
      ],
      "id": "bfb2c069-6df0-490b-bcfe-fc7fa89b8274",
      "name": "Mistral Cloud Chat Model",
      "credentials": {
        "mistralCloudApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://localhost:5678/api/v1/workflows",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "X-N8N-API-KEY",
              "value": "<redacted-credential>"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "contentType": "raw",
        "rawContentType": "application/json",
        "body": "={{ $json }}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        1360,
        0
      ],
      "id": "590f8807-35c0-4c20-aacd-78bddfbdf900",
      "name": "Create workflow in n8n"
    },
    {
      "parameters": {
        "language": "pythonNative",
        "pythonCode": "import json\nimport re\n\nresults = []\n\nfor item in _items:\n  response = item[\"json\"][\"text\"]\n\n  response = re.sub(r'```json\\n?', '', response, flags=re.IGNORECASE)\n  response = re.sub(r'```\\n?', '', response).strip()\n  results.append(json.loads(response))\n\nreturn results\n"
      },
      "id": "6adbd7d0-5f00-4c98-8ce0-dc904659644a",
      "name": "Parse json",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1168,
        0
      ]
    }
  ],
  "connections": {
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "Get a file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get a file": {
      "main": [
        [
          {
            "node": "Rename file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rename file": {
      "main": [
        [
          {
            "node": "Audio to text Groq",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Audio to text Groq": {
      "main": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mistral Cloud Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Basic LLM Chain",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Basic LLM Chain": {
      "main": [
        [
          {
            "node": "Parse json",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse json": {
      "main": [
        [
          {
            "node": "Create workflow in n8n",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "availableInMCP": false,
    "timeSavedMode": "fixed",
    "callerPolicy": "workflowsFromSameOwner"
  },
  "versionId": "d1aba4c8-1cf2-4434-8c60-39cd0a892cc7",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "x12zbXKPw5liF7Ns",
  "tags": []
}

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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

vocal_n8n. Uses telegramTrigger, telegram, httpRequest, chainLlm. Event-driven trigger; 8 nodes.

Source: https://github.com/akira-dev/n8n-workflows/blob/main/workflows/vocal_n8n.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This n8n workflow automates the entire process of creating and publishing AI-generated videos, triggered by a simple message from a Telegram bot (YTAdmin). It transforms a text prompt into a structure

Lm Chat Mistral Cloud, HTTP Request, YouTube +5
AI & RAG

This workflow creates a multi-talented AI assistant named Simran that interacts with users via Telegram. It can handle text and voice messages, understand the user's intent, and perform various tasks.

MongoDB, Chain Llm, Google Gemini Chat +11
AI & RAG

A Telegram bot that converts natural-language work descriptions into detailed cost estimates using AI parsing, vector search, and the open-source DDC CWICR database with 55,000+ construction work item

HTTP Request, Telegram, Telegram Trigger +6
AI & RAG

Bitlab-Chatbot. Uses telegramTrigger, telegram, snowflake, httpRequest. Event-driven trigger; 87 nodes.

Telegram Trigger, Telegram, Snowflake +13
AI & RAG

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Output Parser Structured, Telegram, N8N Nodes Tesseractjs +14