Du får äntligen ljudfilen. Sedan kommer du på filstorleksgränsen, uppladdningar som misslyckas och den klumpiga ihopklippningen av “del 1 / del 2 / del 3”-transkriptioner som alltid havererar vid sämsta möjliga tillfälle.
Den här automationen för Whisper-transkript via e-post slår hårdast mot poddare, men marknadsförare som återanvänder intervjuer och drift-/ops-team som dokumenterar interna samtal känner också av den. Resultatet är enkelt: långa inspelningar blir ett enda korrekt formaterat transkript i din inkorg, utan att du behöver vaka över processen.
Nedan ser du hur flödet hanterar uppdelning, transkribering och leverans, plus vad du behöver för att köra det stabilt med “verkliga” ljudlängder.
Så fungerar den här automationen
Hela n8n-workflowen, från trigger till slutresultat:
n8n Workflow Template: FileFlows + Whisper, transkript mejlas via Gmail
flowchart LR
subgraph sg0["GET Form Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>GET Form"]
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Make 4MiB Chunks"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Upload Chunk"]
n3@{ icon: "mdi:cog", form: "rounded", label: "Result", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If succeed", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Split audio file"]
n6@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Split Audio"]
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Segments", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: "OpenAI", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Result transcription", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Chunks", pos: "b", h: 48 }
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Merge transcription"]
n13@{ icon: "mdi:cog", form: "rounded", label: "Convert to File", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Configuration", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter temporary files", pos: "b", h: 48 }
n16@{ icon: "mdi:cog", form: "rounded", label: "Rate Limit Delay", pos: "b", h: 48 }
n17@{ icon: "mdi:message-outline", form: "rounded", label: "Send Email with Transcription", pos: "b", h: 48 }
n18@{ icon: "mdi:message-outline", form: "rounded", label: "Send Error", pos: "b", h: 48 }
n19@{ icon: "mdi:message-outline", form: "rounded", label: "Send Error1", pos: "b", h: 48 }
n20@{ icon: "mdi:cog", form: "rounded", label: "Chunk", pos: "b", h: 48 }
n21@{ icon: "mdi:cog", form: "rounded", label: "Segment", pos: "b", h: 48 }
n6 --> n7
n20 --> n2
n9 --> n16
n9 --> n18
n3 --> n15
n21 --> n9
n0 --> n14
n4 --> n5
n4 --> n19
n7 --> n8
n2 --> n11
n14 --> n1
n13 --> n17
n11 --> n3
n11 --> n20
n1 --> n11
n16 --> n8
n5 --> n6
n8 --> n10
n8 --> n21
n12 --> n13
n10 --> n12
n15 --> n4
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n9 ai
class n4,n15 decision
class n2,n5 api
class n1,n7,n12 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n5,n7,n12 customIcon
Problemet: långt ljud knäcker “enkel” transkribering
Whisper är grymt, tills din inspelning är längre än ett snabbt klipp. En MP3 på en timme kan enkelt överstiga uppladdningsgränsen på 25 MB, så du börjar leta verktyg för att dela filen, gissa chunk-längder och hoppas att inget hamnar i fel ordning. Om du gör det här åt kunder eller ett team blir det ännu värre: folk mejlar dig enorma bilagor, du råkar ladda upp fel version och plötsligt blir en “snabb transkribering” en eftermiddag av omförsök och städning. Det är inte svårt arbete. Det är skört arbete.
Friktionen växer snabbt. Här är var det brukar gå sönder.
- En enda inspelning kan kräva flera manuella uppdelningar bara för att klara API-gränsen.
- Uppladdningsfel tvingar dig att börja om, och ofta märker du det först mycket senare.
- Transkriptioner kommer som separata delar, så du lägger tid på att sy ihop och formatera om.
- Leverans blir ytterligare ett jobb: kopiera text, spara filer och mejla rätt person.
Lösningen: dela, transkribera, slå ihop och mejla automatiskt
Det här flödet gör “transkribering av långt ljud” till en enkel inlämning och en automatisk leverans. Det startar när någon laddar upp en MP3 via ett webbformulär och anger e-postadressen dit transkriptet ska skickas. n8n förbereder sedan filen för säker hantering genom att dela upp den i små uppladdningsdelar på 4 MiB och skicka dem till FileFlows. FileFlows, med FFmpeg, segmenterar ljudet i 15-minutersbitar så att varje del ligger tryggt under Whispers storleksgräns. Varje segment transkriberas via OpenAI Whisper API (franska som standard, men du kan ändra språk), och därefter slår n8n ihop texten igen till ett sammanhängande transkript. Till sist skickar Gmail det färdiga transkriptet automatiskt, eller skickar ett tydligt felmejl om något misslyckas.
Flödet startar med en formulärinskickning i n8n. FileFlows gör grovjobbet med att dela ljudet, så Whisper bara får segment i säker storlek. När transkriberingen är klar sätter n8n ihop en enda textfil och mejlar ut den, vilket betyder att även “sista milen” hanteras.
Vad du får: automation vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du transkriberar två intervjuer på 60 minuter varje vecka för en podcast. Manuellt kanske du lägger cirka 30 minuter på att dela filer, ladda upp delar, vänta och sy ihop texten igen, alltså ungefär 1 timmes adminarbete per vecka innan du ens börjar redigera innehållet. Med det här flödet är “mänsklig tid” närmare 5 minuter per fil (uppladdning + e-post), och bearbetningen kör i bakgrunden. Du får transkriptet på cirka 10–15 minuter per timme ljud, levererat automatiskt till rätt inkorg.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- FileFlows för ljuduppdelning och orkestrering.
- OpenAI Whisper API för att transkribera varje ljudsegment.
- Gmail-konto för att mejla transkript och felnotiser.
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard).
Kunskapsnivå: Medel. Du kopplar in behörigheter, sätter några URL:er/sökvägar och bekräftar att FileFlows når din lagring och n8n.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (kostnadsfri konsultation i 15 minuter).
Så fungerar det
En användare skickar in ett formulär med en MP3 och en e-postadress. Den formulärtriggern startar körningen och sparar grundinställningar (som målspråk och callback-detaljer för FileFlows).
MP3:an förbereds för uppladdning och skickas till FileFlows i delar med säker storlek. n8n delar den binära filen i 4 MiB-chunks, loopar igenom dem i batchar och laddar upp varje del via HTTP så att stora filer inte fallerar halvvägs.
FileFlows delar ljudet och n8n transkriberar varje segment med Whisper. Efter att FileFlows skapat 15-minuterssegment väntar n8n på callbacken, plockar ut segmentlistan och loopar igenom den. Whisper transkriberar varje del, och en throttle-väntan hjälper till att undvika toppar i anropsfrekvens när du processar mycket.
Allt slås ihop, görs om till en textfil och mejlas via Gmail. När alla segment är klara kombinerar n8n transkripttexten i rätt ordning, gör om den till en nedladdningsbar fil och skickar slutmejlet. Om uppdelning eller transkribering misslyckas skickar flödet i stället en felnotis så att du slipper gissa.
Du kan enkelt ändra språk och segmentlängd efter behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera formulärtriggern
Skapa det publika formuläret som samlar in ljudfilen och mottagarens e-postadress för att starta arbetsflödet.
- Lägg till noden Incoming Form Capture som trigger.
- Ställ in Form Title på
Audio Transcription. - Ställ in Form Description på
Select an audio file to transcribe and an email address to receive the result. - I Form Fields lägger ni till ett filfält med etiketten
file(obligatoriskt) som accepterar.mp3, samt ett e-postfält med etikettenemail(obligatoriskt). - Bekräfta att svarsmeddelandet i Respond With Options är satt till
Your file has been received; an email will be sent to you upon completion of transcription or in case of error.
file. Om ni byter namn på fältet behöver ni uppdatera koden därefter.Steg 2: konfigurera arbetsflödeskonstanter och filchunkning
Definiera chunkstorleken och FileFlows API-inställningar, och dela sedan upp inkommande ljud i 4 MiB-chunkar för uppladdning.
- Öppna Set Workflow Config och sätt chunk_size till
{{ 4 * 1024 * 1024 }}. - Sätt fileflows_url till er FileFlows-bas-URL, t.ex.
http://0.0.0.0:5000. - Sätt flowUid till ert FileFlows flow-ID och ersätt
[YOUR_ID]. - I Create 4MiB Segments behåller ni den medföljande JavaScript-koden för att läsa den binära uppladdningen och generera chunk-metadata och binära delar.
- Säkerställ att Iterate Chunk Batches är kopplad efter Create 4MiB Segments för att styra chunk-uppladdningarna.
Steg 3: koppla ihop FileFlows-uppladdning och split-förfrågningar
Ladda upp varje chunk till FileFlows, validera svaret och trigga split-operationen på serversidan.
- I Upload Segment Part sätter ni URL till
={{ $('Set Workflow Config').item.json.fileflows_url }}/api/library-file/uploadoch Method tillPOST. - Sätt Content Type till
multipart-form-dataoch mappa body-parametrar: fileName till{{$json["fileName"]}}, chunkNumber till{{$json["chunkNumber"]}}, totalChunks till{{$json["totalChunks"]}}och file till binärfältetchunk. - Använd Exclude Temp Records för att filtrera bort temporära objekt med villkoret
{{ $json.data }}notEndsWith.temp. - I Success Check bekräftar ni att villkoret
{{ $json.data }}exists för att routa giltiga uppladdningar till Initiate Audio Split. - Konfigurera Initiate Audio Split med URL
={{ $('Set Workflow Config').item.json.fileflows_url }}/api/library-file/manually-addoch JSON-body{ "FlowUid": "{{ $('Set Workflow Config').first().json.flowUid }}", "Files": [ "{{ $json.data }}" ], "CustomVariables": { "callbackUrl": "{{$execution.resumeUrl}}" } }. - Låt Pause for Callback vara inställd på Resume
webhook, HTTP MethodPOSToch Resume Amount30minutes för att vänta på att FileFlows skickar tillbaka splittrat ljud.
Steg 4: konfigurera ljudextraktion och transkriberingsloop
Transformera callback-binära data till objekt, loopa igenom varje ljuddel och skicka dem till OpenAI för transkribering.
- I Extract Audio Parts behåller ni den medföljande JavaScript-koden för att konvertera alla returnerade binärer till individuella objekt med ett binärfält som heter
Audio. - Säkerställ att Process Segment Loop följer efter Extract Audio Parts för att iterera varje segment.
- Konfigurera OpenAI Transcribe med Resource
audio, Operationtranscribeoch Binary Property NameAudio. Låt Language vara satt tillfrunder alternativ om ni vill ha fransk transkribering. - Inloggning krävs: Anslut era openAiApi-uppgifter i OpenAI Transcribe.
- Använd Throttle Pause efter OpenAI Transcribe för att styra request-tempo innan ni loopar tillbaka till Process Segment Loop.
Steg 5: slå ihop transkript och leverera resultat
Sammanställ alla transkriberingsdelar till en enda textfil och e-posta den till den som begärde den.
- I Combine Transcripts behåller ni JavaScript-koden som konkatenerar
item.json.texttill ett enda fälttranscription. - Konfigurera Build Text File med Operation
toTextoch Source Propertytranscription. - Sätt alternativen för Build Text File till File Name
transcription.txtoch Encodingutf8. - I Email Transcript Delivery sätter ni Send To till
={{ $('Incoming Form Capture').first().json.email }}, Subject tillYour transcription is readyoch inkluderar det medföljande meddelandet. - Inloggning krävs: Anslut era gmailOAuth2-uppgifter i Email Transcript Delivery.
Steg 6: lägg till felhantering för split- och transkriberingsfel
Säkerställ att användare får återkoppling när FileFlows eller transkriberingen misslyckas.
- Från Success Check verifierar ni att false-grenen går till Split Error Email.
- I Split Error Email behåller ni Send To satt till
={{ $('Incoming Form Capture').first().json.email }}och bekräftar innehållet i felmeddelandet. - Från OpenAI Transcribe säkerställer ni att felutgången kopplas till Email Error Notice för att avisera om transkriberingsproblem.
- Inloggning krävs: Anslut era gmailOAuth2-uppgifter i både Email Error Notice och Split Error Email.
Steg 7: testa och aktivera ert arbetsflöde
Validera hela pipelinen med en testinsändning innan ni aktiverar den i produktion.
- Klicka på Execute Workflow och skicka in formuläret Incoming Form Capture med en liten
.mp3-fil och en giltig e-postadress. - Verifiera att Upload Segment Part, Initiate Audio Split och Pause for Callback körs utan fel.
- Bekräfta att OpenAI Transcribe producerar
text-utdata och att Combine Transcripts skapar fältettranscription. - Kontrollera att Email Transcript Delivery skickar ett e-postmeddelande med
transcription.txtbifogad till den angivna adressen. - När testet lyckas växlar ni arbetsflödet till Active för att ta emot insändningar från formuläret i drift.
Vanliga fallgropar
- Gmail-behörigheter kan löpa ut eller kräva specifika rättigheter. Om något slutar fungera, kontrollera först statusen för ditt kopplade Google-konto i n8n-behörigheter.
- Om du använder Wait-noder eller extern rendering varierar processeringstiderna. Öka väntetiden om noder längre ned fallerar på tomma svar.
- OpenAI-prompter och standardval spelar större roll än många tror. Whisper-noden är konfigurerad för franska som standard här, så bekräfta språkinställningar tidigt annars rättar du fel i efterhand.
Vanliga frågor
Cirka 45 minuter om FileFlows och Gmail redan fungerar.
Nej. Du klistrar främst in behörigheter och justerar några inställningar i formuläret, FileFlows-endpointen och Whisper-noden.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in kostnader för OpenAI Whisper API på 0,006 USD per minut (så en inspelning på 1 timme är cirka 0,36 USD).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, men ändra på två ställen. Uppdatera språkinställningen i noden OpenAI Transcribe och justera sedan FileFlows split-inställningar så att dina segment håller sig under 25 MB-gränsen. Vanliga justeringar är att byta från franska till engelska, korta segmenten för brusigt ljud och ändra e-postmallen så att den inkluderar talaretiketter eller en länk till en sammanfattning.
Oftast är det nätverksåtkomst eller en felaktig endpoint-URL mellan n8n och FileFlows, ärligt talat. Bekräfta att n8n kan nå FileFlows-hostens nätverk, och dubbelkolla sedan inställningarna i HTTP Request-noden och eventuella headers som krävs. Om FileFlows kör i Docker är portmappning och interna DNS-namn vanliga bovar. Säkerställ också att lagringssökvägen som FileFlows använder är skrivbar, annars kan split-jobbet “lyckas” men inte producera något.
På n8n Cloud Starter begränsas du av månatliga körningar, medan egen hosting främst begränsas av din server och hur snabbt FileFlows kan processa jobb. Ett praktiskt upplägg är att börja med några filer per dag och sedan öka parallelliteten när du känner dig trygg med köhantering och väntetider. Om du förväntar dig toppar (som 20 uppladdningar efter ett event) kan du lägga in längre väntetider och lite mer throttling så att Whisper och FileFlows inte blir överbelastade.
För transkribering av långt ljud, ja. Zapier och Make får det tufft så fort du behöver chunkade uppladdningar, callbacks, loopar över segment och pålitliga felmejl i ett och samma flöde. n8n hanterar förgreningar och loopar snyggt, och du kan köra egen hosting för att slippa överraskningar med per-uppgift-prissättning när volymen ökar. Nackdelen är uppsättningen: du lägger lite mer tid på att koppla FileFlows och testa vänta/callback-logiken. Om du vill att någon kvalitetssäkrar upplägget, prata med en automationsexpert.
När det här väl rullar slutar transkribering av långt ljud att vara ett återkommande måste. Du laddar upp, väntar lite, får transkriptet och går vidare.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.