Mindket

Voice chat over a webhook with memory and ElevenLabs

Newversion 1 · updated

Overview

An n8n workflow with a webhook for spoken questions. OpenAI turns your recording into text, Gemini answers it with the earlier conversation in its prompt, and ElevenLabs speaks the answer back as an audio file.

Voice chat over a webhook with memory and ElevenLabs is an n8n workflow in the Productivity category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

At a glance

Runs in
  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file and steps
  • A web page or an app: record in the browser or on the phone and post the file as a form upload
  • A gadget with a microphone and a speaker: post the recording and play the reply

Platform

Connects 3 apps

How it works

Trigger

Webhook request

It starts when something sends a POST request to the webhook path voice_message with:

  • A voice recording, uploaded as a form file in the field voice_message

Actions

  1. OpenAI turns the recording into text
  2. The stored chat history is loaded from memory and gathered into one list
  3. Gemini answers the transcript, with the earlier conversation in its prompt
  4. The question and the answer are added to the memory
  5. ElevenLabs speaks the answer in the voice you chose

Result

An audio file with the spoken answer, returned to the caller in the same request

Integrations

What you need before you start.

OpenAI

Speech to text

Transcribes the recording with the whisper-1 model.

NeedsOpenAI API key

Google Gemini

Language model

Runs gemini-3.6-flash to answer the transcript with the earlier conversation in its prompt.

NeedsGemini API key, in a Google Gemini (PaLM) API credential

ElevenLabs

Text to speech

Turns the answer into spoken audio in the voice whose ID is in the address.

NeedsElevenLabs API key, in a Custom Auth credential, and a voice ID

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
9 steps, starting when its webhook is called
AI
2 steps call an AI model: OpenAI Speech to Text and Basic LLM Chain
Sign-ins
Signs in to: OpenAI, api.elevenlabs.io and Google Gemini
API keys
No API key is left in the file
Step types
Mindket’s checker reads all 8 of its step types

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow answers a spoken question with a spoken answer. Something posts it an audio recording. OpenAI turns the recording into text, and a Gemini model answers it with the earlier conversation in its prompt. ElevenLabs then reads the answer aloud in the voice you pick. The caller gets an audio file back in the same call. Eleven nodes do the work, beside four sticky notes.

Who it suits

Developers and makers who are building a talking assistant for an app, a kiosk or a gadget and want a recording in and a voice out. Skip it if you need a live, streaming conversation, since each call is one question and one answer. Skip it too if callers need separate chats, because the memory is shared.

Who uses it, and how
IndustryWho uses itHow they use itExample
HospitalityHotel and restaurant teamsPut a talk button on a kiosk or a page and add the venue’s details to the promptA hotel adds its check-in rules to the prompt, and its lobby tablet plays the spoken answer.
EducationLanguage teachersGive learners a speaking partner that answers aloudA teacher’s practice page sends a learner’s recording and plays a reply that remembers the last turn.
Hardware and gadgetsMakersPost audio from a button and a microphone over HTTPA hobbyist’s desk gadget uploads a recording and plays what comes back.
Customer supportSmall teamsHear how a spoken answer sounds before choosing a voice platformA support lead tries a handful of real questions and listens to the replies.

You need some n8n and three accounts: import a file, add two credentials, and make one custom credential for ElevenLabs.

Where to use it

Any n8n with an address the caller can reach, plus accounts at OpenAI, Google and ElevenLabs. The reply is an audio file, so anything that plays one will do.

  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file and steps
  • A web page or an app: record in the browser or on the phone and post the file as a form upload
  • A gadget with a microphone and a speaker: post the recording and play the reply

Setup

Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Have the three accounts ready before you import it.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
OpenAIAn API key, for the speech to text step
Google AI StudioA key for the Gemini API
ElevenLabsAn API key and the ID of a voice from its voice library
A callerSomething that posts a recording as a form upload
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add an OpenAI credential and select it in OpenAI Speech to Text.
  3. Add a Google Gemini (PaLM) API credential and select it in Google Gemini Chat Model.
  4. Add a Custom Auth credential for ElevenLabs whose JSON holds your key in a xi-api-key header, written as <YOUR_ELEVENLABS_KEY> in the README.
  5. Select it in ElevenLabs Generate Audio, and in the same node replace <YOUR_VOICE_ID> at the end of the address with your voice’s ID.
  6. Save, press Listen for test event on Webhook and post a short recording to its test address.
  7. Press Publish and use the production address.

How to use it

Post the recording as a form upload with the file in a field named voice_message. OpenAI accepts flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav and webm. The call stays open while the three services work, and the answer comes back as audio. Post the next question to the same address and the earlier turns come along.

