Why voice activity is not enough

If each speaker has a separate channel, voice activity per speaker comes almost for free. A 600 ms pause looks the same on the waveform whether the speaker is done or searching for a word, and a one-word overlap looks the same whether it is a backchannel or the start of a barge-in. A voice agent has to tell these apart at each pause, and again while it talks. The turn detection, interruption, and backchannel guides on fullduplex.ai cover these decisions one at a time.

The events worth labeling

EventWhat it isWhat the agent should do
End of turnThe speaker has finished and the floor is openRespond
HoldThe speaker pauses but has not finishedKeep listening
BackchannelA short listener sound ("mm-hm", "right") that does not claim the floorKeep talking
Floor-taking interruptionThe listener cuts in and takes the floorStop and listen
Non-floor-taking interruptionThe listener tries to cut in but the speaker keeps the floorUsually keep talking
OverlapBoth people speak at onceDepends on who keeps the floor
Filler"um", "uh", and similar sounds inside a turnTreat as a hold
Laughter and non-speechLaughter, breaths, noiseUsually ignore
Side talk and background speechSpeech not addressed to the agentIgnore

The hardest pair is backchannel versus interruption. At its onset, a "yeah" that will end in two syllables sounds like a "yeah" that will become a full turn. TurnBench reports that interruption false positives were concentrated in conversation styles dense with backchannels (Jiang et al., 2026).

How published schemes define them

Benchmarks and models each draw these lines differently, so check the definitions before you mix datasets.

SchemeUnitLabels
TurnBenchTime-stamped events per speaker17 fine labels, collapsed to 7 canonical categories for scoring
Talking TurnsFixed time chunksSilence, backchannel, interruption, turn change, continuation
Full-Duplex-Bench v1Model output segmentsBackchannel if under 1 s and under two words; otherwise a takeover
Full-Duplex-Bench v1.5Overlap scenariosUser interruption, backchannel, talking to others, background speech
eot-benchSilences of 100 ms or more in a user turnEnd of turn (last pause) or hold (every earlier pause)
Easy Turn trainsetUtteranceComplete, incomplete, backchannel, wait
TEN Turn DetectionTranscript textFinished, unfinished, wait

Where the schemes differ:

How the 17 labels in otoSpeech-full-duplex-turn-104h are organized

otoSpeech-full-duplex-turn-104h is 420 two-person English conversations, about 104.94 hours, released as the TurnBench training set (dataset card). Each speaker channel has its own SubRip (.srt) file. Each entry carries a millisecond time interval, a bracketed label, and the transcript text, as in 00:00:12,340 --> 00:00:13,020 followed by [Acknowledgement Backchannel] Okay.

The card lists 17 labels. TurnBench's paper maps them to its canonical categories as follows:

TurnBench categoryLabels in the release
TurnNormal Turn, Strong Floor Hold, Bounded Response, Filler, Overlap
InterruptionFloor-taking Competitive Interruption, Floor-taking Cooperative Interruption
Non-floor-taking interruptionNon-floor Taking Competitive Interruption, Non-floor Taking Cooperative Interruption
BackchannelAcknowledgement Backchannel, Continuer Backchannel, Reaction Backchannel
LaughterLaughter
Awkward SilenceAwkward Silence
Non-contentNon-Speech Noise, Channel Bleed, Speech, Non-Linguistic

The fine labels split three kinds of backchannel and four kinds of interruption (floor-taking or not, competitive or cooperative). TurnBench merges the subtypes for scoring because no public baseline predicts them, and keeps the fine labels in the released data. A model that only needs the canonical classes can collapse them in a few lines:

import re

# TurnBench's mapping from the 17 fine labels to canonical categories
CANONICAL = {
    "Normal Turn": "Turn", "Strong Floor Hold": "Turn", "Bounded Response": "Turn",
    "Filler": "Turn", "Overlap": "Turn",
    "Floor-taking Competitive Interruption": "Interruption",
    "Floor-taking Cooperative Interruption": "Interruption",
    "Non-floor Taking Competitive Interruption": "Non-floor-taking Interruption",
    "Non-floor Taking Cooperative Interruption": "Non-floor-taking Interruption",
    "Acknowledgement Backchannel": "Backchannel",
    "Continuer Backchannel": "Backchannel",
    "Reaction Backchannel": "Backchannel",
    "Laughter": "Laughter",
    "Awkward Silence": "Awkward Silence",
    "Non-Speech Noise": "NonContent", "Channel Bleed": "NonContent",
    "Speech, Non-Linguistic": "NonContent",
}

ENTRY = re.compile(
    r"(\d\d:\d\d:\d\d,\d{3}) --> (\d\d:\d\d:\d\d,\d{3})\n\[([^\]]+)\] ?(.*)"
)

def to_ms(t):
    h, m, rest = t.split(":")
    s, ms = rest.split(",")
    return ((int(h) * 60 + int(m)) * 60 + int(s)) * 1000 + int(ms)

def read_events(srt_text):
    for start, end, label, text in ENTRY.findall(srt_text):
        yield to_ms(start), to_ms(end), label, CANONICAL[label], text

sample = """1
00:00:12,340 --> 00:00:13,020
[Acknowledgement Backchannel] Okay.
"""
for event in read_events(sample):
    print(event)
# (12340, 13020, 'Acknowledgement Backchannel', 'Backchannel', 'Okay.')

The card also notes:

Human labels and model labels

Human labels cost more and are slower. They are also where the definitions come from. TurnBench had three annotators label each segment of its 30-hour evaluation corpus. Agreement reached a Fleiss' kappa of 0.78 at the frame level, event onsets matched at a boundary F1 of 0.94 to 0.96 within 200 ms, and 85.8% of annotator events survived into the consensus gold. Retention was lower in the high-overlap styles (about 84% to 85%) than in Instructional, Narrative, and Task-Oriented (about 88% to 89%) (paper).

Labels from rules and models are cheaper to produce at scale. Published work uses several kinds:

A workable split: model labels for scale, human labels for the evaluation set and for the classes models confuse, such as backchannel against interruption onset.

What to ask a vendor

Where oto fits

Data for voice AI

Request samples or a quote

Tell us what you are building, and we will send samples and pricing for the data that fits.

Frequently asked questions

What labels do I need to train a turn-taking model?

At minimum end of turn and hold at each pause; add backchannel and floor-taking interruption if your agent must keep talking through "mm-hm" and stop for real barge-ins.

What is the difference between a backchannel and an interruption?

A backchannel shows attention and leaves the floor with the speaker; an interruption takes the floor mid-turn. At onset they can sound the same, which is why benchmarks score them separately.

What are the 17 labels in otoSpeech-full-duplex-turn-104h?

Normal Turn, Strong Floor Hold, Bounded Response, Filler, Overlap, three backchannel types, four interruption types, Laughter, Awkward Silence, Non-Speech Noise, Channel Bleed, and Speech, Non-Linguistic.

Can I use automatic labels instead of human annotation?

For training at scale, often yes, and several published models do. For the evaluation set and for backchannel versus interruption, human labels with measured agreement are safer.

How do TurnBench labels compare with Full-Duplex-Bench labels?

TurnBench uses 17 hand-annotated categories grounded in conversation analysis; Full-Duplex-Bench v1 classifies a model's output with rules, such as under one second and under two words for a backchannel.

Is there a dataset with interruption and backchannel labels?

Yes. otoSpeech-full-duplex-turn-104h labels both, with subtypes, on 104.94 hours of two-person English conversation under a research license.

For more labeled datasets and turn-taking benchmarks, see the fullduplex.ai catalog.

otoearth, Inc.