How do half-duplex and full-duplex voice agents differ?

Authors
How do half-duplex and full-duplex voice agents differ?

A half-duplex voice agent takes turns, which means it either listens or speaks, but never does both at once. A full-duplex voice agent listens and speaks at the same time, just like two people on a phone call.

In this blog, we will learn about how half-duplex and full-duplex voice agents differ. We will also see what the word duplex means, how a half-duplex voice agent works step by step, why it feels slow and unnatural, how barge-in tries to fix it, how a full-duplex voice agent listens and speaks together, and when to use which one.

We will cover the following:

  • What does duplex mean?
  • What is a half-duplex voice agent?
  • How a half-duplex voice agent works step by step
  • The problems with half-duplex
  • Barge-in on top of half-duplex
  • What is a full-duplex voice agent?
  • How a full-duplex voice agent works
  • The same conversation in both agents
  • Half-duplex vs full-duplex
  • When to use which one

I am Amit Shekhar, Founder @ Outcome School, I have taught and mentored many developers, and their efforts landed them high-paying tech jobs, helped many tech companies in solving their unique problems, and created many open-source libraries being used by top companies. I am passionate about sharing knowledge through open-source, blogs, and videos.

I teach AI and Machine Learning at Outcome School.

Let's get started.

What does duplex mean?

In communication systems, the word duplex tells us how two sides of a conversation can send information to each other.

There are two types that matter for us:

  • Half-duplex: Both sides can talk, but only one side at a time.
  • Full-duplex: Both sides can talk at the same time.

The best way to learn this is by taking an example.

Think about a walkie-talkie. We press the button and speak. While we are holding the button, we cannot hear the other person. When we release the button, the other person can speak. This is half-duplex.

Now, think about a normal phone call. We can speak and hear at the same moment. If the other person says "hmm" while we are talking, we hear it. If we both start talking together, we both hear it and one of us stops. This is full-duplex.

Let's see the difference as below:

Half-duplex (walkie-talkie)

Person A:  speaks -------->
Person B:                   speaks -------->

Full-duplex (phone call)

Person A:  speaks ----------------------->
Person B:        hmm      yes     speaks -->

Here, we can see that in half-duplex, the two lines never overlap. In full-duplex, they can overlap at any time.

The same idea applies to voice agents. A voice agent is an AI system that we talk to using our voice, and it replies to us in a voice. The question is: does it behave like a walkie-talkie or like a phone call?

What is a half-duplex voice agent?

A half-duplex voice agent is a voice agent that either listens or speaks at any given moment, but never does both together.

It waits for us to finish speaking. Then it thinks. Then it speaks. While it is speaking, it is not really listening to what we say. It works in turns.

Many voice agents in production are half-duplex at their core. They are built as a chain of separate parts that work one after another.

How a half-duplex voice agent works step by step

A half-duplex voice agent is usually built as a pipeline, where the output of one step becomes the input of the next step.

Let's see the pipeline as below:

       User speaks
            ↓
+-----------------------+
|  VAD (detects speech  |
|  and silence)         |
+-----------------------+
            ↓
+-----------------------+
|  ASR (speech to text) |
+-----------------------+
            ↓
+-----------------------+
|  LLM (writes reply)   |
+-----------------------+
            ↓
+-----------------------+
|  TTS (text to speech) |
+-----------------------+
            ↓
      Agent speaks

Let's understand each part.

Step 1: The VAD (Voice Activity Detection) listens to the microphone and decides whether someone is speaking or not. When the system sees silence for a fixed time, for example 700 milliseconds, it decides that the user has finished the turn.

Step 2: The ASR (Automatic Speech Recognition) converts the user's speech into text. For example, the sound of "book a table for two" becomes the text "book a table for two".

Step 3: The LLM (Large Language Model) reads that text and writes a reply in text. For example, "Sure, for what time?"

Step 4: The TTS (Text to Speech) converts the reply text into a voice.

Step 5: The agent plays that voice through the speaker.

Then, the agent goes back to listening, and the whole cycle starts again.