What to change for a different result
To changeWhere
The voice<YOUR_VOICE_ID> in ElevenLabs Generate Audio
The speaking modelA model_id body parameter in the same node
The assistant’s roleThe message in Basic LLM Chain
The answering modelmodels/gemini-3.6-flash in Google Gemini Chat Model
The conversationThe session key voice-chat in Window Buffer Memory

Example

A learner records “How do I say good morning politely in Spanish?” and posts the file.

The workflow answers with an audio file of the spoken reply. The learner then records “And in the evening?”. The prompt now carries the first question and its answer, so the second reply can build on them. Listen to the first replies before you hand the address to anyone, because a spoken answer is harder to check than a written one.

For newcomers and experts

If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This one has three jobs in a row. It listens, it thinks with the help of its memory, and it speaks. The memory is two small nodes that read and write the chat history. Try one short recording first.

For experts. Two Chat Memory Manager nodes read and write one Window Buffer Memory with a fixed key, and the history is gathered into the chain’s prompt.

Where to look closer
NodeWhat it doesWhat to know
OpenAI Speech to TextTranscribes the binary field voice_messageThe node sends whisper-1 and has no model setting
Get Chat and AggregateLoad the history and gather it into contextAn empty history leaves undefined in the prompt
Insert Chat and LimitAdd the question and the answer, then keep one itemInsert sends back every stored message, so Limit stops one call for each
ElevenLabs Generate AudioPosts the answer text to text to speechWith no model set, ElevenLabs uses eleven_multilingual_v2

Good to know

Three services bill a run, and every caller shares one chat. Two model names need a look.

  • Models: Google’s deprecations page, read on 12 November 2026, does not list gemini-1.5-flash, and its models page offers no Gemini 1.5 model. Mindket’s copy calls models/gemini-3.6-flash, the replacement that page names for the 2.0 flash family and a model the models page marks stable
  • Transcription: the speech to text node sends whisper-1. OpenAI’s deprecations page, read on 12 November 2026, lists it for shutdown on 26 February 2027, with gpt-live-transcribe or gpt-transcribe as the replacement. After that, swap the node for an HTTP Request to OpenAI’s transcription endpoint
  • One chat: the session key is fixed, so every caller shares one conversation. To keep callers apart, build the key from something the request carries
  • Memory: it lives in the n8n process. n8n drops a history after an hour without use, and a restart clears it all
  • First turn: the prompt writes undefined wherever a history entry has no human or AI text, so a new session can show it
  • Open webhook: anyone with the address can start a call that spends your three accounts, so turn on the webhook’s authentication or keep the address private
  • Billing: OpenAI bills the recording, Google bills the answer and ElevenLabs bills the characters it speaks
  • Your data: the recording goes to OpenAI, its text and the history go to Google, and the answer goes to ElevenLabs
  • Credentials: the JSON holds none

README and files

README

Voice chat over a webhook with memory and ElevenLabs

An n8n workflow with a webhook for spoken questions. You post a recording. OpenAI turns it into text, Gemini answers it
with the earlier conversation in its prompt, and ElevenLabs speaks the answer. The reply is an audio file.

What is inside

  • workflow.json: the workflow as n8n exports it, 11 nodes and four sticky notes. It holds no credential.
  • README.md: these notes.

What we changed from the original copy

  • ElevenLabs Generate Audio held the text {{voice id}} at the end of its address, after an equals sign. n8n reads
    that as an expression and rejects it until you replace it. The address is now plain text that ends in
    <YOUR_VOICE_ID>.
  • Google Gemini Chat Model called models/gemini-1.5-flash, a model Google no longer lists. It now calls
    models/gemini-3.6-flash.
  • Window Buffer Memory used a long test string as its session key. The key is now voice-chat.
  • The sticky note about ElevenLabs is rewritten and shows <YOUR_ELEVENLABS_KEY>.
  • The original copy was exported switched on. This one is off until you publish it.
  • Two node names lost their spaced hyphen. OpenAI - Speech to Text is now OpenAI Speech to Text, and
    ElevenLabs - Generate Audio is now ElevenLabs Generate Audio.

Before you start

  • An n8n instance with an address the caller can reach. n8n Cloud works, and so does your own server on the internet.
  • An OpenAI API key, for the speech to text step.
  • A Google AI Studio key for the Gemini API.
  • An ElevenLabs account, its API key and the ID of a voice from its voice library.
  • Something that can post a recording as a form upload, such as a web page, an app or a script.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add an OpenAI credential and select it in OpenAI Speech to Text.
  3. Add a Google Gemini (PaLM) API credential with your key and select it in Google Gemini Chat Model.
  4. Add a Custom Auth credential for ElevenLabs. Its JSON holds your key in a header:
{
  "headers": {
    "xi-api-key": "<YOUR_ELEVENLABS_KEY>"
  }
}
  1. Select that credential in ElevenLabs Generate Audio, under Generic Credential Type and Custom Auth. In the same
    node, replace <YOUR_VOICE_ID> at the end of the address with your voice's ID.
  2. Save, open Webhook and press Listen for test event. Post a short recording to its test address. This command
    does it and saves the answer:
