Skip to content
Blog

Research · November 13, 2026

Kuroko

A 14.9-million-parameter model that tells an interruption from an “mhm”, working beside a voice activity detector and published timing rules.

Sezgin Saygili · PatientDesk AI · Built for Sesame’s TurnBench

of ends of turn found, at 7.9% false alarms
98.7%
of interruptions found, at 7.3% false alarms
100%
median delay to an interruption
545 ms
parameters
14.9M
of conversation it trained on
1,025 h

TurnBench development split, 38 conversations, with settings chosen on that split. Held out, recall is 98.3% and 98.8%. Submitted to TurnBench on November 13, 2026. The maintainers score the test split.

A voice agent makes two calls again and again. It decides whether the person has finished speaking, so that it can answer. And when the person makes a sound while the agent is talking, it decides whether that sound is a bid to take over or an “mhm”. TurnBench, a benchmark from Sesame, scores both calls on recorded conversations between two people.

Kuroko is the system we built for it, and it has three parts. Silero VAD finds where each speaker makes sound. Timing rules that p99lab published for their entry, turn-1-mini, decide when a turn has ended. A model we trained on 1,025 hours of conversation answers one question 25 times a second, whether the sound it hears claims the floor. Its answer commits an interruption before the sound has lasted long enough for a rule, and it tells the end-of-turn rules when the other speaker has taken over.

On the benchmark’s development split, Kuroko finds 98.7% of 1,904 ends of turn and all 347 interruptions. It raises a false alarm in 7.9% of the mid-turn pauses and on 7.3% of the listener sounds and noises. We chose its settings on the same 38 conversations, so these numbers are optimistic. With the settings chosen on half of the conversations and scored on the other half, recall is 98.3% and 98.8%. The test split’s labels are held by the benchmark’s maintainers, who score it. Kuroko was submitted on November 13, 2026, and its test results are theirs to publish.

Kuroko on one exchange between two speakersSpeaker A talks, pauses for 0.6 seconds and goes on, and no event fires in the pause. Speaker B says mhm, the model’s answer stays low and no event fires. Later B starts talking over A. The model’s answer for B reaches 0.9 after 0.45 seconds, which commits an interruption. By length alone it would come 1.56 seconds after B begins. A stops, and the end of A’s turn is committed 0.61 seconds later.Speaker Apause: no eventend of turn, 0.61 s after A stopsSpeaker B“mhm”interruption, 0.45 s after B beginsby length alone: 1.56 sThe model’s answer for B: “this sound claims the floor”0.90stays low: no event0123456789 s
Figure 1 Kuroko on one exchange. A drawing timed with Kuroko’s settings, not benchmark audio. A pauses for 0.6 s and goes on, so the candidate end of turn is dropped. B’s “mhm” is too short for the length rule and the model’s answer stays low, so nothing is committed. When B talks over A, the answer reaches 0.9 after 0.45 s and commits the interruption. By length alone it would come at 1.56 s. A’s end of turn follows 0.61 s after A stops, which is a 0.35 s wait and the detector’s 0.26 s.

What the benchmark asks

TurnBench scores two events for each speaker. It ranks an entry by how many it finds, provided false alarms stay at or under 15% on the hidden test split.

TurnBench is 30 hours of studio-recorded conversation between two people, each on their own channel, labeled by three annotators. The development split has 38 conversations with public labels. The test split has 116, and only its audio is public.

An end of turn is the moment a speaker has finished and the floor is open. An event in a pause that the speaker goes on from is a false alarm. An interruption is the moment a speaker takes the floor while the other is talking. An event on a listener sound, or on noise, is a false alarm.

A prediction counts if it lands between 0.25 s before the labeled moment and 3 s after it. A system has to be causal. The benchmark takes that on trust, so we test it ourselves.

How Kuroko works

Rules decide when a turn has ended. The model answers the one question the rules cannot, whether a sound that has just begun is a claim to the floor.

The detector

Silero VAD (version 6.2.3) runs on each channel in 32 ms steps and marks stretches of sound, which we call units. It knows that a unit has ended 0.26 s after the last sound, because it has to see the silence last. The rules below count from a unit’s edges, so an event that waits for a unit to end comes at least 0.26 s after it.