In real systems, these parts often pass partial results to each other to save time. But, the agent still waits for the user's turn to end before it replies.

Here, we can notice that at any moment, only one direction is active. Either the user is talking and the agent is listening, or the agent is talking and the user is expected to listen. This is exactly the walkie-talkie behavior.

Planning your move into AI?

No matter which tech domain you work in today, with your effort, you can transition to these roles:

  • AI Engineer
  • Forward Deployed Engineer
  • AI Agent Engineer
  • Harness Engineer
  • Voice AI Engineer
  • AI Architect
  • LLM Engineer
  • LLM Inference Engineer
  • Gen AI Engineer
  • MLOps Engineer
  • ML Engineer
  • Deep Learning Engineer

Our AI and Machine Learning Program at Outcome School takes you there.

The problems with half-duplex

The half-duplex design is simple and it works. But, the following issues arise when we try to make it feel like a real human conversation.

Problem 1: The waiting gap. The agent must first wait for the silence timer to finish. Then, the ASR, the LLM, and the TTS each take some time. All these delays add up. So, there is a noticeable gap between the moment we stop talking and the moment the agent starts talking. In a human conversation, this gap is usually very short, often around 200 milliseconds.

Problem 2: It cuts people off. In its simplest form, the agent decides that our turn is over only by looking at silence. Let's say we say "My number is 98765..." and pause to remember the rest. The agent sees silence, thinks we are done, and starts replying in the middle of our sentence. Turn detection models that also look at the words and the tone reduce this problem, but the agent still has to decide that the turn is over before it can reply.

Problem 3: It cannot hear us while it speaks. Suppose the agent is reading out a long list of flight options, and we already heard the one we want. We say "the second one". A pure half-duplex agent does not hear us, because it is not listening while it speaks. It keeps reading the full list.

Problem 4: No small listening sounds. In a real conversation, we say "hmm", "okay", "right" while the other person is talking. These are called backchannels. They tell the speaker "I am following you, continue". A half-duplex agent cannot produce them while we talk, because it is not allowed to speak during our turn. And if we say "hmm" while it speaks, it either ignores it or treats it as a new turn.

All these problems have the same root cause: the agent can only do one thing at a time.

Barge-in on top of half-duplex

To solve Problem 3, many half-duplex voice agents add a feature called barge-in.

Barge-in is the ability of the user to interrupt the agent while the agent is speaking.

We have a detailed blog on barge-in in a voice AI agent that explains how it works step by step.

While the agent is speaking, the system keeps a listener, often the same VAD, active on the microphone. If it detects that the user has started speaking, it stops the agent's voice immediately and goes back to listening.

Let's see this as below:

Agent:  "Flight one is at 9 AM, flight two is at--" (stops)
User:                                  "the first one"

Here, the agent stops speaking as soon as the user starts, and goes back to listening.

Barge-in helps, but it does not make the agent full-duplex. The listener during speech has only one job, which is to detect the interruption and stop the agent. What we said is handled later as a new turn, after the agent has already stopped. The agent still cannot keep speaking while it understands what we say. It just switches from speaking to listening faster.

Barge-in also brings its own problems:

  • A cough, a door closing, or a person talking in the background can stop the agent by mistake.
  • A simple "hmm" from the user, which means "continue", can also stop the agent.
  • The agent's own voice coming back into the microphone can trigger a false interruption. To prevent this, the system needs echo cancellation, which removes the agent's own voice from the microphone signal.

So, barge-in makes half-duplex better, but the basic rule stays the same: one direction at a time.

A quick note for you

No matter which tech domain you work in, get familiar with these topics:

  • LLM
  • RAG
  • MCP
  • Agent
  • Fine-tuning
  • Quantization

We put it all together in one video:

AI Engineering Explained: LLM, RAG, MCP, Agent, Fine-Tuning, and Quantization

No need to stop reading - bookmark it and watch later when you get time. Future you will thank you.

Now, let's get back to the topic.

Now, let's move to the other side.

