What counts as full-duplex data

Full-duplex conversational data has three properties:

Several things look similar on a spec sheet and are not the same:

How much data published systems used

Several published full-duplex models trained on the same English corpus. Moshi, the first real-time full-duplex model from Kyutai, learned to listen and speak at once from Fisher, about 2,000 hours of telephone calls with each side on its own channel (Défossez et al., 2024).

Fisher sets the reference point, and it also shows the gaps:

For English, Fisher's 2,000 hours is the usual reference point when sizing a purchase. For other languages there is little published work to go on, so plan for two-channel data in each language you ship.

What is available today

DatasetLanguagesSizeAudioLicense
Fisher EnglishEnglish~1,960 h2-channel, 8 kHz telephoneLDC agreement; commercial use depends on LDC membership terms
otoSpeech-full-duplex-280hEnglish280 hOne channel per speakerCC BY 4.0, access on request
otoSpeech-full-duplex-processed-141hEnglish141 hOne channel per speaker, cleanedCC BY 4.0, access on request
otoSpeech-full-duplex-turn-104hEnglish104.94 hOne channel per speaker, 17 turn-taking labelsResearch license, gated
Open-source full-duplex datasetsChinese, English15 hDual-track, isolated roomsSee the paper's release
MAGICDATA-DUPLEX-KOREANKorean10 h16 kHz, mobileCC BY-NC-ND 4.0
Japanese Duplex ConversationJapanese10.35 h16 kHz, mobileCC BY-NC-ND 4.0
American English Full-DuplexEnglish~15 min sessionsTwo speakersCC BY-NC 4.0
Basis Conversations 150022 languages2,645 speakers, up to 4 at a timeOne 48 kHz track per speakerCustom license, gated

Outside English, most open full-duplex data is around 10 hours and non-commercial. License terms also vary more than audio specs do, so read the license before comparing hours.

What to check before you buy

Ask every vendor the same questions, then check the answers in a sample you pick yourself.

RequirementWhy it mattersWhat to ask
One microphone per speakerOverlap is only usable if each voice is clean on its own trackWas each speaker on a separate microphone? How much of the other speaker can be heard on each channel?
Same session, real timeTurn-taking timing must be realWere both people talking live? Were any turns edited or moved?
Native sample rateUpsampled audio has no information above the original rateWhat rate was it recorded at? Was anything resampled?
SpontaneityBackchannels and interruptions come from unscripted talkWere speakers given scripts, scenarios, or only topics? What share is scripted?
Whole conversationsTurn-taking plays out over many turnsDo you deliver full sessions or cut segments? How long is a typical session?
Overlap in transcriptsMany pipelines drop backchannels and overlapped wordsHow are overlaps and backchannels transcribed? Are timestamps per word and per channel?
Turn-taking labelsSupervised turn models need event labelsAre interruptions, backchannels, and end-of-turn points labeled? By people or by a model?
Consent and licenseTraining a commercial model needs explicit rightsDid every speaker consent to AI training? Can you share the consent form and the license for review?
Language and speaker coverageA model learns the voices it hearsWhich languages, accents, ages, and recording conditions are covered?

A 30-minute sample audit

A short script on one full conversation from the sample answers three questions: are the channels really separate, how much do people overlap, and is the bandwidth real.

import numpy as np
import soundfile as sf

audio, sr = sf.read("sample.wav")  # shape: (samples, 2), one speaker per channel
a, b = audio[:, 0], audio[:, 1]

# 1. Two copies of one mix? A sample correlation near 1 means the channels are the same signal.
print("sample correlation:", round(np.corrcoef(a, b)[0, 1], 3))

# 2. Overlap and bleed, from 20 ms frame energy.
hop = int(sr * 0.02)

def frame_db(x):
    n = len(x) // hop
    rms = np.sqrt(np.mean(x[: n * hop].reshape(n, hop) ** 2, axis=1))
    return 20 * np.log10(rms + 1e-9)

ea, eb = frame_db(a), frame_db(b)
active_a = ea > ea.max() - 35
active_b = eb > eb.max() - 35
speech = active_a | active_b
print("overlap share of speech:", round((active_a & active_b).sum() / speech.sum(), 3))
print("energy envelope correlation:", round(np.corrcoef(ea, eb)[0, 1], 3))

# 3. Real bandwidth: share of spectral energy above 8 kHz in the first minute.
seg = a[: sr * 60]
spec = np.abs(np.fft.rfft(seg))
freqs = np.fft.rfftfreq(len(seg), 1 / sr)
print("energy above 8 kHz:", round(spec[freqs > 8000].sum() / spec.sum(), 4))

How to read the numbers:

Then listen. Pick three moments where both people talk at once and play each channel alone. You should hear one voice per channel, with the other person faint or absent.

How it is priced

Catalog data is usually priced per hour of audio. At oto, licensed datasets run from $10 to $100 per hour. The license you need and labels such as turn-taking annotation add to that price. Custom collection is quoted per project, because the cost depends on the language, the speakers, the recording setup, and the labels. Ask for the price of the sample hours you audited, so that the quote covers the data you checked.

Where oto fits

oto builds full-duplex conversational speech datasets in English, Japanese, and Korean, with one speaker on each channel.

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

Where can I buy full-duplex conversational speech data?

From data vendors that record each speaker on a separate channel, including oto. Open sets such as otoSpeech on Hugging Face and Fisher from the LDC are useful starting points, but check each license before training a commercial model.

How much does full-duplex speech data cost?

At oto, licensed datasets run from $10 to $100 per hour of audio. The license and labels such as turn-taking annotation add to the price, and custom collection is quoted per project.

Is stereo audio the same as dual-channel speech data?

No. A stereo file has two channels, but in a room recording both channels contain both speakers. Dual-channel speech data puts one speaker on each channel, captured by separate microphones.

Can I use Fisher to train a commercial model?

Fisher is distributed by the Linguistic Data Consortium under its user agreements. Commercial use depends on your organization's LDC membership and the terms of each corpus, so check with the LDC before you train.

How many hours of full-duplex data do I need?

Moshi used about 2,000 hours of Fisher for English. J-Moshi fine-tuned on 344 hours of Japanese dialogue. Use these as reference points, and size the purchase to the languages you ship.

Are there Japanese or Korean full-duplex datasets?

Yes, but few. Open sets are around 10 hours each and non-commercial. oto licenses Japanese and Korean two-speaker conversation recorded with one speaker per channel, and collects more to specification.

For more datasets, benchmarks, and models, see the fullduplex.ai catalog.

otoearth, Inc.