curl -X POST -F "voice_message=@question.mp3" "<TEST ADDRESS>" --output answer.mp3
  1. Press Publish and use the production address from then on.

How a run goes

  1. Webhook takes a POST on the path voice_message. It waits for a node to answer, so the caller gets the audio in
    the same call.
  2. OpenAI Speech to Text transcribes the file in the form field voice_message. OpenAI accepts flac, mp3, mp4,
    mpeg, mpga, m4a, ogg, wav or webm, and the node sends the model whisper-1.
  3. Get Chat loads the stored messages from Window Buffer Memory. Aggregate gathers them into one list, context.
  4. Basic LLM Chain sends the transcript to Google Gemini Chat Model. A message ahead of it tells the model to read
    the earlier conversation first, and lists it as Human: and AI Assistant: lines.
  5. Insert Chat adds two messages to the memory, the transcript as the user's and the answer as the AI's.
  6. Limit keeps the first item. Insert Chat in this version sends back every stored message as its own item, so
    without Limit the next node would run once for each of them.
  7. ElevenLabs Generate Audio posts the answer text to ElevenLabs' text to speech endpoint for your voice.
  8. Respond to Webhook sends the first binary file it receives back to the caller.

Change the look

  • The voice: <YOUR_VOICE_ID> in ElevenLabs Generate Audio.
  • The speaking model: add model_id as a second body parameter there. ElevenLabs uses eleven_multilingual_v2 when none
    is given.
  • The assistant's personality: the message in Basic LLM Chain. It holds only the instruction to read the earlier
    conversation, so add the role you want to it.
  • The answering model: models/gemini-3.6-flash in Google Gemini Chat Model.
  • The conversation: voice-chat in Window Buffer Memory. A different key starts a separate history.

Good to know

  • Google's deprecations page, read on 12 November 2026, does not list gemini-1.5-flash, and its models page offers no
    Gemini 1.5 model. The deprecations page names gemini-3.6-flash as the replacement for the 2.0 flash family, and the
    models page marks it stable.
  • OpenAI Speech to Text has no model setting and sends whisper-1. OpenAI's deprecations page, read on 12 November
    2026, lists whisper-1 for shutdown on 26 February 2027, with gpt-live-transcribe or gpt-transcribe as the
    replacement. After that date, swap the node for an HTTP Request to OpenAI's transcription endpoint.
  • Every caller shares one conversation, because the session key is fixed. To keep callers apart, build the key from
    something the request carries.
  • The memory lives in the n8n process. n8n drops a history after an hour without use and a restart clears it all.
  • Basic LLM Chain writes undefined wherever a history entry has no human or AI text, so a new session can show it.
  • The webhook has no authentication. Anyone with its address can start a call that spends your three accounts, so turn on
    the webhook's own authentication or keep the address private.
  • OpenAI bills the recording, Google bills the answer, and ElevenLabs bills the characters it speaks.
  • The recording goes to OpenAI, its text and the history go to Google, and the answer goes to ElevenLabs.
Files
NOTICE.md  706 B
README.md  6 KB
workflow.json  9 KB

3 files, 16 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-12

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

upscaler

uwg · Kit

Holds a set of image upscaling models gathered from the OpenModelDB community, for people who want to enlarge low-resolution pictures with AI on their own comp…

New

Pixel Art XL

nerijs · Kit

A pixel art style add-on for Stable Diffusion XL that turns text prompts into pixel-style images, with an optional LCM LoRA for faster runs. For game makers, d…

New

VibeVoice-1.5B

microsoft · Kit

Turns written conversations into spoken audio with up to four speakers and about 90 minutes of speech, an open Microsoft text-to-speech model for research on p…

New

Similar in Productivity

See all in Productivity

Moss-Image-Edit LoRA for ComfyUI

PedroMarinhoDev · Kit

Edits an image, or combines up to four, from a text instruction, using a ComfyUI-ready version of the Moss-Image-Edit LoRA. For ComfyUI users working with the…

New

Mega-ASR

zhifeixie · Kit

Transcribes English and Chinese speech from noisy, echoey, clipped or overlapping recordings, and routes clean audio to the base model. For teams with difficul…

New

GLM-Image

zai-org · Kit

Generates and edits images from text and reference pictures, with strong text rendering inside images, using an autoregressive plus diffusion design. For creat…

New