What is a full-duplex voice agent?

A full-duplex voice agent is a voice agent that listens and speaks at the same time, continuously, just like a person on a phone call.

It does not wait for our turn to end before it starts thinking. It does not stop hearing us while it speaks. Both directions stay open all the time.

Because of this, a full-duplex voice agent can do things that a half-duplex agent cannot:

  • It can say "hmm" or "okay" while we are talking.
  • It can hear us while it is speaking, and understand what we said, not only detect that we said something.
  • It can decide by itself whether to stop, continue, or adjust its reply when we speak over it.
  • It can start replying very quickly, because it has been listening and thinking all along.

A well-known example is Moshi, a full-duplex speech model released by the AI research lab Kyutai in 2024.

How a full-duplex voice agent works

Many full-duplex voice agents are not built as a chain of separate parts. Instead, a single model works directly on audio. Let's understand the central idea by taking Moshi as the example.

First, the audio is cut into small time slices. In Moshi, each slice is 80 milliseconds long, which means there are 12.5 slices every second. Each slice of sound is converted into a small group of numbers called audio tokens. A token is a small piece that the model can read and write, just like an LLM reads and writes text tokens.

Then, the model keeps two streams of audio tokens running side by side:

  • User stream: what the user is saying right now.
  • Agent stream: what the agent is saying right now.

At every time slice, the model reads the latest piece of the user stream and writes the next piece of the agent stream. This happens again and again, 12.5 times every second, without stopping. Because the model sees both streams together, it knows exactly when the two voices overlap.

Just for the sake of understanding, let's show one word per time slice, as below:

Time slice:    1      2      3      4      5      6
User stream:   book   a      table  -      -      -
Agent stream:  -      -      hmm    -      sure   for

Here, - means silence. We can see that:

  • In slices 1 and 2, the user is speaking and the agent is silent.
  • In slice 3, the user is still speaking and the agent says "hmm" at the same time. This is a backchannel.
  • In slice 4, both are silent for a moment, and the model decides that the user has finished.
  • From slice 5, the agent starts its reply.

Very important: Silence is also an output. When the agent should not speak, the model writes audio tokens that sound like silence in the agent stream. So, the model is always deciding, at every time slice, whether to stay quiet or to speak. There is no separate silence timer that decides when our turn ends. The model learns this behavior from training on conversations, including real recorded conversations between people.

Moshi also predicts the text of its own words, slightly ahead of the matching audio tokens. Kyutai calls this the Inner Monologue. It helps the model keep its words meaningful while it is producing sound.

As per the Moshi paper, this design gives a theoretical delay of 160 milliseconds, and around 200 milliseconds in practice on a single GPU. This is close to the gap we see in human conversations.

This is how a full-duplex voice agent listens and speaks together.

To learn Multimodal AI and how to Design a Real-Time Voice AI Agent from the ground up, we can check out our AI and Machine Learning Program at Outcome School.

The same conversation in both agents

Let's say the user wants to book a table at a restaurant.

In a half-duplex voice agent:

User:   "I want to book a table for... umm..."
        (pauses to think)
Agent:  "Sure, for how many people?"      (cuts in at the pause)
User:   "...four people, at 8 PM."
        (silence timer runs)
Agent:  (gap while ASR, LLM, and TTS run)
Agent:  "Great, a table for four at 8 PM. Would you also like..."
User:   "no, that's all"
Agent:  (barge-in stops the voice, then it waits for a new turn)

In a full-duplex voice agent:

User:   "I want to book a table for... umm..."
Agent:                           "hmm"    (backchannel, waits)
User:   "...four people, at 8 PM."
Agent:  "Great, a table for four at 8 PM. Would you also--"
User:                                      "no, that's all"
Agent:  "Okay, have a great dinner."      (understood and adjusted)

Here, we can notice the differences:

  • The half-duplex agent cut in at the pause, because it only looked at silence. The full-duplex agent said "hmm" and waited, because it understood that the sentence was not finished.
  • The half-duplex agent had a gap before replying. The full-duplex agent replied quickly.
  • When the user interrupted, the half-duplex agent only stopped and had to start a new turn. The full-duplex agent understood what the user said and replied to it.