The rules

The rules are the ones p99lab describe for turn-1-mini, without that system’s learned parts. We chose the numbers again on the dev split. Each time a speaker stops, a candidate end of turn opens. It is committed, no sooner than 0.35 s after the stop, at the first of three moments:

  • the partner has been heard for 1.5 s without a break;
  • the model says the partner’s sound claims the floor;
  • 2.45 s have passed since the stop.

If the speaker is heard again for 0.55 s before that moment, the candidate is dropped. If the partner had already been talking for 2.9 s when the speaker stopped, and still is 0.35 s later, the end of turn is committed whatever the speaker does next.

A candidate that is still open after 2.75 s is committed a second time, and one still open when the audio ends is committed at its last sample. The scorer counts at most one false alarm per pause, and annotators often place the end of a turn well after its last sound, so a second event finds the late labels at no cost. p99lab measure that event at 3.6 to 3.8 points of recall for turn-1-mini. We did not measure it for Kuroko.

An interruption is committed once per sound: when the model’s answer reaches 0.9, read from 0.32 s after the sound begins, or else when the sound has lasted 1.3 s. The answer rising to 0.99 commits one as well, even where the detector has merged a speaker’s sounds into one long unit.

The model

The model hears both speakers as log-mel frames: 80 bands, 50 frames a second, from 16 kHz audio. Two convolutions and eight transformer layers of width 384 turn them into answers, 25 a second for each speaker. The attention looks back only, over at most 40 s. Both speakers pass through the same weights, each once as “own” and once as “partner”. That comes to 14.9 million parameters.

It learns four answers about each speaker: whether there is a sound, whether that sound claims the floor, whether the speaker holds the floor, and how much each speaker will talk in four stretches of the next two seconds. The last follows voice activity projection. Events read the second answer and no other. We did not test whether the other three help it.

Labels from hindsight

Nobody labeled our training audio. A recording shows what followed each sound, and most of the time that says whether the sound claimed the floor.

The label is a rule about timing. A sound is a listener sound if it lasts at most 1 s, stands at least 1 s apart from the same speaker’s other speech, begins while the partner is talking or within 2 s after, and the partner talks through it or goes on within 1 s. Where a transcript exists, a sound of up to 1.5 s made only of words like “yeah”, “mhm”, “right” or “wow” is a listener sound too. Every other sound claims the floor.

The model has to give the same answer from the past alone. Its training loss counts the first 1.2 s of each sound five times, because that is when the answer is needed.

We checked the rule against the dev split’s annotators. Timing alone calls 67% of their backchannels listener sounds and keeps 98% of their turns and interruptions as claims. With the words of their transcript it is 81% and 97%. The rule cannot tell a short answer from a backchannel: “yeah” in reply to a question claims the floor, and the rule says it does not.

A second hindsight label failed the same check. The benchmark derives ends of turn from annotated segments by a rule. Applied to the detector’s units, that rule puts 4,309 ends of turn on the dev split where the annotators have 1,904, because an annotated turn runs a median of 6 s and spans several units. We do not use that label to commit events.

Data

1,025 hours of conversation between two people, none of it from the benchmark.

Most of it is Open Yap 1K, a corpus from The Agentic Data Company with one channel per speaker, free to use under a data use agreement. We train on 786 of its 1,000 hours, the conversations whose two speakers are both in our training group, and hold the rest out. About 240 more hours are English conversations between pairs of PatientDesk contributors, recorded in a browser with one channel per speaker by people who agreed to their recordings being used to train models. Together that is 2,319 conversations.

Kuroko was trained on no audio and no labels from TurnBench’s dev or test split, and not on otoSpeech, the training set the benchmark provides. We used the dev split to choose the 11 numbers in the rules, to check the label rule above, and to compare the systems in Table 1.

Training took 12,000 steps of 48 forty-second stretches, about 73 minutes on one NVIDIA L40S.

Results

The rules alone find 98.3% of the ends of turn, and the model adds 0.4 points. On interruptions it adds 2.3 points of recall and cuts the median delay from 1,078 ms to 545 ms.

