🎙️ VoiceScribe AI: Automatische Transkription von Telegram-Audio-Nachrichten mit OpenAI Whisper

Experte

Dies ist ein Document Extraction, Multimodal AI-Bereich Automatisierungsworkflow mit 19 Nodes. Hauptsächlich werden If, Code, Merge, Telegram, GoogleDrive und andere Nodes verwendet. Automatische Transkription von Sprachnachrichten in Telegram mit OpenAI Whisper und Google Workspace

Voraussetzungen
  • Telegram Bot Token
  • Google Drive API-Anmeldedaten
  • Google Sheets API-Anmeldedaten
  • OpenAI API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "Jd7X52ywyO4xTZoE",
  "meta": {
    "instanceId": "4a2e6764ba7a6bc9890d9225f4b21d570ce88fc9bd57549c89057fcee58fed0f",
    "templateId": "2465",
    "templateCredsSetupCompleted": true
  },
  "name": "🎙️ VoiceScribe AI: Telegram Audio Message Auto Transcription with OpenAI Whisper",
  "tags": [
    {
      "id": "84SlSTthTSHRbFGM",
      "name": "Telegram",
      "createdAt": "2025-08-05T06:23:21.764Z",
      "updatedAt": "2025-08-05T06:23:21.764Z"
    },
    {
      "id": "nyc9wEV6N1lqPyOk",
      "name": "Operations",
      "createdAt": "2025-08-07T05:47:09.931Z",
      "updatedAt": "2025-08-07T05:47:09.931Z"
    },
    {
      "id": "ow6eIe95VK6fRkyw",
      "name": "Chatbot",
      "createdAt": "2025-08-05T06:23:11.231Z",
      "updatedAt": "2025-08-05T06:23:11.231Z"
    }
  ],
  "nodes": [
    {
      "id": "638b4ba9-c381-44d4-9245-c5d4964371f7",
      "name": "Unterstützter Nachrichtentyp",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1312,
        2480
      ],
      "webhookId": "344e09e1-f90a-4181-b88d-eba8a1729454",
      "parameters": {
        "text": "=Sorry, I can’t read your input right now.\nPlease send me a voice message, and I’ll help you transcribe and track it! 🎙️💬",
        "chatId": "={{ $('Telegram Voice Message Trigger').item.json.message.chat.id }}",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "paNoPvnV5Wzt4Lhv",
          "name": "Telegram account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "779f89de-cf46-467c-829e-48ef902f2e88",
      "name": "Haftnotiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        1648
      ],
      "parameters": {
        "width": 1232,
        "height": 2032,
        "content": "# 🎙️ VoiceScribe AI: Telegram Audio Message Auto Transcription with OpenAI Whisper\n> Automatically transcribe Telegram voice messages and store them as structured logs in Google Sheets, while backing up the audio in Google Drive.\n\n## 🧑‍💼 Who’s it for\n\n- Journalists, content creators, or busy professionals who often record voice memos or short interviews on the go.\n- Anyone who wants to turn voice recordings into searchable, structured notes.\n\n## ⚙️ How it works / What it does\n\n1. User sends a voice message to a Telegram bot.\n2. n8n checks if the message is an audio voice note.\n3. If valid, it downloads the audio file and:\n   - Transcribes it using OpenAI Whisper (or your LLM of choice).\n   - Uploads the original audio to Google Drive for safekeeping.\n4. The transcript and audio metadata are merged.\n5. The workflow:\n   - Logs the data into a Google Sheet.\n   - Sends a formatted confirmation message to the user via Telegram.\n\nIf the input is not audio, the bot politely informs the user that only voice messages are accepted.\n\n## ✅ Features\n\n- Accepts only Telegram voice messages.\n- Transcribes via OpenAI Whisper.\n- Logs DateTime, Duration, Transcript, and Audio URL to Google Sheets.\n- Sends user feedback message via Telegram with download + transcript link.\n\n## 🚀 How to set up\n### Prerequisites\n\n- Telegram Bot connected to n8n (via Telegram Trigger)\n- Google Drive & Google Sheets credentials configured\n- OpenAI or Whisper API credentials (for transcription)\n\n### Steps\n\n1. **Telegram Trigger**  \n   Start the flow when a new message is sent to your bot.\n2. **Check Message Type**  \n   Use a conditional node to confirm it's a voice message.\n3. **Download Voice Message**  \n   Download the `.oga` file from Telegram.\n4. **Transcribe Audio**  \n   Send the binary audio to OpenAI Whisper or your transcription service.\n5. **Upload to Google Drive**  \n   Backup the original audio file.\n6. **Merge Outputs**  \n   Combine transcription with Drive metadata.\n7. **Transform to Row Format**  \n   Prepare structured JSON for Google Sheets.\n8. **Append to Google Sheet**  \n   Store the transcript log (DateTime, Duration, Transcript, AudioURL).\n9. **Send Confirmation to User**  \n   Inform the user via Telegram with their transcript and download link.\n10. **Unsupported Message Handler**  \n    Reply to users who send non-audio messages.\n\n## 📄 Example Output in Google Sheet\n\n| DateTime              | Duration | Transcript                                | AudioURL                                                   |\n|-----------------------|----------|--------------------------------------------|------------------------------------------------------------|\n| 2025-08-07T13:12:19Z  | 27       | Dự án Outlet Activation là...              | https://drive.google.com/uc?id=xxxx&export=download        |\n\n## 🧠 How to customize the workflow\n\n- Swap Whisper with Deepgram, AssemblyAI, or other providers.\n- Add speaker name detection or prompt-based tagging via GPT.\n- Route transcripts into Notion, Airtable, or CRM systems.\n- Add multi-language support or summarization steps.\n\n## 📦 Requirements\n\n| Component            | Required |\n|---------------------|----------|\n| Telegram API        | ✅       |\n| Google Drive API    | ✅       |\n| Google Sheets API   | ✅       |\n| OpenAI Whisper API  | ✅       |\n| n8n Cloud or Self-hosted | ✅   |\n\nCreated with ❤️ using [n8n](https://n8n.io)"
      },
      "typeVersion": 1
    },
    {
      "id": "505c0e4a-11e2-4a81-ac38-518af4cd3bf6",
      "name": "Haftnotiz 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2608,
        2080
      ],
      "parameters": {
        "width": 752,
        "height": 288,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/Screenshot+2025-08-07+at+2.19.15%E2%80%AFPM.png \"Optional title\")"
      },
      "typeVersion": 1
    },
    {
      "id": "3eacc0c8-6f65-47a9-9eaf-559d5c3c273d",
      "name": "Haftnotiz 5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        2400
      ],
      "parameters": {
        "width": 304,
        "height": 128,
        "content": "### 1. 📩 Telegram Trigger  \n**Description**: Listens for incoming messages from the user via the connected Telegram bot. This is the entry point of the workflow."
      },
      "typeVersion": 1
    },
    {
      "id": "b0d947b0-e970-43ea-8cc9-f3fc3b4f2d02",
      "name": "Haftnotiz 6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        992,
        2544
      ],
      "parameters": {
        "width": 272,
        "height": 144,
        "content": "### 2. Is Audio Message?  \n**Description**: Checks whether the incoming Telegram message is a audio message. If not, the workflow routes to an \"unsupported message type\" handler."
      },
      "typeVersion": 1
    },
    {
      "id": "447bc7be-707d-4eed-b3c3-1c3bc48bb103",
      "name": "Haftnotiz 7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1296,
        2096
      ],
      "parameters": {
        "width": 544,
        "height": 80,
        "content": "### 3.1. Download audio message and transcript with OpenAI\n Send the binary audio to OpenAI Whisper or your transcription service."
      },
      "typeVersion": 1
    },
    {
      "id": "938080c1-2503-4eb5-be21-32f732017869",
      "name": "Haftnotiz 8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2048,
        2080
      ],
      "parameters": {
        "width": 400,
        "height": 80,
        "content": "### 4.1. Inform user via telegram\nSend friendly message to user with audio download URL\n"
      },
      "typeVersion": 1
    },
    {
      "id": "297f8859-a2bf-4a71-82f9-161841669418",
      "name": "Haftnotiz 9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2112,
        2560
      ],
      "parameters": {
        "width": 304,
        "height": 96,
        "content": "### 4.2 Transform & log expense\n- Transform the Output to Audio Record  \n- Log Audio Record to Google Sheet  \n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "53031e0c-a427-4023-b1f6-c0aae9b6ad4f",
      "name": "Ist Sprachnachricht?",
      "type": "n8n-nodes-base.if",
      "position": [
        1088,
        2384
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "069b1c3b-d683-46f2-b7d6-9dbcdde41445",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{ $json.message.toJsonString() }}",
              "rightValue": "audio/ogg"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "1ecf333c-3dd2-44a9-b301-547391695613",
      "name": "Sprachnachricht herunterladen",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1312,
        2288
      ],
      "webhookId": "b7eb04dc-b5db-4fbd-8ea6-7692282d9469",
      "parameters": {
        "fileId": "={{ $json.message.voice.file_id }}",
        "resource": "file"
      },
      "credentials": {
        "telegramApi": {
          "id": "paNoPvnV5Wzt4Lhv",
          "name": "Telegram account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d61a14e8-9541-48be-95a0-5d4e5df85ff3",
      "name": "Aufnahme transkribieren",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1536,
        2192
      ],
      "parameters": {
        "options": {},
        "resource": "audio",
        "operation": "transcribe"
      },
      "credentials": {
        "openAiApi": {
          "id": "PPSwAKeLQYgAPobT",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "564864d4-4a40-4f1a-b99e-fd0c6981ef7c",
      "name": "Datei hochladen",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1536,
        2384
      ],
      "parameters": {
        "name": "=audio-{{ $now.toFormat(\"yyyyLLdd-HHmmss\") }}-{{$binary.data.fileName}}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1ObNNVJFR2vcKqP8p-ZnX_eaZy4gBHgha",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1ObNNVJFR2vcKqP8p-ZnX_eaZy4gBHgha",
          "cachedResultName": "SmartIT"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "fC471es5gk5Mm900",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "59241354-ef2f-43aa-bf2a-bf394ace5907",
      "name": "Zusammenführen",
      "type": "n8n-nodes-base.merge",
      "position": [
        1760,
        2288
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "af081dde-eb7d-4a4f-ad6c-d28ffd1a81ab",
      "name": "Telegram Sprachnachrichten-Auslöser",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        864,
        2384
      ],
      "webhookId": "5cdd7f36-b2e3-4c8d-ab5f-1f2763eb5c75",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {
          "download": true
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "paNoPvnV5Wzt4Lhv",
          "name": "Telegram account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "348897c4-3baf-4564-ae4c-f956d98936b9",
      "name": "Haftnotiz 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2464,
        2400
      ],
      "parameters": {
        "width": 1072,
        "height": 272,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/Screenshot+2025-08-07+at+1.54.03%E2%80%AFPM.png \"Optional title\")"
      },
      "typeVersion": 1
    },
    {
      "id": "e8a585eb-1ed0-41c9-a2d8-25d62c12d387",
      "name": "Benutzer via Telegram informieren",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2208,
        2192
      ],
      "webhookId": "e7e7cab6-27c6-4604-bab4-901873f55e24",
      "parameters": {
        "text": "=✅ Voice Transcription Complete\n\nYour voice recording (⏱️ {{ $json.Duration }} seconds, recorded at {{ $json.DateTime }}) has been successfully transcribed and securely stored.\n\n📎 Original audio stored here: {{ $json.AudioURL }}\n\nThank you for using VoiceScribe AI! 🎙️",
        "chatId": "={{ $json.ChatID }}",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "paNoPvnV5Wzt4Lhv",
          "name": "Telegram account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1ecbac8a-2451-4856-8a96-f7d5b3dbcef5",
      "name": "Sprachaufnahme in google Tabelle protokollieren",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2208,
        2384
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1a-u0XHQWjn4VKbq5WpvSJy5_JgHuFl5A2Q2TEBDC5bI/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1a-u0XHQWjn4VKbq5WpvSJy5_JgHuFl5A2Q2TEBDC5bI",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1a-u0XHQWjn4VKbq5WpvSJy5_JgHuFl5A2Q2TEBDC5bI/edit?usp=drivesdk",
          "cachedResultName": "Audio Notes"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "L670Nly6gZGo71br",
          "name": "Google Sheets account 2"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "ef75b354-3db8-4536-afc9-4268395dff0a",
      "name": "Ausgabe der Sprachaufnahme transformieren",
      "type": "n8n-nodes-base.code",
      "position": [
        1984,
        2288
      ],
      "parameters": {
        "jsCode": "const inputs = $input.all();\n\n// Assumes: \n// inputs[0] = transcript\n// inputs[1] = drive metadata\n\nconst transcriptData = inputs[0].json;\nconst driveData = inputs[1].json;\n\nconst result = {\n  DateTime: driveData.createdTime || '',\n  Duration: transcriptData.usage?.seconds || '',\n  Transcript: transcriptData.text || '',\n  AudioURL: driveData.webContentLink || '',\n  ChatID: $('Telegram Voice Message Trigger').first().json.message.chat.id\n};\n\nreturn [{ json: result }];"
      },
      "typeVersion": 2
    },
    {
      "id": "7996b57e-fffb-4707-a338-8bf390ecd134",
      "name": "Haftnotiz 10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1520,
        2544
      ],
      "parameters": {
        "width": 544,
        "height": 80,
        "content": "### 3.2. Upload the original audio to drive for later usage\nBackup the original audio file."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c8c05b3a-a276-4324-88ef-7a55779d4e2f",
  "connections": {
    "59241354-ef2f-43aa-bf2a-bf394ace5907": {
      "main": [
        [
          {
            "node": "ef75b354-3db8-4536-afc9-4268395dff0a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "564864d4-4a40-4f1a-b99e-fd0c6981ef7c": {
      "main": [
        [
          {
            "node": "59241354-ef2f-43aa-bf2a-bf394ace5907",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "53031e0c-a427-4023-b1f6-c0aae9b6ad4f": {
      "main": [
        [
          {
            "node": "1ecf333c-3dd2-44a9-b301-547391695613",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "638b4ba9-c381-44d4-9245-c5d4964371f7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1ecf333c-3dd2-44a9-b301-547391695613": {
      "main": [
        [
          {
            "node": "d61a14e8-9541-48be-95a0-5d4e5df85ff3",
            "type": "main",
            "index": 0
          },
          {
            "node": "564864d4-4a40-4f1a-b99e-fd0c6981ef7c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d61a14e8-9541-48be-95a0-5d4e5df85ff3": {
      "main": [
        [
          {
            "node": "59241354-ef2f-43aa-bf2a-bf394ace5907",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "af081dde-eb7d-4a4f-ad6c-d28ffd1a81ab": {
      "main": [
        [
          {
            "node": "53031e0c-a427-4023-b1f6-c0aae9b6ad4f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ef75b354-3db8-4536-afc9-4268395dff0a": {
      "main": [
        [
          {
            "node": "1ecbac8a-2451-4856-8a96-f7d5b3dbcef5",
            "type": "main",
            "index": 0
          },
          {
            "node": "e8a585eb-1ed0-41c9-a2d8-25d62c12d387",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Dokumentenextraktion, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes19
Kategorie2
Node-Typen9
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor
Trung Tran

Trung Tran

@trungtran

Empowering small and medium businesses with smart automation and practical AI, no big tech team required. Reach out: lets@automatewith.me

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34