Stay updated: Subscribe to our newsletter to get our latest AI and Machine Learning blogs straight to your inbox.

Half-duplex vs full-duplex

Let me tabulate the differences between half-duplex and full-duplex voice agents for your better understanding so that you can decide which one to use based on your use case.

PointHalf-duplex voice agentFull-duplex voice agent
Listening and speakingOne at a timeBoth at the same time
ArchitecturePipeline of VAD, ASR, LLM, TTSOften a single speech model
End of turnDecided by silence or a turn detectorDecided by the model at every time slice
Response gapLonger, delays of each part add upShorter, around 200 ms for Moshi
InterruptionsBarge-in stops the agentAgent hears, understands, and adjusts
Backchannels like "hmm"Not possible while the user talksPossible
Control over each partHigh, each part can be swappedLow, everything is inside one model
Tool calls and business logicEasy, the LLM works on textHarder, the model works mainly on audio
DebuggingEasy, we can read the text at each stepHarder, most of the work happens on audio

When to use which one

Now, the question is: which one must we use?

Half-duplex voice agent:

Advantages:

  • Each part can be chosen and replaced separately. We can use the best ASR, the best LLM, and the best TTS for our use case.
  • The LLM works on text, so it is easy to add tool calls, connect to databases, and follow business rules.
  • It is easy to debug, because we can read the text that went in and out of every step.
  • It is mature and reliable for structured tasks.

Disadvantages:

  • There is a gap before every reply.
  • It can cut users off at pauses.
  • It cannot produce backchannels.
  • Interruptions are handled with barge-in, which can stop the agent by mistake.

Full-duplex voice agent:

Advantages:

  • The conversation feels natural, close to talking with a person.
  • The response gap is very short.
  • When trained well, it handles pauses, interruptions, and overlapping speech in a natural way.
  • It can produce backchannels.

Disadvantages:

  • Everything is inside one model, so it is harder to control what it says.
  • Adding tools and business rules is harder, because the model works mainly on audio and not on text.
  • It needs training data with overlapping speech between two people, which is hard to collect.
  • It can talk over the user or stay silent at the wrong time if it has not learned the timing well.

So, if we are building a customer support agent that must check orders, call APIs, and follow strict rules, a half-duplex voice agent with good turn detection and barge-in is often the practical choice. If we are building a companion, a language practice partner, or any experience where natural flow matters the most, a full-duplex voice agent is often the better choice.

Now we must have understood how half-duplex and full-duplex voice agents differ, how each one works, and when to use which one.

Frequently Asked Questions

Is barge-in the same as full-duplex?

No. Barge-in is not the same as full-duplex. Barge-in only lets the user interrupt a half-duplex agent: the listener detects that the user started speaking and stops the agent's voice. What the user said is handled later as a new turn. A full-duplex agent hears and understands the user while it keeps speaking.

What is a backchannel in a voice conversation?

A backchannel is a small listening sound like "hmm", "okay", or "right" that we say while the other person is talking. It tells the speaker "I am following you, continue". A half-duplex agent cannot produce backchannels while the user talks, but a full-duplex agent can.

What is Moshi?

Moshi is a full-duplex speech model released by the AI research lab Kyutai in 2024. It works directly on audio in 80 millisecond slices and keeps a user stream and an agent stream running side by side. As per the Moshi paper, its delay is around 200 milliseconds in practice on a single GPU.

How does a full-duplex voice agent decide when to stay silent?

A full-duplex voice agent treats silence as an output. At every time slice, the model decides whether to stay quiet or to speak, and when it should not speak, it writes audio tokens that sound like silence. There is no separate silence timer. The model learns this behavior from training on conversations.

That's it for now.

Thanks

Amit Shekhar
Founder @ Outcome School

You can connect with me on:

Follow Outcome School on:

Read all of our high-quality blogs here.