Table 1 The model matters most for interruptions. Development split: 38 conversations, 1,904 ends of turn, 347 interruptions. Each cell is recall / false-alarm rate / median delay, from the benchmark’s scorer. Settings in rows 2 to 4 were chosen on this split within a false-alarm budget of 8%.
SystemEnd of turnHeld outInterruptionHeld out
Rules, turn-1-mini’s published settings96.8% / 5.1% / 879 ms89.9% / 2.6% / 1,579 ms
Rules, settings chosen on dev98.3% / 8.0% / 692 ms97.9% / 8.4%97.7% / 7.6% / 1,078 ms97.2% / 6.7%
Rules and a model trained on Open Yap 1K98.7% / 7.7% / 629 ms98.3% / 8.1%100% / 7.0% / 551 ms98.9% / 5.9%
Kuroko: rules and a model trained on both datasets98.7% / 7.9% / 630 ms98.3% / 8.2%100% / 7.3% / 545 ms98.8% / 6.1%

The first row is our implementation of the rules with p99lab’s published numbers, on our detector. It is not their system. By their own report, turn-1-mini without its learned parts scores 97.3% on ends of turn and 96.8% on interruptions on this split.

In counts, Kuroko finds 1,879 of 1,904 ends of turn and raises 84 false alarms in 1,063 pauses. It finds 347 of 347 interruptions and raises 272 false alarms on 3,733 listener sounds and noises. The delay to an end of turn is 230 ms at the 10th percentile, 630 ms at the median and 1,396 ms at the 90th. For an interruption it is 366, 545 and 1,229 ms.

End of turn
Rules, published settings879 ms
Rules, settings chosen on dev692 ms
Kuroko630 ms
Interruption
Rules, published settings1,579 ms
Rules, settings chosen on dev1,078 ms
Kuroko545 ms
Figure 2 The model halves the delay to an interruption. Median delay on the dev split. On ends of turn, choosing the settings does most of the work and the model adds little.

Zero missed interruptions is an in-sample number, and one miss would cost 0.29 points. Held out, recall is 98.8%, about four misses in 347. Across the 500 splits, the 95th percentile of the held-out false-alarm rate is 11.5% for ends of turn and 8.4% for interruptions, under the benchmark’s 15% ceiling.

Anyone can check the dev numbers. The predictions file is in the Hugging Face repository, and the benchmark’s dev scorer scores it in the browser.

For scale, on November 13, 2026 the test leaderboard was led by OpenYap Turn on ends of turn, with 97.8% recall at 7.7% false alarms and 298 ms, and by SPX-AI MicroCF on interruptions, with 98.4% at 7.3% and 747 ms. Dev scores do not carry over to test one for one: turn-1-mini reports 98.6% interruption recall on dev and has 97.3% on test. Kuroko is also slower to call an end of turn than the fastest entry, 630 ms on dev against OpenYap Turn’s 298 ms on test.

What we learned

Rules carry the ends of turn and the model carries the interruptions. Two checks caught mistakes of our own.

With two channels, the partner’s answer ends the turn

Rules with no model find 98.3% of the ends of turn, and the model adds 0.4 points. p99lab report the same of turn-1-mini, whose learned parts add 0.05 points on this split. When both people are recorded, the clearest sign that a turn has ended is the other person starting theirs, and a timing rule catches that.

The model matters in the first half second of a sound

By length alone, a sound becomes an interruption after 1.3 s plus the detector’s 0.26 s. The model commits most of them sooner. The median delay falls from 1,078 ms to 545 ms, and recall rises from 97.7% to 100%. Read 0.2 s after a sound begins, its answer separates the dev split’s annotated interruptions from its backchannels with an AUC of 0.929, the chance that a random interruption gets a higher answer than a random backchannel. At 1.0 s it is 0.949.

A second dataset changed nothing we could measure

The model trained on Open Yap 1K alone and the model trained on both datasets differ by 0.001 in that AUC and not at all in recall. Kuroko is the one trained on both. With one run each and 38 conversations, a small gain would not show.

Training longer made the claim answer worse

Our first run had a schedule of 30,000 steps. On held-out conversations the loss of the claim answer was lowest between steps 7,500 and 9,000, at 0.128. It was 0.129 at step 13,500 and 0.207 at step 30,000, while the training loss kept falling. The answer “holds the floor”, built from the same hindsight rule, rose with it. The two answers that come straight from the detector stayed flat. Kuroko uses a schedule of 12,000 steps and keeps the weights with the lowest held-out loss.

Training loss and held-out loss of the claim answer over 30,000 stepsThe training loss falls from 0.659 at step 1,500 to 0.346 at step 30,000. The claim answer’s loss on held-out conversations falls to 0.128 by step 7,500, is 0.129 at step 13,500, where the weights were kept, and rises to 0.207 by step 30,000.Training loss, all answers0.6590.346Held-out loss, the claim answer0.1280.207weights kept, step 13,500010,00020,00030,000 steps
Figure 3 Past step 13,500 the claim answer gets steadily worse on new conversations while the training loss keeps falling. The 30,000-step run on Open Yap 1K. Kuroko comes from a later run with a 12,000-step schedule.

Half precision moved an event by one frame

We test causality by cutting six dev conversations at 200 s, running everything again from the shortened audio, and comparing the events before the cut. The first time, 23 of 24 event lists matched. The model ran in batches at half precision, and an answer moved by up to 0.004 with what else was in its batch, which shifted one threshold crossing by a frame. Now each 40-second stretch runs by itself in full precision. All 24 lists match, 1,294 events in total.

Limits

These are development numbers on 38 conversations, with the settings chosen on them.

  • No test results in this post. Everything here is measured on the development split. The maintainers score the test split, and until they publish Kuroko’s results the held-out estimates above are the nearest thing we have.
  • A voice agent is the partner. TurnBench records two people, so a system can wait for the second person to start talking. A voice agent is the second speaker, and its own reply cannot tell it that the user has finished. In an agent, Kuroko’s end-of-turn rules would be left with the 2.45 s timer. The interruption answer needs no reply from the partner, but we have not measured it against an agent’s synthetic voice.
  • Two scoring conventions help. A second event for the same end of turn costs nothing, as described above. An interruption is committed for every sound taken as a claim, including where nobody else is talking, because the scorer looks only near annotated interruptions and backchannels. Kept at least 1 s apart, Kuroko’s events score 97.5% at 7.4% on ends of turn and 100% at 7.0% on interruptions. A product would announce an end of turn once.
  • Clean audio, English only. The benchmark is recorded in studios with one clean channel per speaker. We have not measured Kuroko on phone audio, with echo, or in another language.
  • Not run as a live stream. The scores come from recorded audio, processed in 40-second stretches with each answer using past audio only. Offline, the model answers a recorded 12.6-minute conversation in 11 s on four CPU threads. We have not run it as a stream.
  • The training labels are rules. They cannot tell a short answer from a backchannel, and the transcripts they read are machine-made.

What is public

The Hugging Face repository holds Kuroko’s weights and the one file needed to run them, both under Apache-2.0, with its settings, its predictions for the development split and its training log. That file is the model and its features. The rules that turn its answers into events are described above and their code is not included. The training code and the training data are not public: Open Yap 1K’s agreement forbids passing the data on, and our contributors’ recordings stay private. The predictions for the test split are not public either, at the benchmark’s request.

Credits

TurnBench is by Sesame AI Labs, with the evaluation corpus from Mundo AI and the otoSpeech training set from Oto (Jiang et al., 2026). Its splits are licensed for non-commercial use. We chose settings and checked labels on the dev split and trained on neither split.

The timing rules are p99lab’s, from turn-1-mini. The detector is Silero VAD. The future-activity targets follow voice activity projection (Ekstedt and Skantze, 2022).

The training data is Open Yap 1K, version 1.0 (The Agentic Data Company, 2026, theagenticdatacompany.com/open-yap-1k), from the company whose own entry, OpenYap Turn, leads the leaderboard on ends of turn.

Kuroko is research from PatientDesk AI, the team behind Spero.